Author: ogusakov
Date: Thu Mar 26 18:48:51 2009
New Revision: 758797

URL: http://svn.apache.org/viewvc?rev=758797&view=rev
Log:
[MERCURY-106] - added resolveAsTree to plexus component

Added:
    
maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/MetadataTreeNode.java
   (contents, props changed)
      - copied, changed from r757659, 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/MetadataTreeNode.java
Removed:
    
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/MetadataTreeNode.java
Modified:
    
maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/dependency/tests/DependencyTreeBuilderTest.java
    
maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/plexus/DefaultPlexusMercuryTest.java
    
maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/ComprehensiveRepositoryTest.java
    
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/ClassicDepthComparator.java
    
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/ClassicVersionComparator.java
    
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/ClasspathContainer.java
    
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyBuilder.java
    
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyBuilderFactory.java
    
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java
    
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeDumper.java
    
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/MetadataTreeNodeGAComparator.java
    
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/MetadataTreeNodeGAVComparator.java
    
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolver.java
    
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/HelpingSatSolver.java
    
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/SatContext.java
    
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/SatOptimizer.java
    
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/SatSolver.java
    
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/SatVar.java
    
maven/mercury/trunk/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/AbstractSimpleTreeTest.java
    
maven/mercury/trunk/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/ClassicDepthComparatorTest.java
    
maven/mercury/trunk/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/ClassicVersionComparatorTest.java
    
maven/mercury/trunk/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/DependencyTreeBuilderTest.java
    
maven/mercury/trunk/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolverTest.java
    
maven/mercury/trunk/mercury-plexus/src/main/java/org/apache/maven/mercury/plexus/DefaultPlexusMercury.java
    
maven/mercury/trunk/mercury-plexus/src/main/java/org/apache/maven/mercury/plexus/PlexusMercury.java
    
maven/mercury/trunk/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryUpdateIntervalPolicy.java

Copied: 
maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/MetadataTreeNode.java
 (from r757659, 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/MetadataTreeNode.java)
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/MetadataTreeNode.java?p2=maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/MetadataTreeNode.java&p1=maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/MetadataTreeNode.java&r1=757659&r2=758797&rev=758797&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/MetadataTreeNode.java
 (original)
+++ 
maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/MetadataTreeNode.java
 Thu Mar 26 18:48:51 2009
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.maven.mercury.metadata;
+package org.apache.maven.mercury.artifact;
 
 import java.io.IOException;
 import java.io.StringWriter;
@@ -25,10 +25,6 @@
 import java.util.List;
 import java.util.TreeSet;
 
-import org.apache.maven.mercury.artifact.ArtifactMetadata;
-import org.apache.maven.mercury.artifact.ArtifactScopeEnum;
-import org.apache.maven.mercury.logging.IMercuryLogger;
-import org.apache.maven.mercury.logging.MercuryLoggerManager;
 import org.codehaus.plexus.lang.DefaultLanguage;
 import org.codehaus.plexus.lang.Language;
 
@@ -39,9 +35,11 @@
  */
 public class MetadataTreeNode
 {
-    private static final int DEFAULT_CHILDREN_COUNT = 8;
+    /** prevailing # of queries (dependencies) in the dirty tree node */
+    private static final int DEFAULT_QUERY_COUNT = 8;
 
-    private static final IMercuryLogger LOG = MercuryLoggerManager.getLogger( 
MetadataTreeNode.class );
+    /** prevailing # of children in the dirty tree node. If all queries are 
ranges - 2 hits per range */
+    private static final int DEFAULT_CHILDREN_COUNT = 16;
 
     private static final Language LANG = new DefaultLanguage( 
MetadataTreeNode.class );
 
@@ -56,6 +54,11 @@
     boolean optional = false;
 
     /**
+     * is there a real artifact behind this node, or it's just a helper ?
+     */
+    boolean real = true;
+
+    /**
      * parent node
      */
     MetadataTreeNode parent;
@@ -112,12 +115,6 @@
 
         getDistinctNodes( this, nodes );
 
-        if ( LOG.isDebugEnabled() )
-        {
-            LOG.debug( "tree distinct nodes count" );
-            LOG.debug( nodes.toString() );
-        }
-
         return nodes.size();
     }
 
@@ -190,7 +187,7 @@
 
         if ( queries == null )
         {
-            queries = new ArrayList<ArtifactMetadata>( DEFAULT_CHILDREN_COUNT 
);
+            queries = new ArrayList<ArtifactMetadata>( DEFAULT_QUERY_COUNT );
         }
 
         queries.add( query );
@@ -265,6 +262,16 @@
         return optional;
     }
 
