You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by cs...@apache.org on 2022/05/11 16:34:54 UTC

[maven-resolver] 01/03: Collect listener?

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

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

commit 8ffa710cf0ecf5d6a14895c9215ad738696c4cca
Author: Tamas Cservenak <ta...@cservenak.net>
AuthorDate: Thu May 5 18:26:38 2022 +0200

    Collect listener?
---
 .../examples/ResolveTransitiveDependencies.java    |  7 +++--
 .../maven/resolver/examples/util/Booter.java       |  4 +--
 .../impl/collect/DependencyCollectorDelegate.java  | 32 ++++++++++++++++++++++
 .../impl/collect/bf/BfDependencyCollector.java     |  3 ++
 .../impl/collect/df/DfDependencyCollector.java     |  2 ++
 5 files changed, 44 insertions(+), 4 deletions(-)

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 88ee3ec3..90df6813 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
@@ -22,6 +22,7 @@ package org.apache.maven.resolver.examples;
 import java.util.List;
 
 import org.apache.maven.resolver.examples.util.Booter;
+import org.eclipse.aether.DefaultRepositorySystemSession;
 import org.eclipse.aether.RepositorySystem;
 import org.eclipse.aether.RepositorySystemSession;
 import org.eclipse.aether.artifact.Artifact;
@@ -53,15 +54,17 @@ public class ResolveTransitiveDependencies
 
         RepositorySystem system = Booter.newRepositorySystem( Booter.selectFactory( args ) );
 
-        RepositorySystemSession session = Booter.newRepositorySystemSession( system );
+        DefaultRepositorySystemSession session = Booter.newRepositorySystemSession( system );
+        session.setConfigProperty( "aether.collector.impl", "df" );
 
-        Artifact artifact = new DefaultArtifact( "org.apache.maven.resolver:maven-resolver-impl:1.3.3" );
+        Artifact artifact = new DefaultArtifact( "org.apache.maven:maven-core:3.8.5" );
 
         DependencyFilter classpathFlter = DependencyFilterUtils.classpathFilter( JavaScopes.COMPILE );
 
         CollectRequest collectRequest = new CollectRequest();
         collectRequest.setRoot( new Dependency( artifact, JavaScopes.COMPILE ) );
         collectRequest.setRepositories( Booter.newRepositories( system, session ) );
+        collectRequest.setRequestContext( "test" );
 
         DependencyRequest dependencyRequest = new DependencyRequest( collectRequest, classpathFlter );
 
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 399f2f99..e20b9bff 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
@@ -75,8 +75,8 @@ public class Booter
         LocalRepository localRepo = new LocalRepository( "target/local-repo" );
         session.setLocalRepositoryManager( system.newLocalRepositoryManager( session, localRepo ) );
 
-        session.setTransferListener( new ConsoleTransferListener() );
-        session.setRepositoryListener( new ConsoleRepositoryListener() );
+        //session.setTransferListener( new ConsoleTransferListener() );
+        //session.setRepositoryListener( new ConsoleRepositoryListener() );
 
         // uncomment to generate dirty trees
         // session.setDependencyGraphTransformer( null );
diff --git a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/DependencyCollectorDelegate.java b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/DependencyCollectorDelegate.java
index c7c2c985..d539a21f 100644
--- a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/DependencyCollectorDelegate.java
+++ b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/DependencyCollectorDelegate.java
@@ -19,10 +19,19 @@ package org.eclipse.aether.internal.impl.collect;
  * under the License.
  */
 
+import java.util.Collections;
+import java.util.List;
+import java.util.ListIterator;
+
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.graph.Dependency;
+import org.eclipse.aether.graph.DependencyNode;
 import org.eclipse.aether.impl.ArtifactDescriptorReader;
 import org.eclipse.aether.impl.DependencyCollector;
 import org.eclipse.aether.impl.RemoteRepositoryManager;
 import org.eclipse.aether.impl.VersionRangeResolver;
