Author: ogusakov
Date: Wed Aug 27 10:04:27 2008
New Revision: 689529

URL: http://svn.apache.org/viewvc?rev=689529&view=rev
Log:
intermediate state - repository APIs simplified, all tests good. Bug in 
getVersions - incorrect LATEST, RELEASE or snapshot TS

Added:
    
maven/sandbox/trunk/mercury/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/LocalRepositoryReaderM2Test.java
   (contents, props changed)
      - copied, changed from r688239, 
maven/sandbox/trunk/mercury/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/LocalRepositoryM2Test.java
    
maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/AbstractRepOpResult.java
   (contents, props changed)
      - copied, changed from r688239, 
maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryOperationResult.java
Removed:
    
maven/sandbox/trunk/mercury/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/LocalRepositoryM2Test.java
    
maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryOperationResult.java
Modified:
    
maven/sandbox/trunk/mercury/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/AbstractRepositoryReaderM2Test.java
    
maven/sandbox/trunk/mercury/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/RemoteRepositoryReaderM2Test.java
    
maven/sandbox/trunk/mercury/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java
    
maven/sandbox/trunk/mercury/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/DependencyTreeBuilderTest.java
    
maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryCallback.java
    
maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryReader.java
    
maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/VirtualRepositoryReader.java
    
maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-local-m2/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryReaderM2.java
    
maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-remote-m2/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryReaderM2.java

Modified: 
maven/sandbox/trunk/mercury/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/AbstractRepositoryReaderM2Test.java
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/AbstractRepositoryReaderM2Test.java?rev=689529&r1=689528&r2=689529&view=diff
==============================================================================
--- 
maven/sandbox/trunk/mercury/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/AbstractRepositoryReaderM2Test.java
 (original)
+++ 
maven/sandbox/trunk/mercury/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/AbstractRepositoryReaderM2Test.java
 Wed Aug 27 10:04:27 2008
@@ -8,6 +8,7 @@
 
 import junit.framework.TestCase;
 
+import org.apache.maven.mercury.artifact.Artifact;
 import org.apache.maven.mercury.artifact.ArtifactBasicMetadata;
 import org.apache.maven.mercury.artifact.ArtifactMetadata;
 import org.apache.maven.mercury.artifact.DefaultArtifact;
@@ -18,9 +19,11 @@
 import org.apache.maven.mercury.crypto.api.StreamVerifierFactory;
 import org.apache.maven.mercury.crypto.pgp.PgpStreamVerifierFactory;
 import org.apache.maven.mercury.crypto.sha.SHA1VerifierFactory;
+import org.apache.maven.mercury.repository.api.ArtifactBasicResults;
+import org.apache.maven.mercury.repository.api.ArtifactResults;
 import org.apache.maven.mercury.repository.api.Repository;
 import org.apache.maven.mercury.repository.api.RepositoryException;
-import org.apache.maven.mercury.repository.api.RepositoryOperationResult;
+import org.apache.maven.mercury.repository.api.AbstractRepOpResult;
 import org.apache.maven.mercury.repository.api.RepositoryReader;
 import org.apache.maven.mercury.repository.local.m2.LocalRepositoryM2;
 import org.apache.maven.mercury.repository.local.m2.MetadataProcessorMock;
@@ -54,26 +57,23 @@
   {
     bmd = new ArtifactBasicMetadata("a:a:[3,3]");
     query.add( bmd );
-    Map<ArtifactBasicMetadata, 
RepositoryOperationResult<ArtifactBasicMetadata>> 
-            res = reader.readVersions( query );
     
-    assertNotNull( res );
-    assertEquals( 1, res.size() );
+    ArtifactBasicResults res = reader.readVersions( query );
     
-    RepositoryOperationResult<ArtifactBasicMetadata> ror = res.get( bmd );
+    assertNotNull( res );
+    assertFalse( res.hasExceptions() );
+    assertTrue( res.hasResults() );
     
-    assertNotNull( ror );
+    assertEquals( 1, res.getResults().size() );
     
-    if( ror.hasExceptions() )
-      System.out.println( ror.getExceptions() );
+    List<ArtifactBasicMetadata> ror = res.getResult( bmd );
     
-    assertFalse( ror.hasExceptions() );
-    assertTrue( ror.hasResults() );
-    
-    List<ArtifactBasicMetadata> qr = ror.getResults();
+    assertNotNull( ror );
     
-    assertNotNull( qr );
-    assertEquals( 1, qr.size() );
+    if( res.hasExceptions() )
+      System.out.println( res.getExceptions() );
+
+    assertEquals( 1, ror.size() );
     
 //    System.out.println(qr);
   }
@@ -85,22 +85,20 @@
   
     bmd = new ArtifactBasicMetadata("a:a:3");
     query.add( bmd );
-    Map<ArtifactBasicMetadata, 
RepositoryOperationResult<ArtifactBasicMetadata>> res = reader.readVersions( 
query );
-    
-    assertNotNull( res );
-    assertEquals( 1, res.size() );
     
-    RepositoryOperationResult<ArtifactBasicMetadata> ror = res.get( bmd );
+    ArtifactBasicResults res = reader.readVersions( query );
     
-    assertNotNull( ror );
+    assertNotNull( res );
     
-    if( ror.hasExceptions() )
-      System.out.println( ror.getExceptions() );
+    if( res.hasExceptions() )
+      System.out.println( res.getExceptions() );
+
+    assertFalse( res.hasExceptions() );
+    assertTrue( res.hasResults() );
     
-    assertFalse( ror.hasExceptions() );
-    assertTrue( ror.hasResults() );
+    assertEquals( 1, res.getResults().size() );
     
-    List<ArtifactBasicMetadata> qr = ror.getResults();
+    List<ArtifactBasicMetadata> qr = res.getResult( bmd );
     
     assertNotNull( qr );
     assertTrue( qr.size() > 1 );
