public MutableObjectMetadata apply(BlobMetadata from) { if (from == null) return null; MutableObjectMetadata to = new MutableObjectMetadataImpl(); HttpUtils.copy(from.getContentMetadata(), to.getContentMetadata()); to.setUri(from.getUri()); to.setETag(from.getETag()); to.setKey(from.getName()); to.setBucket(bucket); to.setLastModified(from.getLastModified()); if (from.getUserMetadata() != null) { for (Entry<String, String> entry : from.getUserMetadata().entrySet()) to.getUserMetadata().put(entry.getKey().toLowerCase(), entry.getValue()); } if (from.getTier() != null) { to.setStorageClass(StorageClass.fromTier(from.getTier())); } return to; }
public MutableObjectMetadata apply(BlobMetadata from) { if (from == null) return null; MutableObjectMetadata to = new MutableObjectMetadataImpl(); HttpUtils.copy(from.getContentMetadata(), to.getContentMetadata()); to.setUri(from.getUri()); to.setETag(from.getETag()); to.setKey(from.getName()); to.setBucket(bucket); to.setLastModified(from.getLastModified()); if (from.getUserMetadata() != null) { for (Entry<String, String> entry : from.getUserMetadata().entrySet()) to.getUserMetadata().put(entry.getKey().toLowerCase(), entry.getValue()); } if (from.getTier() != null) { to.setStorageClass(StorageClass.fromTier(from.getTier())); } return to; }
/** parses the http response headers to create a new {@link MutableObjectMetadata} object. */ public MutableObjectMetadata apply(HttpResponse from) { BlobMetadata base = blobMetadataParser.apply(from); MutableObjectMetadata to = blobToObjectMetadata.apply(base); addETagTo(from, to); if (to.getContentMetadata().getContentMD5() == null && to.getETag() != null) { Matcher md5Matcher = MD5_FROM_ETAG.matcher(to.getETag()); if (md5Matcher.find()) { byte[] md5 = base16().lowerCase().decode(md5Matcher.group(1)); // it is possible others will look at the http payload directly if (from.getPayload() != null) from.getPayload().getContentMetadata().setContentMD5(md5); to.getContentMetadata().setContentMD5(md5); } } // amz has an etag, but matches syntax for usermetadata to.getUserMetadata().remove("object-etag"); to.setCacheControl(from.getFirstHeaderOrNull(HttpHeaders.CACHE_CONTROL)); String storageClass = from.getFirstHeaderOrNull("x-amz-storage-class"); if (storageClass != null) { to.setStorageClass(StorageClass.valueOf(storageClass)); } return to; }
/** parses the http response headers to create a new {@link MutableObjectMetadata} object. */ public MutableObjectMetadata apply(HttpResponse from) { BlobMetadata base = blobMetadataParser.apply(from); MutableObjectMetadata to = blobToObjectMetadata.apply(base); addETagTo(from, to); if (to.getContentMetadata().getContentMD5() == null && to.getETag() != null) { Matcher md5Matcher = MD5_FROM_ETAG.matcher(to.getETag()); if (md5Matcher.find()) { byte[] md5 = base16().lowerCase().decode(md5Matcher.group(1)); // it is possible others will look at the http payload directly if (from.getPayload() != null) from.getPayload().getContentMetadata().setContentMD5(md5); to.getContentMetadata().setContentMD5(md5); } } // amz has an etag, but matches syntax for usermetadata to.getUserMetadata().remove("object-etag"); to.setCacheControl(from.getFirstHeaderOrNull(HttpHeaders.CACHE_CONTROL)); String storageClass = from.getFirstHeaderOrNull("x-amz-storage-class"); if (storageClass != null) { to.setStorageClass(StorageClass.valueOf(storageClass)); } return to; }