Example usage for com.amazonaws.services.s3.model S3Object setObjectMetadata

List of usage examples for com.amazonaws.services.s3.model S3Object setObjectMetadata

Introduction

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

Prototype

public void setObjectMetadata(ObjectMetadata metadata) 

Source Link

Document

Sets the object metadata for this object.

Usage

From source file:com.ge.predix.sample.blobstore.repository.BlobstoreService.java

License:Apache License

/**
 * Adds a new Blob to the binded bucket in the Object Store
 *
 * @param obj S3Object to be added/* ww w . j ava2s  .  com*/
 * @throws Exception
 */
public void put(S3Object obj) throws Exception {
    if (obj == null) {
        log.error("put(): Empty file provided");
        throw new Exception("File is null");
    }
    InputStream is = obj.getObjectContent();

    List<PartETag> partETags = new ArrayList<>();

    InitiateMultipartUploadRequest initRequest = new InitiateMultipartUploadRequest(bucket, obj.getKey());
    InitiateMultipartUploadResult initResponse = s3Client.initiateMultipartUpload(initRequest);
    try {

        int i = 1;
        int currentPartSize = 0;
        ByteArrayOutputStream tempBuffer = new ByteArrayOutputStream();
        int byteValue;
        while ((byteValue = is.read()) != -1) {
            tempBuffer.write(byteValue);
            currentPartSize = tempBuffer.size();
            if (currentPartSize == (50 * 1024 * 1024)) //make this a const
            {
                byte[] b = tempBuffer.toByteArray();
                ByteArrayInputStream byteStream = new ByteArrayInputStream(b);

                UploadPartRequest uploadPartRequest = new UploadPartRequest().withBucketName(bucket)
                        .withKey(obj.getKey()).withUploadId(initResponse.getUploadId()).withPartNumber(i++)
                        .withInputStream(byteStream).withPartSize(currentPartSize);
                partETags.add(s3Client.uploadPart(uploadPartRequest).getPartETag());

                tempBuffer.reset();
            }
        }
        log.info("currentPartSize: " + currentPartSize);
        ObjectMetadata objectMetadata = new ObjectMetadata();
        objectMetadata.setContentLength(currentPartSize);
        obj.setObjectMetadata(objectMetadata);

        if (i == 1 && currentPartSize < (5 * 1024 * 1024)) // make this a const
        {
            s3Client.abortMultipartUpload(
                    new AbortMultipartUploadRequest(bucket, obj.getKey(), initResponse.getUploadId()));

            byte[] b = tempBuffer.toByteArray();
            ByteArrayInputStream byteStream = new ByteArrayInputStream(b);
            objectMetadata.setContentType(getContentType(b));
            obj.setObjectMetadata(objectMetadata);

            PutObjectRequest putObjectRequest = new PutObjectRequest(bucket, obj.getKey(), byteStream,
                    obj.getObjectMetadata());
            s3Client.putObject(putObjectRequest);
            return;
        }

        if (currentPartSize > 0 && currentPartSize <= (50 * 1024 * 1024)) // make this a const
        {
            byte[] b = tempBuffer.toByteArray();
            ByteArrayInputStream byteStream = new ByteArrayInputStream(b);

            log.info("currentPartSize: " + currentPartSize);
            log.info("byteArray: " + b);

            UploadPartRequest uploadPartRequest = new UploadPartRequest().withBucketName(bucket)
                    .withKey(obj.getKey()).withUploadId(initResponse.getUploadId()).withPartNumber(i)
                    .withInputStream(byteStream).withPartSize(currentPartSize);
            partETags.add(s3Client.uploadPart(uploadPartRequest).getPartETag());
        }
    } catch (Exception e) {
        log.error("put(): Exception occurred in put(): " + e.getMessage());
        s3Client.abortMultipartUpload(
                new AbortMultipartUploadRequest(bucket, obj.getKey(), initResponse.getUploadId()));
        throw e;
    }
    CompleteMultipartUploadRequest completeMultipartUploadRequest = new CompleteMultipartUploadRequest()
            .withBucketName(bucket).withPartETags(partETags).withUploadId(initResponse.getUploadId())
            .withKey(obj.getKey());

    s3Client.completeMultipartUpload(completeMultipartUploadRequest);
}

