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

cstamas pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-resolver.git


The following commit(s) were added to refs/heads/master by this push:
     new 35d0d4669 Align generators (#1929)
35d0d4669 is described below

commit 35d0d46691fc2fb864762fde61b2fef83d27d8dc
Author: Tamas Cservenak <[email protected]>
AuthorDate: Tue Jun 16 13:32:10 2026 +0200

    Align generators (#1929)
    
    After #1902 only one had changes, but they always used
    together.
    
    Also, rather make `close()` idempotent than synchronized.
---
 .../gnupg/GnupgSignatureArtifactGenerator.java     | 21 ++++++++++-------
 .../SigstoreSignatureArtifactGenerator.java        | 26 +++++++++++++---------
 2 files changed, 29 insertions(+), 18 deletions(-)

diff --git 
a/maven-resolver-generator-gnupg/src/main/java/org/eclipse/aether/generator/gnupg/GnupgSignatureArtifactGenerator.java
 
b/maven-resolver-generator-gnupg/src/main/java/org/eclipse/aether/generator/gnupg/GnupgSignatureArtifactGenerator.java
index f51742ac7..c9d3ed491 100644
--- 
a/maven-resolver-generator-gnupg/src/main/java/org/eclipse/aether/generator/gnupg/GnupgSignatureArtifactGenerator.java
+++ 
b/maven-resolver-generator-gnupg/src/main/java/org/eclipse/aether/generator/gnupg/GnupgSignatureArtifactGenerator.java
@@ -28,6 +28,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
+import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.function.Predicate;
 
 import org.bouncycastle.bcpg.ArmoredOutputStream;
@@ -56,6 +57,7 @@ final class GnupgSignatureArtifactGenerator implements 
ArtifactGenerator {
     private final PGPSignatureSubpacketVector hashSubPackets;
     private final String keyInfo;
     private final List<Path> signatureTempFiles;
+    private final AtomicBoolean closed;
 
     GnupgSignatureArtifactGenerator(
             Collection<Artifact> artifacts,
@@ -71,6 +73,7 @@ final class GnupgSignatureArtifactGenerator implements 
ArtifactGenerator {
         this.hashSubPackets = hashSubPackets;
         this.keyInfo = keyInfo;
         this.signatureTempFiles = new ArrayList<>();
+        this.closed = new AtomicBoolean(false);
         logger.debug("Created generator using key {}", keyInfo);
     }
 
@@ -115,14 +118,16 @@ final class GnupgSignatureArtifactGenerator implements 
ArtifactGenerator {
     }
 
     @Override
-    public synchronized void close() {
-        signatureTempFiles.forEach(p -> {
-            try {
-                Files.deleteIfExists(p);
-            } catch (IOException e) {
-                p.toFile().deleteOnExit();
-            }
-        });
+    public void close() {
+        if (closed.compareAndSet(false, true)) {
+            signatureTempFiles.forEach(p -> {
+                try {
+                    Files.deleteIfExists(p);
+                } catch (IOException e) {
+                    p.toFile().deleteOnExit();
+                }
+            });
+        }
     }
 
     private void sign(InputStream content, OutputStream signature) throws 
IOException {
diff --git 
a/maven-resolver-generator-sigstore/src/main/java/org/eclipse/aether/generator/sigstore/SigstoreSignatureArtifactGenerator.java
 
b/maven-resolver-generator-sigstore/src/main/java/org/eclipse/aether/generator/sigstore/SigstoreSignatureArtifactGenerator.java
index 4634c81f9..63906cf07 100644
--- 
a/maven-resolver-generator-sigstore/src/main/java/org/eclipse/aether/generator/sigstore/SigstoreSignatureArtifactGenerator.java
+++ 
b/maven-resolver-generator-sigstore/src/main/java/org/eclipse/aether/generator/sigstore/SigstoreSignatureArtifactGenerator.java
@@ -28,6 +28,8 @@ import java.time.temporal.ChronoUnit;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.function.Predicate;
 
 import dev.sigstore.KeylessSigner;
@@ -47,10 +49,11 @@ final class SigstoreSignatureArtifactGenerator implements 
ArtifactGenerator {
     private static final String ARTIFACT_EXTENSION = ".sigstore.json";
     private final Logger logger = LoggerFactory.getLogger(getClass());
     private final PathProcessor pathProcessor;
-    private final ArrayList<Artifact> artifacts;
+    private final List<Artifact> artifacts;
     private final Predicate<Artifact> signableArtifactPredicate;
     private final boolean publicStaging;
-    private final ArrayList<Path> signatureTempFiles;
+    private final List<Path> signatureTempFiles;
+    private final AtomicBoolean closed;
 
     SigstoreSignatureArtifactGenerator(
             PathProcessor pathProcessor,
@@ -62,6 +65,7 @@ final class SigstoreSignatureArtifactGenerator implements 
ArtifactGenerator {
         this.signableArtifactPredicate = signableArtifactPredicate;
         this.publicStaging = publicStaging;
         this.signatureTempFiles = new ArrayList<>();
+        this.closed = new AtomicBoolean(false);
         logger.debug("Created sigstore generator (publicStaging={})", 
publicStaging);
     }
 
@@ -71,7 +75,7 @@ final class SigstoreSignatureArtifactGenerator implements 
ArtifactGenerator {
     }
 
     @Override
-    public Collection<? extends Artifact> generate(Collection<? extends 
Artifact> generatedArtifacts) {
+    public synchronized Collection<? extends Artifact> generate(Collection<? 
extends Artifact> generatedArtifacts) {
         try {
             artifacts.addAll(generatedArtifacts);
 
@@ -148,12 +152,14 @@ final class SigstoreSignatureArtifactGenerator implements 
ArtifactGenerator {
 
     @Override
     public void close() {
-        signatureTempFiles.forEach(p -> {
-            try {
-                Files.deleteIfExists(p);
-            } catch (IOException e) {
-                p.toFile().deleteOnExit();
-            }
-        });
+        if (closed.compareAndSet(false, true)) {
+            signatureTempFiles.forEach(p -> {
+                try {
+                    Files.deleteIfExists(p);
+                } catch (IOException e) {
+                    p.toFile().deleteOnExit();
+                }
+            });
+        }
     }
 }

Reply via email to