+import org.eclipse.aether.resolution.ArtifactDescriptorRequest;
+import org.eclipse.aether.resolution.ArtifactDescriptorResult;
 import org.eclipse.aether.spi.locator.ServiceLocator;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -93,4 +102,27 @@ public abstract class DependencyCollectorDelegate implements DependencyCollector
         return this;
     }
 
+    protected void dependencyCollected( RepositorySystemSession session,
+                                        List<DependencyNode> path,
+                                        Dependency dependency,
+                                        ArtifactDescriptorRequest artifactDescriptorRequest,
+                                        ArtifactDescriptorResult artifactDescriptorResult )
+    {
+        logger.info(String.format("%s (context: %s) @ %s", dependency, artifactDescriptorRequest.getRequestContext(),
+                artifactDescriptorResult != null && artifactDescriptorResult.getRepository() == null ? "unknown" : artifactDescriptorResult.getRepository().getId()));
+        int distance = 0;
+        ListIterator<DependencyNode> reversePathIterator = path.listIterator( path.size() );
+        while ( reversePathIterator.hasPrevious() )
+        {
+            DependencyNode dn = reversePathIterator.previous();
+            StringBuilder indent = new StringBuilder();
+            for (int i = 0; i < distance; i++) {
+                indent.append("  ");
+            }
+            distance++;
+            indent.append( " -> " );
+            logger.info(String.format("%s%s (context: %s) @ %s", indent, dn, dn.getRequestContext(),
+                    artifactDescriptorResult.getRepository() == null ? "unknown" : artifactDescriptorResult.getRepository().getId()));
+        }
+    }
 }
diff --git a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/bf/BfDependencyCollector.java b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/bf/BfDependencyCollector.java
index 4beca799..c934e033 100644
--- a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/bf/BfDependencyCollector.java
+++ b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/bf/BfDependencyCollector.java
@@ -446,6 +446,7 @@ public class BfDependencyCollector
                                               descriptorResult.getAliases(), repos, args.request.getRequestContext() );
 
                     context.getParent().getChildren().add( child );
+                    dependencyCollected( args.session, context.parents, d, descriptorRequest, descriptorResult );
 
                     boolean recurse = traverse && !descriptorResult.getDependencies().isEmpty();
                     if ( recurse )
@@ -462,6 +463,7 @@ public class BfDependencyCollector
                     createDependencyNode( relocations, preManaged, rangeResult, version, d, null, repos,
                                           args.request.getRequestContext() );
                 context.getParent().getChildren().add( child );
+                dependencyCollected( args.session, context.parents, d, descriptorRequest, descriptorResult );
             }
         }
     }
@@ -506,6 +508,7 @@ public class BfDependencyCollector
                     args.dependencyProcessingQueue.add(
                             new DependencyProcessingContext( childSelector, childManager, childTraverser, childFilter,
                                     childRepos, descriptorResult.getManagedDependencies(), parents, dependency ) );
+
                 }
                 args.pool.putChildren( key, child.getChildren() );
                 args.skipper.cache( child, parents );
diff --git a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/df/DfDependencyCollector.java b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/df/DfDependencyCollector.java
index e803fe13..cc430b43 100644
--- a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/df/DfDependencyCollector.java
+++ b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/df/DfDependencyCollector.java
@@ -420,6 +420,7 @@ public class DfDependencyCollector
                                               descriptorResult.getAliases(), repos, args.request.getRequestContext() );
 
                     node.getChildren().add( child );
+                    dependencyCollected( args.session, args.nodes.nodes, d, descriptorRequest, descriptorResult );
 
                     boolean recurse = traverse && !descriptorResult.getDependencies().isEmpty();
                     if ( recurse )
@@ -438,6 +439,7 @@ public class DfDependencyCollector
                     createDependencyNode( relocations, preManaged, rangeResult, version, d, null, repos,
                                           args.request.getRequestContext() );
                 node.getChildren().add( child );
+                dependencyCollected( args.session, args.nodes.nodes, d, descriptorRequest, descriptorResult );
             }
         }
     }