public boolean execute(String containerName, Object value, ListContainerOptions options) { try { byte[] toSearch = objectMD5.apply(value); for (BlobMetadata metadata : getAllBlobMetadata.execute(containerName, options)) { BlobProperties properties = client.getBlobProperties(containerName, metadata.getName()); if (Arrays.equals(toSearch, properties.getContentMD5())) return true; } return false; } catch (Exception e) { Throwables.propagateIfPossible(e, BlobRuntimeException.class); throw new BlobRuntimeException( String.format( "Error searching for ETAG of value: [%2$s] in container:%1$s", containerName, value), e); } }
@Override public String execute(StorageMetadata metadata) { switch (metadata.getType()) { case CONTAINER: case FOLDER: case RELATIVE_PATH: return metadata.getName(); case BLOB: BlobMetadata blobMd = (BlobMetadata) metadata; for (String suffix : BlobStoreConstants.DIRECTORY_SUFFIXES) { if (metadata.getName().endsWith(suffix)) { return metadata.getName().substring(0, metadata.getName().lastIndexOf(suffix)); } } // It is important that this is last, in case there is a file with a known directory // suffix who also has content type set to application/directory if (blobMd.getContentMetadata().getContentType() != null && blobMd.getContentMetadata().getContentType().equals("application/directory")) return metadata.getName(); } return null; }
public int compareTo(BlobMetadata o) { if (getName() == null) return -1; return (this == o) ? 0 : getName().compareTo(o.getName()); }
public void testBlobMetadata_withDefaultMetadata() throws IOException { String BLOB_KEY = TestUtils.createRandomBlobKey(null, null); // create the blob TestUtils.createBlobsInContainer(CONTAINER_NAME, BLOB_KEY); BlobMetadata metadata = blobStore.blobMetadata(CONTAINER_NAME, BLOB_KEY); assertNotNull(metadata, "Metadata null"); assertEquals(metadata.getName(), BLOB_KEY, "Wrong blob name"); assertEquals(metadata.getType(), StorageType.BLOB, "Wrong blob type"); assertEquals( metadata.getContentMetadata().getContentType(), "application/unknown", "Wrong blob content-type"); assertEquals( base16().lowerCase().encode(metadata.getContentMetadata().getContentMD5()), metadata.getETag(), "Wrong blob MD5"); assertEquals(metadata.getLocation(), null, "Wrong blob location"); assertEquals(metadata.getProviderId(), null, "Wrong blob provider id"); assertEquals(metadata.getUri(), null, "Wrong blob URI"); assertNotNull(metadata.getUserMetadata(), "No blob UserMetadata"); assertEquals(metadata.getUserMetadata().size(), 0, "Wrong blob UserMetadata"); // metadata.getLastModified() File file = new File(TARGET_CONTAINER_NAME, BLOB_KEY); assertEquals( metadata.getContentMetadata().getContentLength(), Long.valueOf(file.length()), "Wrong blob size"); }