Example usage for com.amazonaws.services.s3.model SetObjectTaggingRequest setTagging

List of usage examples for com.amazonaws.services.s3.model SetObjectTaggingRequest setTagging

Introduction

In this page you can find the example usage for com.amazonaws.services.s3.model SetObjectTaggingRequest setTagging.

Prototype

public void setTagging(ObjectTagging tagging) 

Source Link

Document

Set the object tagging.

Usage

From source file:org.finra.herd.dao.impl.S3DaoImpl.java

License:Apache License

private void tagVersionsHelper(final S3FileTransferRequestParamsDto s3FileTransferRequestParamsDto,
        final S3FileTransferRequestParamsDto s3ObjectTaggerParamsDto,
        final List<S3VersionSummary> s3VersionSummaries, final Tag tag) {
    // Initialize an S3 version for the error message in the catch block.
    S3VersionSummary currentS3VersionSummary = s3VersionSummaries.get(0);

    // Amazon S3 client to access S3 objects.
    AmazonS3Client s3Client = null;//from w  w w .ja  va  2 s.  com

    // Amazon S3 client for S3 object tagging.
    AmazonS3Client s3ObjectTaggerClient = null;

    try {
        // Create an S3 client to access S3 objects.
        s3Client = getAmazonS3(s3FileTransferRequestParamsDto);

        // Create an S3 client for S3 object tagging.
        s3ObjectTaggerClient = getAmazonS3(s3ObjectTaggerParamsDto);

        // Create a get object tagging request.
        GetObjectTaggingRequest getObjectTaggingRequest = new GetObjectTaggingRequest(
                s3FileTransferRequestParamsDto.getS3BucketName(), null, null);

        // Create a set object tagging request.
        SetObjectTaggingRequest setObjectTaggingRequest = new SetObjectTaggingRequest(
                s3FileTransferRequestParamsDto.getS3BucketName(), null, null, null);

        for (S3VersionSummary s3VersionSummary : s3VersionSummaries) {
            // Set the current S3 version summary.
            currentS3VersionSummary = s3VersionSummary;

            // Retrieve the current tagging information for the S3 version.
            getObjectTaggingRequest.setKey(s3VersionSummary.getKey());
            getObjectTaggingRequest.setVersionId(s3VersionSummary.getVersionId());
            GetObjectTaggingResult getObjectTaggingResult = s3Operations
                    .getObjectTagging(getObjectTaggingRequest, s3Client);

            // Update the list of tags to include the specified S3 object tag.
            List<Tag> updatedTags = new ArrayList<>();
            updatedTags.add(tag);
            if (CollectionUtils.isNotEmpty(getObjectTaggingResult.getTagSet())) {
                for (Tag currentTag : getObjectTaggingResult.getTagSet()) {
                    if (!StringUtils.equals(tag.getKey(), currentTag.getKey())) {
                        updatedTags.add(currentTag);
                    }
                }
            }

            // Update tagging information for the S3 version.
            setObjectTaggingRequest.setKey(s3VersionSummary.getKey());
            setObjectTaggingRequest.setVersionId(s3VersionSummary.getVersionId());
            setObjectTaggingRequest.setTagging(new ObjectTagging(updatedTags));
            s3Operations.setObjectTagging(setObjectTaggingRequest, s3ObjectTaggerClient);
        }
    } catch (Exception e) {
        throw new IllegalStateException(String.format(
                "Failed to tag S3 object with \"%s\" key and \"%s\" version id in \"%s\" bucket. Reason: %s",
                currentS3VersionSummary.getKey(), currentS3VersionSummary.getVersionId(),
                s3FileTransferRequestParamsDto.getS3BucketName(), e.getMessage()), e);
    } finally {
        if (s3Client != null) {
            s3Client.shutdown();
        }

        if (s3ObjectTaggerClient != null) {
            s3ObjectTaggerClient.shutdown();
        }
    }
}