From f9fc327c9bc3db7ff7155ee7ade1922eee924bf3 Mon Sep 17 00:00:00 2001 From: brokkoli71 Date: Sun, 2 Nov 2025 14:38:45 +0100 Subject: [PATCH] catch NoSuchKeyException for S3Store.exists --- .../java/dev/zarr/zarrjava/store/S3Store.java | 16 +++++++--------- .../java/dev/zarr/zarrjava/ZarrStoreTest.java | 9 +++++++-- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/main/java/dev/zarr/zarrjava/store/S3Store.java b/src/main/java/dev/zarr/zarrjava/store/S3Store.java index 9368975..27aef77 100644 --- a/src/main/java/dev/zarr/zarrjava/store/S3Store.java +++ b/src/main/java/dev/zarr/zarrjava/store/S3Store.java @@ -4,13 +4,7 @@ import software.amazon.awssdk.core.ResponseInputStream; import software.amazon.awssdk.core.sync.RequestBody; import software.amazon.awssdk.services.s3.S3Client; -import software.amazon.awssdk.services.s3.model.DeleteObjectRequest; -import software.amazon.awssdk.services.s3.model.GetObjectRequest; -import software.amazon.awssdk.services.s3.model.GetObjectResponse; -import software.amazon.awssdk.services.s3.model.HeadObjectRequest; -import software.amazon.awssdk.services.s3.model.ListObjectsRequest; -import software.amazon.awssdk.services.s3.model.ListObjectsResponse; -import software.amazon.awssdk.services.s3.model.PutObjectRequest; +import software.amazon.awssdk.services.s3.model.*; import java.io.ByteArrayInputStream; import java.io.IOException; @@ -57,7 +51,11 @@ ByteBuffer get(GetObjectRequest getObjectRequest) { @Override public boolean exists(String[] keys) { HeadObjectRequest req = HeadObjectRequest.builder().bucket(bucketName).key(resolveKeys(keys)).build(); - return s3client.headObject(req).sdkHttpResponse().statusCode() == 200; + try { + return s3client.headObject(req).sdkHttpResponse().statusCode() == 200; + } catch (NoSuchKeyException e) { + return false; + } } @Nullable @@ -84,7 +82,7 @@ public ByteBuffer get(String[] keys, long start, long end) { GetObjectRequest req = GetObjectRequest.builder() .bucket(bucketName) .key(resolveKeys(keys)) - .range(String.valueOf(start)+"-"+String.valueOf(end)) + .range(start +"-"+ end) .build(); return get(req); } diff --git a/src/test/java/dev/zarr/zarrjava/ZarrStoreTest.java b/src/test/java/dev/zarr/zarrjava/ZarrStoreTest.java index 66b0238..f788d06 100644 --- a/src/test/java/dev/zarr/zarrjava/ZarrStoreTest.java +++ b/src/test/java/dev/zarr/zarrjava/ZarrStoreTest.java @@ -61,9 +61,14 @@ public void testS3Store() throws IOException, ZarrException { .region(Region.of("eu-west-1")) .credentialsProvider(AnonymousCredentialsProvider.create()) .build(), "static.webknossos.org", "data"); - Array array = Array.open(s3Store.resolve("zarr_v3", "l4_sample", "color", "1")); - Assertions.assertArrayEquals(new long[]{1, 4096, 4096, 2048}, array.metadata().shape); + Array arrayV3 = Array.open(s3Store.resolve("zarr_v3", "l4_sample", "color", "1")); + Assertions.assertArrayEquals(new long[]{1, 4096, 4096, 2048}, arrayV3.metadata().shape); + Assertions.assertEquals(0, arrayV3.read(new long[]{0,0,0,0}, new int[]{1,1,1,1}).getInt(0)); + + dev.zarr.zarrjava.core.Array arrayCore = dev.zarr.zarrjava.core.Array.open(s3Store.resolve("zarr_v3", "l4_sample", "color", "1")); + Assertions.assertArrayEquals(new long[]{1, 4096, 4096, 2048}, arrayCore.metadata().shape); + Assertions.assertEquals(0, arrayCore.read(new long[]{0,0,0,0}, new int[]{1,1,1,1}).getInt(0)); } @Test