diff --git a/src/main/java/org/gaul/s3proxy/EncryptedBlobStore.java b/src/main/java/org/gaul/s3proxy/EncryptedBlobStore.java index 8fea1ca..c1dbeba 100644 --- a/src/main/java/org/gaul/s3proxy/EncryptedBlobStore.java +++ b/src/main/java/org/gaul/s3proxy/EncryptedBlobStore.java @@ -349,7 +349,9 @@ public final class EncryptedBlobStore extends ForwardingBlobStore { private String generateUploadId(String container, String blobName) { String path = container + "/" + blobName; - return Hashing.md5().hashBytes(path.getBytes(StandardCharsets.UTF_8)).toString(); + @SuppressWarnings("deprecation") + var hash = Hashing.md5(); + return hash.hashBytes(path.getBytes(StandardCharsets.UTF_8)).toString(); } @Override diff --git a/src/main/java/org/gaul/s3proxy/azureblob/AzureBlobApiMetadata.java b/src/main/java/org/gaul/s3proxy/azureblob/AzureBlobApiMetadata.java index 2c0828f..a6bd96d 100644 --- a/src/main/java/org/gaul/s3proxy/azureblob/AzureBlobApiMetadata.java +++ b/src/main/java/org/gaul/s3proxy/azureblob/AzureBlobApiMetadata.java @@ -28,6 +28,7 @@ import org.jclouds.reflect.Reflection2; import org.jclouds.rest.internal.BaseHttpApiMetadata; +@SuppressWarnings("rawtypes") public final class AzureBlobApiMetadata extends BaseHttpApiMetadata { public AzureBlobApiMetadata() { this(builder()); diff --git a/src/main/java/org/gaul/s3proxy/azureblob/AzureBlobStore.java b/src/main/java/org/gaul/s3proxy/azureblob/AzureBlobStore.java index 6abe03d..ded8643 100644 --- a/src/main/java/org/gaul/s3proxy/azureblob/AzureBlobStore.java +++ b/src/main/java/org/gaul/s3proxy/azureblob/AzureBlobStore.java @@ -386,8 +386,8 @@ public final class AzureBlobStore extends BaseBlobStore { contentMetadata.getContentEncoding()); blobHttpHeaders.setContentLanguage( contentMetadata.getContentLanguage()); - blobHttpHeaders.setContentMd5( - contentMetadata.getContentMD5()); + var hash = contentMetadata.getContentMD5AsHashCode(); + blobHttpHeaders.setContentMd5(hash != null ? hash.asBytes() : null); blobHttpHeaders.setContentType(contentMetadata.getContentType()); azureOptions.setHeaders(blobHttpHeaders); if (blob.getMetadata().getTier() != Tier.STANDARD) { diff --git a/src/main/java/org/gaul/s3proxy/nio2blob/AbstractNio2BlobStore.java b/src/main/java/org/gaul/s3proxy/nio2blob/AbstractNio2BlobStore.java index 41e2cc2..2678b7e 100644 --- a/src/main/java/org/gaul/s3proxy/nio2blob/AbstractNio2BlobStore.java +++ b/src/main/java/org/gaul/s3proxy/nio2blob/AbstractNio2BlobStore.java @@ -45,6 +45,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSortedSet; import com.google.common.hash.HashCode; +import com.google.common.hash.HashFunction; import com.google.common.hash.Hashing; import com.google.common.hash.HashingInputStream; import com.google.common.io.BaseEncoding; @@ -111,8 +112,10 @@ public abstract class AbstractNio2BlobStore extends BaseBlobStore { private static final String XATTR_USER_METADATA_PREFIX = "user.user-metadata."; private static final String MULTIPART_PREFIX = ".mpus-"; + @SuppressWarnings("deprecation") + private static final HashFunction md5 = Hashing.md5(); private static final byte[] DIRECTORY_MD5 = - Hashing.md5().hashBytes(new byte[0]).asBytes(); + md5.hashBytes(new byte[0]).asBytes(); private final Supplier> locations; private final Path root; @@ -469,6 +472,7 @@ public abstract class AbstractNio2BlobStore extends BaseBlobStore { if (options.getIfModifiedSince() != null) { Date modifiedSince = options.getIfModifiedSince(); if (lastModifiedTime.before(modifiedSince)) { + @SuppressWarnings("rawtypes") HttpResponse.Builder response = HttpResponse.builder().statusCode(Status.NOT_MODIFIED.getStatusCode()); if (eTag != null) { response.addHeader(HttpHeaders.ETAG, eTag); @@ -480,6 +484,7 @@ public abstract class AbstractNio2BlobStore extends BaseBlobStore { if (options.getIfUnmodifiedSince() != null) { Date unmodifiedSince = options.getIfUnmodifiedSince(); if (lastModifiedTime.after(unmodifiedSince)) { + @SuppressWarnings("rawtypes") HttpResponse.Builder response = HttpResponse.builder().statusCode(Status.PRECONDITION_FAILED.getStatusCode()); if (eTag != null) { response.addHeader(HttpHeaders.ETAG, eTag); @@ -571,7 +576,7 @@ public abstract class AbstractNio2BlobStore extends BaseBlobStore { } var metadata = blob.getMetadata().getContentMetadata(); - try (var is = new HashingInputStream(Hashing.md5(), blob.getPayload().openStream()); + try (var is = new HashingInputStream(md5, blob.getPayload().openStream()); var os = Files.newOutputStream(tmpPath)) { var count = is.transferTo(os); var actualHashCode = is.hash(); @@ -845,7 +850,7 @@ public abstract class AbstractNio2BlobStore extends BaseBlobStore { public final String completeMultipartUpload(MultipartUpload mpu, List parts) { var metas = ImmutableList.builder(); long contentLength = 0; - var md5Hasher = Hashing.md5().newHasher(); + var md5Hasher = md5.newHasher(); for (var part : parts) { var meta = blobMetadata(mpu.containerName(), MULTIPART_PREFIX + mpu.id() + "-" + mpu.blobName() + "-" + part.partNumber()); diff --git a/src/main/java/org/gaul/s3proxy/nio2blob/FilesystemNio2BlobApiMetadata.java b/src/main/java/org/gaul/s3proxy/nio2blob/FilesystemNio2BlobApiMetadata.java index 5269c93..d4eeb80 100644 --- a/src/main/java/org/gaul/s3proxy/nio2blob/FilesystemNio2BlobApiMetadata.java +++ b/src/main/java/org/gaul/s3proxy/nio2blob/FilesystemNio2BlobApiMetadata.java @@ -24,6 +24,7 @@ import org.jclouds.blobstore.BlobStoreContext; import org.jclouds.reflect.Reflection2; import org.jclouds.rest.internal.BaseHttpApiMetadata; +@SuppressWarnings("rawtypes") public final class FilesystemNio2BlobApiMetadata extends BaseHttpApiMetadata { public FilesystemNio2BlobApiMetadata() { this(builder()); diff --git a/src/main/java/org/gaul/s3proxy/nio2blob/TransientNio2BlobApiMetadata.java b/src/main/java/org/gaul/s3proxy/nio2blob/TransientNio2BlobApiMetadata.java index 2c62491..7702fb4 100644 --- a/src/main/java/org/gaul/s3proxy/nio2blob/TransientNio2BlobApiMetadata.java +++ b/src/main/java/org/gaul/s3proxy/nio2blob/TransientNio2BlobApiMetadata.java @@ -24,6 +24,7 @@ import org.jclouds.blobstore.BlobStoreContext; import org.jclouds.reflect.Reflection2; import org.jclouds.rest.internal.BaseHttpApiMetadata; +@SuppressWarnings("rawtypes") public final class TransientNio2BlobApiMetadata extends BaseHttpApiMetadata { public TransientNio2BlobApiMetadata() { this(builder()); diff --git a/src/test/java/org/gaul/s3proxy/AwsSdkAnonymousTest.java b/src/test/java/org/gaul/s3proxy/AwsSdkAnonymousTest.java index df573ac..95b2f7b 100644 --- a/src/test/java/org/gaul/s3proxy/AwsSdkAnonymousTest.java +++ b/src/test/java/org/gaul/s3proxy/AwsSdkAnonymousTest.java @@ -30,6 +30,7 @@ import com.amazonaws.client.builder.AwsClientBuilder.EndpointConfiguration; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.internal.SkipMd5CheckStrategy; +import com.amazonaws.services.s3.model.ListBucketsPaginatedRequest; import com.amazonaws.services.s3.model.ObjectMetadata; import com.amazonaws.services.s3.model.S3Object; import com.google.common.io.ByteSource; @@ -104,7 +105,7 @@ public final class AwsSdkAnonymousTest { @Test public void testListBuckets() throws Exception { - client.listBuckets(); + client.listBuckets(new ListBucketsPaginatedRequest()); } @Test diff --git a/src/test/java/org/gaul/s3proxy/AwsSdkTest.java b/src/test/java/org/gaul/s3proxy/AwsSdkTest.java index 553d87f..5d5ddcc 100644 --- a/src/test/java/org/gaul/s3proxy/AwsSdkTest.java +++ b/src/test/java/org/gaul/s3proxy/AwsSdkTest.java @@ -69,6 +69,7 @@ import com.amazonaws.services.s3.model.GroupGrantee; import com.amazonaws.services.s3.model.HeadBucketRequest; import com.amazonaws.services.s3.model.InitiateMultipartUploadRequest; import com.amazonaws.services.s3.model.InitiateMultipartUploadResult; +import com.amazonaws.services.s3.model.ListBucketsPaginatedRequest; import com.amazonaws.services.s3.model.ListMultipartUploadsRequest; import com.amazonaws.services.s3.model.ListObjectsRequest; import com.amazonaws.services.s3.model.ListObjectsV2Request; @@ -850,7 +851,7 @@ public final class AwsSdkTest { @Test public void testListBuckets() throws Exception { var builder = ImmutableList.builder(); - for (Bucket bucket : client.listBuckets()) { + for (Bucket bucket : client.listBuckets(new ListBucketsPaginatedRequest()).getBuckets()) { builder.add(bucket.getName()); } assertThat(builder.build()).contains(containerName); @@ -1687,7 +1688,7 @@ public final class AwsSdkTest { }); // check first access key - List buckets = client.listBuckets(); + var buckets = client.listBuckets(new ListBucketsPaginatedRequest()).getBuckets(); assertThat(buckets).hasSize(1); assertThat(buckets.get(0).getName()).isEqualTo(containerName); @@ -1700,7 +1701,7 @@ public final class AwsSdkTest { "credential"))) .withEndpointConfiguration(s3EndpointConfig) .build(); - buckets = client.listBuckets(); + buckets = client.listBuckets(new ListBucketsPaginatedRequest()).getBuckets(); assertThat(buckets).isEmpty(); // check invalid access key @@ -1710,7 +1711,7 @@ public final class AwsSdkTest { .withEndpointConfiguration(s3EndpointConfig) .build(); try { - client.listBuckets(); + client.listBuckets(new ListBucketsPaginatedRequest()); Fail.failBecauseExceptionWasNotThrown(AmazonS3Exception.class); } catch (AmazonS3Exception e) { assertThat(e.getErrorCode()).isEqualTo("InvalidAccessKeyId"); diff --git a/src/test/java/org/gaul/s3proxy/junit/S3ProxyExtensionTest.java b/src/test/java/org/gaul/s3proxy/junit/S3ProxyExtensionTest.java index f257a25..a3399f5 100644 --- a/src/test/java/org/gaul/s3proxy/junit/S3ProxyExtensionTest.java +++ b/src/test/java/org/gaul/s3proxy/junit/S3ProxyExtensionTest.java @@ -27,6 +27,7 @@ import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.Bucket; +import com.amazonaws.services.s3.model.ListBucketsPaginatedRequest; import com.amazonaws.services.s3.model.S3ObjectSummary; import org.junit.jupiter.api.BeforeEach; @@ -67,7 +68,7 @@ public class S3ProxyExtensionTest { @Test public final void listBucket() { - List buckets = s3Client.listBuckets(); + List buckets = s3Client.listBuckets(new ListBucketsPaginatedRequest()).getBuckets(); assertThat(buckets).hasSize(1); assertThat(buckets.get(0).getName()) .isEqualTo(MY_TEST_BUCKET); diff --git a/src/test/java/org/gaul/s3proxy/junit/S3ProxyRuleTest.java b/src/test/java/org/gaul/s3proxy/junit/S3ProxyRuleTest.java index 45fe93c..353f99b 100644 --- a/src/test/java/org/gaul/s3proxy/junit/S3ProxyRuleTest.java +++ b/src/test/java/org/gaul/s3proxy/junit/S3ProxyRuleTest.java @@ -27,6 +27,7 @@ import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.Bucket; +import com.amazonaws.services.s3.model.ListBucketsPaginatedRequest; import com.amazonaws.services.s3.model.S3ObjectSummary; import org.junit.Before; @@ -68,7 +69,7 @@ public class S3ProxyRuleTest { @Test public final void listBucket() { - List buckets = s3Client.listBuckets(); + List buckets = s3Client.listBuckets(new ListBucketsPaginatedRequest()).getBuckets(); assertThat(buckets).hasSize(1); assertThat(buckets.get(0).getName()) .isEqualTo(MY_TEST_BUCKET);