This is an automated email from the ASF dual-hosted git repository.

exceptionfactory pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/main by this push:
     new ea2767107c3 NIFI-16293 Switched to SDK getResourceUrl for Provenance 
URL in CopyS3Object (#11626)
ea2767107c3 is described below

commit ea2767107c364a078492113a04a6c81976eebbc4
Author: Nicolas Chauvet (kwizart) <[email protected]>
AuthorDate: Sat Sep 5 00:00:17 2026 +0200

    NIFI-16293 Switched to SDK getResourceUrl for Provenance URL in 
CopyS3Object (#11626)
    
    Signed-off-by: David Handermann <[email protected]>
---
 .../java/org/apache/nifi/processors/aws/s3/CopyS3Object.java     | 9 +++------
 .../java/org/apache/nifi/processors/aws/s3/TestCopyS3Object.java | 3 +++
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git 
a/nifi-extension-bundles/nifi-aws-bundle/nifi-aws-processors/src/main/java/org/apache/nifi/processors/aws/s3/CopyS3Object.java
 
b/nifi-extension-bundles/nifi-aws-bundle/nifi-aws-processors/src/main/java/org/apache/nifi/processors/aws/s3/CopyS3Object.java
index 74e31f6f0d0..fd524e4e680 100644
--- 
a/nifi-extension-bundles/nifi-aws-bundle/nifi-aws-processors/src/main/java/org/apache/nifi/processors/aws/s3/CopyS3Object.java
+++ 
b/nifi-extension-bundles/nifi-aws-bundle/nifi-aws-processors/src/main/java/org/apache/nifi/processors/aws/s3/CopyS3Object.java
@@ -51,6 +51,7 @@ import java.util.stream.IntStream;
 import static 
org.apache.nifi.processors.aws.region.RegionUtil.CUSTOM_REGION_WITH_FF_EL;
 import static org.apache.nifi.processors.aws.region.RegionUtil.REGION;
 import static org.apache.nifi.processors.aws.s3.util.S3Util.createRangeSpec;
+import static org.apache.nifi.processors.aws.s3.util.S3Util.getResourceUrl;
 
 @Tags({"Amazon", "S3", "AWS", "Archive", "Copy"})
 @InputRequirement(InputRequirement.Requirement.INPUT_REQUIRED)
@@ -156,7 +157,8 @@ public class CopyS3Object extends AbstractS3Processor {
             } else {
                 copyObject(client, context, flowFile, sourceBucket, sourceKey, 
destinationBucket, destinationKey);
             }
-            session.getProvenanceReporter().send(flowFile, 
getTransitUrl(destinationBucket, destinationKey));
+            final String url = getResourceUrl(client, destinationBucket, 
destinationKey);
+            session.getProvenanceReporter().send(flowFile, url);
             session.transfer(flowFile, REL_SUCCESS);
         } catch (final Exception e) {
             if (multipartUploadRequired && 
StringUtils.isNotEmpty(multipartIdRef.get())) {
@@ -275,9 +277,4 @@ public class CopyS3Object extends AbstractS3Processor {
 
         client.copyObject(request);
     }
-
-    private String getTransitUrl(final String destinationBucket, final String 
destinationKey) {
-        final String spacer = destinationKey.startsWith("/") ? "" : "/";
-        return String.format("s3://%s%s%s", destinationBucket, spacer, 
destinationKey);
-    }
 }
diff --git 
a/nifi-extension-bundles/nifi-aws-bundle/nifi-aws-processors/src/test/java/org/apache/nifi/processors/aws/s3/TestCopyS3Object.java
 
b/nifi-extension-bundles/nifi-aws-bundle/nifi-aws-processors/src/test/java/org/apache/nifi/processors/aws/s3/TestCopyS3Object.java
index 436e23c9108..6c2b355e1f7 100644
--- 
a/nifi-extension-bundles/nifi-aws-bundle/nifi-aws-processors/src/test/java/org/apache/nifi/processors/aws/s3/TestCopyS3Object.java
+++ 
b/nifi-extension-bundles/nifi-aws-bundle/nifi-aws-processors/src/test/java/org/apache/nifi/processors/aws/s3/TestCopyS3Object.java
@@ -27,7 +27,9 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Test;
 import software.amazon.awssdk.awscore.exception.AwsServiceException;
+import software.amazon.awssdk.regions.Region;
 import software.amazon.awssdk.services.s3.S3Client;
+import software.amazon.awssdk.services.s3.S3Utilities;
 import software.amazon.awssdk.services.s3.model.CopyObjectRequest;
 import software.amazon.awssdk.services.s3.model.HeadObjectRequest;
 import software.amazon.awssdk.services.s3.model.HeadObjectResponse;
@@ -52,6 +54,7 @@ public class TestCopyS3Object {
     @BeforeEach
     void setUp() {
         mockS3Client = mock(S3Client.class);
+        
when(mockS3Client.utilities()).thenReturn(S3Utilities.builder().region(Region.US_WEST_2).build());
         final CopyS3Object mockCopyS3Object = new CopyS3Object() {
             @Override
             protected S3Client getClient(final ProcessContext context, final 
Map<String, String> attributes) {

Reply via email to