From b9dfaa4af70c4a71f67b5b1f2a19c2e769d2e2d9 Mon Sep 17 00:00:00 2001 From: bmg13 Date: Wed, 14 Aug 2024 18:12:22 +0100 Subject: [PATCH 01/15] Fix: S3 directory logic on file upload. --- .../dataplane/aws/s3/S3DataSink.java | 21 ++++++++++++++----- .../dataplane/aws/s3/S3DataSource.java | 12 +++++++++-- .../dataplane/aws/s3/utils/S3DataUtils.java | 18 ++++++++++++++++ 3 files changed, 44 insertions(+), 7 deletions(-) create mode 100644 extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/utils/S3DataUtils.java diff --git a/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSink.java b/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSink.java index 044793c..f0642dc 100644 --- a/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSink.java +++ b/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSink.java @@ -32,6 +32,8 @@ import java.util.ArrayList; import java.util.List; +import static org.eclipse.edc.connector.dataplane.aws.s3.utils.S3DataUtils.DIRECTORY_SEPARATOR; + class S3DataSink extends ParallelSink { private S3Client client; @@ -72,6 +74,11 @@ protected StreamResult transferParts(List parts) { partNumber++; } + if (completedParts.isEmpty()) { + monitor.severe(String.format("The '%s' file cannot be empty, transfer will not be processed.", key)); + continue; + } + client.completeMultipartUpload(CompleteMultipartUploadRequest.builder() .bucket(bucketName) .key(key) @@ -92,12 +99,16 @@ protected StreamResult transferParts(List parts) { } private String getDestinationObjectName(String partName, int partsSize) { - var name = (partsSize == 1 && !StringUtils.isNullOrEmpty(objectName)) ? objectName : partName; - if (!StringUtils.isNullOrEmpty(folderName)) { - return folderName.endsWith("/") ? folderName + name : folderName + "/" + name; - } else { - return name; + var name = useObjectName(partName, partsSize) ? objectName : partName; + if (!StringUtils.isNullOrEmpty(folderName) && !name.startsWith(folderName + DIRECTORY_SEPARATOR)) { + return folderName.endsWith(DIRECTORY_SEPARATOR) ? folderName + name : folderName + DIRECTORY_SEPARATOR + name; } + + return name; + } + + private boolean useObjectName(String partName, int partsSize) { + return partsSize == 1 && partName.endsWith(DIRECTORY_SEPARATOR) && !StringUtils.isNullOrEmpty(objectName); } @NotNull diff --git a/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSource.java b/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSource.java index a8b4d7c..d25cf80 100644 --- a/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSource.java +++ b/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSource.java @@ -27,9 +27,12 @@ import java.io.InputStream; import java.util.ArrayList; +import java.util.Collection; import java.util.List; +import java.util.stream.Collectors; import java.util.stream.Stream; +import static org.eclipse.edc.connector.dataplane.aws.s3.utils.S3DataUtils.DIRECTORY_SEPARATOR; import static org.eclipse.edc.connector.dataplane.spi.pipeline.StreamFailure.Reason.GENERAL_ERROR; import static org.eclipse.edc.connector.dataplane.spi.pipeline.StreamResult.failure; import static org.eclipse.edc.connector.dataplane.spi.pipeline.StreamResult.success; @@ -107,7 +110,7 @@ private List fetchPrefixedS3Objects() { var response = client.listObjectsV2(listObjectsRequest); - s3Objects.addAll(response.contents()); + s3Objects.addAll(extractFiles(response.contents(), objectPrefix)); continuationToken = response.nextContinuationToken(); @@ -116,8 +119,13 @@ private List fetchPrefixedS3Objects() { return s3Objects; } + private Collection extractFiles(List contents, String objectPrefix) { + var folder = objectPrefix.endsWith(DIRECTORY_SEPARATOR) ? objectPrefix : objectPrefix + DIRECTORY_SEPARATOR; + return contents.stream().filter(object -> !object.key().equalsIgnoreCase(folder)).collect(Collectors.toSet()); + } + @Override - public void close() throws Exception { + public void close() { client.close(); } diff --git a/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/utils/S3DataUtils.java b/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/utils/S3DataUtils.java new file mode 100644 index 0000000..7bdf99d --- /dev/null +++ b/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/utils/S3DataUtils.java @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + */ +package org.eclipse.edc.connector.dataplane.aws.s3.utils; + +public class S3DataUtils { + public static final String DIRECTORY_SEPARATOR = "/"; +} From a975f8904f771713725be2400f37977a04399972 Mon Sep 17 00:00:00 2001 From: bmg13 Date: Wed, 14 Aug 2024 18:53:41 +0100 Subject: [PATCH 02/15] Fix: S3 directory logic on file upload. --- .../eclipse/edc/connector/dataplane/aws/s3/S3DataSink.java | 6 +++--- .../edc/connector/dataplane/aws/s3/utils/S3DataUtils.java | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSink.java b/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSink.java index f0642dc..30ddf46 100644 --- a/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSink.java +++ b/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSink.java @@ -99,7 +99,7 @@ protected StreamResult transferParts(List parts) { } private String getDestinationObjectName(String partName, int partsSize) { - var name = useObjectName(partName, partsSize) ? objectName : partName; + var name = useObjectName(partsSize) ? objectName : partName; if (!StringUtils.isNullOrEmpty(folderName) && !name.startsWith(folderName + DIRECTORY_SEPARATOR)) { return folderName.endsWith(DIRECTORY_SEPARATOR) ? folderName + name : folderName + DIRECTORY_SEPARATOR + name; } @@ -107,8 +107,8 @@ private String getDestinationObjectName(String partName, int partsSize) { return name; } - private boolean useObjectName(String partName, int partsSize) { - return partsSize == 1 && partName.endsWith(DIRECTORY_SEPARATOR) && !StringUtils.isNullOrEmpty(objectName); + private boolean useObjectName(int partsSize) { + return partsSize == 1 && !StringUtils.isNullOrEmpty(objectName); } @NotNull diff --git a/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/utils/S3DataUtils.java b/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/utils/S3DataUtils.java index 7bdf99d..a4a480e 100644 --- a/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/utils/S3DataUtils.java +++ b/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/utils/S3DataUtils.java @@ -11,6 +11,7 @@ * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * */ + package org.eclipse.edc.connector.dataplane.aws.s3.utils; public class S3DataUtils { From 64e84ca1dd7fbeaa264c8974fcb6928f770b3f25 Mon Sep 17 00:00:00 2001 From: Rafael Date: Mon, 19 Aug 2024 14:31:12 +0100 Subject: [PATCH 03/15] fix S3DataSink allows part upload when part is 0 byte file --- .../dataplane/aws/s3/S3DataSink.java | 15 ++++----------- .../dataplane/aws/s3/S3DataSource.java | 3 +-- .../dataplane/aws/s3/utils/S3DataUtils.java | 19 ------------------- 3 files changed, 5 insertions(+), 32 deletions(-) delete mode 100644 extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/utils/S3DataUtils.java diff --git a/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSink.java b/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSink.java index 30ddf46..62c9add 100644 --- a/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSink.java +++ b/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSink.java @@ -32,8 +32,6 @@ import java.util.ArrayList; import java.util.List; -import static org.eclipse.edc.connector.dataplane.aws.s3.utils.S3DataUtils.DIRECTORY_SEPARATOR; - class S3DataSink extends ParallelSink { private S3Client client; @@ -62,7 +60,7 @@ protected StreamResult transferParts(List parts) { var partNumber = 1; byte[] bytesChunk = input.readNBytes(chunkSize); - while (bytesChunk.length > 0) { + do { completedParts.add(CompletedPart.builder().partNumber(partNumber) .eTag(client.uploadPart(UploadPartRequest.builder() .bucket(bucketName) @@ -72,12 +70,7 @@ protected StreamResult transferParts(List parts) { .build(), RequestBody.fromByteBuffer(ByteBuffer.wrap(bytesChunk))).eTag()).build()); bytesChunk = input.readNBytes(chunkSize); partNumber++; - } - - if (completedParts.isEmpty()) { - monitor.severe(String.format("The '%s' file cannot be empty, transfer will not be processed.", key)); - continue; - } + } while (bytesChunk.length > 0); client.completeMultipartUpload(CompleteMultipartUploadRequest.builder() .bucket(bucketName) @@ -100,8 +93,8 @@ protected StreamResult transferParts(List parts) { private String getDestinationObjectName(String partName, int partsSize) { var name = useObjectName(partsSize) ? objectName : partName; - if (!StringUtils.isNullOrEmpty(folderName) && !name.startsWith(folderName + DIRECTORY_SEPARATOR)) { - return folderName.endsWith(DIRECTORY_SEPARATOR) ? folderName + name : folderName + DIRECTORY_SEPARATOR + name; + if (!StringUtils.isNullOrEmpty(folderName)) { + return folderName.endsWith("/") ? folderName + name : folderName + "/" + name; } return name; diff --git a/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSource.java b/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSource.java index d25cf80..eec3e63 100644 --- a/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSource.java +++ b/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSource.java @@ -32,7 +32,6 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import static org.eclipse.edc.connector.dataplane.aws.s3.utils.S3DataUtils.DIRECTORY_SEPARATOR; import static org.eclipse.edc.connector.dataplane.spi.pipeline.StreamFailure.Reason.GENERAL_ERROR; import static org.eclipse.edc.connector.dataplane.spi.pipeline.StreamResult.failure; import static org.eclipse.edc.connector.dataplane.spi.pipeline.StreamResult.success; @@ -120,7 +119,7 @@ private List fetchPrefixedS3Objects() { } private Collection extractFiles(List contents, String objectPrefix) { - var folder = objectPrefix.endsWith(DIRECTORY_SEPARATOR) ? objectPrefix : objectPrefix + DIRECTORY_SEPARATOR; + var folder = objectPrefix.endsWith("/") ? objectPrefix : objectPrefix + "/"; return contents.stream().filter(object -> !object.key().equalsIgnoreCase(folder)).collect(Collectors.toSet()); } diff --git a/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/utils/S3DataUtils.java b/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/utils/S3DataUtils.java deleted file mode 100644 index a4a480e..0000000 --- a/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/utils/S3DataUtils.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 - * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - */ - -package org.eclipse.edc.connector.dataplane.aws.s3.utils; - -public class S3DataUtils { - public static final String DIRECTORY_SEPARATOR = "/"; -} From bce5f6af1256f1452964fb9bedcf0bd1b5a03f3c Mon Sep 17 00:00:00 2001 From: Rafael Date: Mon, 19 Aug 2024 17:38:21 +0100 Subject: [PATCH 04/15] Improved unit and integration tests. --- .../aws/s3/S3DataPlaneIntegrationTest.java | 8 +++ .../dataplane/aws/s3/S3DataSinkTest.java | 72 ++++++++----------- 2 files changed, 38 insertions(+), 42 deletions(-) diff --git a/extensions/data-plane/data-plane-aws-s3/src/test/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataPlaneIntegrationTest.java b/extensions/data-plane/data-plane-aws-s3/src/test/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataPlaneIntegrationTest.java index 31dc80a..410a1bd 100644 --- a/extensions/data-plane/data-plane-aws-s3/src/test/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataPlaneIntegrationTest.java +++ b/extensions/data-plane/data-plane-aws-s3/src/test/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataPlaneIntegrationTest.java @@ -105,6 +105,10 @@ void should_copy_using_destination_object_name_case_single_transfer(List var objectNameInDestination = "object-name-in-destination"; var objectContent = UUID.randomUUID().toString(); + //Put folder 0 byte size file marker. AWS does this when a folder is created via the console. + if(!isSingleObject) + sourceClient.putStringOnBucket(sourceBucketName, OBJECT_PREFIX, ""); + for (var objectName : objectNames) { sourceClient.putStringOnBucket(sourceBucketName, objectName, objectContent); } @@ -164,6 +168,10 @@ void should_copy_to_folder_case_property_is_present(List objectNames) { var folderNameInDestination = "folder-name-in-destination/"; var objectBody = UUID.randomUUID().toString(); + //Put folder 0 byte size file marker. AWS does this when a folder is created via the console. + if(!isSingleObject) + sourceClient.putStringOnBucket(sourceBucketName, OBJECT_PREFIX, ""); + for (var objectToTransfer : objectNames) { sourceClient.putStringOnBucket(sourceBucketName, objectToTransfer, objectBody); } diff --git a/extensions/data-plane/data-plane-aws-s3/src/test/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSinkTest.java b/extensions/data-plane/data-plane-aws-s3/src/test/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSinkTest.java index b707d12..b51faef 100644 --- a/extensions/data-plane/data-plane-aws-s3/src/test/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSinkTest.java +++ b/extensions/data-plane/data-plane-aws-s3/src/test/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSinkTest.java @@ -26,7 +26,6 @@ import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.ArgumentsProvider; import org.junit.jupiter.params.provider.ArgumentsSource; -import org.junit.platform.commons.util.StringUtils; import org.mockito.ArgumentCaptor; import software.amazon.awssdk.core.sync.RequestBody; import software.amazon.awssdk.services.s3.S3Client; @@ -63,11 +62,6 @@ public class S3DataSinkTest { private ArgumentCaptor completeMultipartUploadRequestCaptor; - private static InputStreamDataSource createDataSource(String text) { - var content = StringUtils.isBlank(text) ? "test stream" : text; - return new InputStreamDataSource(SOURCE_OBJECT_NAME, new ByteArrayInputStream(content.getBytes(UTF_8))); - } - @BeforeEach void setup() { s3ClientMock = mock(S3Client.class); @@ -90,8 +84,8 @@ void setup() { } @ParameterizedTest - @ArgumentsSource(SinglePartsInputs.class) - void transferParts_singlePart_succeeds(List inputStream) { + @ArgumentsSource(PartsInputs.class) + void transferParts_succeeds(List inputStream, int expectedPartsPerObject) { var isSingleObject = inputStream.size() == 1; var result = dataSink.transferParts(inputStream); @@ -99,28 +93,14 @@ void transferParts_singlePart_succeeds(List inputStream) { verify(s3ClientMock, times(inputStream.size())).completeMultipartUpload(completeMultipartUploadRequestCaptor .capture()); - var completeMultipartUploadRequest = completeMultipartUploadRequestCaptor.getValue(); - assertThat(completeMultipartUploadRequest.bucket()).isEqualTo(BUCKET_NAME); - assertThat(completeMultipartUploadRequest.key()) - .isEqualTo(isSingleObject ? DESTINATION_OBJECT_NAME : SOURCE_OBJECT_NAME); - assertThat(completeMultipartUploadRequest.multipartUpload().parts()).hasSize(1); - } - - @ParameterizedTest - @ArgumentsSource(MultiPartsInputs.class) - void transferParts_multiPart_succeeds(List inputStream) { - var isSingleObject = inputStream.size() == 1; - - var result = dataSink.transferParts(inputStream); + var completeMultipartUploadRequests = completeMultipartUploadRequestCaptor.getAllValues(); - assertThat(result.succeeded()).isTrue(); - verify(s3ClientMock, times(inputStream.size())) - .completeMultipartUpload(completeMultipartUploadRequestCaptor.capture()); - var completeMultipartUploadRequest = completeMultipartUploadRequestCaptor.getValue(); - assertThat(completeMultipartUploadRequest.bucket()).isEqualTo(BUCKET_NAME); - assertThat(completeMultipartUploadRequest.key()) - .isEqualTo(isSingleObject ? DESTINATION_OBJECT_NAME : SOURCE_OBJECT_NAME); - assertThat(completeMultipartUploadRequest.multipartUpload().parts()).hasSize(2); + for(var request: completeMultipartUploadRequests){ + assertThat(request.bucket()).isEqualTo(BUCKET_NAME); + assertThat(request.key()) + .isEqualTo(isSingleObject ? DESTINATION_OBJECT_NAME : SOURCE_OBJECT_NAME); + assertThat(request.multipartUpload().parts()).hasSize(expectedPartsPerObject); + } } @Test @@ -139,7 +119,7 @@ void transferParts_failed_to_download() { } @ParameterizedTest - @ArgumentsSource(MultiPartsInputs.class) + @ArgumentsSource(PartsInputs.class) void transferParts_fails_to_upload(List inputStream) { var isSingleObject = inputStream.size() == 1; @@ -167,24 +147,32 @@ void transferParts_fails_to_upload(List inputStream) { assertThat(result.getFailureDetail()).isEqualTo(expectedMessage); } - private static class SinglePartsInputs implements ArgumentsProvider { + private static class PartsInputs implements ArgumentsProvider { @Override public Stream provideArguments(ExtensionContext context) { - var content = "content smaller than a chunk size"; - return Stream.of(Arguments.of(List.of(createDataSource(content))), - Arguments.of(List.of(createDataSource(content)), List.of(createDataSource(content))) + var emptyContent = ""; + var smallContent = "content smaller than a chunk size"; + var bigContent = "content bigger than 50 bytes chunk size so that it gets chunked and uploaded as a multipart upload"; + return Stream.of( + Arguments.of( + List.of(createDataSource(emptyContent)), 1), + Arguments.of( + List.of(createDataSource(smallContent)), 1), + Arguments.of( + List.of(createDataSource(bigContent)), 2), + Arguments.of( + List.of(createDataSource(emptyContent), createDataSource(smallContent)), 1), + Arguments.of( + List.of(createDataSource(bigContent), createDataSource(bigContent)), 2) ); } + } - private static class MultiPartsInputs implements ArgumentsProvider { - @Override - public Stream provideArguments(ExtensionContext context) { - var content = "content bigger than 50 bytes chunk size so that it gets chunked and uploaded as a multipart upload"; - return Stream.of(Arguments.of(List.of(createDataSource(content))), - Arguments.of(List.of(createDataSource(content)), List.of(createDataSource(content))) - ); + private static InputStreamDataSource createDataSource(String text) { + if (text.length() > 0){ + return new InputStreamDataSource(SOURCE_OBJECT_NAME, new ByteArrayInputStream(text.getBytes(UTF_8))); } - + return new InputStreamDataSource(SOURCE_OBJECT_NAME, new ByteArrayInputStream(new byte[0])); } } From 326153e52e248f8a3bc34fd07b9e54c8e430c1c3 Mon Sep 17 00:00:00 2001 From: Rafael Date: Mon, 19 Aug 2024 18:13:18 +0100 Subject: [PATCH 05/15] Rename function for readability --- .../eclipse/edc/connector/dataplane/aws/s3/S3DataSource.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSource.java b/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSource.java index eec3e63..16865a2 100644 --- a/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSource.java +++ b/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSource.java @@ -109,7 +109,7 @@ private List fetchPrefixedS3Objects() { var response = client.listObjectsV2(listObjectsRequest); - s3Objects.addAll(extractFiles(response.contents(), objectPrefix)); + s3Objects.addAll(filterOutFolderFile(response.contents(), objectPrefix)); continuationToken = response.nextContinuationToken(); @@ -118,7 +118,7 @@ private List fetchPrefixedS3Objects() { return s3Objects; } - private Collection extractFiles(List contents, String objectPrefix) { + private Collection filterOutFolderFile(List contents, String objectPrefix) { var folder = objectPrefix.endsWith("/") ? objectPrefix : objectPrefix + "/"; return contents.stream().filter(object -> !object.key().equalsIgnoreCase(folder)).collect(Collectors.toSet()); } From e52cd562a63f0eef5ab777310270697d5fc0ccfa Mon Sep 17 00:00:00 2001 From: Rafael Date: Mon, 19 Aug 2024 20:12:48 +0100 Subject: [PATCH 06/15] Indentation --- .../dataplane/aws/s3/S3DataSinkTest.java | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/extensions/data-plane/data-plane-aws-s3/src/test/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSinkTest.java b/extensions/data-plane/data-plane-aws-s3/src/test/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSinkTest.java index b51faef..06666cf 100644 --- a/extensions/data-plane/data-plane-aws-s3/src/test/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSinkTest.java +++ b/extensions/data-plane/data-plane-aws-s3/src/test/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSinkTest.java @@ -151,22 +151,20 @@ private static class PartsInputs implements ArgumentsProvider { @Override public Stream provideArguments(ExtensionContext context) { var emptyContent = ""; - var smallContent = "content smaller than a chunk size"; + var smallContent = "content smaller than a chunk size"; var bigContent = "content bigger than 50 bytes chunk size so that it gets chunked and uploaded as a multipart upload"; return Stream.of( - Arguments.of( - List.of(createDataSource(emptyContent)), 1), - Arguments.of( - List.of(createDataSource(smallContent)), 1), - Arguments.of( - List.of(createDataSource(bigContent)), 2), - Arguments.of( - List.of(createDataSource(emptyContent), createDataSource(smallContent)), 1), - Arguments.of( - List.of(createDataSource(bigContent), createDataSource(bigContent)), 2) - ); + Arguments.of( + List.of(createDataSource(emptyContent)), 1), + Arguments.of( + List.of(createDataSource(smallContent)), 1), + Arguments.of( + List.of(createDataSource(bigContent)), 2), + Arguments.of( + List.of(createDataSource(emptyContent), createDataSource(smallContent)), 1), + Arguments.of( + List.of(createDataSource(bigContent), createDataSource(bigContent)), 2)); } - } private static InputStreamDataSource createDataSource(String text) { From 0f1a0ec987e1f85b2c8b2e13a05604421d55515d Mon Sep 17 00:00:00 2001 From: Rafael Date: Mon, 19 Aug 2024 22:20:21 +0100 Subject: [PATCH 07/15] Added no such key test --- .../aws/s3/S3DataPlaneIntegrationTest.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/extensions/data-plane/data-plane-aws-s3/src/test/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataPlaneIntegrationTest.java b/extensions/data-plane/data-plane-aws-s3/src/test/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataPlaneIntegrationTest.java index 410a1bd..1474381 100644 --- a/extensions/data-plane/data-plane-aws-s3/src/test/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataPlaneIntegrationTest.java +++ b/extensions/data-plane/data-plane-aws-s3/src/test/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataPlaneIntegrationTest.java @@ -35,9 +35,11 @@ import software.amazon.awssdk.core.ResponseBytes; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.model.GetObjectResponse; +import software.amazon.awssdk.services.s3.model.NoSuchKeyException; import java.util.List; import java.util.UUID; +import java.util.concurrent.ExecutionException; import java.util.concurrent.Executors; import java.util.stream.Stream; @@ -156,6 +158,11 @@ void should_copy_using_destination_object_name_case_single_transfer(List .extracting(Long::intValue) .isEqualTo(objectContent.length()); } + + assertThat(destinationClient.getObject(destinationBucketName, + OBJECT_PREFIX)).failsWithin(5, SECONDS) + .withThrowableOfType(ExecutionException.class) + .withCauseInstanceOf(NoSuchKeyException.class); } } @@ -220,7 +227,13 @@ void should_copy_to_folder_case_property_is_present(List objectNames) { .extracting(Long::intValue) .isEqualTo(objectBody.length()); } + assertThat(destinationClient.getObject(destinationBucketName, folderNameInDestination + + OBJECT_PREFIX)).failsWithin(5, SECONDS) + .withThrowableOfType(ExecutionException.class) + .withCauseInstanceOf(NoSuchKeyException.class); } + + } private DataAddress createDataAddress(List assetNames, boolean isSingleObject) { From 628c084d4cf28f67f0189d8af36b4d1b5a573950 Mon Sep 17 00:00:00 2001 From: bmg13 Date: Tue, 20 Aug 2024 11:27:05 +0100 Subject: [PATCH 08/15] Fix checkstyle. --- .../aws/s3/S3DataPlaneIntegrationTest.java | 20 ++++++++++--------- .../dataplane/aws/s3/S3DataSinkTest.java | 16 +++++++-------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/extensions/data-plane/data-plane-aws-s3/src/test/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataPlaneIntegrationTest.java b/extensions/data-plane/data-plane-aws-s3/src/test/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataPlaneIntegrationTest.java index 1474381..8952a63 100644 --- a/extensions/data-plane/data-plane-aws-s3/src/test/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataPlaneIntegrationTest.java +++ b/extensions/data-plane/data-plane-aws-s3/src/test/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataPlaneIntegrationTest.java @@ -108,8 +108,9 @@ void should_copy_using_destination_object_name_case_single_transfer(List var objectContent = UUID.randomUUID().toString(); //Put folder 0 byte size file marker. AWS does this when a folder is created via the console. - if(!isSingleObject) + if (!isSingleObject) { sourceClient.putStringOnBucket(sourceBucketName, OBJECT_PREFIX, ""); + } for (var objectName : objectNames) { sourceClient.putStringOnBucket(sourceBucketName, objectName, objectContent); @@ -160,9 +161,9 @@ void should_copy_using_destination_object_name_case_single_transfer(List } assertThat(destinationClient.getObject(destinationBucketName, - OBJECT_PREFIX)).failsWithin(5, SECONDS) - .withThrowableOfType(ExecutionException.class) - .withCauseInstanceOf(NoSuchKeyException.class); + OBJECT_PREFIX)).failsWithin(5, SECONDS) + .withThrowableOfType(ExecutionException.class) + .withCauseInstanceOf(NoSuchKeyException.class); } } @@ -176,8 +177,9 @@ void should_copy_to_folder_case_property_is_present(List objectNames) { var objectBody = UUID.randomUUID().toString(); //Put folder 0 byte size file marker. AWS does this when a folder is created via the console. - if(!isSingleObject) + if (!isSingleObject) { sourceClient.putStringOnBucket(sourceBucketName, OBJECT_PREFIX, ""); + } for (var objectToTransfer : objectNames) { sourceClient.putStringOnBucket(sourceBucketName, objectToTransfer, objectBody); @@ -228,11 +230,11 @@ void should_copy_to_folder_case_property_is_present(List objectNames) { .isEqualTo(objectBody.length()); } assertThat(destinationClient.getObject(destinationBucketName, folderNameInDestination + - OBJECT_PREFIX)).failsWithin(5, SECONDS) - .withThrowableOfType(ExecutionException.class) - .withCauseInstanceOf(NoSuchKeyException.class); + OBJECT_PREFIX)).failsWithin(5, SECONDS) + .withThrowableOfType(ExecutionException.class) + .withCauseInstanceOf(NoSuchKeyException.class); } - + } diff --git a/extensions/data-plane/data-plane-aws-s3/src/test/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSinkTest.java b/extensions/data-plane/data-plane-aws-s3/src/test/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSinkTest.java index 06666cf..7913322 100644 --- a/extensions/data-plane/data-plane-aws-s3/src/test/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSinkTest.java +++ b/extensions/data-plane/data-plane-aws-s3/src/test/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSinkTest.java @@ -95,12 +95,12 @@ void transferParts_succeeds(List inputStream, int expectedParts var completeMultipartUploadRequests = completeMultipartUploadRequestCaptor.getAllValues(); - for(var request: completeMultipartUploadRequests){ - assertThat(request.bucket()).isEqualTo(BUCKET_NAME); - assertThat(request.key()) - .isEqualTo(isSingleObject ? DESTINATION_OBJECT_NAME : SOURCE_OBJECT_NAME); - assertThat(request.multipartUpload().parts()).hasSize(expectedPartsPerObject); - } + for (var request : completeMultipartUploadRequests) { + assertThat(request.bucket()).isEqualTo(BUCKET_NAME); + assertThat(request.key()) + .isEqualTo(isSingleObject ? DESTINATION_OBJECT_NAME : SOURCE_OBJECT_NAME); + assertThat(request.multipartUpload().parts()).hasSize(expectedPartsPerObject); + } } @Test @@ -168,8 +168,8 @@ public Stream provideArguments(ExtensionContext context) { } private static InputStreamDataSource createDataSource(String text) { - if (text.length() > 0){ - return new InputStreamDataSource(SOURCE_OBJECT_NAME, new ByteArrayInputStream(text.getBytes(UTF_8))); + if (text.length() > 0) { + return new InputStreamDataSource(SOURCE_OBJECT_NAME, new ByteArrayInputStream(text.getBytes(UTF_8))); } return new InputStreamDataSource(SOURCE_OBJECT_NAME, new ByteArrayInputStream(new byte[0])); } From 0730a0eb3914748535ad02b1c51bcdbdd4a46938 Mon Sep 17 00:00:00 2001 From: Rafael Date: Tue, 20 Aug 2024 12:11:10 +0100 Subject: [PATCH 09/15] Account for nested folders --- .../eclipse/edc/connector/dataplane/aws/s3/S3DataSource.java | 3 +-- .../connector/dataplane/aws/s3/S3DataPlaneIntegrationTest.java | 2 ++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSource.java b/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSource.java index 16865a2..2c5db46 100644 --- a/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSource.java +++ b/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSource.java @@ -119,8 +119,7 @@ private List fetchPrefixedS3Objects() { } private Collection filterOutFolderFile(List contents, String objectPrefix) { - var folder = objectPrefix.endsWith("/") ? objectPrefix : objectPrefix + "/"; - return contents.stream().filter(object -> !object.key().equalsIgnoreCase(folder)).collect(Collectors.toSet()); + return contents.stream().filter(object -> !object.key().endsWith("/")).collect(Collectors.toSet()); } @Override diff --git a/extensions/data-plane/data-plane-aws-s3/src/test/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataPlaneIntegrationTest.java b/extensions/data-plane/data-plane-aws-s3/src/test/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataPlaneIntegrationTest.java index 8952a63..67fab69 100644 --- a/extensions/data-plane/data-plane-aws-s3/src/test/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataPlaneIntegrationTest.java +++ b/extensions/data-plane/data-plane-aws-s3/src/test/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataPlaneIntegrationTest.java @@ -110,6 +110,7 @@ void should_copy_using_destination_object_name_case_single_transfer(List //Put folder 0 byte size file marker. AWS does this when a folder is created via the console. if (!isSingleObject) { sourceClient.putStringOnBucket(sourceBucketName, OBJECT_PREFIX, ""); + sourceClient.putStringOnBucket(sourceBucketName, OBJECT_PREFIX + "testFolder/", ""); } for (var objectName : objectNames) { @@ -179,6 +180,7 @@ void should_copy_to_folder_case_property_is_present(List objectNames) { //Put folder 0 byte size file marker. AWS does this when a folder is created via the console. if (!isSingleObject) { sourceClient.putStringOnBucket(sourceBucketName, OBJECT_PREFIX, ""); + sourceClient.putStringOnBucket(sourceBucketName, OBJECT_PREFIX + "testFolder/", ""); } for (var objectToTransfer : objectNames) { From 6f1132480fb8b27951c6d22d569921a3d935bcab Mon Sep 17 00:00:00 2001 From: Rafael Date: Tue, 20 Aug 2024 12:36:28 +0100 Subject: [PATCH 10/15] Remove unused argument --- .../eclipse/edc/connector/dataplane/aws/s3/S3DataSource.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSource.java b/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSource.java index 2c5db46..5c48126 100644 --- a/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSource.java +++ b/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSource.java @@ -109,7 +109,7 @@ private List fetchPrefixedS3Objects() { var response = client.listObjectsV2(listObjectsRequest); - s3Objects.addAll(filterOutFolderFile(response.contents(), objectPrefix)); + s3Objects.addAll(filterOutFolderFile(response.contents())); continuationToken = response.nextContinuationToken(); @@ -118,7 +118,7 @@ private List fetchPrefixedS3Objects() { return s3Objects; } - private Collection filterOutFolderFile(List contents, String objectPrefix) { + private Collection filterOutFolderFile(List contents) { return contents.stream().filter(object -> !object.key().endsWith("/")).collect(Collectors.toSet()); } From 62ef21a588aef4808200177aade729b622607851 Mon Sep 17 00:00:00 2001 From: Rafael Date: Tue, 20 Aug 2024 15:14:34 +0100 Subject: [PATCH 11/15] use predicate instead of method --- .../edc/connector/dataplane/aws/s3/S3DataSource.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSource.java b/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSource.java index 5c48126..17fb1f1 100644 --- a/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSource.java +++ b/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSource.java @@ -27,8 +27,8 @@ import java.io.InputStream; import java.util.ArrayList; -import java.util.Collection; import java.util.List; +import java.util.function.Predicate; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -109,7 +109,9 @@ private List fetchPrefixedS3Objects() { var response = client.listObjectsV2(listObjectsRequest); - s3Objects.addAll(filterOutFolderFile(response.contents())); + Predicate isFile = object -> !object.key().endsWith("/"); + + s3Objects.addAll(response.contents().stream().filter(isFile).collect(Collectors.toList())); continuationToken = response.nextContinuationToken(); @@ -118,10 +120,6 @@ private List fetchPrefixedS3Objects() { return s3Objects; } - private Collection filterOutFolderFile(List contents) { - return contents.stream().filter(object -> !object.key().endsWith("/")).collect(Collectors.toSet()); - } - @Override public void close() { client.close(); From 50cc04fb5496419e48f7a234d3cd17bc396596be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Magalh=C3=A3es?= Date: Tue, 20 Aug 2024 15:18:33 +0100 Subject: [PATCH 12/15] Update DEPENDENCIES --- DEPENDENCIES | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index 2682902..1d0f5ba 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -205,16 +205,16 @@ maven/mavencentral/org.jetbrains/annotations/17.0.0, Apache-2.0, approved, clear maven/mavencentral/org.jetbrains/annotations/24.1.0, Apache-2.0, approved, clearlydefined maven/mavencentral/org.junit-pioneer/junit-pioneer/2.2.0, EPL-2.0, approved, #11857 maven/mavencentral/org.junit.jupiter/junit-jupiter-api/5.10.2, EPL-2.0, approved, #9714 -maven/mavencentral/org.junit.jupiter/junit-jupiter-api/5.10.3, EPL-2.0, approved, #9714 +maven/mavencentral/org.junit.jupiter/junit-jupiter-api/5.11.0, EPL-2.0, approved, #15935 maven/mavencentral/org.junit.jupiter/junit-jupiter-engine/5.10.2, EPL-2.0, approved, #9711 -maven/mavencentral/org.junit.jupiter/junit-jupiter-engine/5.10.3, EPL-2.0, approved, #9711 -maven/mavencentral/org.junit.jupiter/junit-jupiter-params/5.10.3, EPL-2.0, approved, #15250 +maven/mavencentral/org.junit.jupiter/junit-jupiter-engine/5.11.0, EPL-2.0, approved, #15939 +maven/mavencentral/org.junit.jupiter/junit-jupiter-params/5.11.0, EPL-2.0, approved, #15940 maven/mavencentral/org.junit.platform/junit-platform-commons/1.10.2, EPL-2.0, approved, #9715 -maven/mavencentral/org.junit.platform/junit-platform-commons/1.10.3, EPL-2.0, approved, #9715 -maven/mavencentral/org.junit.platform/junit-platform-engine/1.10.3, EPL-2.0, approved, #9709 -maven/mavencentral/org.junit.platform/junit-platform-launcher/1.10.3, EPL-2.0, approved, #15216 +maven/mavencentral/org.junit.platform/junit-platform-commons/1.11.0, EPL-2.0, approved, #15936 +maven/mavencentral/org.junit.platform/junit-platform-engine/1.11.0, EPL-2.0, approved, #15932 +maven/mavencentral/org.junit.platform/junit-platform-launcher/1.11.0, EPL-2.0, approved, #15934 maven/mavencentral/org.junit/junit-bom/5.10.2, EPL-2.0, approved, #9844 -maven/mavencentral/org.junit/junit-bom/5.10.3, EPL-2.0, approved, #9844 +maven/mavencentral/org.junit/junit-bom/5.11.0, , restricted, clearlydefined maven/mavencentral/org.junit/junit-bom/5.9.2, EPL-2.0, approved, #4711 maven/mavencentral/org.jvnet.mimepull/mimepull/1.9.15, CDDL-1.1 OR GPL-2.0-only WITH Classpath-exception-2.0, approved, CQ21484 maven/mavencentral/org.mockito/mockito-core/5.12.0, MIT AND (Apache-2.0 AND MIT) AND Apache-2.0, approved, #14678 From a6645acb2ef49aa9c677606e86a50dda6b76f3e2 Mon Sep 17 00:00:00 2001 From: Rafael Date: Tue, 20 Aug 2024 15:31:55 +0100 Subject: [PATCH 13/15] change predicate to class const --- .../eclipse/edc/connector/dataplane/aws/s3/S3DataSource.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSource.java b/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSource.java index 17fb1f1..b319ad6 100644 --- a/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSource.java +++ b/extensions/data-plane/data-plane-aws-s3/src/main/java/org/eclipse/edc/connector/dataplane/aws/s3/S3DataSource.java @@ -49,6 +49,8 @@ class S3DataSource implements DataSource { private S3Client client; private Monitor monitor; + private final Predicate isFile = object -> !object.key().endsWith("/"); + private S3DataSource() { } @@ -109,8 +111,6 @@ private List fetchPrefixedS3Objects() { var response = client.listObjectsV2(listObjectsRequest); - Predicate isFile = object -> !object.key().endsWith("/"); - s3Objects.addAll(response.contents().stream().filter(isFile).collect(Collectors.toList())); continuationToken = response.nextContinuationToken(); From 6a1d444e71b77093386b808177dbf28b31ea4744 Mon Sep 17 00:00:00 2001 From: Rafael Date: Tue, 20 Aug 2024 15:33:26 +0100 Subject: [PATCH 14/15] dependencies --- DEPENDENCIES | 87 +--------------------------------------------------- 1 file changed, 1 insertion(+), 86 deletions(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index 1d0f5ba..ad7233c 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -1,32 +1,17 @@ -maven/mavencentral/com.apicatalog/carbon-did/0.3.0, Apache-2.0, approved, clearlydefined -maven/mavencentral/com.apicatalog/copper-multibase/0.5.0, Apache-2.0, approved, #14501 -maven/mavencentral/com.apicatalog/copper-multicodec/0.1.1, Apache-2.0, approved, #14500 -maven/mavencentral/com.apicatalog/iron-verifiable-credentials/0.14.0, Apache-2.0, approved, clearlydefined -maven/mavencentral/com.apicatalog/titanium-json-ld/1.0.0, Apache-2.0, approved, clearlydefined -maven/mavencentral/com.apicatalog/titanium-json-ld/1.4.0, Apache-2.0, approved, #15200 maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.10.3, Apache-2.0, approved, CQ21280 -maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.17.1, Apache-2.0, approved, #13672 maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.17.2, Apache-2.0, approved, #13672 maven/mavencentral/com.fasterxml.jackson.core/jackson-core/2.17.2, , approved, #13665 -maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.17.1, Apache-2.0, approved, #13671 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.17.2, Apache-2.0, approved, #13671 maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.17.2, Apache-2.0, approved, #14160 -maven/mavencentral/com.fasterxml.jackson.module/jackson-module-jakarta-xmlbind-annotations/2.17.1, Apache-2.0, approved, #13668 -maven/mavencentral/com.fasterxml.jackson.module/jackson-module-jakarta-xmlbind-annotations/2.17.2, Apache-2.0, approved, #13668 maven/mavencentral/com.fasterxml.jackson/jackson-bom/2.17.2, Apache-2.0, approved, #14162 maven/mavencentral/com.github.docker-java/docker-java-api/3.4.0, Apache-2.0, approved, clearlydefined maven/mavencentral/com.github.docker-java/docker-java-transport-zerodep/3.4.0, Apache-2.0 AND (Apache-2.0 AND BSD-3-Clause), approved, #15745 maven/mavencentral/com.github.docker-java/docker-java-transport/3.4.0, Apache-2.0, approved, clearlydefined maven/mavencentral/com.google.code.findbugs/jsr305/3.0.2, CC-BY-2.5, approved, #15220 -maven/mavencentral/com.google.code.gson/gson/2.10.1, Apache-2.0, approved, #6159 -maven/mavencentral/com.google.crypto.tink/tink/1.14.1, Apache-2.0, approved, clearlydefined -maven/mavencentral/com.google.errorprone/error_prone_annotations/2.22.0, Apache-2.0, approved, #10661 maven/mavencentral/com.google.errorprone/error_prone_annotations/2.26.1, Apache-2.0, approved, #13657 maven/mavencentral/com.google.guava/failureaccess/1.0.2, Apache-2.0, approved, CQ22654 maven/mavencentral/com.google.guava/guava/33.2.0-jre, Apache-2.0 AND CC0-1.0 AND (Apache-2.0 AND CC-PDDC), approved, #14607 maven/mavencentral/com.google.guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava, Apache-2.0, approved, CQ22657 -maven/mavencentral/com.google.protobuf/protobuf-java/3.25.3, BSD-3-Clause, approved, clearlydefined -maven/mavencentral/com.nimbusds/nimbus-jose-jwt/9.40, Apache-2.0, approved, #15156 maven/mavencentral/com.puppycrawl.tools/checkstyle/10.17.0, LGPL-2.1-or-later AND (Apache-2.0 AND LGPL-2.1-or-later) AND Apache-2.0, approved, #15077 maven/mavencentral/com.squareup.okhttp3/okhttp-dnsoverhttps/4.12.0, Apache-2.0, approved, #11159 maven/mavencentral/com.squareup.okhttp3/okhttp/4.12.0, Apache-2.0, approved, #15227 @@ -56,16 +41,8 @@ maven/mavencentral/io.netty/netty-transport/4.1.111.Final, Apache-2.0 AND BSD-3- maven/mavencentral/io.opentelemetry.instrumentation/opentelemetry-instrumentation-annotations/1.32.0, Apache-2.0, approved, #11684 maven/mavencentral/io.opentelemetry/opentelemetry-api/1.32.0, Apache-2.0, approved, #11682 maven/mavencentral/io.opentelemetry/opentelemetry-context/1.32.0, Apache-2.0, approved, #11683 -maven/mavencentral/io.setl/rdf-urdna/1.1, Apache-2.0, approved, clearlydefined -maven/mavencentral/jakarta.activation/jakarta.activation-api/2.1.3, EPL-2.0 OR BSD-3-Clause OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jaf -maven/mavencentral/jakarta.annotation/jakarta.annotation-api/2.1.1, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.ca -maven/mavencentral/jakarta.inject/jakarta.inject-api/2.0.1, Apache-2.0, approved, ee4j.cdi maven/mavencentral/jakarta.json/jakarta.json-api/2.1.3, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jsonp -maven/mavencentral/jakarta.transaction/jakarta.transaction-api/2.0.0, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jta -maven/mavencentral/jakarta.validation/jakarta.validation-api/3.0.2, Apache-2.0, approved, ee4j.validation -maven/mavencentral/jakarta.ws.rs/jakarta.ws.rs-api/3.1.0, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.rest maven/mavencentral/jakarta.ws.rs/jakarta.ws.rs-api/4.0.0, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.rest -maven/mavencentral/jakarta.xml.bind/jakarta.xml.bind-api/4.0.2, BSD-3-Clause, approved, ee4j.jaxb maven/mavencentral/junit/junit/4.13.2, EPL-2.0, approved, CQ23636 maven/mavencentral/net.bytebuddy/byte-buddy-agent/1.14.1, Apache-2.0, approved, #7164 maven/mavencentral/net.bytebuddy/byte-buddy-agent/1.14.15, Apache-2.0, approved, #7164 @@ -96,9 +73,6 @@ maven/mavencentral/org.apiguardian/apiguardian-api/1.1.2, Apache-2.0, approved, maven/mavencentral/org.assertj/assertj-core/3.26.0, Apache-2.0, approved, #14886 maven/mavencentral/org.assertj/assertj-core/3.26.3, Apache-2.0, approved, #14886 maven/mavencentral/org.awaitility/awaitility/4.2.1, Apache-2.0, approved, #14178 -maven/mavencentral/org.bouncycastle/bcpkix-jdk18on/1.78.1, MIT, approved, #14434 -maven/mavencentral/org.bouncycastle/bcprov-jdk18on/1.78.1, MIT AND CC0-1.0, approved, #14433 -maven/mavencentral/org.bouncycastle/bcutil-jdk18on/1.78.1, MIT, approved, #14435 maven/mavencentral/org.checkerframework/checker-qual/3.43.0, MIT, approved, clearlydefined maven/mavencentral/org.codehaus.plexus/plexus-classworlds/2.6.0, Apache-2.0 AND Plexus, approved, CQ22821 maven/mavencentral/org.codehaus.plexus/plexus-component-annotations/2.1.0, Apache-2.0, approved, #809 @@ -116,24 +90,14 @@ maven/mavencentral/org.eclipse.edc/contract-spi/0.8.2-SNAPSHOT, Apache-2.0, appr maven/mavencentral/org.eclipse.edc/control-plane-api-client-spi/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/control-plane-spi/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/core-spi/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/crypto-common-lib/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/data-plane-core/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/data-plane-spi/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/data-plane-util/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/http-lib/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/http-spi/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/http/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-did-spi/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-spi/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jersey-core/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jersey-providers-lib/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jetty-core/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/json-ld-spi/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/json-lib/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/junit-base/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/junit/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jwt-signer-spi/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jwt-spi/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/keys-spi/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/policy-engine-spi/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/policy-model/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc @@ -141,52 +105,12 @@ maven/mavencentral/org.eclipse.edc/policy-spi/0.8.2-SNAPSHOT, Apache-2.0, approv maven/mavencentral/org.eclipse.edc/runtime-metamodel/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/state-machine-lib/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/store-lib/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/token-core/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/token-spi/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/transfer-spi/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transform-spi/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/util-lib/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/validator-spi/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/verifiable-credentials-spi/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/web-spi/0.8.2-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.jetty.toolchain/jetty-jakarta-servlet-api/5.0.2, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty.toolchain/jetty-jakarta-websocket-api/2.0.0, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty.websocket/websocket-core-client/11.0.22, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty.websocket/websocket-core-common/11.0.22, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty.websocket/websocket-core-server/11.0.22, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty.websocket/websocket-jakarta-client/11.0.22, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty.websocket/websocket-jakarta-common/11.0.22, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty.websocket/websocket-jakarta-server/11.0.22, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty.websocket/websocket-servlet/11.0.22, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-alpn-client/11.0.22, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-annotations/11.0.22, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-client/11.0.22, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-http/11.0.22, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-io/11.0.22, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-jndi/11.0.22, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-plus/11.0.22, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-security/11.0.22, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-server/11.0.22, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-servlet/11.0.22, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-util/11.0.22, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-webapp/11.0.22, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-xml/11.0.22, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.parsson/parsson/1.1.7, EPL-2.0, approved, ee4j.parsson -maven/mavencentral/org.glassfish.hk2.external/aopalliance-repackaged/3.0.6, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish -maven/mavencentral/org.glassfish.hk2/hk2-api/3.0.6, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish -maven/mavencentral/org.glassfish.hk2/hk2-locator/3.0.6, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish -maven/mavencentral/org.glassfish.hk2/hk2-utils/3.0.6, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish -maven/mavencentral/org.glassfish.hk2/osgi-resource-locator/1.0.3, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish -maven/mavencentral/org.glassfish.jersey.containers/jersey-container-servlet-core/3.1.8, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.containers/jersey-container-servlet/3.1.8, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.core/jersey-client/3.1.8, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.core/jersey-common/3.1.8, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.core/jersey-server/3.1.8, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.ext/jersey-entity-filtering/3.1.8, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.inject/jersey-hk2/3.1.8, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.media/jersey-media-json-jackson/3.1.8, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.media/jersey-media-multipart/3.1.8, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish/jakarta.json/2.0.1, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jsonp maven/mavencentral/org.hamcrest/hamcrest-core/1.3, BSD-2-Clause, approved, CQ11429 maven/mavencentral/org.hamcrest/hamcrest/2.1, BSD-3-Clause, approved, clearlydefined maven/mavencentral/org.jacoco/org.jacoco.agent/0.8.9, EPL-2.0, approved, CQ23285 @@ -194,7 +118,6 @@ maven/mavencentral/org.jacoco/org.jacoco.ant/0.8.9, EPL-2.0, approved, #1068 maven/mavencentral/org.jacoco/org.jacoco.core/0.8.9, EPL-2.0, approved, CQ23283 maven/mavencentral/org.jacoco/org.jacoco.report/0.8.9, EPL-2.0 AND Apache-2.0, approved, CQ23284 maven/mavencentral/org.javassist/javassist/3.28.0-GA, Apache-2.0 OR LGPL-2.1-or-later OR MPL-1.1, approved, #327 -maven/mavencentral/org.javassist/javassist/3.30.2-GA, Apache-2.0 AND LGPL-2.1-or-later AND MPL-1.1, approved, #12108 maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib-common/1.9.10, Apache-2.0, approved, #14186 maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.9.10, Apache-2.0, approved, #14193 maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.8.21, Apache-2.0, approved, #8919 @@ -203,7 +126,6 @@ maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib/1.9.10, Apache-2.0, approv maven/mavencentral/org.jetbrains/annotations/13.0, Apache-2.0, approved, clearlydefined maven/mavencentral/org.jetbrains/annotations/17.0.0, Apache-2.0, approved, clearlydefined maven/mavencentral/org.jetbrains/annotations/24.1.0, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.junit-pioneer/junit-pioneer/2.2.0, EPL-2.0, approved, #11857 maven/mavencentral/org.junit.jupiter/junit-jupiter-api/5.10.2, EPL-2.0, approved, #9714 maven/mavencentral/org.junit.jupiter/junit-jupiter-api/5.11.0, EPL-2.0, approved, #15935 maven/mavencentral/org.junit.jupiter/junit-jupiter-engine/5.10.2, EPL-2.0, approved, #9711 @@ -212,28 +134,21 @@ maven/mavencentral/org.junit.jupiter/junit-jupiter-params/5.11.0, EPL-2.0, appro maven/mavencentral/org.junit.platform/junit-platform-commons/1.10.2, EPL-2.0, approved, #9715 maven/mavencentral/org.junit.platform/junit-platform-commons/1.11.0, EPL-2.0, approved, #15936 maven/mavencentral/org.junit.platform/junit-platform-engine/1.11.0, EPL-2.0, approved, #15932 -maven/mavencentral/org.junit.platform/junit-platform-launcher/1.11.0, EPL-2.0, approved, #15934 maven/mavencentral/org.junit/junit-bom/5.10.2, EPL-2.0, approved, #9844 maven/mavencentral/org.junit/junit-bom/5.11.0, , restricted, clearlydefined -maven/mavencentral/org.junit/junit-bom/5.9.2, EPL-2.0, approved, #4711 -maven/mavencentral/org.jvnet.mimepull/mimepull/1.9.15, CDDL-1.1 OR GPL-2.0-only WITH Classpath-exception-2.0, approved, CQ21484 maven/mavencentral/org.mockito/mockito-core/5.12.0, MIT AND (Apache-2.0 AND MIT) AND Apache-2.0, approved, #14678 maven/mavencentral/org.mockito/mockito-core/5.2.0, MIT AND (Apache-2.0 AND MIT) AND Apache-2.0, approved, #7401 maven/mavencentral/org.objenesis/objenesis/3.3, Apache-2.0, approved, clearlydefined maven/mavencentral/org.opentest4j/opentest4j/1.3.0, Apache-2.0, approved, #9713 maven/mavencentral/org.ow2.asm/asm-commons/9.5, BSD-3-Clause, approved, #7553 -maven/mavencentral/org.ow2.asm/asm-commons/9.7, BSD-3-Clause, approved, #14075 maven/mavencentral/org.ow2.asm/asm-tree/9.5, BSD-3-Clause, approved, #7555 -maven/mavencentral/org.ow2.asm/asm-tree/9.7, BSD-3-Clause, approved, #14073 maven/mavencentral/org.ow2.asm/asm/9.5, BSD-3-Clause, approved, #7554 -maven/mavencentral/org.ow2.asm/asm/9.7, BSD-3-Clause, approved, #14076 maven/mavencentral/org.reactivestreams/reactive-streams/1.0.4, CC0-1.0, approved, CQ16332 maven/mavencentral/org.reflections/reflections/0.10.2, Apache-2.0 AND WTFPL, approved, clearlydefined maven/mavencentral/org.rnorth.duct-tape/duct-tape/1.0.8, MIT, approved, clearlydefined maven/mavencentral/org.slf4j/slf4j-api/1.7.25, MIT, approved, CQ13368 maven/mavencentral/org.slf4j/slf4j-api/1.7.30, MIT, approved, CQ13368 maven/mavencentral/org.slf4j/slf4j-api/1.7.36, MIT, approved, CQ13368 -maven/mavencentral/org.slf4j/slf4j-api/2.0.9, MIT, approved, #5915 maven/mavencentral/org.testcontainers/junit-jupiter/1.20.1, MIT, approved, clearlydefined maven/mavencentral/org.testcontainers/testcontainers/1.20.1, MIT, approved, #15747 maven/mavencentral/org.xmlresolver/xmlresolver/5.2.2, Apache-2.0, approved, clearlydefined @@ -270,4 +185,4 @@ maven/mavencentral/software.amazon.awssdk/secretsmanager/2.26.27, Apache-2.0, ap maven/mavencentral/software.amazon.awssdk/sts/2.26.27, Apache-2.0, approved, clearlydefined maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.26.27, Apache-2.0, approved, #15693 maven/mavencentral/software.amazon.awssdk/utils/2.26.27, Apache-2.0, approved, clearlydefined -maven/mavencentral/software.amazon.eventstream/eventstream/1.0.1, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.eventstream/eventstream/1.0.1, Apache-2.0, approved, clearlydefined \ No newline at end of file From 900004a8ff3ea6b58720271b8eb5033dfe355c28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Magalh=C3=A3es?= Date: Tue, 20 Aug 2024 15:49:58 +0100 Subject: [PATCH 15/15] Update DEPENDENCIES again --- DEPENDENCIES | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index ad7233c..e9e41a0 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -185,4 +185,4 @@ maven/mavencentral/software.amazon.awssdk/secretsmanager/2.26.27, Apache-2.0, ap maven/mavencentral/software.amazon.awssdk/sts/2.26.27, Apache-2.0, approved, clearlydefined maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.26.27, Apache-2.0, approved, #15693 maven/mavencentral/software.amazon.awssdk/utils/2.26.27, Apache-2.0, approved, clearlydefined -maven/mavencentral/software.amazon.eventstream/eventstream/1.0.1, Apache-2.0, approved, clearlydefined \ No newline at end of file +maven/mavencentral/software.amazon.eventstream/eventstream/1.0.1, Apache-2.0, approved, clearlydefined