You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by og...@apache.org on 2009/04/29 08:10:19 UTC

svn commit: r769672 - in /maven/components/branches/maven-3.0-mercury-763966: ./ maven-compat/src/main/java/org/apache/maven/artifact/repository/ maven-core/ maven-core/src/main/java/org/apache/maven/ maven-embedder/ maven-project/ maven-repository-mer...

Author: ogusakov
Date: Wed Apr 29 06:10:16 2009
New Revision: 769672

URL: http://svn.apache.org/viewvc?rev=769672&view=rev
Log:
Mercury RS integration compiles Maven, all UTs but 1 or 2 (depending on how to interpret null scope) work. Suspect an error in the test, will ask for second opinion


Modified:
    maven/components/branches/maven-3.0-mercury-763966/build-mercury.xml
    maven/components/branches/maven-3.0-mercury-763966/maven-compat/src/main/java/org/apache/maven/artifact/repository/ReactorArtifactRepository.java
    maven/components/branches/maven-3.0-mercury-763966/maven-core/pom.xml
    maven/components/branches/maven-3.0-mercury-763966/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
    maven/components/branches/maven-3.0-mercury-763966/maven-embedder/pom.xml
    maven/components/branches/maven-3.0-mercury-763966/maven-project/pom.xml
    maven/components/branches/maven-3.0-mercury-763966/maven-repository-mercury/pom.xml
    maven/components/branches/maven-3.0-mercury-763966/maven-repository-mercury/src/main/java/org/apache/maven/repository/mercury/MercuryAdaptor.java
    maven/components/branches/maven-3.0-mercury-763966/maven-repository-mercury/src/main/java/org/apache/maven/repository/mercury/MercuryRepositorySystem.java
    maven/components/branches/maven-3.0-mercury-763966/maven-repository/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java
    maven/components/branches/maven-3.0-mercury-763966/pom.xml

Modified: maven/components/branches/maven-3.0-mercury-763966/build-mercury.xml
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-3.0-mercury-763966/build-mercury.xml?rev=769672&r1=769671&r2=769672&view=diff
==============================================================================
--- maven/components/branches/maven-3.0-mercury-763966/build-mercury.xml (original)
+++ maven/components/branches/maven-3.0-mercury-763966/build-mercury.xml Wed Apr 29 06:10:16 2009
@@ -347,14 +347,15 @@
 
       <jvmarg value="-Dmaven.repo.local=${maven.repo.local}"/>
       <jvmarg value="-Dsurefire.useFile=${surefire.useFile}"/>
+      <jvmarg value="-Xmx168m"/>
 <!--
 <debug-the-bootstrap>
-
+-->
     	<jvmarg value="-Xdebug"/>
     	<jvmarg value="-Xnoagent"/>
     	<jvmarg value="-Djava.compiler=NONE"/>
     	<jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000"/>
-
+<!--
 </debug-the-bootstrap>
 -->
     </java>

Modified: maven/components/branches/maven-3.0-mercury-763966/maven-compat/src/main/java/org/apache/maven/artifact/repository/ReactorArtifactRepository.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-3.0-mercury-763966/maven-compat/src/main/java/org/apache/maven/artifact/repository/ReactorArtifactRepository.java?rev=769672&r1=769671&r2=769672&view=diff
==============================================================================
--- maven/components/branches/maven-3.0-mercury-763966/maven-compat/src/main/java/org/apache/maven/artifact/repository/ReactorArtifactRepository.java (original)
+++ maven/components/branches/maven-3.0-mercury-763966/maven-compat/src/main/java/org/apache/maven/artifact/repository/ReactorArtifactRepository.java Wed Apr 29 06:10:16 2009
@@ -38,7 +38,7 @@
  *
  */
 
-@Component( role=ArtifactRepository.class,hint="reactor")
+@Component( role=ArtifactRepository.class,hint="reactor",instantiationStrategy="singleton")
 public class ReactorArtifactRepository
 //extends Repository
 implements ArtifactRepository
@@ -60,6 +60,8 @@
     
     private Map<String, String> storage = new HashMap<String, String>(32);
     
+    private boolean initialized = false;
+    
     public static String calculateKey( Artifact artifact )
     {
         // GAV only
@@ -106,6 +108,8 @@
             this.baseDir = baseDir.getCanonicalPath();
 
             this.url = baseDir.toURL().toString();
+            
+            this.initialized = true;
         }
         catch ( IOException e )
         {
@@ -157,6 +161,16 @@
         return null;
     }
     
