You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by og...@apache.org on 2008/07/30 21:34:17 UTC

svn commit: r681180 - in /maven/sandbox/trunk/mercury: ./ src/main/java/org/apache/maven/mercury/metadata/ src/main/java/org/apache/maven/mercury/repository/api/ src/main/java/org/apache/maven/mercury/repository/local/m2/ src/main/java/org/apache/maven...

Author: ogusakov
Date: Wed Jul 30 12:34:16 2008
New Revision: 681180

URL: http://svn.apache.org/viewvc?rev=681180&view=rev
Log:
moved MetadataProcessor from Repository to the RepositoryReader as Repository can live happily without one

Modified:
    maven/sandbox/trunk/mercury/pom.xml
    maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/MetadataTree.java
    maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/AbstractRepository.java
    maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/Repository.java
    maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/VirtualRepositoryReader.java
    maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryM2.java
    maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryM2.java
    maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/MetadataTreeTest.java
    maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/repository/metadata/MetadataReaderTest.java

Modified: maven/sandbox/trunk/mercury/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/pom.xml?rev=681180&r1=681179&r2=681180&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/pom.xml (original)
+++ maven/sandbox/trunk/mercury/pom.xml Wed Jul 30 12:34:16 2008
@@ -115,7 +115,7 @@
       <artifactId>plexus-utils</artifactId>
       <version>1.5.1</version>
     </dependency>
-    <!-- SAT solver used to calcuate viable ranges when dependencies are expressed in conjunctive normal form -->
+    <!-- SAT solver used to calculate viable ranges when dependencies are expressed pseudo boolean form -->
     <dependency>
       <groupId>org.sat4j</groupId>
       <artifactId>org.sat4j.core</artifactId>

Modified: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/MetadataTree.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/MetadataTree.java?rev=681180&r1=681179&r2=681180&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/MetadataTree.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/MetadataTree.java Wed Jul 30 12:34:16 2008
@@ -11,6 +11,7 @@
 import org.apache.maven.mercury.artifact.ArtifactScopeEnum;
 import org.apache.maven.mercury.metadata.sat.DefaultSatSolver;
 import org.apache.maven.mercury.metadata.sat.SatException;
+import org.apache.maven.mercury.repository.api.MetadataProcessor;
 import org.apache.maven.mercury.repository.api.Repository;
 import org.apache.maven.mercury.repository.api.RepositoryException;
 import org.apache.maven.mercury.repository.api.VirtualRepositoryReader;
@@ -51,6 +52,7 @@
         Set<MetadataTreeArtifactFilter> filters
       , List<Comparator<MetadataTreeNode>> comparators
       , List<Repository> repositories
+      , MetadataProcessor processor
                      )
   throws RepositoryException
   {
@@ -66,7 +68,7 @@
       _comparators.add( new ClassicVersionComparator() );
     }
     
-    this._reader = new VirtualRepositoryReader( repositories );
+    this._reader = new VirtualRepositoryReader( repositories, processor );
   }
   //-----------------------------------------------------
   public MetadataTreeNode buildTree( ArtifactMetadata startMD )
@@ -75,7 +77,14 @@
     if( startMD == null )
       throw new MetadataTreeException( "null start point" );
     
-    _reader.init();
+    try
+    {
+      _reader.init();
+    }
+    catch( RepositoryException e )
+    {
+      throw new MetadataTreeException(e);
+    }
     
     _root = createNode( startMD, null, startMD );
     return _root;

Modified: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/AbstractRepository.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/AbstractRepository.java?rev=681180&r1=681179&r2=681180&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/AbstractRepository.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/AbstractRepository.java Wed Jul 30 12:34:16 2008
@@ -52,14 +52,13 @@
   //---------------------------------------------------------------------------
   protected String             type = DEFAULT_REPOSITORY_TYPE;
   
-  protected MetadataProcessor  processor;
   protected RepositoryReader   reader;
   protected RepositoryWriter   writer;
   //---------------------------------------------------------------------------
-  public AbstractRepository( String id, String type, MetadataProcessor processor )
+  public AbstractRepository( String id, String type )
   {
     this.id = id;
-    this.processor = processor;
+    this.type = type;
   }
   //---------------------------------------------------------------------------
   public String getId()
