public static boolean isDirectoryPlaceholder(String key, ObjectMetadata objectMetadata) { // Recognize "standard" directory place-holder indications used by // Amazon's AWS Console and Panic's Transmit. if (key.endsWith("/") && objectMetadata.getContentLength() == 0) { return true; } // Recognize s3sync.rb directory placeholders by MD5/ETag value. if ("d66759af42f282e1ba19144df2d405d0".equals(objectMetadata.getETag())) { return true; } // Recognize place-holder objects created by the Google Storage console // or S3 Organizer Firefox extension. if (key.endsWith("_$folder$") && objectMetadata.getContentLength() == 0) { return true; } // We don't use JetS3t APIs anymore, but the below check is still needed for backward compatibility. // Recognize legacy JetS3t directory place-holder objects, only gives // accurate results if an object's metadata is populated. if (objectMetadata.getContentLength() == 0 && MIMETYPE_JETS3T_DIRECTORY.equals(objectMetadata.getContentType())) { return true; } return false; }
attributes.put("hash.algorithm", "MD5"); if (metadata.getContentType() != null) { attributes.put(CoreAttributes.MIME_TYPE.key(), metadata.getContentType());
newObjectMetadata = new ObjectMetadata(); if (newObjectMetadata.getContentType() == null){ newObjectMetadata.setContentType(metadata.getContentType());
final boolean calculateMD5 = metadata.getContentMD5() == null; if (metadata.getContentType() == null) { metadata.setContentType(Mimetypes.getInstance().getMimetype(file)); if (metadata.getContentType() == null) {
if ( metadata.getContentType() == null ) { metadata.setContentType(Mimetypes.getInstance().getMimetype(file));
values.put(TransferTable.COLUMN_USER_METADATA, JsonUtils.mapToString(metadata.getUserMetadata())); values.put(TransferTable.COLUMN_HEADER_CONTENT_TYPE, metadata.getContentType()); values.put(TransferTable.COLUMN_HEADER_CONTENT_ENCODING, metadata.getContentEncoding()); values.put(TransferTable.COLUMN_HEADER_CACHE_CONTROL, metadata.getCacheControl());
newObjectMetadata = new ObjectMetadata(); if (newObjectMetadata.getContentType() == null) { newObjectMetadata.setContentType(metadata.getContentType());
@Override public String contentType() { return this.object.getObjectMetadata().getContentType(); }
if (metadata.getContentType() == null) { metadata.setContentType(Mimetypes.getInstance().getMimetype(file));
ObjectMetadata metaData = new ObjectMetadata(); metaData.addUserMetadata("key", key of your file); System.out.println("Content type is========"+metaData.getContentType());
if (metadata.getContentType() == null) { metadata.setContentType(Mimetypes.getInstance().getMimetype(file)); if (metadata.getContentType() == null) {
@Override protected String getStoredMimeType(BinaryValue binaryValue) throws BinaryStoreException { try { String key = binaryValue.getKey().toString(); ObjectMetadata metadata = s3Client.getObjectMetadata(bucketName, key); if (String.valueOf(true).equals(metadata.getUserMetadata().get(USER_MIME_TYPE_KEY))) { return metadata.getContentType(); } else { return null; } } catch (AmazonClientException e) { throw new BinaryStoreException(e); } }
public static boolean isDirectoryPlaceholder(String key, ObjectMetadata objectMetadata) { // Recognize "standard" directory place-holder indications used by // Amazon's AWS Console and Panic's Transmit. if (key.endsWith("/") && objectMetadata.getContentLength() == 0) { return true; } // Recognize s3sync.rb directory placeholders by MD5/ETag value. if ("d66759af42f282e1ba19144df2d405d0".equals(objectMetadata.getETag())) { return true; } // Recognize place-holder objects created by the Google Storage console // or S3 Organizer Firefox extension. if (key.endsWith("_$folder$") && objectMetadata.getContentLength() == 0) { return true; } // We don't use JetS3t APIs anymore, but the below check is still needed for backward compatibility. // Recognize legacy JetS3t directory place-holder objects, only gives // accurate results if an object's metadata is populated. if (objectMetadata.getContentLength() == 0 && MIMETYPE_JETS3T_DIRECTORY.equals(objectMetadata.getContentType())) { return true; } return false; }
@Override protected String getStoredMimeType(BinaryValue binaryValue) throws BinaryStoreException { try { String key = binaryValue.getKey().toString(); ObjectMetadata metadata = s3Client.getObjectMetadata(bucketName, key); return metadata.getContentType(); } catch (AmazonClientException e) { throw new BinaryStoreException(e); } }
assertTrue(1234 == from.getContentLength()); assertEquals("md5", from.getContentMD5()); assertEquals("contentType", from.getContentType()); assertEquals("etag", from.getETag()); assertTrue(1234 == to.getContentLength()); assertEquals("md5", to.getContentMD5()); assertEquals("contentType", to.getContentType()); assertEquals("etag", to.getETag()); assertEquals(expTime, to.getExpirationTime());
@Test public void cloneEmpty() { ObjectMetadata from = new ObjectMetadata(); for (int i = 0; i < 2; i++) { assertNull(from.getCacheControl()); assertNull(from.getContentDisposition()); assertNull(from.getContentEncoding()); assertTrue(0 == from.getContentLength()); assertNull(from.getContentMD5()); assertNull(from.getContentType()); assertNull(from.getETag()); assertNull(from.getExpirationTime()); assertNull(from.getExpirationTimeRuleId()); assertNull(from.getHttpExpiresDate()); assertTrue(0 == from.getInstanceLength()); assertNull(from.getLastModified()); assertNull(from.getOngoingRestore()); assertTrue(from.getRawMetadata().size() == 0); assertNull(from.getRestoreExpirationTime()); assertNull(from.getSSEAlgorithm()); assertNull(from.getSSECustomerAlgorithm()); assertNull(from.getSSECustomerKeyMd5()); assertTrue(0 == from.getUserMetadata().size()); assertNull(from.getVersionId()); assertNull(from.getStorageClass()); // Clone an empty instance from = from.clone(); } }
@Override public void write(DataOutput out) throws IOException { Text.writeString(out, getBucketName()); Text.writeString(out, getKey()); // Object metadata out.writeLong(getObjectMetadata().getContentLength()); out.writeLong(getObjectMetadata().getLastModified().getTime()); Text.writeString(out, getObjectMetadata().getCacheControl()); Text.writeString(out, getObjectMetadata().getContentDisposition()); Text.writeString(out, getObjectMetadata().getContentEncoding()); Text.writeString(out, getObjectMetadata().getContentMD5()); Text.writeString(out, getObjectMetadata().getContentType()); Text.writeString(out, getObjectMetadata().getServerSideEncryption()); // Version ID and eTag are read only properties so they're not serialized //TODO Add serialization for user and raw metadata // Read bytes from into outBuffer outBuffer = ByteBuffer.allocate((int)getObjectMetadata().getContentLength()); getObjectContent().read(outBuffer.array()); //write size and content WritableUtils.writeVInt(out, outBuffer.capacity()); out.write(outBuffer.array()); }
@Test public void testUploadByteArray() throws IOException { byte[] payload = "b".getBytes("UTF-8"); Message<?> message = MessageBuilder.withPayload(payload) .setHeader("s3Command", S3MessageHandler.Command.UPLOAD.name()) .setHeader("key", "myStream") .build(); this.s3SendChannel.send(message); ArgumentCaptor<PutObjectRequest> putObjectRequestArgumentCaptor = ArgumentCaptor.forClass(PutObjectRequest.class); verify(this.amazonS3, atLeastOnce()).putObject(putObjectRequestArgumentCaptor.capture()); PutObjectRequest putObjectRequest = putObjectRequestArgumentCaptor.getValue(); assertThat(putObjectRequest.getBucketName()).isEqualTo(S3_BUCKET_NAME); assertThat(putObjectRequest.getKey()).isEqualTo("myStream"); assertThat(putObjectRequest.getFile()).isNull(); assertThat(putObjectRequest.getInputStream()).isNotNull(); ObjectMetadata metadata = putObjectRequest.getMetadata(); assertThat(metadata.getContentMD5()).isEqualTo(Md5Utils.md5AsBase64(payload)); assertThat(metadata.getContentLength()).isEqualTo(1); assertThat(metadata.getContentType()).isEqualTo(MediaType.APPLICATION_JSON_VALUE); assertThat(metadata.getContentDisposition()).isEqualTo("test.json"); }
private com.emc.ecs.sync.model.ObjectMetadata syncMetaFromS3Meta(ObjectMetadata s3meta) { com.emc.ecs.sync.model.ObjectMetadata meta = new com.emc.ecs.sync.model.ObjectMetadata(); meta.setDirectory(isDirectoryPlaceholder(s3meta.getContentType(), s3meta.getContentLength())); meta.setCacheControl(s3meta.getCacheControl()); meta.setContentDisposition(s3meta.getContentDisposition()); meta.setContentEncoding(s3meta.getContentEncoding()); if (s3meta.getContentMD5() != null) meta.setChecksum(new Checksum("MD5", s3meta.getContentMD5())); meta.setContentType(s3meta.getContentType()); meta.setHttpExpires(s3meta.getHttpExpiresDate()); meta.setExpirationDate(s3meta.getExpirationTime()); meta.setModificationTime(s3meta.getLastModified()); meta.setContentLength(s3meta.getContentLength()); meta.setUserMetadata(toMetaMap(s3meta.getUserMetadata())); return meta; }
@Test public void testStoreMimeType() throws BinaryStoreException { expect(s3Client.getObjectMetadata(BUCKET, TEST_KEY)) .andReturn(new ObjectMetadata()); Capture<CopyObjectRequest> copyRequestCapture = Capture.newInstance(); expect(s3Client.copyObject(capture(copyRequestCapture))).andReturn(null); replayAll(); BinaryValue binaryValue = createBinaryValue(TEST_KEY, TEST_CONTENT); s3BinaryStore.storeMimeType(binaryValue, TEST_MIME); CopyObjectRequest copyRequest = copyRequestCapture.getValue(); assertEquals(BUCKET, copyRequest.getSourceBucketName()); assertEquals(BUCKET, copyRequest.getDestinationBucketName()); assertEquals(TEST_KEY, copyRequest.getSourceKey()); assertEquals(TEST_KEY, copyRequest.getDestinationKey()); assertEquals(TEST_MIME, copyRequest.getNewObjectMetadata().getContentType()); }