From source file:com.ge.predix.solsvc.blobstore.bootstrap.BlobstoreClientImpl.java

License:Apache License

/**
 * Adds a new Blob to the binded bucket in the Object Store
 *
 * @param obj S3Object to be added/*from  w  w w . ja va2  s.com*/
 */
@Override
public String saveBlob(S3Object obj) {
    if (obj == null) {
        this.log.error("put(): Empty file provided"); //$NON-NLS-1$
        throw new RuntimeException("File is null"); //$NON-NLS-1$
    }
    List<PartETag> partETags = new ArrayList<>();
    String bucket = this.blobstoreConfig.getBucketName();
    InitiateMultipartUploadRequest initRequest = new InitiateMultipartUploadRequest(bucket, obj.getKey());
    InitiateMultipartUploadResult initResponse = this.s3Client.initiateMultipartUpload(initRequest);
    try (InputStream is = obj.getObjectContent();) {

        int i = 1;
        int currentPartSize = 0;
        ByteArrayOutputStream tempBuffer = new ByteArrayOutputStream();
        int byteValue;
        while ((byteValue = is.read()) != -1) {
            tempBuffer.write(byteValue);
            currentPartSize = tempBuffer.size();
            if (currentPartSize == (50 * 1024 * 1024)) //make this a const
            {
                byte[] b = tempBuffer.toByteArray();
                ByteArrayInputStream byteStream = new ByteArrayInputStream(b);

                UploadPartRequest uploadPartRequest = new UploadPartRequest().withBucketName(bucket)
                        .withKey(obj.getKey()).withUploadId(initResponse.getUploadId()).withPartNumber(i++)
                        .withInputStream(byteStream).withPartSize(currentPartSize);
                partETags.add(this.s3Client.uploadPart(uploadPartRequest).getPartETag());

                tempBuffer.reset();
            }
        }
        this.log.info("currentPartSize: " + currentPartSize); //$NON-NLS-1$
        ObjectMetadata objectMetadata = new ObjectMetadata();
        objectMetadata.setContentLength(currentPartSize);
        if (this.enableSSE) {
            objectMetadata.setSSEAlgorithm(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION);
        }
        obj.setObjectMetadata(objectMetadata);

        if (i == 1 && currentPartSize < (5 * 1024 * 1024)) // make this a const
        {
            this.s3Client.abortMultipartUpload(
                    new AbortMultipartUploadRequest(bucket, obj.getKey(), initResponse.getUploadId()));

            byte[] b = tempBuffer.toByteArray();
            ByteArrayInputStream byteStream = new ByteArrayInputStream(b);
            objectMetadata.setContentType(getContentType(b));
            if (this.enableSSE) {
                objectMetadata.setSSEAlgorithm(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION);
            }
            obj.setObjectMetadata(objectMetadata);

            PutObjectRequest putObjectRequest = new PutObjectRequest(bucket, obj.getKey(), byteStream,
                    obj.getObjectMetadata());
            this.s3Client.putObject(putObjectRequest);

            ObjectMetadata meta = this.s3Client.getObjectMetadata(bucket, obj.getKey());
            Map<String, Object> headers = meta.getRawMetadata();
            for (Map.Entry<String, Object> entry : headers.entrySet()) {
                this.log.info("Object Metadata -- " + entry.getKey() + ": " + entry.getValue().toString()); //$NON-NLS-1$ //$NON-NLS-2$
            }

            return initResponse.getUploadId();
        }

        if (currentPartSize > 0 && currentPartSize <= (50 * 1024 * 1024)) // make this a const
        {
            byte[] b = tempBuffer.toByteArray();
            ByteArrayInputStream byteStream = new ByteArrayInputStream(b);

            this.log.info("currentPartSize: " + currentPartSize); //$NON-NLS-1$
            this.log.info("byteArray: " + b); //$NON-NLS-1$

            UploadPartRequest uploadPartRequest = new UploadPartRequest().withBucketName(bucket)
                    .withKey(obj.getKey()).withUploadId(initResponse.getUploadId()).withPartNumber(i)
                    .withInputStream(byteStream).withPartSize(currentPartSize);
            partETags.add(this.s3Client.uploadPart(uploadPartRequest).getPartETag());
        }

        CompleteMultipartUploadRequest completeMultipartUploadRequest = new CompleteMultipartUploadRequest()
                .withBucketName(bucket).withPartETags(partETags).withUploadId(initResponse.getUploadId())
                .withKey(obj.getKey());

        this.s3Client.completeMultipartUpload(completeMultipartUploadRequest);
        return initResponse.getUploadId();
    } catch (Exception e) {
        this.log.error("put(): Exception occurred in put(): " + e.getMessage()); //$NON-NLS-1$
        this.s3Client.abortMultipartUpload(
                new AbortMultipartUploadRequest(bucket, obj.getKey(), initResponse.getUploadId()));
        throw new RuntimeException("put(): Exception occurred in put(): ", e); //$NON-NLS-1$
    }
}