@@ -109,16 +107,17 @@
     
     System.out.println("query "+bmd+"->"+qr);
     
-    Map<ArtifactBasicMetadata,ArtifactMetadata> depRes = 
reader.readDependencies( qr );
+    ArtifactBasicResults depRes = reader.readDependencies( qr );
     
     assertNotNull( depRes );
-    assertTrue( depRes.size() > 1 );
-    assertTrue( depRes.containsKey( bmd ) );
+    assertFalse( depRes.hasExceptions() );
+    assertTrue( depRes.hasResults() );
     
-    ArtifactMetadata amd = depRes.get( bmd );
+    assertTrue( depRes.hasResults( bmd ) );
     
-    List<ArtifactBasicMetadata> deps = amd.getDependencies();
+    List<ArtifactBasicMetadata> deps = depRes.getResult( bmd );
     assertNotNull( deps );
+    assertFalse( deps.isEmpty() );
 
 //    System.out.println(deps);
 
@@ -133,7 +132,7 @@
     bmd = new ArtifactBasicMetadata("a:a:3");
     query.add( bmd );
 
-    RepositoryOperationResult<DefaultArtifact> ror = reader.readArtifacts( 
query );
+    ArtifactResults ror = reader.readArtifacts( query );
     
     assertNotNull( ror );
     
@@ -143,12 +142,12 @@
     assertFalse( ror.hasExceptions() );
     assertTrue( ror.hasResults() );
     
-    List<DefaultArtifact> res = ror.getResults();
+    List<Artifact> res = ror.getResults(bmd);
     
     assertNotNull( res );
     assertEquals( 1, res.size() );
     
-    DefaultArtifact da = res.get( 0 );
+    Artifact da = res.get( 0 );
     
     assertNotNull( da );
     assertNotNull( da.getFile() );
@@ -162,7 +161,7 @@
     bmd = new ArtifactBasicMetadata("a:a:5-SNAPSHOT");
     query.add( bmd );
 
-    RepositoryOperationResult<DefaultArtifact> ror = reader.readArtifacts( 
query );
+    ArtifactResults ror = reader.readArtifacts( query );
     
     assertNotNull( ror );
     
@@ -172,12 +171,12 @@
     assertFalse( ror.hasExceptions() );
     assertTrue( ror.hasResults() );
     
-    List<DefaultArtifact> res = ror.getResults();
+    List<Artifact> res = ror.getResults(bmd);
     
     assertNotNull( res );
     assertEquals( 1, res.size() );
     
-    DefaultArtifact da = res.get( 0 );
+    Artifact da = res.get( 0 );
     
     assertNotNull( da );
     assertNotNull( da.getFile() );
@@ -192,7 +191,7 @@
     bmd = new ArtifactBasicMetadata("a:a:5-20080807.234713-11");
     query.add( bmd );
 
-    RepositoryOperationResult<DefaultArtifact> ror = reader.readArtifacts( 
query );
+    ArtifactResults ror = reader.readArtifacts( query );
     
     assertNotNull( ror );
     
@@ -202,12 +201,12 @@
     assertFalse( ror.hasExceptions() );
     assertTrue( ror.hasResults() );
     
-    List<DefaultArtifact> res = ror.getResults();
+    List<Artifact> res = ror.getResults(bmd);
     
     assertNotNull( res );
     assertEquals( 1, res.size() );
     
-    DefaultArtifact da = res.get( 0 );
+    Artifact da = res.get( 0 );
     
     assertNotNull( da );
     assertNotNull( da.getFile() );
@@ -222,7 +221,7 @@
     bmd = new ArtifactBasicMetadata("a:a:LATEST");
     query.add( bmd );
 
-    RepositoryOperationResult<DefaultArtifact> ror = reader.readArtifacts( 
query );
+    ArtifactResults ror = reader.readArtifacts( query );
     
     assertNotNull( ror );
     
@@ -232,12 +231,12 @@
     assertFalse( ror.hasExceptions() );
     assertTrue( ror.hasResults() );
     
-    List<DefaultArtifact> res = ror.getResults();
+    List<Artifact> res = ror.getResults(bmd);
     
     assertNotNull( res );
     assertEquals( 1, res.size() );
     
-    DefaultArtifact da = res.get( 0 );
+    Artifact da = res.get( 0 );
     
     assertNotNull( da );
     assertEquals( "5-SNAPSHOT", da.getVersion() );
@@ -255,7 +254,7 @@
     bmd = new ArtifactBasicMetadata("a:a:RELEASE");
     query.add( bmd );
 
-    RepositoryOperationResult<DefaultArtifact> ror = reader.readArtifacts( 
query );
+    ArtifactResults ror = reader.readArtifacts( query );
     
     assertNotNull( ror );
     
@@ -265,12 +264,12 @@
     assertFalse( ror.hasExceptions() );
     assertTrue( ror.hasResults() );
     
-    List<DefaultArtifact> res = ror.getResults();
+    List<Artifact> res = ror.getResults(bmd);
     
     assertNotNull( res );
     assertEquals( 1, res.size() );
     
-    DefaultArtifact da = res.get( 0 );
+    Artifact da = res.get( 0 );
     
     assertNotNull( da );
     assertEquals( "4", da.getVersion() );
@@ -298,7 +297,7 @@
     bmd = new ArtifactBasicMetadata("a:a:4");
     query.add( bmd );
 
-    RepositoryOperationResult<DefaultArtifact> ror = reader.readArtifacts( 
query );
+    ArtifactResults ror = reader.readArtifacts( query );
     
     assertNotNull( ror );
     
@@ -308,12 +307,12 @@
     assertFalse( ror.hasExceptions() );
     assertTrue( ror.hasResults() );
     
