Author: ogusakov
Date: Mon Nov 10 13:55:49 2008
New Revision: 712846

URL: http://svn.apache.org/viewvc?rev=712846&view=rev
Log:
refactor

Modified:
    maven/mercury/trunk/mercury-maven/mercury-compare-plugin/   (props changed)
    
maven/mercury/trunk/mercury-maven/mercury-compare-plugin/src/main/java/org/sonatype/maven/plugins/crypto/MercuryCompareMojo.java

Propchange: maven/mercury/trunk/mercury-maven/mercury-compare-plugin/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Mon Nov 10 13:55:49 2008
@@ -0,0 +1,4 @@
+.settings
+target
+.classpath
+.project

Modified: 
maven/mercury/trunk/mercury-maven/mercury-compare-plugin/src/main/java/org/sonatype/maven/plugins/crypto/MercuryCompareMojo.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-maven/mercury-compare-plugin/src/main/java/org/sonatype/maven/plugins/crypto/MercuryCompareMojo.java?rev=712846&r1=712845&r2=712846&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-maven/mercury-compare-plugin/src/main/java/org/sonatype/maven/plugins/crypto/MercuryCompareMojo.java
 (original)
+++ 
maven/mercury/trunk/mercury-maven/mercury-compare-plugin/src/main/java/org/sonatype/maven/plugins/crypto/MercuryCompareMojo.java
 Mon Nov 10 13:55:49 2008
@@ -1,28 +1,45 @@
-package org.sonatype.maven.plugins.crypto;
+package org.sonatype.maven.plugins.mercury.compare;
 
 import java.io.File;
+import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 import java.util.Set;
 import java.util.TreeSet;
 
-import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
-import org.apache.maven.artifact.factory.DefaultArtifactFactory;
 import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
 import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.repository.DefaultArtifactRepository;
-import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
+import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.artifact.resolver.ArtifactResolver;
 import org.apache.maven.execution.MavenSession;
+import org.apache.maven.mercury.artifact.Artifact;
 import org.apache.maven.mercury.artifact.ArtifactBasicMetadata;
 import org.apache.maven.mercury.artifact.ArtifactCoordinates;
+import org.apache.maven.mercury.artifact.ArtifactMetadata;
+import org.apache.maven.mercury.artifact.ArtifactScopeEnum;
+import org.apache.maven.mercury.metadata.DependencyBuilder;
+import org.apache.maven.mercury.metadata.DependencyBuilderFactory;
+import org.apache.maven.mercury.metadata.DependencyTreeBuilderTest;
+import org.apache.maven.mercury.metadata.MetadataTreeException;
+import org.apache.maven.mercury.metadata.MetadataTreeNode;
+import org.apache.maven.mercury.repository.api.LocalRepository;
+import org.apache.maven.mercury.repository.api.Repository;
+import org.apache.maven.mercury.repository.api.RepositoryUpdateIntervalPolicy;
+import org.apache.maven.mercury.repository.local.m2.LocalRepositoryM2;
+import org.apache.maven.mercury.repository.remote.m2.RemoteRepositoryM2;
+import org.apache.maven.mercury.transport.api.Server;
+import org.apache.maven.mercury.util.Util;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugin.logging.Log;
 import org.apache.maven.project.MavenProjectBuilder;
+import org.apache.maven.project.ProjectBuildingException;
+import org.apache.maven.project.artifact.InvalidDependencyVersionException;
 import org.codehaus.plexus.PlexusContainer;
 import 
org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
@@ -102,6 +119,10 @@
   
   MavenProjectBuilder projectBuilder;
   
+  List<Repository> repos;
+  
+  DependencyBuilder depBuilder;
+  
        //----------------------------------------------------------------
        public void execute()
        throws MojoExecutionException, MojoFailureException
@@ -110,8 +131,8 @@
     if( _session == null )
       throw new MojoExecutionException("session not injected");
 