+    public boolean isReal()
+    {
+        return real;
+    }
+
+    public void setReal( boolean real)
+    {
+        this.real = real;
+    }
+
     public ArtifactMetadata getQuery()
     {
         return query;

Propchange: 
maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/MetadataTreeNode.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/MetadataTreeNode.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: 
maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/MetadataTreeNode.java
------------------------------------------------------------------------------
    svn:mergeinfo = 

Modified: 
maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/dependency/tests/DependencyTreeBuilderTest.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/dependency/tests/DependencyTreeBuilderTest.java?rev=758797&r1=758796&r2=758797&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/dependency/tests/DependencyTreeBuilderTest.java
 (original)
+++ 
maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/dependency/tests/DependencyTreeBuilderTest.java
 Thu Mar 26 18:48:51 2009
@@ -33,13 +33,13 @@
 import org.apache.maven.mercury.artifact.Artifact;
 import org.apache.maven.mercury.artifact.ArtifactMetadata;
 import org.apache.maven.mercury.artifact.ArtifactScopeEnum;
+import org.apache.maven.mercury.artifact.MetadataTreeNode;
 import org.apache.maven.mercury.event.DumbListener;
 import org.apache.maven.mercury.logging.IMercuryLogger;
 import org.apache.maven.mercury.logging.MercuryLoggerManager;
 import org.apache.maven.mercury.metadata.DependencyBuilder;
 import org.apache.maven.mercury.metadata.DependencyBuilderFactory;
 import org.apache.maven.mercury.metadata.MetadataTreeException;
-import org.apache.maven.mercury.metadata.MetadataTreeNode;
 import org.apache.maven.mercury.repository.api.ArtifactResults;
 import org.apache.maven.mercury.repository.api.Repository;
 import org.apache.maven.mercury.repository.api.RepositoryReader;

Modified: 
maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/plexus/DefaultPlexusMercuryTest.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/plexus/DefaultPlexusMercuryTest.java?rev=758797&r1=758796&r2=758797&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/plexus/DefaultPlexusMercuryTest.java
 (original)
+++ 
maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/plexus/DefaultPlexusMercuryTest.java
 Thu Mar 26 18:48:51 2009
@@ -33,6 +33,7 @@
 import org.apache.maven.mercury.artifact.ArtifactQueryList;
 import org.apache.maven.mercury.artifact.ArtifactScopeEnum;
 import org.apache.maven.mercury.artifact.DefaultArtifact;
+import org.apache.maven.mercury.artifact.MetadataTreeNode;
 import org.apache.maven.mercury.builder.api.DependencyProcessor;
 import org.apache.maven.mercury.crypto.api.StreamVerifierFactory;
 import org.apache.maven.mercury.crypto.pgp.PgpStreamVerifierFactory;
@@ -340,6 +341,44 @@
     }
 
     // 
-------------------------------------------------------------------------------------
+    public void testResolveAsTree()
+        throws Exception
+    {
+        Server central = new Server( "central", new URL( 
"http://repo1.maven.org/maven2"; ) );
+        // Server central = new Server( "central", new 
URL("http://repository.sonatype.org/content/groups/public";) );
+
+        repos.add( new RemoteRepositoryM2( central, 
pm.findDependencyProcessor() ) );
+
+        String artifactId = "asm:asm-xml:3.0";
+
+        MetadataTreeNode res =
+            pm.resolveAsTree( repos, ArtifactScopeEnum.compile, new 
ArtifactQueryList( artifactId ), null, null );
+
+        System.out.println( "Resolved as tree:" );
+        MetadataTreeNode.showNode( res, 0 );
+        
+        assertNotNull( res );
+        
+        assertTrue( res.hasChildren() );
+        
+        int nodes = res.countNodes();
+
+        /* tree structure:
+            0 asm:asm-xml:3.0::jar
+              1 asm:asm-util:3.0::jar
+                2 asm:asm-tree:3.0::jar
+                  3 asm:asm:3.0::jar
+         */
+        
+        assertEquals( 4, nodes );
+
+        assertTrue( res.getMd().equals( new ArtifactMetadata( 
"asm:asm-xml:3.0" ) ) );
+        assertTrue( res.getChildren().get( 0 ).getMd().equals( new 
ArtifactMetadata( "asm:asm-util:3.0" ) ) );
+        assertTrue( res.getChildren().get( 0 ).getChildren().get( 0 
).getMd().equals( new ArtifactMetadata( "asm:asm-tree:3.0" ) ) );
+        assertTrue( res.getChildren().get( 0 ).getChildren().get( 0 
).getChildren().get( 0 ).getMd().equals( new ArtifactMetadata( "asm:asm:3.0" ) 
) );
+    }
+
+    // 
-------------------------------------------------------------------------------------
     @SuppressWarnings( "unchecked" )
     public void testResolveWithExclusion()
         throws Exception