+    public boolean isEmpty()
+    {
+        return storage.isEmpty();
+    }
+    
+    public boolean isInitialized()
+    {
+        return initialized;
+    }
+    
     public String getKey()
     {
         return getId();
@@ -223,6 +237,11 @@
     {
         return baseDir;
     }
+    
+    public Map<String, String> getStorage()
+    {
+        return storage;
+    }
 
     public String getId()
     {

Modified: maven/components/branches/maven-3.0-mercury-763966/maven-core/pom.xml
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-3.0-mercury-763966/maven-core/pom.xml?rev=769672&r1=769671&r2=769672&view=diff
==============================================================================
--- maven/components/branches/maven-3.0-mercury-763966/maven-core/pom.xml (original)
+++ maven/components/branches/maven-3.0-mercury-763966/maven-core/pom.xml Wed Apr 29 06:10:16 2009
@@ -117,6 +117,20 @@
       <artifactId>maven-mercury</artifactId>
       <version>${project.version}</version>
     </dependency>
+
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-repository-mercury</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+
+    <dependency>
+      <groupId>org.apache.maven.mercury</groupId>
+      <artifactId>mercury-plexus</artifactId>
+      <version>${mercuryVersion}</version>
+      <scope>test</scope>
+    </dependency>
+      
     <dependency>
       <groupId>org.sonatype.spice</groupId>
       <artifactId>model-builder</artifactId>
@@ -129,6 +143,8 @@
     	<groupId>commons-jxpath</groupId>
     	<artifactId>commons-jxpath</artifactId>
     </dependency>
+    
+    
   </dependencies>
   <build>
     <plugins>

Modified: maven/components/branches/maven-3.0-mercury-763966/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-3.0-mercury-763966/maven-core/src/main/java/org/apache/maven/DefaultMaven.java?rev=769672&r1=769671&r2=769672&view=diff
==============================================================================
--- maven/components/branches/maven-3.0-mercury-763966/maven-core/src/main/java/org/apache/maven/DefaultMaven.java (original)
+++ maven/components/branches/maven-3.0-mercury-763966/maven-core/src/main/java/org/apache/maven/DefaultMaven.java Wed Apr 29 06:10:16 2009
@@ -28,6 +28,9 @@
 import java.util.Iterator;
 import java.util.List;
 
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.ReactorArtifactRepository;
 import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
 import org.apache.maven.execution.DefaultMavenExecutionResult;
 import org.apache.maven.execution.DuplicateProjectException;
@@ -76,6 +79,9 @@
 
     @Requirement
     protected RuntimeInformation runtimeInformation;
+    
+    @Requirement(role=ArtifactRepository.class,hint="reactor")
+    private ReactorArtifactRepository reactorRepository;
 
     @Requirement
     private Logger logger;
@@ -139,6 +145,10 @@
         if ( reactorManager.hasMultipleProjects() )
         {
             logger.info( "Reactor build order: " );
+            
+            List<MavenProject> sortedProjects = reactorManager.getSortedProjects();
+            
+            initializeReactorRepository( reactorManager.getTopLevelProject(), sortedProjects );
 
             for ( Iterator i = reactorManager.getSortedProjects().iterator(); i.hasNext(); )
             {
@@ -228,6 +238,21 @@
 
         return reactorManager;
     }
+    
+    private void initializeReactorRepository( MavenProject topLevelProject, List<MavenProject> projects )
+    {
+        reactorRepository.setReactorRoot( topLevelProject.getArtifact()
+                                          , topLevelProject.getBasedir()
+                                          , topLevelProject.getBuild().getDirectory()
+                                        );
+        
+        for( MavenProject project : projects )
+        {
+            Artifact projectArtifact = project.getArtifact();
+
+            reactorRepository.addArtifact( projectArtifact, project.getBuild().getDirectory() );
+        }
+    }
 
     protected List getProjects( MavenExecutionRequest request )
         throws MavenExecutionException

Modified: maven/components/branches/maven-3.0-mercury-763966/maven-embedder/pom.xml
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-3.0-mercury-763966/maven-embedder/pom.xml?rev=769672&r1=769671&r2=769672&view=diff
==============================================================================
--- maven/components/branches/maven-3.0-mercury-763966/maven-embedder/pom.xml (original)
+++ maven/components/branches/maven-3.0-mercury-763966/maven-embedder/pom.xml Wed Apr 29 06:10:16 2009
@@ -67,6 +67,17 @@
     	<groupId>commons-jxpath</groupId>
     	<artifactId>commons-jxpath</artifactId>
     </dependency>
+    
+    
+    <!-- Test dependencies for Jetty -->
+    <dependency>
+      <groupId>org.mortbay.jetty</groupId>
+      <artifactId>jetty-client</artifactId>
+      <classifier>assembly</classifier>
+      <version>6.1.15</version>
+      <scope>test</scope>
+    </dependency>
+    
   </dependencies>
   <build>
     <resources>

Modified: maven/components/branches/maven-3.0-mercury-763966/maven-project/pom.xml
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-3.0-mercury-763966/maven-project/pom.xml?rev=769672&r1=769671&r2=769672&view=diff
==============================================================================
--- maven/components/branches/maven-3.0-mercury-763966/maven-project/pom.xml (original)
+++ maven/components/branches/maven-3.0-mercury-763966/maven-project/pom.xml Wed Apr 29 06:10:16 2009
@@ -81,6 +81,20 @@
     	<artifactId>commons-jxpath</artifactId>
     </dependency>
 
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-repository-mercury</artifactId>
+        <version>${project.version}</version>
+        <scope>test</scope>
+      </dependency>
+
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-mercury</artifactId>
+        <version>${project.version}</version>
+        <scope>test</scope>
+      </dependency>
+
     <dependency>
       <groupId>org.sonatype.plexus</groupId>                                                                                
       <artifactId>plexus-jetty6</artifactId>                                                                                
@@ -101,6 +115,13 @@
     </dependency>
     
     <dependency>
+      <groupId>org.apache.maven.mercury</groupId>
+      <artifactId>mercury-plexus</artifactId>
+      <version>${mercuryVersion}</version>
+      <scope>test</scope>
+    </dependency>
+    
+    <dependency>
       <groupId>commons-cli</groupId>
       <artifactId>commons-cli</artifactId>
       <scope>test</scope>

Modified: maven/components/branches/maven-3.0-mercury-763966/maven-repository-mercury/pom.xml
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-3.0-mercury-763966/maven-repository-mercury/pom.xml?rev=769672&r1=769671&r2=769672&view=diff
==============================================================================
--- maven/components/branches/maven-3.0-mercury-763966/maven-repository-mercury/pom.xml (original)
+++ maven/components/branches/maven-3.0-mercury-763966/maven-repository-mercury/pom.xml Wed Apr 29 06:10:16 2009
@@ -36,6 +36,11 @@
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-repository</artifactId>
     </dependency>
+
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-model</artifactId>
+    </dependency>
     
     <dependency>
       <groupId>org.apache.maven</groupId>

Modified: maven/components/branches/maven-3.0-mercury-763966/maven-repository-mercury/src/main/java/org/apache/maven/repository/mercury/MercuryAdaptor.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-3.0-mercury-763966/maven-repository-mercury/src/main/java/org/apache/maven/repository/mercury/MercuryAdaptor.java?rev=769672&r1=769671&r2=769672&view=diff
==============================================================================
--- maven/components/branches/maven-3.0-mercury-763966/maven-repository-mercury/src/main/java/org/apache/maven/repository/mercury/MercuryAdaptor.java (original)
+++ maven/components/branches/maven-3.0-mercury-763966/maven-repository-mercury/src/main/java/org/apache/maven/repository/mercury/MercuryAdaptor.java Wed Apr 29 06:10:16 2009
@@ -34,6 +34,7 @@
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.handler.ArtifactHandler;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.repository.ReactorArtifactRepository;
 import org.apache.maven.artifact.resolver.ArtifactResolutionRequest;
@@ -47,13 +48,12 @@
 import org.apache.maven.mercury.builder.api.DependencyProcessor;
 import org.apache.maven.mercury.repository.api.Repository;
 import org.apache.maven.mercury.repository.local.m2.LocalRepositoryM2;
-import org.apache.maven.mercury.repository.local.map.DefaultStorage;
 import org.apache.maven.mercury.repository.local.map.LocalRepositoryMap;
+import org.apache.maven.mercury.repository.local.map.ReactorStorage;
 import org.apache.maven.mercury.repository.local.map.StorageException;
 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.model.Dependency;
 import org.apache.maven.repository.MavenArtifactMetadata;
 import org.apache.maven.repository.MetadataGraph;
 import org.apache.maven.repository.MetadataGraphNode;
@@ -62,84 +62,101 @@
  * @author Oleg Gusakov
  * @version $Id$
  */
-public class MercuryAdaptor
+class MercuryAdaptor
 {
-    
-    private static Map<String, Repository> _repos = Collections.synchronizedMap(  new HashMap<String, Repository>() );
-    
+
+    private static Map<String, Repository> _repos = Collections.synchronizedMap( new HashMap<String, Repository>() );
+
     private static LocalRepositoryMap _reactorRepository;
 
     /**
      * @param repository
-     * @throws StorageException 
+     * @param dependencyProcessor
+     * @throws StorageException
      */
-    public static void initializeReactor( ReactorArtifactRepository repository, DependencyProcessor dependencyProcessor )
-    {
-       try
+    private static void initializeReactor( ReactorArtifactRepository mavenReactorRepository,
+                                          DependencyProcessor dependencyProcessor )
     {
-        _reactorRepository = new LocalRepositoryMap( dependencyProcessor, new DefaultStorage() );
-        
-//        repository.
+        if ( mavenReactorRepository == null )
+            return;
+
+        try
+        {
+            _reactorRepository =
+                new LocalRepositoryMap( "reactor", dependencyProcessor,
+                                        new ReactorStorage( new File( mavenReactorRepository.getBasedir() ),
+                                                            mavenReactorRepository.getStorage() ) );
+        }
+        catch ( StorageException e )
+        {
+            throw new IllegalArgumentException( e );
+        }
+
     }
-    catch ( StorageException e )
+
+    public static void deleteReactor()
     {
-        throw new IllegalArgumentException( e );
+        _reactorRepository = null;
     }
-        
-    }
-    public static List<Repository> toMercuryRepos( ArtifactRepository localRepository,
-                                                   List<?> remoteRepositories,
-                                                   DependencyProcessor dependencyProcessor
-                                                 )
+
+    public static List<Repository> toMercuryRepos( ReactorArtifactRepository reactorRepository,
+                                                   ArtifactRepository localRepository, List<?> remoteRepositories,
+                                                   DependencyProcessor dependencyProcessor )
     {
         if ( localRepository == null && Util.isEmpty( remoteRepositories ) )
             return null;
-        
-        if( "legacy".equals( localRepository.getLayout().getId() ) )
+
+        if ( "legacy".equals( localRepository.getLayout().getId() ) )
             return null;
-        
-        if( !Util.isEmpty( remoteRepositories ) )
-            for( Object ro : remoteRepositories )
+
+        if ( !Util.isEmpty( remoteRepositories ) )
+            for ( Object ro : remoteRepositories )
             {
-                if( ArtifactRepository.class.isAssignableFrom( ro.getClass() ) )
+                if ( ArtifactRepository.class.isAssignableFrom( ro.getClass() ) )
                 {
                     ArtifactRepository ar = (ArtifactRepository) ro;
-                    
-                    if( "legacy".equals( ar.getLayout().getId() ) )
+
+                    if ( "legacy".equals( ar.getLayout().getId() ) )
                         return null;
                 }
             }
-        
+
+        if ( _reactorRepository == null && reactorRepository.isInitialized() )
+            initializeReactor( reactorRepository, dependencyProcessor );
+
         int nRepos =
-            ( localRepository == null ? 0 : 1 ) + ( Util.isEmpty( remoteRepositories ) ? 0 : remoteRepositories.size() );
+            ( _reactorRepository == null ? 0 : 1 ) + ( localRepository == null ? 0 : 1 )
+                + ( Util.isEmpty( remoteRepositories ) ? 0 : remoteRepositories.size() );
 
-        Map<String, Repository> repos = new LinkedHashMap<String, Repository>(nRepos);
-        
+        Map<String, Repository> repos = new LinkedHashMap<String, Repository>( nRepos );
+
+        if ( _reactorRepository != null )
+            repos.put( _reactorRepository.getId(), _reactorRepository );
 
         if ( localRepository != null )
         {
             String url = localRepository.getUrl();
-            
+
             LocalRepositoryM2 lr = (LocalRepositoryM2) _repos.get( url );
-            
-            if( lr == null )
+
+            if ( lr == null )
                 try
                 {
                     URI rootURI = new URI( url );
-                    
-                    File localRepoDir =  new File( rootURI );
-                    
+
+                    File localRepoDir = new File( rootURI );
+
                     lr = new LocalRepositoryM2( localRepository.getId(), localRepoDir, dependencyProcessor );
-                    
-//                    lr.setSnapshotAlwaysWins( true );
-                    
+
+                    // lr.setSnapshotAlwaysWins( true );
+
                     _repos.put( url, lr );
                 }
                 catch ( URISyntaxException e )
                 {
                     throw new IllegalArgumentException( e );
                 }
-                repos.put( url, lr );
+            repos.put( url, lr );
         }
 
         if ( !Util.isEmpty( remoteRepositories ) )
@@ -148,25 +165,26 @@
             {
                 String url;
                 String id;
-                
-                if( ArtifactRepository.class.isAssignableFrom( o.getClass() ))
+
+                if ( ArtifactRepository.class.isAssignableFrom( o.getClass() ) )
                 {
                     ArtifactRepository ar = (ArtifactRepository) o;
                     url = ar.getUrl();
                     id = ar.getId();
                 }
-                else if( org.apache.maven.model.Repository.class.isAssignableFrom( o.getClass() ))
+                else if ( org.apache.maven.model.Repository.class.isAssignableFrom( o.getClass() ) )
                 {
                     org.apache.maven.model.Repository ar = (org.apache.maven.model.Repository) o;
                     url = ar.getUrl();
                     id = ar.getId();
                 }
                 else
-                    throw new IllegalArgumentException( "found illegal class in the remote repository list - " + o.getClass().getName() );
-                
+                    throw new IllegalArgumentException( "found illegal class in the remote repository list - "
+                        + o.getClass().getName() );
+
                 RemoteRepositoryM2 rr = (RemoteRepositoryM2) _repos.get( url );
-                
-                if( rr == null )
+
+                if ( rr == null )
                 {
                     Server server;
                     try
@@ -187,58 +205,63 @@
 
         List<Repository> res = new ArrayList<Repository>( repos.size() );
 
-        for( Entry<String, Repository> e : repos.entrySet() )
+        for ( Entry<String, Repository> e : repos.entrySet() )
             res.add( e.getValue() );
-        
-//System.out.println("Converted "+nRepos+" -> "+res.size());
-//
+
+        // System.out.println("Converted "+nRepos+" -> "+res.size());
+        //
         return res;
     }
 
     private static void setInExClusion( ArtifactMetadata md, List<String> patterns, boolean inc )
     {
-        if( Util.isEmpty( patterns ) )
+        if ( Util.isEmpty( patterns ) )
             return;
-        
+
         List<ArtifactMetadata> lusions = new ArrayList<ArtifactMetadata>( patterns.size() );
-        
-        for( String pattern : patterns )
-            lusions.add( new ArtifactMetadata(pattern) );
-        
-        if( inc )
+
+        for ( String pattern : patterns )
+            lusions.add( new ArtifactMetadata( pattern ) );
+
+        if ( inc )
             md.setInclusions( lusions );
         else
             md.setExclusions( lusions );
     }
-    
+
     public static ArtifactMetadata toMercuryMetadata( Artifact a )
     {
+        ArtifactHandler h = a.getArtifactHandler();
+        
         ArtifactMetadata md = new ArtifactMetadata();
+        
         md.setGroupId( a.getGroupId() );
         md.setArtifactId( a.getArtifactId() );
         md.setVersion( a.getVersion() );
-        md.setType( a.getType() );
+        md.setType( h == null ? a.getType() : h.getExtension() );
         md.setScope( a.getScope() );
         md.setOptional( a.isOptional() );
-        
-        if( "test-jar".equals( a.getType() ) )
+        md.setClassifier( h == null ? a.getClassifier() : h.getClassifier() );
+
+        // if the handler allowed this ..
+        if ( "test-jar".equals( a.getType() ) )
         {
             md.setType( "jar" );
             md.setClassifier( "tests" );
         }
-        
+
         ArtifactFilter af = a.getDependencyFilter();
-        
-        if( af != null )
+
+        if ( af != null )
         {
-            if( ExcludesArtifactFilter.class.isAssignableFrom( af.getClass() ) )
+            if ( ExcludesArtifactFilter.class.isAssignableFrom( af.getClass() ) )
             {
-                setInExClusion( md, ((ExcludesArtifactFilter)af).getPatterns(), false );
+                setInExClusion( md, ( (ExcludesArtifactFilter) af ).getPatterns(), false );
+            }
+            else if ( IncludesArtifactFilter.class.isAssignableFrom( af.getClass() ) )
+            {
+                setInExClusion( md, ( (IncludesArtifactFilter) af ).getPatterns(), true );
             }
-            else if( IncludesArtifactFilter.class.isAssignableFrom( af.getClass() ) )
-                {
-                    setInExClusion( md, ((IncludesArtifactFilter)af).getPatterns(), true );
-                }
         }
         return md;
     }
@@ -246,21 +269,23 @@
     public static Artifact toMavenArtifact( ArtifactFactory af, org.apache.maven.mercury.artifact.Artifact a )
     {
         boolean isTestJar = "test-jar".equals( a.getType() );
-        
+
         String type = isTestJar ? "jar" : a.getType();
-        
+
         String classifier = isTestJar ? "tests" : a.getClassifier();
-        
-        Artifact ma = classifier == null 
-                        ? af.createArtifact( a.getGroupId(), a.getArtifactId(), a.getVersion(), a.getScope(), type )
-                        : af.createArtifactWithClassifier( a.getGroupId(), a.getArtifactId(), a.getVersion(), type, classifier )
-                        ;
+
+        Artifact ma =
+            classifier == null ? af.createArtifact( a.getGroupId(), a.getArtifactId(), a.getVersion(), a.getScope(),
+                                                    type ) : af.createArtifactWithClassifier( a.getGroupId(),
+                                                                                              a.getArtifactId(),
+                                                                                              a.getVersion(), type,
+                                                                                              classifier );
         ma.setScope( a.getScope() );
-        
+
         ma.setFile( a.getFile() );
-        
+
         ma.setResolved( a.getFile() != null );
-        
+
         ma.setResolvedVersion( a.getVersion() );
 
         return ma;
@@ -270,31 +295,35 @@
     {
         // MavenProject likes this one - replaces it with an actual test jar is available
         // bad idea - embedder tests don't like it
-//        boolean isTestJar = "jar".equals( a.getType() ) && "tests".equals( a.getClassifier() );
-//        
-//        String type = isTestJar ? "test-jar" : a.getType();
-        
-        Artifact ma = af.createArtifactWithClassifier( a.getGroupId(), a.getArtifactId(), a.getVersion(), a.getType(), a.getClassifier() );
+        // boolean isTestJar = "jar".equals( a.getType() ) && "tests".equals( a.getClassifier() );
+        //        
+        // String type = isTestJar ? "test-jar" : a.getType();
+
+        Artifact ma =
+            af.createArtifactWithClassifier( a.getGroupId(), a.getArtifactId(), a.getVersion(), a.getType(),
+                                             a.getClassifier() );
         ma.setScope( a.getScope() );
-        
+
         ma.setFile( a.getFile() );
-        
+
         ma.setResolved( a.getFile() != null );
-        
+
         ma.setResolvedVersion( a.getVersion() );
 
         return ma;
     }
-    
+
     public static Artifact toMavenArtifact( ArtifactFactory af, org.apache.maven.mercury.artifact.ArtifactMetadata a )
     {
         // MavenProject likes this one - replaces it with an actual test jar is available
         // bad idea - embedder tests don't like it
-//        boolean isTestJar = "jar".equals( a.getType() ) && "tests".equals( a.getClassifier() );
-//        
-//        String type = isTestJar ? "test-jar" : a.getType();
-        
-        Artifact ma = af.createArtifactWithClassifier( a.getGroupId(), a.getArtifactId(), a.getVersion(), a.getType(), a.getClassifier() );
+        // boolean isTestJar = "jar".equals( a.getType() ) && "tests".equals( a.getClassifier() );
+        //        
+        // String type = isTestJar ? "test-jar" : a.getType();
+
+        Artifact ma =
+            af.createArtifactWithClassifier( a.getGroupId(), a.getArtifactId(), a.getVersion(), a.getType(),
+                                             a.getClassifier() );
         ma.setScope( a.getScope() );
 
         return ma;
@@ -305,20 +334,21 @@
      * @param d
      * @return
      */
-    public static Artifact toMavenArtifact( ArtifactFactory af, Dependency a )
-    {
-        boolean isTestJar = "test-jar".equals( a.getType() );
-        
-        String type = isTestJar ? "jar" : a.getType();
-        
-        String classifier = isTestJar ? "tests" : a.getClassifier();
-        
-        Artifact ma = af.createArtifactWithClassifier( a.getGroupId(), a.getArtifactId(), a.getVersion(), type, classifier );
-        ma.setScope( a.getScope() );
+//    public static Artifact toMavenArtifact( ArtifactFactory af, Dependency a )
+//    {
+//        boolean isTestJar = "test-jar".equals( a.getType() );
+//
+//        String type = isTestJar ? "jar" : a.getType();
+//
+//        String classifier = isTestJar ? "tests" : a.getClassifier();
+//
+//        Artifact ma =
+//            af.createArtifactWithClassifier( a.getGroupId(), a.getArtifactId(), a.getVersion(), type, classifier );
+//        ma.setScope( a.getScope() );
+//
+//        return ma;
+//    }
 
-        return ma;
-    }
-    
     public static ArtifactMetadata toMercuryArtifactMetadata( MavenArtifactMetadata md )
     {
         ArtifactMetadata mmd = new ArtifactMetadata();
@@ -327,8 +357,8 @@
         mmd.setVersion( md.getVersion() );
         mmd.setClassifier( md.getClassifier() );
         mmd.setType( md.getType() );
-        
-        if( "test-jar".equals( md.getType() ) )
+
+        if ( "test-jar".equals( md.getType() ) )
         {
             mmd.setType( "jar" );
             mmd.setClassifier( "tests" );
@@ -336,7 +366,7 @@
 
         return mmd;
     }
-    
+
     public static MavenArtifactMetadata toMavenArtifactMetadata( ArtifactMetadata md )
     {
         MavenArtifactMetadata mmd = new MavenArtifactMetadata();
@@ -345,8 +375,8 @@
         mmd.setVersion( md.getVersion() );
         mmd.setClassifier( md.getClassifier() );
         mmd.setType( md.getType() );
-        
-        if( "test-jar".equals( md.getType() ) )
+
+        if ( "test-jar".equals( md.getType() ) )
         {
             mmd.setType( "jar" );
             mmd.setClassifier( "tests" );
@@ -354,7 +384,7 @@
 
         return mmd;
     }
-    
+
     public static MavenArtifactMetadata toMavenArtifactMetadata( Artifact md )
     {
         MavenArtifactMetadata mmd = new MavenArtifactMetadata();
@@ -363,8 +393,8 @@
         mmd.setVersion( md.getVersion() );
         mmd.setClassifier( md.getClassifier() );
         mmd.setType( md.getType() );
-        
-        if( "test-jar".equals( md.getType() ) )
+
+        if ( "test-jar".equals( md.getType() ) )
         {
             mmd.setType( "jar" );
             mmd.setClassifier( "tests" );
@@ -372,87 +402,98 @@
 
         return mmd;
     }
-    
+
     public static MetadataGraph resolvedTreeToGraph( MetadataTreeNode root )
     {
-        if( root == null )
+        if ( root == null )
             return null;
-        
+
         MetadataGraphNode entry = new MetadataGraphNode( toMavenArtifactMetadata( root.getMd() ) );
-        
-        MetadataGraph graph = new MetadataGraph(entry);
-        
+
+        MetadataGraph graph = new MetadataGraph( entry );
+
         graph.addNode( entry );
-        
+
         addKids( root, entry, graph );
-        
+
         return graph;
     }
-    
+
     private static final void addKids( MetadataTreeNode tParent, MetadataGraphNode gParent, MetadataGraph graph )
     {
-        if( !tParent.hasChildren() )
+        if ( !tParent.hasChildren() )
             return;
-        
-        for( MetadataTreeNode kid : tParent.getChildren() )
+
+        for ( MetadataTreeNode kid : tParent.getChildren() )
         {
             MavenArtifactMetadata mmd = toMavenArtifactMetadata( kid.getMd() );
-            
+
             MetadataGraphNode node = graph.findNode( mmd );
-            
+
             node.addIncident( gParent );
-            
+
             gParent.addIncident( node );
-            
+
             addKids( kid, node, graph );
         }
     }
 
     /**
-     * @param reqArtifact 
-     * @param isPlugin 
+     * @param reqArtifact
      * @param filter
      * @return
      */
-    public static ArtifactScopeEnum extractScope( Artifact reqArtifact, boolean isPlugin, ArtifactFilter filter )
+    public static ArtifactScopeEnum extractScope( Artifact reqArtifact, ArtifactFilter filter )
     {
-        String scopeStr = reqArtifact.getScope() == null 
-                          ? org.apache.maven.mercury.artifact.Artifact.SCOPE_COMPILE
-                          : reqArtifact.getScope()
-        ;
+        String scopeStr =
+            reqArtifact.getScope() == null ?  org.apache.maven.mercury.artifact.Artifact.SCOPE_COMPILE
+                            : reqArtifact.getScope();
         
-        if( filter != null )
+        System.out.println("Scope 1: "+scopeStr);
+        
+        if ( filter != null )
         {
-            if( ScopeArtifactFilter.class.isAssignableFrom( filter.getClass() ) )
-                scopeStr = ((ScopeArtifactFilter)filter).getScope(); 
+            if ( ScopeArtifactFilter.class.isAssignableFrom( filter.getClass() ) )
+            {
+                scopeStr = ( (ScopeArtifactFilter) filter ).getScope();
+
+System.out.println("Scope 2: "+scopeStr);
+                
+                if( scopeStr == null )
+                    scopeStr = org.apache.maven.mercury.artifact.Artifact.SCOPE_COMPILE;
+
+System.out.println("Scope 3: "+scopeStr);
+            }
         }
-//        else if( isPlugin )
-//            scopeStr = org.apache.maven.mercury.artifact.Artifact.SCOPE_RUNTIME;
-        
-        if( scopeStr != null )
+
+        if ( scopeStr != null )
         {
-            if( org.apache.maven.mercury.artifact.Artifact.SCOPE_COMPILE.equals( scopeStr ) )
+            if ( org.apache.maven.mercury.artifact.Artifact.SCOPE_COMPILE.equals( scopeStr ) )
                 return ArtifactScopeEnum.compile;
-            else if( org.apache.maven.mercury.artifact.Artifact.SCOPE_TEST.equals( scopeStr ) )
+            else if ( org.apache.maven.mercury.artifact.Artifact.SCOPE_TEST.equals( scopeStr ) )
                 return ArtifactScopeEnum.test;
-            else if( org.apache.maven.mercury.artifact.Artifact.SCOPE_PROVIDED.equals( scopeStr ) )
+            else if ( org.apache.maven.mercury.artifact.Artifact.SCOPE_PROVIDED.equals( scopeStr ) )
                 return ArtifactScopeEnum.provided;
-            else if( org.apache.maven.mercury.artifact.Artifact.SCOPE_RUNTIME.equals( scopeStr ) )
+            else if ( org.apache.maven.mercury.artifact.Artifact.SCOPE_RUNTIME.equals( scopeStr ) )
                 return ArtifactScopeEnum.runtime;
-            else if( Artifact.SCOPE_RUNTIME_PLUS_SYSTEM.equals( scopeStr ) )
+            else if ( Artifact.SCOPE_RUNTIME_PLUS_SYSTEM.equals( scopeStr ) )
                 return ArtifactScopeEnum.runtime;
-            else if( org.apache.maven.mercury.artifact.Artifact.SCOPE_SYSTEM.equals( scopeStr ) )
+            else if ( org.apache.maven.mercury.artifact.Artifact.SCOPE_SYSTEM.equals( scopeStr ) )
                 return ArtifactScopeEnum.system;
         }
 
+System.out.println("Scope 4: null");
+
         return null;
     }
-    static Map<String,ArtifactMetadata> _hackMap = new HashMap<String, ArtifactMetadata>();
+
+    static Map<String, ArtifactMetadata> _hackMap = new HashMap<String, ArtifactMetadata>();
+
     static int _hackMapSize = 0;
-    static 
+    static
     {
         ArtifactMetadata md;
-        
+
         md = new ArtifactMetadata( "cglib-nodep:cglib-nodep:2.1_3" );
         md.setOptional( true );
         _hackMap.put( md.toManagementString(), md );
@@ -464,24 +505,24 @@
         _hackMapSize = _hackMap.size();
     }
 
-    public static Map<String,ArtifactMetadata> toMercuryVersionMap(ArtifactResolutionRequest request  )
+    public static Map<String, ArtifactMetadata> toMercuryVersionMap( ArtifactResolutionRequest request )
     {
-        Map<String,Artifact> vmap = (Map<String,Artifact>)request.getManagedVersionMap();
-        
-        if( Util.isEmpty( vmap ) )
+        Map<String, Artifact> vmap = (Map<String, Artifact>) request.getManagedVersionMap();
+
+        if ( Util.isEmpty( vmap ) )
             return null;
-        
-        Map<String,ArtifactMetadata> res = new HashMap<String, ArtifactMetadata>( vmap.size()+_hackMapSize );
-        
-//        res.putAll( _hackMap );
-        
-        for( Entry<String, Artifact> e : vmap.entrySet() )
+
+        Map<String, ArtifactMetadata> res = new HashMap<String, ArtifactMetadata>( vmap.size() + _hackMapSize );
+
+        // res.putAll( _hackMap );
+
+        for ( Entry<String, Artifact> e : vmap.entrySet() )
         {
             ArtifactMetadata md = toMercuryMetadata( e.getValue() );
-            
+
             res.put( e.getKey(), md );
         }
-        
+
         return res;
     }
 

Modified: maven/components/branches/maven-3.0-mercury-763966/maven-repository-mercury/src/main/java/org/apache/maven/repository/mercury/MercuryRepositorySystem.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-3.0-mercury-763966/maven-repository-mercury/src/main/java/org/apache/maven/repository/mercury/MercuryRepositorySystem.java?rev=769672&r1=769671&r2=769672&view=diff
==============================================================================
--- maven/components/branches/maven-3.0-mercury-763966/maven-repository-mercury/src/main/java/org/apache/maven/repository/mercury/MercuryRepositorySystem.java (original)
+++ maven/components/branches/maven-3.0-mercury-763966/maven-repository-mercury/src/main/java/org/apache/maven/repository/mercury/MercuryRepositorySystem.java Wed Apr 29 06:10:16 2009
@@ -67,6 +67,9 @@
     extends LegacyRepositorySystem
     implements RepositorySystem
 {
+    
+    public static boolean traceMe = false;
+    
     private static final Language LANG = new DefaultLanguage( MercuryRepositorySystem.class );
     
     private Map<String, Set<Artifact> > _resolutions = Collections.synchronizedMap( new HashMap<String, Set<Artifact>>(128) );
@@ -86,8 +89,6 @@
     @Requirement
     private Logger _logger;
     
-    private boolean _reactorInitialized = false;
-    
     @Override
     public ArtifactResolutionResult resolve( ArtifactResolutionRequest request )
     {
@@ -100,16 +101,10 @@
         ArtifactResolutionResult result = new ArtifactResolutionResult();
         
         String requestKey = null;
-        
-        if( !_reactorInitialized )
-        {
-            MercuryAdaptor.initializeReactor( _reactorRepository, _dependencyProcessor );
-            
-            _reactorInitialized = true;
-        }
 
         List<Repository> repos =
-            MercuryAdaptor.toMercuryRepos(   request.getLocalRepository()
+            MercuryAdaptor.toMercuryRepos(   _reactorRepository
+                                           , request.getLocalRepository()
                                            , request.getRemoteRepostories()
                                            , _dependencyProcessor
                                          );
@@ -118,6 +113,8 @@
         
         ArtifactFilter filter = request.getFilter();
 
+_logger.setThreshold( Logger.LEVEL_DEBUG );
+
         try
         {
             
@@ -131,7 +128,7 @@
             
             boolean isPlugin = "maven-plugin".equals( rootArtifact.getType() ); 
             
-            ArtifactScopeEnum scope = MercuryAdaptor.extractScope( rootArtifact, isPlugin, request.getFilter() );
+            ArtifactScopeEnum scope = MercuryAdaptor.extractScope( rootArtifact, filter );
             
 if( _logger.isDebugEnabled() )
 {
@@ -151,7 +148,6 @@
 }
 
             Map<String, ArtifactMetadata> versionMap = MercuryAdaptor.toMercuryVersionMap( request );
-            
 
             if( isPlugin  )
             {
@@ -190,9 +186,17 @@
 
             // cannot just replace the type. Besides - Maven expects the same object out
             org.apache.maven.artifact.Artifact root = isPlugin ? mavenPluginArtifact : rootArtifact;
+//            
+//if( "org.apache.maven".equals( root.getGroupId() )
+//    && "maven-model".equals( root.getArtifactId() )
+//    && "pom".equals( root.getType() )
+//    && "1.0".equals( root.getVersion() )
+//)
+//{
+//    System.out.println("Bingo!");
+//}
 
-            // firstly - deal with the root
-            // copied from artifact resolver 
+            // first - deal with the root. Code copied from DefaultArtifactResolver 
             if ( request.isResolveRoot() && rootArtifact.getFile() == null && Util.isEmpty( artifacts ) )
             {
                 try
@@ -249,77 +253,41 @@
             
             // query for mercury
             List<ArtifactMetadata> query = new ArrayList<ArtifactMetadata>( artifacts.size() + 1 );
-
             
-            if( request.isResolveRoot() && rootArtifact.getFile() == null  )
+            if( request.isResolveRoot() && root.getFile() == null )
             {
-                if( root.isResolved() )
-                {
-                    resolvedList.add( root );
-                    globalExclusions.add( rootMd );
-                } 
-                else
+//                if( root.isResolved() )
+//                {
+//                    resolvedList.add( root );
+//                    globalExclusions.add( rootMd );
+//if( _logger.isDebugEnabled() )
+//{
+//    _logger.debug( "added root "+root+" to resolved list" );
+//}
+//                } 
+//                else
                     query.add( rootMd );
             }
-            
-            // TODO - are activeProjectDependencies here rightly ??
-            // add dependencies of actives to the original request list
-            List<Artifact> activeDependencies = new ArrayList<Artifact>();
-            
+//            else
+//            {
+//                resolvedList.add( root );
+//                globalExclusions.add( rootMd );
+//if( _logger.isDebugEnabled() )
+//{
+//    _logger.debug( "Don't resolve root: added root "+root+" to resolved list" );
+//}
+//            }
+
+          // decide - what goes to query vs. already resolved
             for( Artifact a : artifacts )
             {
-//                if( a.isResolved() && DependencyHolder.class.isAssignableFrom( a.getClass() ) )
+//                if( a.isResolved() )
 //                {
-//                    DependencyHolder apa = (DependencyHolder) a;
-//                    List<Dependency> deps = apa.getDependencyList();
-//                    if( deps != null )
-//                        for( Dependency d : deps )
-//                            activeDependencies.add( MercuryAdaptor.toMavenArtifact( _artifactFactory, d ) );
+//                    resolvedList.add( a );
+//                    // don't resolve again
+//                    globalExclusions.add( MercuryAdaptor.toMercuryMetadata( a ) );
 //                }
-            }
-            
-            //
-            // daddy Jason does not do that, 
-            // but they are very important - cannot build correct classpath
-            // without them. The correct way to add them is:
-            //                    - grab the active's POM
-            //                    - create a local map repository for each POM
-            //                    - add a POM to the metadata list (be re resolved from map repo)
-            //                    - remove POMs from final result
-            //                    - add original active's instead
-            //
-            // TODO replace this HACK 
-            //due to the lack of time - hacking up a solution: add all them to the dependency list,
-            //  but this approach looses the depth and causes problems:
-            //         if active depends on junit 4.4 and root depends on 3.8.1 - 4.4 wins, while it should not
-            //  trying to mitigate it by adding only non-existent GAs
-          if( activeDependencies.size() > 0 )
-          {
-              for( Artifact a : activeDependencies )
-                  if( gaDoesNotExist(a,artifacts) )
-                  {
-                      if( isGood( filter, a ) )
-                      {
-                          artifacts.add( a );
-    
-                          if( _logger.isDebugEnabled() )
-                              _logger.debug( "        ------ active's dep --> "+a );
-                      }
-                  }
-              
-          }
-            
-          
-          // decide - what goes to query vs. already resolved
-            for( Artifact a : artifacts )
-            {
-                if( a.isResolved() )
-                {
-                    resolvedList.add( a );
-                    // don't resolve again
-                    globalExclusions.add( MercuryAdaptor.toMercuryMetadata( a ) );
-                }
-                else
+//                else
                     query.add( MercuryAdaptor.toMercuryMetadata( a ) );
             }
 
@@ -332,15 +300,15 @@
     showMdList( mercuryMetadataList, "     <.. md by mercury ...... " );
 }
             
-            // no metadata resolved and nothing pre-resolved
+            // no metadata resolved in the scope and nothing pre-resolved
             if( Util.isEmpty( mercuryMetadataList ) && Util.isEmpty( resolvedList ) ) 
             {
-                result.addMissingArtifact( rootArtifact );
+//                result.addMissingArtifact( rootArtifact );
                 
                 long diff = System.currentTimeMillis() - start;
                 
 if( _logger.isDebugEnabled() )
-    _logger.debug("mercury: missing artifact("+diff+") "+rootArtifact+"("+scope+")"+"\n<===========\n" );
+    _logger.debug("mercury: artifact("+diff+" ms) "+rootArtifact+"("+scope+")"+"\n<===========\n" );
 
                 return result;
             }
@@ -354,7 +322,7 @@
                 showAList( mercuryArtifactList, "     <__ bin. by mercury ____ " );
             }
             
-            // ActiveProjectArtifacts - add the to the result before the rest
+            // Resolved - add the to the result before the rest
             for( Artifact a : resolvedList )
             {
                 result.addArtifact( a );
@@ -409,13 +377,13 @@
     _logger.debug("\n<==========================================\n");
 }
 
-            if( requestKey != null )
-                _resolutions.put( requestKey, resSet );
-
+                if( requestKey != null )
+                    _resolutions.put( requestKey, resSet );
             }
-            else
+            
+            if( Util.isEmpty( result.getArtifacts() ) )
             {
-                result.addMissingArtifact( rootArtifact );
+//                result.addMissingArtifact( rootArtifact );
                 
                 long diff = System.currentTimeMillis() - start;
 if( _logger.isDebugEnabled() )
@@ -568,7 +536,9 @@
             throw new IllegalArgumentException( LANG.getMessage( "null.request.artifact" ) );
 
         List<Repository> repos =
-            MercuryAdaptor.toMercuryRepos( request.getLocalRepository()
+            MercuryAdaptor.toMercuryRepos( 
+                                             _reactorRepository
+                                           , request.getLocalRepository()
                                            , request.getRemoteRepostories()
                                            , _dependencyProcessor
                                          );

Modified: maven/components/branches/maven-3.0-mercury-763966/maven-repository/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-3.0-mercury-763966/maven-repository/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java?rev=769672&r1=769671&r2=769672&view=diff
==============================================================================
--- maven/components/branches/maven-3.0-mercury-763966/maven-repository/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java (original)
+++ maven/components/branches/maven-3.0-mercury-763966/maven-repository/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java Wed Apr 29 06:10:16 2009
@@ -59,7 +59,7 @@
 /**
  * @author Jason van Zyl
  */
-@Component( role = RepositorySystem.class, hint = "default" )
+@Component( role = RepositorySystem.class, hint = "legacy" )
 public class LegacyRepositorySystem
     implements RepositorySystem
 {
@@ -374,11 +374,6 @@
 
     public ArtifactResolutionResult resolve( ArtifactResolutionRequest request )
     {
-
-if(request.getRemoteRepostories() != null && request.getRemoteRepostories().size() > 10 )
-{
-    System.out.println("legacy: request with "+request.getRemoteRepostories().size()+" remote repositories" );
-}
         ArtifactResolutionResult res = artifactResolver.resolve( request );
 
         return res;

Modified: maven/components/branches/maven-3.0-mercury-763966/pom.xml
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-3.0-mercury-763966/pom.xml?rev=769672&r1=769671&r2=769672&view=diff
==============================================================================
--- maven/components/branches/maven-3.0-mercury-763966/pom.xml (original)
+++ maven/components/branches/maven-3.0-mercury-763966/pom.xml Wed Apr 29 06:10:16 2009
@@ -235,6 +235,7 @@
     </pluginManagement>
   </build>
   <modules>
+<!-- 
     <module>maven-core</module>
     <module>apache-maven</module>
     <module>maven-lifecycle</module>
@@ -244,11 +245,12 @@
     <module>maven-reporting-api</module>
     <module>maven-project-builder</module>
     <module>maven-mercury</module>
-    <module>maven-embedder</module>
     <module>maven-toolchain</module>
     <module>maven-compat</module>
     <module>maven-repository</module>
+ -->
     <module>maven-repository-mercury</module>
+    <module>maven-embedder</module>
   </modules>
   <!--start-->
   <dependencies>