-    List<DefaultArtifact> res = ror.getResults();
+    List<Artifact> res = ror.getResults(bmd);
     
     assertNotNull( res );
     assertEquals( 1, res.size() );
     
-    DefaultArtifact da = res.get( 0 );
+    Artifact da = res.get( 0 );
     
     assertNotNull( da );
     assertNotNull( da.getFile() );
@@ -337,7 +336,7 @@
     bmd = new ArtifactBasicMetadata("a:a:3");
     query.add( bmd );
 
-    RepositoryOperationResult<DefaultArtifact> ror = null;
+    ArtifactResults ror = null;
     try
     {
       ror = reader.readArtifacts( query );
@@ -370,7 +369,7 @@
     bmd = new ArtifactBasicMetadata("a:a:2");
     query.add( bmd );
 
-    RepositoryOperationResult<DefaultArtifact> ror = null;
+    ArtifactResults ror = null;
     try
     {
       ror = reader.readArtifacts( query );
@@ -404,7 +403,7 @@
     bmd = new ArtifactBasicMetadata("a:a:3");
     query.add( bmd );
 
-    RepositoryOperationResult<DefaultArtifact> ror = null;
+    ArtifactResults ror = null;
     try
     {
       ror = reader.readArtifacts( query );

Copied: 
maven/sandbox/trunk/mercury/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/LocalRepositoryReaderM2Test.java
 (from r688239, 
maven/sandbox/trunk/mercury/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/LocalRepositoryM2Test.java)
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/LocalRepositoryReaderM2Test.java?p2=maven/sandbox/trunk/mercury/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/LocalRepositoryReaderM2Test.java&p1=maven/sandbox/trunk/mercury/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/LocalRepositoryM2Test.java&r1=688239&r2=689529&rev=689529&view=diff
==============================================================================
--- 
maven/sandbox/trunk/mercury/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/LocalRepositoryM2Test.java
 (original)
+++ 
maven/sandbox/trunk/mercury/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/LocalRepositoryReaderM2Test.java
 Wed Aug 27 10:04:27 2008
@@ -15,7 +15,7 @@
  * @version $Id$
  *
  */
-public class LocalRepositoryM2Test
+public class LocalRepositoryReaderM2Test
 extends AbstractRepositoryReaderM2Test
 {
 

Propchange: 
maven/sandbox/trunk/mercury/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/LocalRepositoryReaderM2Test.java
------------------------------------------------------------------------------
    svn:mergeinfo = 

Modified: 
maven/sandbox/trunk/mercury/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/RemoteRepositoryReaderM2Test.java
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/RemoteRepositoryReaderM2Test.java?rev=689529&r1=689528&r2=689529&view=diff
==============================================================================
--- 
maven/sandbox/trunk/mercury/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/RemoteRepositoryReaderM2Test.java
 (original)
+++ 
maven/sandbox/trunk/mercury/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/RemoteRepositoryReaderM2Test.java
 Wed Aug 27 10:04:27 2008
@@ -20,7 +20,7 @@
 import org.apache.maven.mercury.builder.api.MetadataProcessor;
 import org.apache.maven.mercury.repository.local.m2.MetadataProcessorMock;
 import org.apache.maven.mercury.repository.api.RepositoryException;
-import org.apache.maven.mercury.repository.api.RepositoryOperationResult;
+import org.apache.maven.mercury.repository.api.AbstractRepOpResult;
 import org.apache.maven.mercury.repository.api.RepositoryReader;
 import org.apache.maven.mercury.repository.metadata.Metadata;
 import org.apache.maven.mercury.repository.metadata.io.xpp3.MetadataXpp3Reader;

Modified: 
maven/sandbox/trunk/mercury/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java?rev=689529&r1=689528&r2=689529&view=diff
==============================================================================
--- 
maven/sandbox/trunk/mercury/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java
 (original)
+++ 
maven/sandbox/trunk/mercury/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java
 Wed Aug 27 10:04:27 2008
@@ -13,6 +13,7 @@
 import org.apache.maven.mercury.builder.api.MetadataProcessor;
 import org.apache.maven.mercury.metadata.sat.DefaultSatSolver;
 import org.apache.maven.mercury.metadata.sat.SatException;
+import org.apache.maven.mercury.repository.api.ArtifactBasicResults;
 import org.apache.maven.mercury.repository.api.Repository;
 import org.apache.maven.mercury.repository.api.RepositoryException;
 import org.apache.maven.mercury.repository.api.VirtualRepositoryReader;
@@ -127,7 +128,8 @@
         if( dependencies == null || dependencies.size() < 1 )
           return node;
         
-        Map<ArtifactBasicMetadata, List<ArtifactBasicMetadata>> expandedDeps = 
_reader.readVersions( dependencies );
+        ArtifactBasicResults res = _reader.readVersions( dependencies );
+        Map<ArtifactBasicMetadata, List<ArtifactBasicMetadata>> expandedDeps = 
res.getResults();
         
 //        if( expandedDeps == null )
 //          return node;

Modified: 
maven/sandbox/trunk/mercury/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/DependencyTreeBuilderTest.java
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/DependencyTreeBuilderTest.java?rev=689529&r1=689528&r2=689529&view=diff
==============================================================================
--- 
maven/sandbox/trunk/mercury/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/DependencyTreeBuilderTest.java
 (original)
+++ 
maven/sandbox/trunk/mercury/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/DependencyTreeBuilderTest.java
 Wed Aug 27 10:04:27 2008
@@ -39,7 +39,6 @@
   protected void setUp()
   throws Exception
   {
-System.out.println("Current dir is "+ new File(".").getCanonicalPath() );
     processor = new MetadataProcessorMock();
     localRepo = new LocalRepositoryM2( "local", repoDir );
     
@@ -123,7 +122,7 @@
     
   }
   
//----------------------------------------------------------------------------------------------
-  public void testBigResolveConflicts()
+  public void testResolveBigConflicts()
   throws MetadataTreeException
   {
     ArtifactMetadata md = new ArtifactMetadata( "a:a:3" );

Copied: 
maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/AbstractRepOpResult.java
 (from r688239, 
maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryOperationResult.java)
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/AbstractRepOpResult.java?p2=maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/AbstractRepOpResult.java&p1=maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryOperationResult.java&r1=688239&r2=689529&rev=689529&view=diff
==============================================================================
--- 
maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryOperationResult.java
 (original)
+++ 
maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/AbstractRepOpResult.java
 Wed Aug 27 10:04:27 2008
@@ -1,87 +1,57 @@
 package org.apache.maven.mercury.repository.api;
 
-import java.util.ArrayList;
-import java.util.Collection;
 import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.HashMap;
+import java.util.Map;
 
 import org.apache.maven.mercury.artifact.ArtifactBasicMetadata;
 /**
- * generic repository operation result. Represents a List of <T extends 
ArtifactBasicMetadata> 
- * objects and a set of exceptions thrown in the process 
+ * generic repository operation result. Represents a Map of query object to 
AbstractRepositoryOperationResult
  *
  * @author Oleg Gusakov
  * @version $Id$
  *
- * @param <T>
  */
-public class RepositoryOperationResult<T extends ArtifactBasicMetadata>
+public abstract class AbstractRepOpResult
 {
-  private Set<Exception> _exceptions = Collections.synchronizedSet( new 
HashSet<Exception>() );
-  private List<T> _results = Collections.synchronizedList( new ArrayList<T>() 
);
+  private Map<ArtifactBasicMetadata,Exception> _exceptions;
   
-  public static RepositoryOperationResult<ArtifactBasicMetadata> add( 
RepositoryOperationResult<ArtifactBasicMetadata> rep, RepositoryException 
exception )
+  public AbstractRepOpResult()
   {
-    if( rep == null )
-      rep = new RepositoryOperationResult<ArtifactBasicMetadata>();
-
-    rep.add( exception );
-    return rep;
   }
   
-  public static RepositoryOperationResult<ArtifactBasicMetadata> add( 
RepositoryOperationResult<ArtifactBasicMetadata> rep, ArtifactBasicMetadata 
abmd )
-  {
-    if( rep == null )
-      rep = new RepositoryOperationResult<ArtifactBasicMetadata>();
-
-    rep.add( abmd );
-    return rep;
-  }
-
-  public RepositoryOperationResult()
-  {
-  }
-
-  public void add( Exception exception )
-  {
-      _exceptions.add( exception );
-  }
-
-  public Set<Exception> getExceptions()
+  public Map<ArtifactBasicMetadata,Exception> getExceptions()
   {
       return _exceptions;
   }
-
-  public String toString()
-  {
-      return _exceptions.toString();
-  }
   
-  public boolean hasExceptions()
-  {
-      return _exceptions.size() > 0;
-  }
+  public abstract boolean hasResults();
+  
+  public abstract boolean hasResults( ArtifactBasicMetadata key );
   
-  public void add( T result )
+  public boolean hasExceptions()
   {
-    _results.add( result );
+    return _exceptions != null && ! _exceptions.isEmpty();
   }
   
-  public void add( Collection<T> resColl )
+  public void addError( ArtifactBasicMetadata key, Exception error )
   {
-    _results.addAll( resColl );
+    if( _exceptions == null )
+      _exceptions = new HashMap<ArtifactBasicMetadata, Exception>(8);
+
+    _exceptions.put( key, error );
   }
   
-  public List<T> getResults()
+  public Exception getError( ArtifactBasicMetadata key )
   {
-    return _results;
+    if( _exceptions == null )
+      return null;
+
+    return _exceptions.get( key );
   }
-  
-  public boolean hasResults()
+
+  public String toString()
   {
-      return _results.size() > 0;
+      return _exceptions.toString();
   }
-  
 }

Propchange: 
maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/AbstractRepOpResult.java
------------------------------------------------------------------------------
    svn:mergeinfo = 

Modified: 
maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryCallback.java
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryCallback.java?rev=689529&r1=689528&r2=689529&view=diff
==============================================================================
--- 
maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryCallback.java
 (original)
+++ 
maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryCallback.java
 Wed Aug 27 10:04:27 2008
@@ -12,5 +12,5 @@
  */
 public interface RepositoryCallback
 {
-  public void done( RepositoryOperationResult<?> result );
+  public void done( AbstractRepOpResult results );
 }

Modified: 
maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryReader.java
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryReader.java?rev=689529&r1=689528&r2=689529&view=diff
==============================================================================
--- 
maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryReader.java
 (original)
+++ 
maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryReader.java
 Wed Aug 27 10:04:27 2008
@@ -33,20 +33,19 @@
    * it with hasExceptions() 
    * @throws RepositoryException
    */
-  public Map<ArtifactBasicMetadata, 
RepositoryOperationResult<ArtifactBasicMetadata>> readVersions( List<? extends 
ArtifactBasicMetadata> query )
+  public ArtifactBasicResults readVersions( List<ArtifactBasicMetadata> query )
   throws RepositoryException, IllegalArgumentException;
   
   /**
-   * given basic coordinates query read full ArtifactMetadata objects -
+   * given basic coordinates query read dependencies as a GAV list
    * with dependencies as queries i.e. each dependency at this stage is an 
ArtifactBasicMetadata
    * <b>Analogous to reading pom.xml</b> file for given GAV
    * 
    * @param query list of MD coordinate queries to read. They are found by 
previous call to findMetadata 
-   * @return result as list of available MD objects with dependencies filled 
in. Order is the same 
-   * as in query list. null means not found or worse
+   * @return result as a map GAV -> [GAV1, GAV2, ... GAVn]
    * @throws RepositoryException
    */
-  public Map< ArtifactBasicMetadata, ArtifactMetadata > readDependencies( 
List<? extends ArtifactBasicMetadata> query )
+  public ArtifactBasicResults readDependencies( List<ArtifactBasicMetadata> 
query )
   throws RepositoryException, IllegalArgumentException;
 
   /**
@@ -57,7 +56,7 @@
    * @return array of results - lists of available matches. Order is the same 
as in query list. null means not found or worse
    * @throws RepositoryException
    */
-  public RepositoryOperationResult<DefaultArtifact> readArtifacts( List<? 
extends ArtifactBasicMetadata> query )
+  public ArtifactResults readArtifacts( List<ArtifactBasicMetadata> query )
   throws RepositoryException, IllegalArgumentException;
 
   /**

Modified: 
maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/VirtualRepositoryReader.java
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/VirtualRepositoryReader.java?rev=689529&r1=689528&r2=689529&view=diff
==============================================================================
--- 
maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/VirtualRepositoryReader.java
 (original)
+++ 
maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/VirtualRepositoryReader.java
 Wed Aug 27 10:04:27 2008
@@ -17,9 +17,6 @@
  * this helper class hides the necessity to talk to localRepo and a bunch of 
remoteRepos.
  * It also adds discrete convenience methods, hiding batch nature of 
RepositoryReader
  * 
- * Please don't forget to initialize target platform if you really need one
- *
- *
  * @author Oleg Gusakov
  * @version $Id$
  *
@@ -126,56 +123,69 @@
     _initialized = true;
   }
   
//----------------------------------------------------------------------------------------------------------------------------
-  public Map<ArtifactBasicMetadata, List<ArtifactBasicMetadata>> readVersions( 
List<? extends ArtifactBasicMetadata> query )
+  /**
+   * 
+   * 
+   * @param query
+   * @param reader
+   * @param res
+   * @return
+   */
+  private List<ArtifactBasicMetadata> applyScanPolicy(
+                                          List<ArtifactBasicMetadata> query
+                                        , RepositoryReader reader
+                                        , AbstractRepOpResult res 
+                                                    )
+  {
+    // TODO 2008-08-26 og: implement real policy
+    return query;
+  }
+  
//----------------------------------------------------------------------------------------------------------------------------
+  public ArtifactBasicResults readVersions( List<ArtifactBasicMetadata> query )
   throws IllegalArgumentException, RepositoryException
   {
     if( query == null )
       throw new IllegalArgumentException("null bmd supplied");
     
     init();
-        
-    Map<ArtifactBasicMetadata, List<ArtifactBasicMetadata>> res = null;
+
+    ArtifactBasicResults res = null;
     ArtifactListProcessor tp = _processors == null ? null : _processors.get( 
ArtifactListProcessor.FUNCTION_TP );
 
     for( RepositoryReader rr : _repositoryReaders )
     {
-      Map<ArtifactBasicMetadata, 
RepositoryOperationResult<ArtifactBasicMetadata>> repoRes = rr.readVersions( 
query );
+      List<ArtifactBasicMetadata> leftOvers = applyScanPolicy( query, rr, res 
);
+
+      ArtifactBasicResults repoRes = rr.readVersions( leftOvers );
       
-      if( repoRes != null )
-        for( ArtifactBasicMetadata key : repoRes.keySet() )
+      if( repoRes != null && repoRes.hasResults() )
+        for( ArtifactBasicMetadata key : repoRes.getResults().keySet() )
         {
-          RepositoryOperationResult<ArtifactBasicMetadata> ror = repoRes.get( 
key );
-          if( ror != null && !ror.hasExceptions() && ror.hasResults() )
+          List<ArtifactBasicMetadata> rorRes = repoRes.getResult(key);
+          
+          if( tp != null )
           {
-            List<ArtifactBasicMetadata> rorRes = ror.getResults();
-            
-            if( tp != null )
+            try
+            {
+              tp.configure( key );
+              rorRes = tp.process( rorRes );
+            }
+            catch( ArtifactListProcessorException e )
             {
-              try
-              {
-                tp.configure( key );
-                rorRes = tp.process( rorRes );
-              }
-              catch( ArtifactListProcessorException e )
-              {
-                throw new RepositoryException(e);
-              }
+              throw new RepositoryException(e);
             }
-            
-            if( rorRes == null )
-              continue;
-            
-            for( ArtifactBasicMetadata bmd : rorRes )
-              bmd.setTracker(  rr );
-            
-            if( res == null )
-              res = new HashMap<ArtifactBasicMetadata, 
List<ArtifactBasicMetadata>>( query.size() );
-            
-            if( res.containsKey( key ) )
-              res.get( key ).addAll( rorRes );
-            else
-              res.put( key, rorRes );
           }
+          
+          if( rorRes == null )
+            continue;
+          
+          for( ArtifactBasicMetadata bmd : rorRes )
+            bmd.setTracker(  rr );
+          
+          if( res == null )
+            res = new ArtifactBasicResults( key, rorRes );
+          else
+            res.add( key, rorRes );
         }
     }
     
@@ -193,18 +203,20 @@
     List<ArtifactBasicMetadata> query = new 
ArrayList<ArtifactBasicMetadata>(1);
     query.add( bmd );
     
+    ArtifactMetadata md = new ArtifactMetadata( bmd ); 
     for( RepositoryReader rr : _repositoryReaders )
     {
-      Map<ArtifactBasicMetadata, ArtifactMetadata> res = rr.readDependencies( 
query );
-      if( res != null && ! res.isEmpty() )
+      ArtifactBasicResults res = rr.readDependencies( query );
+      
+      if( res != null && res.hasResults( bmd ) )
       {
-        ArtifactMetadata md = res.get( bmd );
+        md.setDependencies( res.getResult( bmd ) );
         md.setTracker( rr );
         return md;
       }
     }
     
-    return null;
+    return md;
   }
   
//----------------------------------------------------------------------------------------------------------------------------
   /* (non-Javadoc)

Modified: 
maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-local-m2/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryReaderM2.java
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-local-m2/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryReaderM2.java?rev=689529&r1=689528&r2=689529&view=diff
==============================================================================
--- 
maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-local-m2/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryReaderM2.java
 (original)
+++ 
maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-local-m2/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryReaderM2.java
 Wed Aug 27 10:04:27 2008
@@ -27,10 +27,12 @@
 import org.apache.maven.mercury.crypto.api.StreamVerifierFactory;
 import org.apache.maven.mercury.repository.api.AbstracRepositoryReader;
 import org.apache.maven.mercury.repository.api.AbstractRepository;
+import org.apache.maven.mercury.repository.api.ArtifactBasicResults;
+import org.apache.maven.mercury.repository.api.ArtifactResults;
 import org.apache.maven.mercury.repository.api.LocalRepository;
 import org.apache.maven.mercury.repository.api.Repository;
 import org.apache.maven.mercury.repository.api.RepositoryException;
-import org.apache.maven.mercury.repository.api.RepositoryOperationResult;
+import org.apache.maven.mercury.repository.api.AbstractRepOpResult;
 import org.apache.maven.mercury.repository.api.RepositoryReader;
 import org.apache.maven.mercury.util.FileUtil;
 import org.codehaus.plexus.i18n.DefaultLanguage;
@@ -73,14 +75,14 @@
     return _repo;
   }
   
//---------------------------------------------------------------------------------------------------------------
-  public RepositoryOperationResult<DefaultArtifact> readArtifacts( List<? 
extends ArtifactBasicMetadata> query )
+  public ArtifactResults readArtifacts( List<ArtifactBasicMetadata> query )
       throws RepositoryException,
       IllegalArgumentException
   {
     if( query == null || query.isEmpty() )
       throw new IllegalArgumentException( _lang.getMessage( "empty.query", 
query==null?"null":"empty" ) );
     
-    RepositoryOperationResult<DefaultArtifact> res = new 
RepositoryOperationResult<DefaultArtifact>();
+    ArtifactResults res = new ArtifactResults();
     
     Set<StreamVerifierFactory> vFacs = null;
     
@@ -100,7 +102,7 @@
       
       if( !gaDir.exists() )
       {
-        res.add( new RepositoryException( _lang.getMessage( "ga.not.found", 
bmd.toString(), relGaPath ) ) );
+        res.addError( bmd, new RepositoryException( _lang.getMessage( 
"ga.not.found", bmd.toString(), relGaPath ) ) );
         continue;
       }
       
@@ -150,7 +152,7 @@
 
         if( version == null )
         {
-          res.add( new RepositoryException( _lang.getMessage( "gav.not.found", 
bmd.toString(), relGaPath ) ) );
+          res.addError( bmd, new RepositoryException( _lang.getMessage( 
"gav.not.found", bmd.toString(), relGaPath ) ) );
           continue;
         }
         
@@ -174,7 +176,7 @@
         File gavDir = new File( gaDir, version );
         if( !gavDir.exists() )
         {
-          res.add( new RepositoryException( _lang.getMessage( 
"gavdir.not.found", bmd.toString(), gavDir.getAbsolutePath() ) ) );
+          res.addError( bmd, new RepositoryException( _lang.getMessage( 
"gavdir.not.found", bmd.toString(), gavDir.getAbsolutePath() ) ) );
           continue;
         }
         
@@ -203,7 +205,7 @@
       // binary calculated 
       if( ! binary.exists() )
       {
-        res.add( new RepositoryException( _lang.getMessage( 
"binary.not.found", bmd.toString(), binary.getAbsolutePath() ) ) );
+        res.addError( bmd, new RepositoryException( _lang.getMessage( 
"binary.not.found", bmd.toString(), binary.getAbsolutePath() ) ) );
         continue;
       }
 
@@ -228,7 +230,7 @@
             _log.warn( _lang.getMessage( "pom.not.found", bmd.toString()) );
         }
 
-        res.add( da );
+        res.add( bmd, da );
       }
       catch( Exception e )
       {
@@ -321,14 +323,14 @@
   /**
    * 
    */
-  public Map<ArtifactBasicMetadata, ArtifactMetadata> readDependencies( List<? 
extends ArtifactBasicMetadata> query )
+  public ArtifactBasicResults readDependencies( List<ArtifactBasicMetadata> 
query )
       throws RepositoryException,
       IllegalArgumentException
   {
     if( query == null || query.size() < 1 )
       return null;
 
-    Map<ArtifactBasicMetadata, ArtifactMetadata> ror = new 
HashMap<ArtifactBasicMetadata, ArtifactMetadata>(16);
+    ArtifactBasicResults ror = null;
     
     File pomFile = null;
     for( ArtifactBasicMetadata bmd : query )
@@ -352,10 +354,7 @@
       try
       {
         List<ArtifactBasicMetadata> deps = _mdProcessor.getDependencies( bmd, 
this, System.getProperties() );
-        ArtifactMetadata md = new ArtifactMetadata( bmd );
-        md.setDependencies( deps );
-        
-        ror.put( bmd, md );
+        ror = ArtifactBasicResults.add( ror, bmd, deps );
       }
       catch( MetadataProcessingException e )
       {
@@ -368,7 +367,7 @@
     return ror;
   }
   
//---------------------------------------------------------------------------------------------------------------
-  private static File findLatestSnapshot( File gavDir, DefaultArtifact da, 
RepositoryOperationResult<DefaultArtifact> res )
+  private static File findLatestSnapshot( File gavDir, DefaultArtifact da, 
AbstractRepOpResult res )
   {
       
     String version = gavDir.getName();
@@ -424,7 +423,7 @@
 
     if( version == null )
     {
-      res.add( new RepositoryException( _lang.getMessage( 
"snapshot.not.found", da.toString(), gavDir.getAbsolutePath() ) ) );
+      res.addError( da, new RepositoryException( _lang.getMessage( 
"snapshot.not.found", da.toString(), gavDir.getAbsolutePath() ) ) );
       return null;
     }
     
@@ -440,14 +439,13 @@
   /**
    * direct disk search, no redirects, first attempt
    */
-  public Map<ArtifactBasicMetadata, 
RepositoryOperationResult<ArtifactBasicMetadata>>
-                                      readVersions( List<? extends 
ArtifactBasicMetadata> query )
+  public ArtifactBasicResults readVersions( List<ArtifactBasicMetadata> query )
   throws RepositoryException, IllegalArgumentException
   {
     if( query == null || query.size() < 1 )
       return null;
     
-    Map<ArtifactBasicMetadata, 
RepositoryOperationResult<ArtifactBasicMetadata>> res = new 
HashMap<ArtifactBasicMetadata, 
RepositoryOperationResult<ArtifactBasicMetadata>>( query.size() );
+    ArtifactBasicResults res = new ArtifactBasicResults( query.size() );
     
     File gaDir = null;
     for( ArtifactBasicMetadata bmd : query )
@@ -458,7 +456,6 @@
       
       File [] versionFiles = gaDir.listFiles();
       
-      RepositoryOperationResult<ArtifactBasicMetadata> rr = null;
       VersionRange versionQuery;
       try
       {
@@ -466,7 +463,7 @@
       }
       catch( VersionException e )
       {
-        rr = RepositoryOperationResult.add( rr, new RepositoryException(e) );
+        res = ArtifactBasicResults.add( res, bmd, new RepositoryException(e) );
         continue;
       }
       
@@ -491,10 +488,8 @@
         vmd.setType( bmd.getType() );
         vmd.setVersion( vf.getName() );
         
-        rr = RepositoryOperationResult.add( rr, vmd );
+        res = ArtifactBasicResults.add( res, bmd, vmd );
       }
-      if( rr != null )
-        res.put( bmd, rr );
     }
     
     return res;

Modified: 
maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-remote-m2/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryReaderM2.java
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-remote-m2/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryReaderM2.java?rev=689529&r1=689528&r2=689529&view=diff
==============================================================================
--- 
maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-remote-m2/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryReaderM2.java
 (original)
+++ 
maven/sandbox/trunk/mercury/mercury-repo/mercury-repo-remote-m2/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryReaderM2.java
 Wed Aug 27 10:04:27 2008
@@ -25,10 +25,12 @@
 import org.apache.maven.mercury.builder.api.MetadataReader;
 import org.apache.maven.mercury.repository.api.AbstracRepositoryReader;
 import org.apache.maven.mercury.repository.api.AbstractRepository;
+import org.apache.maven.mercury.repository.api.ArtifactBasicResults;
+import org.apache.maven.mercury.repository.api.ArtifactResults;
 import org.apache.maven.mercury.repository.api.RemoteRepository;
 import org.apache.maven.mercury.repository.api.Repository;
 import org.apache.maven.mercury.repository.api.RepositoryException;
-import org.apache.maven.mercury.repository.api.RepositoryOperationResult;
+import org.apache.maven.mercury.repository.api.AbstractRepOpResult;
 import org.apache.maven.mercury.repository.api.RepositoryReader;
 import org.apache.maven.mercury.repository.metadata.Metadata;
 import org.apache.maven.mercury.repository.metadata.MetadataBuilder;
@@ -110,25 +112,25 @@
     return _repo;
   }
   
//---------------------------------------------------------------------------------------------------------------
-  public RepositoryOperationResult<DefaultArtifact> readArtifacts( List<? 
extends ArtifactBasicMetadata> query )
+  public ArtifactResults readArtifacts( List<ArtifactBasicMetadata> query )
       throws RepositoryException,
       IllegalArgumentException
   {
     if( query == null || query.size() < 1 )
       return null;
     
-    RepositoryOperationResult<DefaultArtifact> res = new 
RepositoryOperationResult<DefaultArtifact>();
+    ArtifactResults res = new ArtifactResults();
     
     for( ArtifactBasicMetadata bmd : query )
     {
       try
       {
         DefaultArtifact da = readArtifact( bmd );
-        res.add( da );
+        res.add( bmd, da );
       }
       catch( Exception e )
       {
-        res.add( e );
+        res.addError( bmd, e );
       }
     }
 
@@ -149,7 +151,6 @@
     if( gavMd == null || gavMd.getVersioning() == null )
       throw new RepositoryException( _lang.getMessage( "gav.md.no.versions", 
_repo.getServer().getURL().toString(), 
gavPath+'/'+ver+'/'+_repo.getMetadataName() ) );
       
-    
     List<String> versions = gavMd.getVersioning().getVersions();
     if( versions == null || versions.size() < 1 )
       throw new RepositoryException( _lang.getMessage( "gav.md.no.versions", 
_repo.getServer().getURL().toString(), 
gavPath+'/'+ver+'/'+_repo.getMetadataName() ) );
@@ -216,6 +217,7 @@
     Quality vq = dav.getQuality();
     
     String relGaPath = bmd.getGroupId().replace( '.', '/' ) + '/' + 
bmd.getArtifactId();
+    String versionDir = bmd.getVersion();
 
     byte [] mdBytes = readRawData( relGaPath+'/'+_repo.getMetadataName() );
     if( mdBytes == null )
@@ -275,12 +277,17 @@
 
         if( relBinaryPath == null )
           throw new RepositoryException( _lang.getMessage( "gav.not.found", 
bmd.toString(), relGaPath ) );
+
+        versionDir = version;
       }
       else
       {
-        relBinaryPath = 
relGaPath+'/'+version+'/'+bmd.getArtifactId()+'-'+version
+        versionDir = version;
+        relBinaryPath = relGaPath+'/'+versionDir
+            +'/'+bmd.getArtifactId()+'-'+version
             + ( bmd.hasClassifier() ? '-'+bmd.getClassifier() : "" 
)+'.'+bmd.getType()
         ;
+
         da.setVersion( version );
       }
     }
@@ -288,6 +295,7 @@
     else if( version.endsWith( Artifact.SNAPSHOT_VERSION ) )
     {
       relBinaryPath = findLatestSnapshot( relGaPath, version, da );
+      versionDir = dav.getBase()+'-'+Artifact.SNAPSHOT_VERSION;
 
       if( relBinaryPath == null )
         throw new RepositoryException( _lang.getMessage( "gav.not.found", 
bmd.toString(), relGaPath ) );
@@ -295,8 +303,8 @@
     // time stamped snapshot requested
     else if( vq.equals( Quality.SNAPSHOT_TS_QUALITY ))
     {
-      relBinaryPath = relGaPath
-          + '/'+dav.getBase()+'-'+Artifact.SNAPSHOT_VERSION 
+      versionDir = dav.getBase()+'-'+Artifact.SNAPSHOT_VERSION;
+      relBinaryPath = relGaPath + '/' + versionDir 
           + '/' + bmd.getArtifactId() + '-' + bmd.getVersion() + ( 
bmd.hasClassifier() ? '-'+bmd.getClassifier() : "" ) 
           + '.' + bmd.getType()
       ;
@@ -312,7 +320,7 @@
     
     // binary calculated 
     
-    File binFile = File.createTempFile( "remote-repo-", 
bmd.getArtifactId()+bmd.getVersion()+'.'+bmd.getType() );
+    File binFile = File.createTempFile( "remote-repo-" + _repo.getId(), 
bmd.getArtifactId()+bmd.getVersion()+'.'+bmd.getType() );
     File pomFile = null;
 
     Binding binBinding = new Binding( new 
URL(_repo.getServer().getURL().toString() + '/'+ relBinaryPath) , binFile );
@@ -322,14 +330,14 @@
     
     if( !"pom".equals( bmd.getType() ) ) 
     {
-      String relPomPath = relGaPath + '/'+version
+      String relPomPath = relGaPath + '/' + versionDir
                           + '/'+bmd.getArtifactId()+'-'+version
                           + ".pom"
       ;
 
-      pomFile = File.createTempFile( "remote-repo-", 
bmd.getArtifactId()+bmd.getVersion()+'.'+bmd.getType() );
+      pomFile = File.createTempFile( "remote-repo-" + _repo.getId(), 
bmd.getArtifactId()+bmd.getVersion()+".pom" );
       Binding pomBinding = new Binding( new 
URL(_repo.getServer().getURL().toString() + '/'+ relPomPath) , pomFile );
-      request.addBinding( binBinding );
+      request.addBinding( pomBinding );
     }
     
     RetrievalResponse response = _transport.retrieve( request );
@@ -356,24 +364,21 @@
   /**
    * 
    */
-  public Map<ArtifactBasicMetadata, ArtifactMetadata> readDependencies( List<? 
extends ArtifactBasicMetadata> query )
+  public ArtifactBasicResults readDependencies( List<ArtifactBasicMetadata> 
query )
       throws RepositoryException,
       IllegalArgumentException
   {
     if( query == null || query.size() < 1 )
       return null;
 
-    Map<ArtifactBasicMetadata, ArtifactMetadata> ror = new 
HashMap<ArtifactBasicMetadata, ArtifactMetadata>(16);
+    ArtifactBasicResults ror = new ArtifactBasicResults(16);
     
     for( ArtifactBasicMetadata bmd : query )
     {
       try
       {
         List<ArtifactBasicMetadata> deps = _mdProcessor.getDependencies( bmd, 
this, System.getProperties() );
-        ArtifactMetadata md = new ArtifactMetadata( bmd );
-        md.setDependencies( deps );
-        
-        ror.put( bmd, md );
+        ror.add( bmd, deps );
       }
       catch( MetadataProcessingException e )
       {
@@ -389,14 +394,14 @@
   /**
    * direct disk search, no redirects, first attempt
    */
-  public Map<ArtifactBasicMetadata, 
RepositoryOperationResult<ArtifactBasicMetadata>> readVersions( List<? extends 
ArtifactBasicMetadata> query )
+  public ArtifactBasicResults readVersions( List<ArtifactBasicMetadata> query )
       throws RepositoryException,
       IllegalArgumentException
   {
     if( query == null || query.size() < 1 )
       return null;
 
-    Map<ArtifactBasicMetadata, 
RepositoryOperationResult<ArtifactBasicMetadata>> res = new 
HashMap<ArtifactBasicMetadata, 
RepositoryOperationResult<ArtifactBasicMetadata>>( query.size() );
+    ArtifactBasicResults res = new ArtifactBasicResults( query.size() );
     
     String gaPath = null;
     for( ArtifactBasicMetadata bmd : query )
@@ -433,7 +438,6 @@
         throw new RepositoryException( pe );
       }
 
-      RepositoryOperationResult<ArtifactBasicMetadata> rr = null;
       VersionRange versionQuery;
       try
       {
@@ -441,7 +445,7 @@
       }
       catch( VersionException e )
       {
-        rr = RepositoryOperationResult.add( rr, new RepositoryException(e) );
+        res.addError( bmd, new RepositoryException(e) );
         continue;
       }
       
@@ -466,10 +470,8 @@
         vmd.setType( bmd.getType() );
         vmd.setVersion( v );
         
-        rr = RepositoryOperationResult.add( rr, vmd );
+        res.add( bmd, vmd );
       }
-      if( rr != null )
-        res.put( bmd, rr );
     }
     
     return res;


Reply via email to