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<-------------------------------");
+
+ }
//----------------------------------------------------------------
//----------------------------------------------------------------
}