You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2013/04/14 20:50:51 UTC

svn commit: r1467812 - in /maven/shared/trunk/maven-dependency-tree: ./ src/main/java/org/apache/maven/shared/dependency/graph/internal/

Author: hboutemy
Date: Sun Apr 14 18:50:50 2013
New Revision: 1467812

URL: http://svn.apache.org/r1467812
Log:
[MSHARED-250] updated support for Maven 3.1-alpha-1/Eclipse Aether 0.9.0-M2

Modified:
    maven/shared/trunk/maven-dependency-tree/pom.xml
    maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyGraphBuilder.java
    maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java

Modified: maven/shared/trunk/maven-dependency-tree/pom.xml
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/pom.xml?rev=1467812&r1=1467811&r2=1467812&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/pom.xml (original)
+++ maven/shared/trunk/maven-dependency-tree/pom.xml Sun Apr 14 18:50:50 2013
@@ -78,9 +78,14 @@
     <dependency>
       <groupId>org.eclipse.aether</groupId>
       <artifactId>aether-api</artifactId>
-      <version>0.9.0.M1</version>
+      <version>0.9.0.M2</version>
       <optional>true</optional>
     </dependency>
+    <dependency>
+      <groupId>org.eclipse.aether</groupId>
+      <artifactId>aether-util</artifactId>
+      <version>0.9.0.M2</version>
+    </dependency>
 
     <dependency>
       <groupId>jmock</groupId>

Modified: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyGraphBuilder.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyGraphBuilder.java?rev=1467812&r1=1467811&r2=1467812&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyGraphBuilder.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyGraphBuilder.java Sun Apr 14 18:50:50 2013
@@ -73,16 +73,7 @@ public class DefaultDependencyGraphBuild
      */
     protected static boolean isMaven2x()
     {
-        try
-        {
-            Thread.currentThread().getContextClassLoader().loadClass( "org.apache.maven.project.DependencyResolutionRequest" ); // Maven 3 specific
-
-            return false;
-        }
-        catch ( ClassNotFoundException e )
-        {
-            return true;
-        }
+        return !canFindCoreClass( "org.apache.maven.project.DependencyResolutionRequest" ); // Maven 3 specific
     }
 
     /**
@@ -90,15 +81,20 @@ public class DefaultDependencyGraphBuild
      */
     protected static boolean isMaven31()
     {
+        return canFindCoreClass( "org.eclipse.aether.artifact.Artifact" ); // Maven 3.1 specific
+    }
+
+    private static boolean canFindCoreClass( String className)
+    {
         try
         {
-            Class.forName( "org.eclipse.aether.artifact.Artifact" ); // Maven 3.1 specific
+            Thread.currentThread().getContextClassLoader().loadClass( className );
 
-            return false;
+            return true;
         }
         catch ( ClassNotFoundException e )
         {
-            return true;
+            return false;
         }
     }
 

Modified: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java?rev=1467812&r1=1467811&r2=1467812&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java Sun Apr 14 18:50:50 2013
@@ -40,7 +40,10 @@ import org.apache.maven.shared.dependenc
 import org.apache.maven.shared.dependency.graph.DependencyNode;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
+import org.eclipse.aether.DefaultRepositorySystemSession;
+import org.eclipse.aether.RepositorySystemSession;
 import org.eclipse.aether.graph.Dependency;
+import org.eclipse.aether.util.graph.manager.DependencyManagerUtils;
 import org.eclipse.aether.version.VersionConstraint;
 
 /**
@@ -66,15 +69,31 @@ public class Maven31DependencyGraphBuild
         try
         {
             ProjectBuildingRequest projectBuildingRequest =
-                (ProjectBuildingRequest) invoke( project, "getProjectBuildingRequest" );
+                (ProjectBuildingRequest) invoke( project.getClass(), project, "getProjectBuildingRequest" );
+
+            RepositorySystemSession session =
+                (RepositorySystemSession) invoke( ProjectBuildingRequest.class, projectBuildingRequest,
+                                                  "getRepositorySession" );
+
+            if ( Boolean.TRUE != ( (Boolean) session.getConfigProperties().get( DependencyManagerUtils.NODE_DATA_PREMANAGED_VERSION ) ) )
+            {
+                DefaultRepositorySystemSession newSession = new DefaultRepositorySystemSession( session );
+                newSession.setConfigProperty( DependencyManagerUtils.NODE_DATA_PREMANAGED_VERSION, true );
+                session = newSession;
+            }
 
             DependencyResolutionRequest request =
-                new DefaultDependencyResolutionRequest( project, projectBuildingRequest.getRepositorySession() );
+                new DefaultDependencyResolutionRequest();
+            request.setMavenProject( project );
+            invoke( request, "setRepositorySession", RepositorySystemSession.class, session );
 
             DependencyResolutionResult result = resolver.resolve( request );
 
-            return buildDependencyNode( null, (org.eclipse.aether.graph.DependencyNode) result.getDependencyGraph(),
-                                        project.getArtifact(), filter );
+            org.eclipse.aether.graph.DependencyNode graph =
+                (org.eclipse.aether.graph.DependencyNode) invoke( DependencyResolutionResult.class, result,
+                                                                  "getDependencyGraph" );
+
+            return buildDependencyNode( null, graph, project.getArtifact(), filter );
         }
         catch ( DependencyResolutionException e )
         {
@@ -94,10 +113,16 @@ public class Maven31DependencyGraphBuild
         }
     }
 
-    private Object invoke( Object object, String method )
+    private Object invoke( Class<?> clazz, Object object, String method )
         throws IllegalAccessException, InvocationTargetException, NoSuchMethodException
     {
-        return object.getClass().getMethod( method ).invoke( object );
+        return clazz.getMethod( method ).invoke( object );
+    }
+
+    private Object invoke( Object object, String method, Class<?> clazz, Object arg )
+        throws IllegalAccessException, InvocationTargetException, NoSuchMethodException
+    {
+        return object.getClass().getMethod( method, clazz ).invoke( object, arg );
     }
 
     private Artifact getDependencyArtifact( Dependency dep )
@@ -113,8 +138,11 @@ public class Maven31DependencyGraphBuild
     private DependencyNode buildDependencyNode( DependencyNode parent, org.eclipse.aether.graph.DependencyNode node,
                                                 Artifact artifact, ArtifactFilter filter )
     {
+        String premanagedVersion = DependencyManagerUtils.getPremanagedVersion( node );
+        String premanagedScope = DependencyManagerUtils.getPremanagedScope( node );
+
         DefaultDependencyNode current =
-            new DefaultDependencyNode( parent, artifact, node.getPremanagedVersion(), node.getPremanagedScope(),
+            new DefaultDependencyNode( parent, artifact, premanagedVersion, premanagedScope,
                                        getVersionSelectedFromRange( node.getVersionConstraint() ) );
 
         List<DependencyNode> nodes = new ArrayList<DependencyNode>( node.getChildren().size() );