@@ -67,16 +66,6 @@
     return id;
   }
   //---------------------------------------------------------------------------
-  public MetadataProcessor getMetadataProcessor()
-  {
-    return processor;
-  }
-  //---------------------------------------------------------------------------
-  public void setMetadataProcessor( MetadataProcessor processor )
-  {
-    this.processor = processor;
-  }
-  //---------------------------------------------------------------------------
   public String getDefaultReadProtocol()
   {
     return defaultReadProtocol;

Modified: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/Repository.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/Repository.java?rev=681180&r1=681179&r2=681180&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/Repository.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/Repository.java Wed Jul 30 12:34:16 2008
@@ -50,8 +50,10 @@
      * get default reader, if any
      * 
      * @return default reader or null, if none exists
+     * @throws RepositoryException 
      */
-    RepositoryReader getReader();
+    RepositoryReader getReader( MetadataProcessor processor )
+    throws RepositoryException;
     
     /**
      * 
@@ -59,7 +61,8 @@
      * @return reader instance for the specified protocol
      * @throws NonExistentProtocolException if protocol not supported
      */
-    RepositoryReader getReader( String protocol );
+    RepositoryReader getReader( MetadataProcessor processor, String protocol )
+    throws RepositoryException;
 
     
     /**

Modified: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/VirtualRepositoryReader.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/VirtualRepositoryReader.java?rev=681180&r1=681179&r2=681180&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/VirtualRepositoryReader.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/VirtualRepositoryReader.java Wed Jul 30 12:34:16 2008
@@ -26,17 +26,24 @@
 
   private LocalRepository       _localRepository;
   
+  private MetadataProcessor     _processor;
+  
   private boolean _initialized = false;
   //----------------------------------------------------------------------------------------------------------------------------
   public VirtualRepositoryReader(
                   LocalRepository localRepository
                 , List<RemoteRepository> remoteRepositories
+                , MetadataProcessor processor
                           )
   throws RepositoryException
   {
     if( _localRepository == null )
       throw new RepositoryException( "null local repo" );
     
+    if( processor == null )
+      throw new RepositoryException( "null metadata processor" );
+    this._processor = processor;
+    
     this._localRepository = localRepository;
 
     this._repositories.add( localRepository );
@@ -45,11 +52,13 @@
       this._repositories.addAll( remoteRepositories );
   }
   //----------------------------------------------------------------------------------------------------------------------------
-  public VirtualRepositoryReader(
-                  List<Repository> repositories
-                          )
+  public VirtualRepositoryReader( List<Repository> repositories, MetadataProcessor processor  )
   throws RepositoryException
   {
+    if( processor == null )
+      throw new RepositoryException( "null metadata processor" );
+    this._processor = processor;
+
     if( repositories != null && repositories.size() > 0 )
       this._repositories.addAll( repositories );
   }
@@ -72,6 +81,7 @@
   }
   //----------------------------------------------------------------------------------------------------------------------------
   public void init()
+  throws RepositoryException
   {
     if( _initialized )
       return;
@@ -87,16 +97,16 @@
       if( ! r.isLocal() )
         continue;
       
-      _repositoryReaders[ i++ ] = r.getReader();
+      _repositoryReaders[ i++ ] = r.getReader(_processor);
       if( ! r.isReadOnly() )
-        _localRepository = (LocalRepository)r.getReader().getRepository();
+        _localRepository = (LocalRepository)r.getReader(_processor).getRepository();
     }
     for( Repository r : _repositories )
     {
       if( r.isLocal() )
         continue;
 
-      _repositoryReaders[ i++ ] = r.getReader();
+      _repositoryReaders[ i++ ] = r.getReader(_processor);
     }
     _initialized = true;
   }
@@ -182,7 +192,14 @@
     if( bmd == null )
       throw new IllegalArgumentException("null bmd supplied");
     
-    init();
+    try
+    {
+      init();
+    }
+    catch( RepositoryException e )
+    {
+      throw new MetadataProcessingException(e);
+    }
     
     byte [] res = null;
     

Modified: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryM2.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryM2.java?rev=681180&r1=681179&r2=681180&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryM2.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryM2.java Wed Jul 30 12:34:16 2008
@@ -15,15 +15,15 @@
 {
     private File directory;
     //----------------------------------------------------------------------------------
-    public LocalRepositoryM2( String id, File directory, MetadataProcessor processor )
+    public LocalRepositoryM2( String id, File directory )
     {
-        super( id, DEFAULT_REPOSITORY_TYPE, processor );
+        super( id, DEFAULT_REPOSITORY_TYPE );
         this.directory = directory;
     }
     //----------------------------------------------------------------------------------
-    public LocalRepositoryM2( String id, File directory, MetadataProcessor processor, String type )
+    public LocalRepositoryM2( String id, File directory, String type )
     {
-        super( id, type, processor );
+        super( id, type );
         this.directory = directory;
     }
     //----------------------------------------------------------------------------------
@@ -32,7 +32,7 @@
         return directory;
     }
     //----------------------------------------------------------------------------------
-    public RepositoryReader getReader()
+    public RepositoryReader getReader( MetadataProcessor processor ) 
     {
       if( reader == null )
         reader = new LocalRepositoryReaderM2( this, processor );
@@ -40,9 +40,9 @@
       return reader;
     }
     //----------------------------------------------------------------------------------
-    public RepositoryReader getReader( String protocol )
+    public RepositoryReader getReader( MetadataProcessor processor, String protocol )
     {
-       return getReader();
+       return getReader(processor);
     }
     //----------------------------------------------------------------------------------
     public RepositoryWriter getWriter()

Modified: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryM2.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryM2.java?rev=681180&r1=681179&r2=681180&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryM2.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryM2.java Wed Jul 30 12:34:16 2008
@@ -4,6 +4,7 @@
 import org.apache.maven.mercury.repository.api.MetadataProcessor;
 import org.apache.maven.mercury.repository.api.NonExistentProtocolException;
 import org.apache.maven.mercury.repository.api.RemoteRepository;
+import org.apache.maven.mercury.repository.api.RepositoryException;
 import org.apache.maven.mercury.repository.api.RepositoryReader;
 import org.apache.maven.mercury.repository.api.RepositoryWriter;
 import org.apache.maven.mercury.transport.api.Server;
@@ -15,9 +16,9 @@
 {
     private Server _server;
     //----------------------------------------------------------------------------------
-    public RemoteRepositoryM2( String id, Server server, MetadataProcessor processor  )
+    public RemoteRepositoryM2( String id, Server server  )
     {
-        super( id, DEFAULT_REPOSITORY_TYPE, processor );
+        super( id, DEFAULT_REPOSITORY_TYPE );
         this._server = server;
     }
     //----------------------------------------------------------------------------------
@@ -26,15 +27,16 @@
         return _server;
     }
     //----------------------------------------------------------------------------------
-    public RepositoryReader getReader()
+    public RepositoryReader getReader( MetadataProcessor processor )
+    throws RepositoryException
     {
-      return null;
+      return new RemoteRepositoryReaderM2( this, processor );
     }
     //----------------------------------------------------------------------------------
-    public RepositoryReader getReader( String protocol )
+    public RepositoryReader getReader( MetadataProcessor processor, String protocol )
+    throws RepositoryException
     {
-      // TODO Auto-generated method stub
-      return null;
+      return getReader(processor);
     }
     //----------------------------------------------------------------------------------
     public RepositoryWriter getWriter()

Modified: maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/MetadataTreeTest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/MetadataTreeTest.java?rev=681180&r1=681179&r2=681180&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/MetadataTreeTest.java (original)
+++ maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/MetadataTreeTest.java Wed Jul 30 12:34:16 2008
@@ -6,8 +6,6 @@
 
 import junit.framework.TestCase;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.impl.LogFactoryImpl;
 import org.apache.maven.mercury.artifact.ArtifactMetadata;
 import org.apache.maven.mercury.artifact.ArtifactScopeEnum;
 import org.apache.maven.mercury.repository.MetadataProcessorMock;
@@ -24,7 +22,7 @@
 public class MetadataTreeTest
 extends TestCase
 {
-  private static final Log log = LogFactoryImpl.getLog( MetadataTreeTest.class );
+  private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger( MetadataTreeTest.class ); 
   
 //  ArtifactMetadata md = new ArtifactMetadata( "pmd:pmd:3.9" );
 //  File repo = new File("./target/test-classes/localRepo");
@@ -42,12 +40,12 @@
   {
 System.out.println("Current dir is "+ new File(".").getCanonicalPath() );
     processor = new MetadataProcessorMock();
-    localRepo = new LocalRepositoryM2( "local", repoDir, processor );
+    localRepo = new LocalRepositoryM2( "local", repoDir );
     
     reps = new ArrayList<Repository>(4);
     reps.add(  localRepo );
 
-    mt = new MetadataTree( null, null, reps );
+    mt = new MetadataTree( null, null, reps, processor );
   }
   //----------------------------------------------------------------------------------------------
   @Override

Modified: maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/repository/metadata/MetadataReaderTest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/repository/metadata/MetadataReaderTest.java?rev=681180&r1=681179&r2=681180&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/repository/metadata/MetadataReaderTest.java (original)
+++ maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/repository/metadata/MetadataReaderTest.java Wed Jul 30 12:34:16 2008
@@ -10,12 +10,19 @@
 
 import junit.framework.TestCase;
 
+import org.apache.maven.mercury.repository.MetadataProcessorMock;
+import org.apache.maven.mercury.repository.api.RepositoryException;
+import org.apache.maven.mercury.repository.api.RepositoryReader;
 import org.apache.maven.mercury.repository.metadata.io.xpp3.MetadataXpp3Reader;
+import org.apache.maven.mercury.repository.remote.m2.RemoteRepositoryM2;
+import org.apache.maven.mercury.repository.remote.m2.RemoteRepositoryReaderM2;
+import org.apache.maven.mercury.repository.remote.m2.RemoteRepositoryReaderM2Factory;
 import org.apache.maven.mercury.spi.http.client.retrieve.DefaultRetrievalRequest;
 import org.apache.maven.mercury.spi.http.client.retrieve.DefaultRetriever;
 import org.apache.maven.mercury.spi.http.client.retrieve.RetrievalResponse;
 import org.apache.maven.mercury.spi.http.server.HttpTestServer;
 import org.apache.maven.mercury.transport.api.Binding;
+import org.apache.maven.mercury.transport.api.Server;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
 public class MetadataReaderTest
@@ -57,7 +64,7 @@
      validateMmd( mmd );
   }
   //-------------------------------------------------------------------------
-  public void testReadRemoteMd()
+  public void testReadRemoteMdViaHttpClient()
   throws FileNotFoundException, IOException, XmlPullParserException
   {
     File temp = File.createTempFile("maven", "metadata" );
@@ -80,6 +87,36 @@
     
   }
   //-------------------------------------------------------------------------
+  public void testReadRemoteMdViaRepositoryReader()
+  throws FileNotFoundException, IOException, XmlPullParserException, RepositoryException
+  {
+    File temp = File.createTempFile("maven", "metadata" );
+    RemoteRepositoryReaderM2Factory rf = new RemoteRepositoryReaderM2Factory();
+    
+    Server server = new Server( "test", new URL("http://localhost:"+_port+"/repo") );
+    RemoteRepositoryM2 rrm2 = new RemoteRepositoryM2( "testRepo", server, new MetadataProcessorMock() );
+    
+    RepositoryReader reader = rf.getReader( rrm2, new MetadataProcessorMock() );
+    
+    HashSet<Binding> bindings = new HashSet<Binding>();
+    
+    Binding aaMdBinding = new Binding( new URL("http://localhost:"+_port+"/repo/a/a/maven-metadata.xml"), temp);
+    bindings.add( aaMdBinding );
+    
+    _request.setBindings(bindings);
+    
+    RetrievalResponse response = _retriever.retrieve(_request);
+    
+    if( response.hasExceptions() )
+      fail("retrieval exceptions: "+response.getExceptions()+"\nReading from "+aaMdBinding.getRemoteResource() );
+    
+    Metadata mmd = _reader.read( new FileInputStream( temp ) );
+    temp.delete();
+    
+    validateMmd( mmd );
+    
+  }
+  //-------------------------------------------------------------------------
   private void validateMmd( Metadata mmd )
   {
     assertNotNull( mmd );