Modified: 
maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/ComprehensiveRepositoryTest.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/ComprehensiveRepositoryTest.java?rev=758797&r1=758796&r2=758797&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/ComprehensiveRepositoryTest.java
 (original)
+++ 
maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/ComprehensiveRepositoryTest.java
 Thu Mar 26 18:48:51 2009
@@ -299,6 +299,41 @@
         assertFalse( localRepo2Jar.exists() );
     }
     
+    public void testWriteReadArtifactPom()
+    throws Exception
+    {
+        String name = "org.apache.maven:maven-core:2.0.9::pom";
+        
+        File af = new File( _resourceBase, "maven-core-2.0.9.pom" );
+        File ap = new File( _resourceBase, "maven-core-2.0.9.pom" );
+        
+        File aJar1 = new File( _base1, 
"org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.pom");
+        File aJar2 = new File( _base2, 
"org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.pom");
+        
+        assertFalse( aJar1.exists() );
+        assertFalse( aJar2.exists() );
+        
+        writeArtifact( name, af, ap, _rr2, aJar2 );
+
+        assertFalse( aJar1.exists() );
+        assertTrue( aJar2.exists() );
+        
+        List<Artifact> al = readArtifact( name, _rrs );
+        
+        System.out.println(al);
+        
+        File localRepo1Jar = new File( _lbase1, 
"org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.pom" );
+        File localRepo2Jar = new File( _lbase2, 
"org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.pom" );
+        
+        assertFalse( localRepo1Jar.exists() );
+        assertFalse( localRepo2Jar.exists() );
+        
+        al = readArtifact( name, _repos );
+        
+        assertTrue( localRepo1Jar.exists() );
+        assertFalse( localRepo2Jar.exists() );
+    }
+    
     public void testWriteReadTimeStamp()
     throws Exception
     {

Modified: 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/ClassicDepthComparator.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/ClassicDepthComparator.java?rev=758797&r1=758796&r2=758797&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/ClassicDepthComparator.java
 (original)
+++ 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/ClassicDepthComparator.java
 Thu Mar 26 18:48:51 2009
@@ -20,6 +20,8 @@
 
 import java.util.Comparator;
 
+import org.apache.maven.mercury.artifact.MetadataTreeNode;
+
 /**
  * classical depth comparator: shallower is better by default, but that could 
  * be changed by appropriate constructor

Modified: 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/ClassicVersionComparator.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/ClassicVersionComparator.java?rev=758797&r1=758796&r2=758797&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/ClassicVersionComparator.java
 (original)
+++ 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/ClassicVersionComparator.java
 Thu Mar 26 18:48:51 2009
@@ -21,6 +21,7 @@
 import java.util.Comparator;
 
 import org.apache.maven.mercury.artifact.ArtifactMetadata;
+import org.apache.maven.mercury.artifact.MetadataTreeNode;
 import org.apache.maven.mercury.artifact.version.DefaultArtifactVersion;
 
 /**

Modified: 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/ClasspathContainer.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/ClasspathContainer.java?rev=758797&r1=758796&r2=758797&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/ClasspathContainer.java
 (original)
+++ 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/ClasspathContainer.java
 Thu Mar 26 18:48:51 2009
@@ -24,6 +24,7 @@
 
 import org.apache.maven.mercury.artifact.ArtifactMetadata;
 import org.apache.maven.mercury.artifact.ArtifactScopeEnum;
+import org.apache.maven.mercury.artifact.MetadataTreeNode;
 
 /*
  * classpath container that is aware of the classpath scope

Modified: 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyBuilder.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyBuilder.java?rev=758797&r1=758796&r2=758797&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyBuilder.java
 (original)
+++ 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyBuilder.java
 Thu Mar 26 18:48:51 2009
@@ -25,6 +25,7 @@
 import org.apache.maven.mercury.artifact.ArtifactMetadata;
 import org.apache.maven.mercury.artifact.ArtifactQueryList;
 import org.apache.maven.mercury.artifact.ArtifactScopeEnum;
+import org.apache.maven.mercury.artifact.MetadataTreeNode;
 import org.apache.maven.mercury.event.MercuryEventListener;
 
 /**
@@ -79,6 +80,23 @@
   throws MetadataTreeException;
 
   /**
+   * consolidated entry point: give it a collection of GAVs, it 
+   * will create a tree out of it
+   * 
+   * @param root the tree to resolve conflicts on
+   * @return resolved metadata tree
+   * @throws MetadataTreeException
+   */
+  public abstract MetadataTreeNode resolveConflictsAsTree( 
+                                          ArtifactScopeEnum   scope
+                                        , ArtifactQueryList artifacts
+                                        , ArtifactInclusionList inclusions
+                                        , ArtifactExclusionList exclusions
+                                        )
+
+  throws MetadataTreeException;
+
+  /**
    *  this one resolves the conflicts, removing all duplicate GAVs from the 
tree and
    *  returning a copy of the resulting subtree - original tree should be 
intact
    * 

Modified: 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyBuilderFactory.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyBuilderFactory.java?rev=758797&r1=758796&r2=758797&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyBuilderFactory.java
 (original)
+++ 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyBuilderFactory.java
 Thu Mar 26 18:48:51 2009
@@ -23,6 +23,7 @@
 import java.util.List;
 import java.util.Map;
 
+import org.apache.maven.mercury.artifact.MetadataTreeNode;
 import org.apache.maven.mercury.artifact.api.ArtifactListProcessor;
 import org.apache.maven.mercury.repository.api.Repository;
 import org.apache.maven.mercury.repository.api.RepositoryException;

Modified: 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java?rev=758797&r1=758796&r2=758797&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java
 (original)
+++ 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java
 Thu Mar 26 18:48:51 2009
@@ -30,6 +30,7 @@
 import org.apache.maven.mercury.artifact.ArtifactMetadata;
 import org.apache.maven.mercury.artifact.ArtifactQueryList;
 import org.apache.maven.mercury.artifact.ArtifactScopeEnum;
+import org.apache.maven.mercury.artifact.MetadataTreeNode;
 import org.apache.maven.mercury.artifact.api.ArtifactListProcessor;
 import org.apache.maven.mercury.artifact.version.VersionException;
 import org.apache.maven.mercury.event.EventGenerator;
@@ -85,6 +86,26 @@
     private EventManager _eventManager;
     
     private boolean _buildIndividualTrees = true;
+    
+    class TruckLoad
+    {
+        List<ArtifactMetadata> cp;
+        MetadataTreeNode root;
+        
+        public TruckLoad()
+        {
+        }
+        
+        public TruckLoad( List<ArtifactMetadata> cp )
+        {
+            this.cp = cp;
+        }
+        
+        public TruckLoad( MetadataTreeNode root )
+        {
+            this.root = root;
+        }
+    }
 
     /**
      * creates an instance of MetadataTree. Use this instance to
@@ -163,11 +184,38 @@
 
     // ------------------------------------------------------------------------
     public List<ArtifactMetadata> resolveConflicts( 
-                                        ArtifactScopeEnum   scope
-                                      , ArtifactQueryList artifacts
+                                        ArtifactScopeEnum     scope
+                                      , ArtifactQueryList     artifacts
                                       , ArtifactInclusionList inclusions
                                       , ArtifactExclusionList exclusions
                                                   )
+    throws MetadataTreeException
+    {
+        TruckLoad tl = resolveConflictsInternally( scope, artifacts, 
inclusions, exclusions, false );
+        
+        return tl == null ? null : tl.cp;
+    }
+    // ------------------------------------------------------------------------
+    public MetadataTreeNode resolveConflictsAsTree( 
+                                        ArtifactScopeEnum     scope
+                                      , ArtifactQueryList     artifacts
+                                      , ArtifactInclusionList inclusions
+                                      , ArtifactExclusionList exclusions
+                                                  )
+    throws MetadataTreeException
+    {
+        TruckLoad tl = resolveConflictsInternally( scope, artifacts, 
inclusions, exclusions, true );
+        
+        return tl == null ? null : tl.root;
+    }
+    // ------------------------------------------------------------------------
+    public TruckLoad resolveConflictsInternally( 
+                                        ArtifactScopeEnum     scope
+                                      , ArtifactQueryList     artifacts
+                                      , ArtifactInclusionList inclusions
+                                      , ArtifactExclusionList exclusions
+                                      , boolean asTree
+                                                  )
 
     throws MetadataTreeException
     {
@@ -186,13 +234,25 @@
             ArtifactMetadata bmd = startMDs.get( 0 );
             MetadataTreeNode rooty = buildTree( bmd, scope );
 
+            TruckLoad tl = null;
+            
+            if( asTree )
+            {
+                MetadataTreeNode tr = resolveConflictsAsTree( rooty );
+                
+                tl = new TruckLoad( tr );
+            }
+            else
+            {
+                List<ArtifactMetadata> res = resolveConflicts( rooty );
+                
+                tl = new TruckLoad( res );
+    
+                if(_dumpDepTree )
+                    _dumper.dump( scope, artifacts, inclusions, exclusions, 
rooty, res );
+            }
 
-            List<ArtifactMetadata> res = resolveConflicts( rooty );
-
-if(_dumpDepTree )
-    _dumper.dump( scope, artifacts, inclusions, exclusions, rooty, res );
-
-            return res;
+            return tl;
         }
 
         DUMMY_ROOT.setDependencies( startMDs );
@@ -260,16 +320,30 @@
             DUMMY_ROOT.setDependencies( startMDs );
             root = buildTree( DUMMY_ROOT, scope );
         }
+        
+        
+        TruckLoad tl = null;
+        
+        if( asTree )
+        {
+            MetadataTreeNode tr = resolveConflictsAsTree( root );
+            
+            tl = new TruckLoad( tr );
+        }
+        else
+        {
+            List<ArtifactMetadata> cp = resolveConflicts( root ); 
 
-        List<ArtifactMetadata> res = resolveConflicts( root );
-
-        if( res != null )
-            res.remove( DUMMY_ROOT );
-
-if(_dumpDepTree )
-    _dumper.dump( scope, artifacts, inclusions, exclusions, root, res );
+            if( cp != null )
+                cp.remove( DUMMY_ROOT );
+    
+                if(_dumpDepTree )
+                    _dumper.dump( scope, artifacts, inclusions, exclusions, 
root, cp );
+                
+                tl = new TruckLoad( cp );
+        }
 
-        return res;
+        return tl;
     }
     // -----------------------------------------------------
     private MetadataTreeNode createNode( ArtifactMetadata nodeMD, 
MetadataTreeNode parent
@@ -424,24 +498,24 @@
         {
             count++;
             // System.out.println("circ "+md+" vs "+p.md);
-            if ( md.sameGA( p.md ) )
+            if ( md.sameGA( p.getMd() ) )
             {
                 p = parent;
                 StringBuilder sb = new StringBuilder( 128 );
                 sb.append( md.toString() );
                 while ( p != null )
                 {
-                    sb.append( " <- " + p.md.toString() );
+                    sb.append( " <- " + p.getMd().toString() );
 
-                    if ( md.sameGA( p.md ) )
+                    if ( md.sameGA( p.getMd() ) )
                     {
                         throw new MetadataTreeCircularDependencyException( 
"circular dependency " + count
-                            + " levels up. " + sb.toString() + " <= " + ( 
p.parent == null ? "no parent" : p.parent.md ) );
+                            + " levels up. " + sb.toString() + " <= " + ( 
p.getParent() == null ? "no parent" : p.getParent().getMd() ) );
                     }
-                    p = p.parent;
+                    p = p.getParent();
                 }
             }
-            p = p.parent;
+            p = p.getParent();
         }
     }
 
@@ -550,7 +624,7 @@
 
             comma = " <== ";
 
-            p = p.parent;
+            p = p.getParent();
         }
 
         return sb.toString();

Modified: 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeDumper.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeDumper.java?rev=758797&r1=758796&r2=758797&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeDumper.java
 (original)
+++ 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeDumper.java
 Thu Mar 26 18:48:51 2009
@@ -35,6 +35,7 @@
 import org.apache.maven.mercury.artifact.ArtifactMetadata;
 import org.apache.maven.mercury.artifact.ArtifactQueryList;
 import org.apache.maven.mercury.artifact.ArtifactScopeEnum;
+import org.apache.maven.mercury.artifact.MetadataTreeNode;
 import org.apache.maven.mercury.metadata.forest.Forest;
 import org.apache.maven.mercury.metadata.forest.Node;
 import org.apache.maven.mercury.metadata.forest.Tree;

Modified: 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/MetadataTreeNodeGAComparator.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/MetadataTreeNodeGAComparator.java?rev=758797&r1=758796&r2=758797&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/MetadataTreeNodeGAComparator.java
 (original)
+++ 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/MetadataTreeNodeGAComparator.java
 Thu Mar 26 18:48:51 2009
@@ -20,6 +20,8 @@
 
 import java.util.Comparator;
 
+import org.apache.maven.mercury.artifact.MetadataTreeNode;
+
 /**
  * utility class for DefaultSatSolver. Assumes good data - no null's
  * 

Modified: 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/MetadataTreeNodeGAVComparator.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/MetadataTreeNodeGAVComparator.java?rev=758797&r1=758796&r2=758797&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/MetadataTreeNodeGAVComparator.java
 (original)
+++ 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/MetadataTreeNodeGAVComparator.java
 Thu Mar 26 18:48:51 2009
@@ -20,6 +20,8 @@
 
 import java.util.Comparator;
 
+import org.apache.maven.mercury.artifact.MetadataTreeNode;
+
 /**
  * utility class for DefaultSatSolver. Assumes good data - no null's
  * 

Modified: 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolver.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolver.java?rev=758797&r1=758796&r2=758797&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolver.java
 (original)
+++ 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolver.java
 Thu Mar 26 18:48:51 2009
@@ -28,13 +28,13 @@
 import java.util.Map;
 
 import org.apache.maven.mercury.artifact.ArtifactMetadata;
+import org.apache.maven.mercury.artifact.MetadataTreeNode;
 import org.apache.maven.mercury.event.EventManager;
 import org.apache.maven.mercury.event.EventTypeEnum;
 import org.apache.maven.mercury.event.GenericEvent;
 import org.apache.maven.mercury.event.MercuryEventListener;
 import org.apache.maven.mercury.logging.IMercuryLogger;
 import org.apache.maven.mercury.logging.MercuryLoggerManager;
-import org.apache.maven.mercury.metadata.MetadataTreeNode;
 import org.apache.maven.mercury.metadata.MetadataTreeNodeGAComparator;
 import org.apache.maven.mercury.metadata.MetadataTreeNodeGAVComparator;
 import org.codehaus.plexus.lang.DefaultLanguage;

Modified: 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/HelpingSatSolver.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/HelpingSatSolver.java?rev=758797&r1=758796&r2=758797&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/HelpingSatSolver.java
 (original)
+++ 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/HelpingSatSolver.java
 Thu Mar 26 18:48:51 2009
@@ -29,13 +29,13 @@
 import java.util.Map;
 
 import org.apache.maven.mercury.artifact.ArtifactMetadata;
+import org.apache.maven.mercury.artifact.MetadataTreeNode;
 import org.apache.maven.mercury.event.EventManager;
 import org.apache.maven.mercury.event.EventTypeEnum;
 import org.apache.maven.mercury.event.GenericEvent;
 import org.apache.maven.mercury.event.MercuryEventListener;
 import org.apache.maven.mercury.logging.IMercuryLogger;
 import org.apache.maven.mercury.logging.MercuryLoggerManager;
-import org.apache.maven.mercury.metadata.MetadataTreeNode;
 import org.apache.maven.mercury.metadata.MetadataTreeNodeGAComparator;
 import org.apache.maven.mercury.metadata.MetadataTreeNodeGAVComparator;
 import org.codehaus.plexus.lang.DefaultLanguage;

Modified: 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/SatContext.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/SatContext.java?rev=758797&r1=758796&r2=758797&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/SatContext.java
 (original)
+++ 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/SatContext.java
 Thu Mar 26 18:48:51 2009
@@ -24,9 +24,9 @@
 import java.util.Map;
 
 import org.apache.maven.mercury.artifact.ArtifactMetadata;
+import org.apache.maven.mercury.artifact.MetadataTreeNode;
 import org.apache.maven.mercury.logging.IMercuryLogger;
 import org.apache.maven.mercury.logging.MercuryLoggerManager;
-import org.apache.maven.mercury.metadata.MetadataTreeNode;
 import org.codehaus.plexus.lang.DefaultLanguage;
 import org.codehaus.plexus.lang.Language;
 

Modified: 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/SatOptimizer.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/SatOptimizer.java?rev=758797&r1=758796&r2=758797&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/SatOptimizer.java
 (original)
+++ 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/SatOptimizer.java
 Thu Mar 26 18:48:51 2009
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.mercury.metadata.sat;
 
-import org.apache.maven.mercury.metadata.MetadataTreeNode;
+import org.apache.maven.mercury.artifact.MetadataTreeNode;
 import org.sat4j.pb.ObjectiveFunction;
 
 /**

Modified: 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/SatSolver.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/SatSolver.java?rev=758797&r1=758796&r2=758797&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/SatSolver.java
 (original)
+++ 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/SatSolver.java
 Thu Mar 26 18:48:51 2009
@@ -22,8 +22,8 @@
 import java.util.List;
 
 import org.apache.maven.mercury.artifact.ArtifactMetadata;
+import org.apache.maven.mercury.artifact.MetadataTreeNode;
 import org.apache.maven.mercury.event.EventGenerator;
-import org.apache.maven.mercury.metadata.MetadataTreeNode;
 
 /**
  * @author <a href="o...@codehaus.org">Oleg Gusakov</a>

Modified: 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/SatVar.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/SatVar.java?rev=758797&r1=758796&r2=758797&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/SatVar.java
 (original)
+++ 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/SatVar.java
 Thu Mar 26 18:48:51 2009
@@ -19,7 +19,7 @@
 package org.apache.maven.mercury.metadata.sat;
 
 import org.apache.maven.mercury.artifact.ArtifactMetadata;
-import org.apache.maven.mercury.metadata.MetadataTreeNode;
+import org.apache.maven.mercury.artifact.MetadataTreeNode;
 
 /**
  * @author <a href="o...@codehaus.org">Oleg Gusakov</a>

Modified: 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/AbstractSimpleTreeTest.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/AbstractSimpleTreeTest.java?rev=758797&r1=758796&r2=758797&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/AbstractSimpleTreeTest.java
 (original)
+++ 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/AbstractSimpleTreeTest.java
 Thu Mar 26 18:48:51 2009
@@ -21,6 +21,7 @@
 import junit.framework.TestCase;
 
 import org.apache.maven.mercury.artifact.ArtifactMetadata;
+import org.apache.maven.mercury.artifact.MetadataTreeNode;
 
 public abstract class AbstractSimpleTreeTest
 extends TestCase

Modified: 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/ClassicDepthComparatorTest.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/ClassicDepthComparatorTest.java?rev=758797&r1=758796&r2=758797&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/ClassicDepthComparatorTest.java
 (original)
+++ 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/ClassicDepthComparatorTest.java
 Thu Mar 26 18:48:51 2009
@@ -20,6 +20,8 @@
 
 import java.util.Comparator;
 
+import org.apache.maven.mercury.artifact.MetadataTreeNode;
+
 public class ClassicDepthComparatorTest
 extends AbstractSimpleTreeTest
 {

Modified: 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/ClassicVersionComparatorTest.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/ClassicVersionComparatorTest.java?rev=758797&r1=758796&r2=758797&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/ClassicVersionComparatorTest.java
 (original)
+++ 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/ClassicVersionComparatorTest.java
 Thu Mar 26 18:48:51 2009
@@ -20,6 +20,8 @@
 
 import java.util.Comparator;
 
+import org.apache.maven.mercury.artifact.MetadataTreeNode;
+
 
 public class ClassicVersionComparatorTest
 extends AbstractSimpleTreeTest

Modified: 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/DependencyTreeBuilderTest.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/DependencyTreeBuilderTest.java?rev=758797&r1=758796&r2=758797&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/DependencyTreeBuilderTest.java
 (original)
+++ 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/DependencyTreeBuilderTest.java
 Thu Mar 26 18:48:51 2009
@@ -26,6 +26,7 @@
 
 import org.apache.maven.mercury.artifact.ArtifactMetadata;
 import org.apache.maven.mercury.artifact.ArtifactScopeEnum;
+import org.apache.maven.mercury.artifact.MetadataTreeNode;
 import org.apache.maven.mercury.builder.api.DependencyProcessor;
 import org.apache.maven.mercury.logging.IMercuryLogger;
 import org.apache.maven.mercury.logging.MercuryLoggerManager;

Modified: 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolverTest.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolverTest.java?rev=758797&r1=758796&r2=758797&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolverTest.java
 (original)
+++ 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolverTest.java
 Thu Mar 26 18:48:51 2009
@@ -28,9 +28,9 @@
 import junit.framework.TestCase;
 
 import org.apache.maven.mercury.artifact.ArtifactMetadata;
+import org.apache.maven.mercury.artifact.MetadataTreeNode;
 import org.apache.maven.mercury.metadata.ClassicDepthComparator;
 import org.apache.maven.mercury.metadata.ClassicVersionComparator;
-import org.apache.maven.mercury.metadata.MetadataTreeNode;
 
 /**
  * @author <a href="o...@codehaus.org">Oleg Gusakov</a>

Modified: 
maven/mercury/trunk/mercury-plexus/src/main/java/org/apache/maven/mercury/plexus/DefaultPlexusMercury.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-plexus/src/main/java/org/apache/maven/mercury/plexus/DefaultPlexusMercury.java?rev=758797&r1=758796&r2=758797&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-plexus/src/main/java/org/apache/maven/mercury/plexus/DefaultPlexusMercury.java
 (original)
+++ 
maven/mercury/trunk/mercury-plexus/src/main/java/org/apache/maven/mercury/plexus/DefaultPlexusMercury.java
 Thu Mar 26 18:48:51 2009
@@ -35,6 +35,7 @@
 import org.apache.maven.mercury.artifact.ArtifactMetadata;
 import org.apache.maven.mercury.artifact.ArtifactQueryList;
 import org.apache.maven.mercury.artifact.ArtifactScopeEnum;
+import org.apache.maven.mercury.artifact.MetadataTreeNode;
 import org.apache.maven.mercury.builder.api.DependencyProcessor;
 import org.apache.maven.mercury.crypto.api.StreamObserverFactory;
 import org.apache.maven.mercury.crypto.api.StreamVerifierAttributes;
@@ -286,6 +287,33 @@
     }
 
     // ---------------------------------------------------------------
+    public MetadataTreeNode resolveAsTree( List<Repository> repos
+                                           , ArtifactScopeEnum scope
+                                           , ArtifactQueryList artifacts
+                                           , ArtifactInclusionList inclusions
+                                           , ArtifactExclusionList exclusions
+                                           )
+        throws RepositoryException
+    {
+        if ( Util.isEmpty( artifacts ) || artifacts.isEmpty() )
+            throw new IllegalArgumentException( LANG.getMessage( 
"no.artifacts" ) );
+
+        try
+        {
+            DependencyBuilder depBuilder =
+                DependencyBuilderFactory.create( 
DependencyBuilderFactory.JAVA_DEPENDENCY_MODEL, repos, null, null, null );
+
+            MetadataTreeNode res = depBuilder.resolveConflictsAsTree( scope, 
artifacts, inclusions, exclusions );
+
+            return res;
+        }
+        catch ( MetadataTreeException e )
+        {
+            throw new RepositoryException( e );
+        }
+    }
+
+    // ---------------------------------------------------------------
     /**
      * get all available versions of for the artifact query.
      * 

Modified: 
maven/mercury/trunk/mercury-plexus/src/main/java/org/apache/maven/mercury/plexus/PlexusMercury.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-plexus/src/main/java/org/apache/maven/mercury/plexus/PlexusMercury.java?rev=758797&r1=758796&r2=758797&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-plexus/src/main/java/org/apache/maven/mercury/plexus/PlexusMercury.java
 (original)
+++ 
maven/mercury/trunk/mercury-plexus/src/main/java/org/apache/maven/mercury/plexus/PlexusMercury.java
 Thu Mar 26 18:48:51 2009
@@ -31,6 +31,7 @@
 import org.apache.maven.mercury.artifact.ArtifactMetadata;
 import org.apache.maven.mercury.artifact.ArtifactQueryList;
 import org.apache.maven.mercury.artifact.ArtifactScopeEnum;
+import org.apache.maven.mercury.artifact.MetadataTreeNode;
 import org.apache.maven.mercury.builder.api.DependencyProcessor;
 import org.apache.maven.mercury.crypto.api.StreamObserverFactory;
 import org.apache.maven.mercury.crypto.api.StreamVerifierException;
@@ -193,6 +194,11 @@
                                            ArtifactExclusionList exclusions )
         throws RepositoryException;
 
+    public MetadataTreeNode resolveAsTree( List<Repository> repos, 
ArtifactScopeEnum scope,
+                                           ArtifactQueryList artifacts, 
ArtifactInclusionList inclusions,
+                                           ArtifactExclusionList exclusions )
+        throws RepositoryException;
+
     public List<ArtifactMetadata> resolve( List<Repository> repos, 
ArtifactScopeEnum scope, ArtifactMetadata metadata )
         throws RepositoryException;
 

Modified: 
maven/mercury/trunk/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryUpdateIntervalPolicy.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryUpdateIntervalPolicy.java?rev=758797&r1=758796&r2=758797&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryUpdateIntervalPolicy.java
 (original)
+++ 
maven/mercury/trunk/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryUpdateIntervalPolicy.java
 Thu Mar 26 18:48:51 2009
@@ -41,6 +41,9 @@
 
     public static final String UPDATE_POLICY_NAME_ALWAYS = "always";
 
+    /** same as always - do it NOW */
+    public static final String UPDATE_POLICY_NAME_NOW = "now";
+
     public static final String UPDATE_POLICY_NAME_DAILY = "daily";
 
     public static final String UPDATE_POLICY_NAME_INTERVAL = "interval";
@@ -55,6 +58,10 @@
     public static final RepositoryUpdateIntervalPolicy UPDATE_POLICY_ALWAYS =
         new RepositoryUpdateIntervalPolicy( UPDATE_POLICY_NAME_ALWAYS );
 
+    public static final RepositoryUpdateIntervalPolicy UPDATE_POLICY_DAILY =
+        new RepositoryUpdateIntervalPolicy( UPDATE_POLICY_NAME_DAILY );
+
+    /** this is the default policy - don't update unless asked */
     public static final RepositoryUpdateIntervalPolicy DEFAULT_UPDATE_POLICY = 
UPDATE_POLICY_NEVER;
 
     private static final long NEVER = -1L;
@@ -97,6 +104,8 @@
 
         if ( policy.startsWith( UPDATE_POLICY_NAME_ALWAYS ) )
             return ALWAYS;
+        else if ( policy.startsWith( UPDATE_POLICY_NAME_NOW ) )
+            return ALWAYS;
         else if ( policy.startsWith( UPDATE_POLICY_NAME_DAILY ) )
             return DAYLY;
         else if ( policy.startsWith( UPDATE_POLICY_NAME_NEVER ) )


Reply via email to