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 69685ea22 Return JimFS in demo (#1606)
69685ea22 is described below

commit 69685ea22444528ec095c449fb41bd5639068203
Author: Tamas Cservenak <[email protected]>
AuthorDate: Tue Sep 30 22:14:50 2025 +0200

    Return JimFS in demo (#1606)
    
    To safeguard against failing back to old file ops.
---
 .../maven-resolver-demo-snippets/pom.xml           |  5 ++
 .../examples/DependencyHierarchyWithRanges.java    |  2 +-
 .../maven/resolver/examples/DeployArtifacts.java   |  4 +-
 .../resolver/examples/FindAvailableVersions.java   |  4 +-
 .../maven/resolver/examples/FindNewestVersion.java |  4 +-
 .../resolver/examples/GetDependencyHierarchy.java  |  2 +-
 .../GetDependencyHierarchyWithConflicts.java       |  4 +-
 ...DependencyHierarchyWithConflictsStrategies.java |  2 +-
 .../maven/resolver/examples/GetDependencyTree.java |  4 +-
 .../resolver/examples/GetDirectDependencies.java   |  4 +-
 .../maven/resolver/examples/InstallArtifacts.java  |  4 +-
 .../maven/resolver/examples/ResolveArtifact.java   |  6 +-
 .../examples/ResolveTransitiveDependencies.java    |  4 +-
 .../resolver/examples/ReverseDependencyTree.java   |  2 +-
 .../maven/resolver/examples/resolver/Resolver.java | 22 ++++----
 .../resolver/examples/resolver/ResolverDemo.java   | 12 ++--
 .../maven/resolver/examples/util/Booter.java       | 66 ++++++++++++++++------
 .../resolver/examples/AllResolverDemosTest.java    | 20 ++++---
 .../java/org/eclipse/aether/util/FileUtils.java    |  5 +-
 19 files changed, 109 insertions(+), 67 deletions(-)

diff --git a/maven-resolver-demos/maven-resolver-demo-snippets/pom.xml 
b/maven-resolver-demos/maven-resolver-demo-snippets/pom.xml
index fb39f5039..13c36600f 100644
--- a/maven-resolver-demos/maven-resolver-demo-snippets/pom.xml
+++ b/maven-resolver-demos/maven-resolver-demo-snippets/pom.xml
@@ -141,5 +141,10 @@
       <artifactId>junit-jupiter-api</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-params</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 </project>
diff --git 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/DependencyHierarchyWithRanges.java
 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/DependencyHierarchyWithRanges.java
index 56aa2a539..12f2f5ff7 100644
--- 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/DependencyHierarchyWithRanges.java
+++ 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/DependencyHierarchyWithRanges.java
@@ -53,7 +53,7 @@ public class DependencyHierarchyWithRanges {
         
System.out.println(DependencyHierarchyWithRanges.class.getSimpleName());
 
         try (RepositorySystem system = 
Booter.newRepositorySystem(Booter.selectFactory(args))) {
-            SessionBuilder sessionBuilder = 
Booter.newRepositorySystemSession(system);
+            SessionBuilder sessionBuilder = 
Booter.newRepositorySystemSession(system, Booter.selectFs(args));
             
sessionBuilder.setChecksumPolicy(RepositoryPolicy.CHECKSUM_POLICY_IGNORE); // 
to not bother with checksums
             
sessionBuilder.setConfigProperty(ConflictResolver.CONFIG_PROP_VERBOSE, true);
             
sessionBuilder.setConfigProperty(DependencyManagerUtils.CONFIG_PROP_VERBOSE, 
true);
diff --git 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/DeployArtifacts.java
 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/DeployArtifacts.java
index fcdd99644..fc141c935 100644
--- 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/DeployArtifacts.java
+++ 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/DeployArtifacts.java
@@ -44,8 +44,8 @@ public class DeployArtifacts {
         System.out.println(DeployArtifacts.class.getSimpleName());
 
         try (RepositorySystem system = 
Booter.newRepositorySystem(Booter.selectFactory(args));
-                CloseableSession session =
-                        Booter.newRepositorySystemSession(system).build()) {
+                CloseableSession session = 
Booter.newRepositorySystemSession(system, Booter.selectFs(args))
+                        .build()) {
             Artifact jarArtifact =
                     new DefaultArtifact("test", 
"org.apache.maven.aether.examples", "", "jar", "0.1-SNAPSHOT");
             jarArtifact = jarArtifact.setPath(new 
File("src/main/data/demo.jar").toPath());
diff --git 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/FindAvailableVersions.java
 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/FindAvailableVersions.java
index ced5cad09..d1232b1e4 100644
--- 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/FindAvailableVersions.java
+++ 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/FindAvailableVersions.java
@@ -44,8 +44,8 @@ public class FindAvailableVersions {
         System.out.println(FindAvailableVersions.class.getSimpleName());
 
         try (RepositorySystem system = 
Booter.newRepositorySystem(Booter.selectFactory(args));
-                CloseableSession session =
-                        Booter.newRepositorySystemSession(system).build()) {
+                CloseableSession session = 
Booter.newRepositorySystemSession(system, Booter.selectFs(args))
+                        .build()) {
             Artifact artifact = new 
DefaultArtifact("org.apache.maven.resolver:maven-resolver-util:[0,)");
 
             VersionRangeRequest rangeRequest = new VersionRangeRequest();
diff --git 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/FindNewestVersion.java
 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/FindNewestVersion.java
index c92e9b369..94f46fd0d 100644
--- 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/FindNewestVersion.java
+++ 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/FindNewestVersion.java
@@ -41,8 +41,8 @@ public class FindNewestVersion {
         System.out.println(FindNewestVersion.class.getSimpleName());
 
         try (RepositorySystem system = 
Booter.newRepositorySystem(Booter.selectFactory(args));
-                CloseableSession session =
-                        Booter.newRepositorySystemSession(system).build()) {
+                CloseableSession session = 
Booter.newRepositorySystemSession(system, Booter.selectFs(args))
+                        .build()) {
             Artifact artifact = new 
DefaultArtifact("org.apache.maven.resolver:maven-resolver-util:[0,)");
 
             VersionRangeRequest rangeRequest = new VersionRangeRequest();
diff --git 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDependencyHierarchy.java
 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDependencyHierarchy.java
index 28f6c6700..3b337e08d 100644
--- 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDependencyHierarchy.java
+++ 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDependencyHierarchy.java
@@ -52,7 +52,7 @@ public class GetDependencyHierarchy {
         System.out.println(GetDependencyHierarchy.class.getSimpleName());
 
         try (RepositorySystem system = 
Booter.newRepositorySystem(Booter.selectFactory(args))) {
-            SessionBuilder sessionBuilder = 
Booter.newRepositorySystemSession(system);
+            SessionBuilder sessionBuilder = 
Booter.newRepositorySystemSession(system, Booter.selectFs(args));
             
sessionBuilder.setConfigProperty(ConflictResolver.CONFIG_PROP_VERBOSE, true);
             
sessionBuilder.setConfigProperty(DependencyManagerUtils.CONFIG_PROP_VERBOSE, 
true);
             try (CloseableSession session = sessionBuilder.build()) {
diff --git 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDependencyHierarchyWithConflicts.java
 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDependencyHierarchyWithConflicts.java
index 7d80b1fde..dfbd84020 100644
--- 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDependencyHierarchyWithConflicts.java
+++ 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDependencyHierarchyWithConflicts.java
@@ -54,7 +54,7 @@ public class GetDependencyHierarchyWithConflicts {
 
         // incompatible versions: two incompatible versions present in graph
         try (RepositorySystem system = 
Booter.newRepositorySystem(Booter.selectFactory(args))) {
-            SessionBuilder sessionBuilder = 
Booter.newRepositorySystemSession(system);
+            SessionBuilder sessionBuilder = 
Booter.newRepositorySystemSession(system, Booter.selectFs(args));
             
sessionBuilder.setConfigProperty(ConflictResolver.CONFIG_PROP_VERBOSE, true);
             
sessionBuilder.setConfigProperty(DependencyManagerUtils.CONFIG_PROP_VERBOSE, 
true);
             try (CloseableSession session = sessionBuilder
@@ -99,7 +99,7 @@ public class GetDependencyHierarchyWithConflicts {
 
         // dependency divergence: multiple versions of same GA present in graph
         try (RepositorySystem system = 
Booter.newRepositorySystem(Booter.selectFactory(args))) {
-            SessionBuilder sessionBuilder = 
Booter.newRepositorySystemSession(system);
+            SessionBuilder sessionBuilder = 
Booter.newRepositorySystemSession(system, Booter.selectFs(args));
             
sessionBuilder.setConfigProperty(ConflictResolver.CONFIG_PROP_VERBOSE, true);
             
sessionBuilder.setConfigProperty(DependencyManagerUtils.CONFIG_PROP_VERBOSE, 
true);
             try (CloseableSession session = sessionBuilder
diff --git 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDependencyHierarchyWithConflictsStrategies.java
 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDependencyHierarchyWithConflictsStrategies.java
index 870860d31..59ba857f0 100644
--- 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDependencyHierarchyWithConflictsStrategies.java
+++ 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDependencyHierarchyWithConflictsStrategies.java
@@ -82,7 +82,7 @@ public class GetDependencyHierarchyWithConflictsStrategies {
         System.out.println();
         System.out.println(selectionStrategy);
         try (RepositorySystem system = 
Booter.newRepositorySystem(Booter.selectFactory(args))) {
-            SessionBuilder sessionBuilder = 
Booter.newRepositorySystemSession(system);
+            SessionBuilder sessionBuilder = 
Booter.newRepositorySystemSession(system, Booter.selectFs(args));
             
sessionBuilder.setConfigProperty(ConflictResolver.CONFIG_PROP_VERBOSE, 
ConflictResolver.Verbosity.STANDARD);
             
sessionBuilder.setConfigProperty(DependencyManagerUtils.CONFIG_PROP_VERBOSE, 
true);
             sessionBuilder.setConfigProperty(
diff --git 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDependencyTree.java
 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDependencyTree.java
index dd2ed02ce..0cf08d0cc 100644
--- 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDependencyTree.java
+++ 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDependencyTree.java
@@ -42,8 +42,8 @@ public class GetDependencyTree {
         System.out.println(GetDependencyTree.class.getSimpleName());
 
         try (RepositorySystem system = 
Booter.newRepositorySystem(Booter.selectFactory(args));
-                CloseableSession session =
-                        Booter.newRepositorySystemSession(system).build()) {
+                CloseableSession session = 
Booter.newRepositorySystemSession(system, Booter.selectFs(args))
+                        .build()) {
             Artifact artifact = new 
DefaultArtifact("org.apache.maven:maven-resolver-provider:3.6.1");
 
             CollectRequest collectRequest = new CollectRequest();
diff --git 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDirectDependencies.java
 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDirectDependencies.java
index 5e82a44b0..c4e32e8ec 100644
--- 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDirectDependencies.java
+++ 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDirectDependencies.java
@@ -42,8 +42,8 @@ public class GetDirectDependencies {
         System.out.println(GetDirectDependencies.class.getSimpleName());
 
         try (RepositorySystem system = 
Booter.newRepositorySystem(Booter.selectFactory(args));
-                CloseableSession session =
-                        Booter.newRepositorySystemSession(system).build()) {
+                CloseableSession session = 
Booter.newRepositorySystemSession(system, Booter.selectFs(args))
+                        .build()) {
             Artifact artifact = new 
DefaultArtifact("org.apache.maven.resolver:maven-resolver-impl:1.3.3");
 
             ArtifactDescriptorRequest descriptorRequest = new 
ArtifactDescriptorRequest();
diff --git 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/InstallArtifacts.java
 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/InstallArtifacts.java
index d285f10b5..80ffc1d22 100644
--- 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/InstallArtifacts.java
+++ 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/InstallArtifacts.java
@@ -43,8 +43,8 @@ public class InstallArtifacts {
         System.out.println(InstallArtifacts.class.getSimpleName());
 
         try (RepositorySystem system = 
Booter.newRepositorySystem(Booter.selectFactory(args));
-                CloseableSession session =
-                        Booter.newRepositorySystemSession(system).build()) {
+                CloseableSession session = 
Booter.newRepositorySystemSession(system, Booter.selectFs(args))
+                        .build()) {
             Artifact jarArtifact =
                     new DefaultArtifact("test", 
"org.apache.maven.resolver.examples", "", "jar", "0.1-SNAPSHOT");
             jarArtifact = jarArtifact.setPath(new 
File("src/main/data/demo.jar").toPath());
diff --git 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/ResolveArtifact.java
 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/ResolveArtifact.java
index b41a10ab8..ce77e0fc2 100644
--- 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/ResolveArtifact.java
+++ 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/ResolveArtifact.java
@@ -46,8 +46,8 @@ public class ResolveArtifact {
             ArtifactRequest artifactRequest;
             ArtifactResult artifactResult;
 
-            try (CloseableSession session =
-                    Booter.newRepositorySystemSession(system).build()) {
+            try (CloseableSession session = 
Booter.newRepositorySystemSession(system, Booter.selectFs(args))
+                    .build()) {
                 artifact = new 
DefaultArtifact("org.apache.maven.resolver:maven-resolver-util:1.3.3");
 
                 artifactRequest = new ArtifactRequest();
@@ -62,7 +62,7 @@ public class ResolveArtifact {
             }
 
             // signature
-            try (CloseableSession session = 
Booter.newRepositorySystemSession(system)
+            try (CloseableSession session = 
Booter.newRepositorySystemSession(system, Booter.selectFs(args))
                     .setChecksumPolicy(RepositoryPolicy.CHECKSUM_POLICY_FAIL)
                     .build()) {
                 artifact = new 
DefaultArtifact("org.apache.maven.resolver:maven-resolver-util:jar.asc:1.3.3");
diff --git 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/ResolveTransitiveDependencies.java
 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/ResolveTransitiveDependencies.java
index a606c3524..007af9448 100644
--- 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/ResolveTransitiveDependencies.java
+++ 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/ResolveTransitiveDependencies.java
@@ -48,8 +48,8 @@ public class ResolveTransitiveDependencies {
         
System.out.println(ResolveTransitiveDependencies.class.getSimpleName());
 
         try (RepositorySystem system = 
Booter.newRepositorySystem(Booter.selectFactory(args));
-                CloseableSession session =
-                        Booter.newRepositorySystemSession(system).build()) {
+                CloseableSession session = 
Booter.newRepositorySystemSession(system, Booter.selectFs(args))
+                        .build()) {
             Artifact artifact = new 
DefaultArtifact("org.apache.maven.resolver:maven-resolver-impl:1.3.3");
 
             DependencyFilter classpathFilter = 
DependencyFilterUtils.classpathFilter(JavaScopes.COMPILE);
diff --git 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/ReverseDependencyTree.java
 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/ReverseDependencyTree.java
index b730e4289..75841a987 100644
--- 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/ReverseDependencyTree.java
+++ 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/ReverseDependencyTree.java
@@ -45,7 +45,7 @@ public class ReverseDependencyTree {
         System.out.println(ReverseDependencyTree.class.getSimpleName());
 
         try (RepositorySystem system = 
Booter.newRepositorySystem(Booter.selectFactory(args))) {
-            try (CloseableSession session = 
Booter.newRepositorySystemSession(system)
+            try (CloseableSession session = 
Booter.newRepositorySystemSession(system, Booter.selectFs(args))
                     .withRepositoryListener(new 
ReverseTreeRepositoryListener())
                     .setConfigProperty(ConflictResolver.CONFIG_PROP_VERBOSE, 
true)
                     
.setConfigProperty(DependencyManagerUtils.CONFIG_PROP_VERBOSE, true)
diff --git 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/resolver/Resolver.java
 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/resolver/Resolver.java
index a3c9b8fe7..b44f4011b 100644
--- 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/resolver/Resolver.java
+++ 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/resolver/Resolver.java
@@ -20,7 +20,6 @@ package org.apache.maven.resolver.examples.resolver;
 
 import java.io.ByteArrayOutputStream;
 import java.io.PrintStream;
-import java.io.UnsupportedEncodingException;
 import java.nio.charset.StandardCharsets;
 
 import org.apache.maven.resolver.examples.util.Booter;
@@ -48,20 +47,23 @@ import 
org.eclipse.aether.util.repository.AuthenticationBuilder;
 /**
  */
 public class Resolver {
+    private final String[] args;
+
     private final String remoteRepository;
 
     private final RepositorySystem repositorySystem;
 
     private final LocalRepository localRepository;
 
-    public Resolver(String factory, String remoteRepository, String 
localRepository) {
+    public Resolver(String[] args, String remoteRepository, String 
localRepository) {
+        this.args = args;
         this.remoteRepository = remoteRepository;
-        this.repositorySystem = Booter.newRepositorySystem(factory);
+        this.repositorySystem = 
Booter.newRepositorySystem(Booter.selectFactory(args));
         this.localRepository = new LocalRepository(localRepository);
     }
 
     private RepositorySystemSession newSession() {
-        return Booter.newRepositorySystemSession(repositorySystem)
+        return Booter.newRepositorySystemSession(repositorySystem, 
Booter.selectFs(args))
                 .withLocalRepositories(localRepository)
                 .setRepositoryListener(null)
                 .setTransferListener(null)
@@ -123,13 +125,9 @@ public class Resolver {
     }
 
     private void displayTree(DependencyNode node, StringBuilder sb) {
-        try {
-            ByteArrayOutputStream os = new ByteArrayOutputStream(1024);
-            PrintStream ps = new PrintStream(os, true, 
StandardCharsets.UTF_8.name());
-            node.accept(new DependencyGraphDumper(ps::println));
-            sb.append(os);
-        } catch (UnsupportedEncodingException e) {
-            throw new RuntimeException(e);
-        }
+        ByteArrayOutputStream os = new ByteArrayOutputStream(1024);
+        PrintStream ps = new PrintStream(os, true, StandardCharsets.UTF_8);
+        node.accept(new DependencyGraphDumper(ps::println));
+        sb.append(os);
     }
 }
diff --git 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/resolver/ResolverDemo.java
 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/resolver/ResolverDemo.java
index 889161b93..7c0e70a46 100644
--- 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/resolver/ResolverDemo.java
+++ 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/resolver/ResolverDemo.java
@@ -21,7 +21,6 @@ package org.apache.maven.resolver.examples.resolver;
 import java.io.File;
 import java.util.List;
 
-import org.apache.maven.resolver.examples.util.Booter;
 import org.eclipse.aether.artifact.Artifact;
 import org.eclipse.aether.artifact.DefaultArtifact;
 import org.eclipse.aether.deployment.DeploymentException;
@@ -38,8 +37,7 @@ public class ResolverDemo {
         
System.out.println("------------------------------------------------------------");
         System.out.println(ResolverDemo.class.getSimpleName());
 
-        Resolver resolver = new Resolver(
-                Booter.selectFactory(args), 
"https://repo.maven.apache.org/maven2/";, "target/resolver-demo-repo");
+        Resolver resolver = new Resolver(args, 
"https://repo.maven.apache.org/maven2/";, "target/resolver-demo-repo");
         ResolverResult result = resolver.resolve("junit", "junit", "4.13.2");
 
         System.out.println("Result:");
@@ -48,9 +46,9 @@ public class ResolverDemo {
         System.out.println("root=" + result.getRoot());
     }
 
-    public void resolve(final String factory) throws 
DependencyResolutionException {
+    public void resolve(String[] args) throws DependencyResolutionException {
         Resolver resolver =
-                new Resolver(factory, 
"http://localhost:8081/nexus/content/groups/public";, "target/aether-repo");
+                new Resolver(args, 
"http://localhost:8081/nexus/content/groups/public";, "target/aether-repo");
 
         ResolverResult result = resolver.resolve("com.mycompany.app", 
"super-app", "1.0");
 
@@ -67,9 +65,9 @@ public class ResolverDemo {
         String classpath = result.getResolvedClassPath();
     }
 
-    public void installAndDeploy(final String factory) throws 
InstallationException, DeploymentException {
+    public void installAndDeploy(String[] args) throws InstallationException, 
DeploymentException {
         Resolver resolver =
-                new Resolver(factory, 
"http://localhost:8081/nexus/content/groups/public";, "target/aether-repo");
+                new Resolver(args, 
"http://localhost:8081/nexus/content/groups/public";, "target/aether-repo");
 
         Artifact artifact = new DefaultArtifact("com.mycompany.super", 
"super-core", "jar", "0.1-SNAPSHOT");
         artifact = artifact.setFile(new File("jar-from-whatever-process.jar"));
diff --git 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/util/Booter.java
 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/util/Booter.java
index c88016b56..673b39839 100644
--- 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/util/Booter.java
+++ 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/util/Booter.java
@@ -18,12 +18,15 @@
  */
 package org.apache.maven.resolver.examples.util;
 
+import java.io.IOException;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
+import com.google.common.jimfs.Configuration;
+import com.google.common.jimfs.Jimfs;
 import org.eclipse.aether.RepositorySystem;
 import org.eclipse.aether.RepositorySystemSession;
 import org.eclipse.aether.RepositorySystemSession.SessionBuilder;
@@ -36,36 +39,58 @@ import 
org.eclipse.aether.util.graph.visitor.DependencyGraphDumper;
  * A helper to boot the repository system and a repository system session.
  */
 public class Booter {
-    public static final String SUPPLIER = "supplier";
+    public static final String FACTORY_SUPPLIER = "supplier";
 
-    public static final String SISU = "sisu";
+    public static final String FACTORY_SISU = "sisu";
+
+    public static final String FS_DEFAULT = "default";
+
+    public static final String FS_JIMFS = "jimfs";
 
     public static final DependencyGraphDumper DUMPER_SOUT = new 
DependencyGraphDumper(System.out::println);
 
     public static String selectFactory(String[] args) {
         if (args == null || args.length == 0) {
-            return SUPPLIER;
+            return FACTORY_SUPPLIER;
         } else {
             return args[0];
         }
     }
 
-    public static RepositorySystem newRepositorySystem(final String factory) {
-        switch (factory) {
-            case SUPPLIER:
-                return 
org.apache.maven.resolver.examples.supplier.SupplierRepositorySystemFactory
-                        .newRepositorySystem();
-            case SISU:
-                return 
org.apache.maven.resolver.examples.sisu.SisuRepositorySystemFactory.newRepositorySystem();
-            default:
-                throw new IllegalArgumentException("Unknown factory: " + 
factory);
+    public static String selectFs(String[] args) {
+        if (args == null || args.length < 2) {
+            return FS_DEFAULT;
+        } else {
+            return args[1];
         }
     }
 
-    public static SessionBuilder newRepositorySystemSession(RepositorySystem 
system) {
+    public static RepositorySystem newRepositorySystem(final String factory) {
+        System.out.println("Using factory: " + factory);
+        return switch (factory) {
+            case FACTORY_SUPPLIER -> 
org.apache.maven.resolver.examples.supplier.SupplierRepositorySystemFactory
+                    .newRepositorySystem();
+            case FACTORY_SISU -> 
org.apache.maven.resolver.examples.sisu.SisuRepositorySystemFactory
+                    .newRepositorySystem();
+            default -> throw new IllegalArgumentException("Unknown factory: " 
+ factory);
+        };
+    }
+
+    public static SessionBuilder newRepositorySystemSession(RepositorySystem 
system, String fs) {
+        System.out.println("Using FS: " + fs);
+        boolean close;
+        Path localRepository;
+        if (FS_JIMFS.equals(fs)) {
+            close = true;
+            localRepository = 
Jimfs.newFileSystem(Configuration.unix()).getPath("/demo");
+        } else {
+            close = false;
+            localRepository = Path.of("target/example-snippets-repo");
+        }
+        // Path localRepository = Path.of("target/example-snippets-repo");
         SessionBuilder result = new SessionBuilderSupplier(system)
                 .get()
-                
.withLocalRepositoryBaseDirectories(Path.of("target/example-snippets-repo"))
+                .withLocalRepositoryBaseDirectories(localRepository)
                 .setRepositoryListener(new ConsoleRepositoryListener())
                 .setTransferListener(new ConsoleTransferListener())
                 .setConfigProperty("aether.generator.gpg.enabled", 
Boolean.TRUE.toString())
@@ -73,12 +98,21 @@ public class Booter {
                         "aether.generator.gpg.keyFilePath",
                         Paths.get("src/main/resources/alice.key")
                                 .toAbsolutePath()
-                                .toString())
-                .setConfigProperty("aether.syncContext.named.factory", "noop");
+                                .toString());
 
         // uncomment to generate dirty trees
         // session.setDependencyGraphTransformer( null );
 
+        if (close) {
+            result.addOnSessionEndedHandler(() -> {
+                try {
+                    localRepository.getFileSystem().close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            });
+        }
+
         return result;
     }
 
diff --git 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/test/java/org/apache/maven/resolver/examples/AllResolverDemosTest.java
 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/test/java/org/apache/maven/resolver/examples/AllResolverDemosTest.java
index 125ccf998..2c4dd66d8 100644
--- 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/test/java/org/apache/maven/resolver/examples/AllResolverDemosTest.java
+++ 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/test/java/org/apache/maven/resolver/examples/AllResolverDemosTest.java
@@ -18,20 +18,26 @@
  */
 package org.apache.maven.resolver.examples;
 
+import java.util.stream.Stream;
+
 import org.apache.maven.resolver.examples.util.Booter;
-import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
 
 /**
  * Runs all demos at once as part of UT.
  */
 public class AllResolverDemosTest {
-    @Test
-    void supplier() throws Exception {
-        AllResolverDemos.main(new String[] {Booter.SUPPLIER});
+    private static Stream<Arguments> arguments() {
+        return Stream.of(
+                Arguments.of(Booter.FACTORY_SUPPLIER, Booter.FS_DEFAULT),
+                Arguments.of(Booter.FACTORY_SISU, Booter.FS_JIMFS));
     }
 
-    @Test
-    void sisu() throws Exception {
-        AllResolverDemos.main(new String[] {Booter.SISU});
+    @ParameterizedTest
+    @MethodSource("arguments")
+    void runDemos(String factory, String fs) throws Exception {
+        AllResolverDemos.main(new String[] {factory, fs});
     }
 }
diff --git 
a/maven-resolver-util/src/main/java/org/eclipse/aether/util/FileUtils.java 
b/maven-resolver-util/src/main/java/org/eclipse/aether/util/FileUtils.java
index 52e2348f5..4e4e14b13 100644
--- a/maven-resolver-util/src/main/java/org/eclipse/aether/util/FileUtils.java
+++ b/maven-resolver-util/src/main/java/org/eclipse/aether/util/FileUtils.java
@@ -125,8 +125,9 @@ public final class FileUtils {
                 + 
Long.toUnsignedString(ThreadLocalRandom.current().nextLong()) + ".tmp");
         return new CollocatedTempFile() {
             private final AtomicBoolean wantsMove = new AtomicBoolean(false);
-            private final StandardCopyOption copyOption =
-                    FileUtils.ATOMIC_MOVE ? StandardCopyOption.ATOMIC_MOVE : 
StandardCopyOption.REPLACE_EXISTING;
+            private final StandardCopyOption[] copyOption = 
FileUtils.ATOMIC_MOVE
+                    ? new StandardCopyOption[] 
{StandardCopyOption.ATOMIC_MOVE, StandardCopyOption.REPLACE_EXISTING}
+                    : new StandardCopyOption[] 
{StandardCopyOption.REPLACE_EXISTING};
 
             @Override
             public Path getPath() {

Reply via email to