From source file:com.lithium.flow.filer.S3Filer.java

License:Apache License

@Override
public void setFileTime(@Nonnull String path, long time) throws IOException {
    S3Object object = s3.getObject(bucket, path.substring(1));
    ObjectMetadata metadata = object.getObjectMetadata();
    metadata.setLastModified(new Date(time));
    object.setObjectMetadata(metadata);
}

From source file:com.netflix.exhibitor.core.backup.s3.MockS3Client.java

License:Apache License

public MockS3Client(S3Object object, ObjectListing listing) {
    if (object != null) {
        S3Object value = new S3Object();
        value.setKey(object.getKey());//from   w  w  w  .  jav a 2 s.  c  om
        value.setObjectMetadata(object.getObjectMetadata());
        value.setObjectContent(object.getObjectContent());
        uploads.put(object.getKey(), value);
    }
    this.listing = listing;
}

From source file:com.netflix.exhibitor.core.backup.s3.MockS3Client.java

License:Apache License

@Override
public synchronized PutObjectResult putObject(PutObjectRequest request) throws Exception {
    Map<String, String> userData = Maps.newHashMap();
    userData.put(BYTES_HEADER, Integer.toString(uploadedBytes.size()));

    ByteArrayOutputStream out = new ByteArrayOutputStream();
    ByteStreams.copy(request.getInputStream(), out);
    byte[] bytes = out.toByteArray();
    uploadedBytes.add(bytes);/*from www  . j a v a2 s .  co m*/

    byte[] md5bytes = S3Utils.md5(bytes, out.size());

    S3Object object = new S3Object();
    object.setKey(request.getKey());
    ObjectMetadata metadata = new ObjectMetadata();
    metadata.setContentLength(bytes.length);
    metadata.setUserMetadata(userData);
    object.setObjectMetadata(metadata);
    uploads.put(request.getKey(), object);

    PutObjectResult result = new PutObjectResult();
    result.setETag(S3Utils.toHex(md5bytes));
    return result;
}

From source file:com.netflix.exhibitor.core.backup.s3.MockS3Client.java

License:Apache License

@Override
public synchronized S3Object getObject(String bucket, String key) throws Exception {
    S3Object s3Object = uploads.get(key);
    if (s3Object != null) {
        S3Object copy = new S3Object();
        copy.setKey(key);//ww w.  j  a v a  2 s.c  o m
        copy.setObjectMetadata(s3Object.getObjectMetadata());

        String bytesIndexStr = s3Object.getObjectMetadata().getUserMetadata().get(BYTES_HEADER);
        if (bytesIndexStr != null) {
            S3ObjectInputStream objectContent = new S3ObjectInputStream(
                    new ByteArrayInputStream(uploadedBytes.get(Integer.parseInt(bytesIndexStr))), null);
            copy.setObjectContent(objectContent);
        }

        return copy;
    }
    return s3Object;
}