-//    if( localRepoDir == null )
-//      throw new MojoExecutionException("local repo dir not injected");
+    if( localRepoDir == null )
+      throw new MojoExecutionException("local repo dir not injected");
 
     try {
                  
@@ -123,19 +144,21 @@
                  
       System.out.println("Got projectBuilder as "+projectBuilder);
       
-//      TreeSet<ArtifactBasicMetadata> res = getOld( new 
ArtifactCoordinates("asm:asm-xml:3.0::jar") );
-//      
-//
-//_log.info("\n-------------------------------> Results:");
-//System.out.println( res );
-//_log.info("\n<-------------------------------");
+      ArtifactBasicMetadata query = new 
ArtifactBasicMetadata("asm:asm-xml:3.0::jar");
+      
+      Collection<ArtifactBasicMetadata> res1 = getMaven( query );
+      
+      Collection<ArtifactBasicMetadata> res2 = getMaven( query );
+      
+      compare( res1, res2 );
 
                } catch( Exception e ) {
-                 _log.error("Error resolving dependencies "+e.getMessage() );
+                 _log.error( e.getMessage() );
                        throw new MojoExecutionException( e.getMessage() );
                }
        }
        
+       
//------------------------------------------------------------------------
   public void initialize()
   throws InitializationException
   {
@@ -155,24 +178,76 @@
     try
     {
       projectBuilder = (MavenProjectBuilder)plexus.lookup( 
MavenProjectBuilder.ROLE );
+      
+      repos = new ArrayList<Repository>();
+      
+      LocalRepositoryM2 lRepo = new LocalRepositoryM2( "localMercury", new 
File(localRepoDir) );
+      repos.add( lRepo );
+      
+      for( ArtifactRepository ar : 
(List<ArtifactRepository>)remoteRepositories )
+      {
+        Server server = new Server( ar.getId(), new URL(ar.getUrl()) );
+        
+        RemoteRepositoryM2 rr = new RemoteRepositoryM2( server );
+        
+        repos.add( rr );
+      }
+      
+      depBuilder = DependencyBuilderFactory.create( 
DependencyBuilderFactory.JAVA_DEPENDENCY_MODEL, repos, null, null, null );
+      
     }
-    catch( ComponentLookupException e )
+    catch( Exception e )
     {
       throw new InitializationException(e.getMessage());
     }
-    
   }
   
-//  private TreeSet<ArtifactBasic> getOld( ArtifactCoordinates ac )
-//  {
-//    Set<Artifact> res = resolver.transitivelyResolvePomDependencies( 
projectBuilder , "asm", "asm-xml", "3.0", false );
-//    
-//    if( res == null || res.isEmpty() )
-//      return null;
-//    
-//    TreeSet<ArtifactBasicMetadata> 
-//  }
+  private Collection<ArtifactBasicMetadata> getMaven( ArtifactBasicMetadata 
bmd )
+  throws MalformedURLException, ArtifactResolutionException, 
ArtifactNotFoundException, ProjectBuildingException, 
InvalidDependencyVersionException
+  {
+    Set<org.apache.maven.artifact.Artifact> deps = 
resolver.transitivelyResolvePomDependencies( projectBuilder , "asm", "asm-xml", 
"3.0", false );
+    
+    if( deps == null || deps.isEmpty() )
+      return null;
+    
+    ArrayList<ArtifactBasicMetadata> res = new 
ArrayList<ArtifactBasicMetadata>( deps.size() );
+    
+    for( org.apache.maven.artifact.Artifact a : deps )
+    {
+      res.add( 
+        new ArtifactBasicMetadata( 
+            a.getGroupId()+":"+a.getArtifactId()+":"+a.getVersion()
+            + ":"+Util.nvlS( a.getClassifier(), "" )
+            + ":"+Util.nvlS( a.getType(), 
ArtifactBasicMetadata.DEFAULT_ARTIFACT_TYPE )
+                                  ) 
+             );
+    }
+
+    return res;
+  }
+
+  private Collection<? extends ArtifactBasicMetadata> getMercury( 
ArtifactBasicMetadata bmd )
+  throws MetadataTreeException
+  {
+    MetadataTreeNode root = depBuilder.buildTree( bmd, null );
+    
+    List<ArtifactMetadata> deps = depBuilder.resolveConflicts( root );
+    
+    return deps;
+  }
        
+  private void compare( Collection<ArtifactBasicMetadata> r1, 
Collection<ArtifactBasicMetadata> r2 )
+  {
+
+    _log.info("\n-------------------------------> Maven Results:");
+    System.out.println( r1 );
+    _log.info("\n<-------------------------------");
+
+    _log.info("\n-------------------------------> Mercury Results:");
+    System.out.println( r2 );
+    _log.info("\n<-------------------------------");
+
+  }
        //----------------------------------------------------------------
        //----------------------------------------------------------------
 }


Reply via email to