From source file:com.upplication.s3fs.util.AmazonS3ClientMock.java

License:Open Source License

@Override
public CopyObjectResult copyObject(String sourceBucketName, String sourceKey, String destinationBucketName,
        String destinationKey) throws AmazonClientException {

    S3Element element = find(sourceBucketName, sourceKey);

    if (element != null) {

        S3Object objectSource = element.getS3Object();
        // copy object with
        S3Object resObj = new S3Object();
        resObj.setBucketName(destinationBucketName);
        resObj.setKey(destinationKey);/*w  w  w.ja v a 2s.c  o m*/
        resObj.setObjectContent(objectSource.getObjectContent());
        resObj.setObjectMetadata(objectSource.getObjectMetadata());
        resObj.setRedirectLocation(objectSource.getRedirectLocation());
        // copy permission
        AccessControlList permission = new AccessControlList();
        permission.setOwner(element.getPermission().getOwner());
        permission.grantAllPermissions(element.getPermission().getGrants().toArray(new Grant[0]));
        S3Element elementResult = new S3Element(resObj, permission, sourceKey.endsWith("/"));
        // TODO: add should replace existing
        objects.get(find(destinationBucketName)).remove(elementResult);
        objects.get(find(destinationBucketName)).add(elementResult);

        return new CopyObjectResult();
    }

    throw new AmazonServiceException("object source not found");
}

From source file:com.upplication.s3fs.util.AmazonS3ClientMock.java

License:Open Source License

private S3Element parse(InputStream stream, String bucket, String key) {

    S3Object object = new S3Object();

    object.setBucketName(bucket);//  w  w  w . ja  va  2 s  .  c  om
    object.setKey(key);

    byte[] content;
    try {
        content = IOUtils.toByteArray(stream);
    } catch (IOException e) {
        throw new IllegalStateException("the stream is closed", e);
    }

    ObjectMetadata metadata = new ObjectMetadata();
    metadata.setLastModified(new Date());
    metadata.setContentLength(content.length);

    object.setObjectContent(new ByteArrayInputStream(content));
    object.setObjectMetadata(metadata);
    // TODO: create converter between path permission and s3 permission
    AccessControlList permission = createAllPermission();
    return new S3Element(object, permission, false);
}

From source file:com.upplication.s3fs.util.AmazonS3ClientMock.java

License:Open Source License

private S3Element parse(Path elem, Path bucket) throws IOException {
    boolean dir = false;
    if (Files.isDirectory(elem)) {
        dir = true;//w  w  w . j a  va  2s.  c o  m
    }

    S3Object object = new S3Object();

    object.setBucketName(bucket.getFileName().toString());

    String key = bucket.relativize(elem).toString();
    if (dir) {
        key += "/";
    }
    object.setKey(key);

    ObjectMetadata metadata = new ObjectMetadata();
    BasicFileAttributes attr = Files.readAttributes(elem, BasicFileAttributes.class);
    metadata.setLastModified(new Date(attr.lastAccessTime().toMillis()));
    if (dir) {
        metadata.setContentLength(0);
        object.setObjectContent(null);
    } else {
        metadata.setContentLength(attr.size());
        object.setObjectContent(new ByteArrayInputStream(Files.readAllBytes(elem)));
    }

    object.setObjectMetadata(metadata);
    // TODO: create converter between path permission and s3 permission
    AccessControlList permission = createAllPermission();

    return new S3Element(object, permission, dir);
}

From source file:eu.openg.aws.s3.internal.AmazonS3Fake.java

License:Apache License

private static S3Object buildS3Object(String key, InputStream input, ObjectMetadata metadata) {
    final S3Object object = new S3Object();
    object.setKey(key);//from   w ww. j  a v a2  s  . c  o m
    object.setObjectContent(input);
    object.setObjectMetadata(metadata);
    return object;
}