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/19 08:06:34 UTC

svn commit: r678107 - in /maven/sandbox/trunk/mercury/src: main/java/org/apache/maven/mercury/metadata/ main/java/org/apache/maven/mercury/retrieve/ test/java/org/apache/maven/mercury/metadata/ test/java/org/apache/maven/mercury/repository/ test/java/o...

Author: ogusakov
Date: Fri Jul 18 23:06:33 2008
New Revision: 678107

URL: http://svn.apache.org/viewvc?rev=678107&view=rev
Log:
started revamping repository metadata and objects. RemoteRepositories are now a List, not Set

Added:
    maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/HttpMetadataSource.java
    maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/repository/
    maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/repository/metadata/
    maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/repository/metadata/MetadataReaderTest.java
    maven/sandbox/trunk/mercury/src/test/resources/controlledRepo/a/a/maven-metadata.xml
Modified:
    maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/DefaultMetadataResolver.java
    maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/MetadataResolutionRequest.java
    maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/MetadataSource.java
    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/retrieve/ArtifactRetriever.java
    maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/retrieve/DefaultArtifactRetriever.java
    maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/retrieve/ResolutionRequest.java
    maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/retrieve/ResolutionResult.java
    maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/MetadataResolverTest.java
    maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/MockMetadataSource.java

Modified: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/DefaultMetadataResolver.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/DefaultMetadataResolver.java?rev=678107&r1=678106&r2=678107&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/DefaultMetadataResolver.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/DefaultMetadataResolver.java Fri Jul 18 23:06:33 2008
@@ -13,7 +13,7 @@
 import org.apache.maven.mercury.retrieve.ResolutionRequest;
 import org.apache.maven.mercury.retrieve.ResolutionResult;
 
-/*
+/**
  * default implementation of the metadata resolver
  * 
  * @author Oleg Gusakov
@@ -57,7 +57,7 @@
     private MetadataTreeNode resolveMetadataTree( ArtifactMetadata query
                                                 , MetadataTreeNode parent
                                                 , LocalRepository localRepository
-                                                , Set<RemoteRepository> remoteRepositories
+                                                , List<RemoteRepository> remoteRepositories
                                                 )
         throws MetadataResolutionException
     {

Added: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/HttpMetadataSource.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/HttpMetadataSource.java?rev=678107&view=auto
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/HttpMetadataSource.java (added)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/HttpMetadataSource.java Fri Jul 18 23:06:33 2008
@@ -0,0 +1,40 @@
+package org.apache.maven.mercury.metadata;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.maven.mercury.repository.LocalRepository;
+import org.apache.maven.mercury.repository.RemoteRepository;
+
+public class HttpMetadataSource
+implements MetadataSource
+{
+  LocalRepository _localRepository;
+  Set<RemoteRepository> _remoteRepositories;
+
+  public Collection<ArtifactMetadata> expand(
+                            ArtifactMetadata metadataQuery
+                          , LocalRepository localRepository
+                          , List<RemoteRepository> remoteRepositories
+                                            )
+  throws MetadataRetrievalException
+  {
+    if( localRepository == null )
+      throw new MetadataRetrievalException("null localRepo specified");
+    
+    return null;
+  }
+
+  public MetadataResolution retrieve(
+                            ArtifactMetadata metadata
+                          , LocalRepository localRepository
+                          , List<RemoteRepository> remoteRepositories
+                                    )
+  throws MetadataRetrievalException
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+}

Modified: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/MetadataResolutionRequest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/MetadataResolutionRequest.java?rev=678107&r1=678106&r2=678107&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/MetadataResolutionRequest.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/MetadataResolutionRequest.java Fri Jul 18 23:06:33 2008
@@ -1,5 +1,6 @@
 package org.apache.maven.mercury.metadata;
 
+import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -14,7 +15,7 @@
 {
     protected ArtifactMetadata query;
     protected LocalRepository localRepository;
-    protected Set<RemoteRepository> remoteRepositories;
+    protected List<RemoteRepository> remoteRepositories;
 
     public MetadataResolutionRequest()
     {
@@ -22,7 +23,7 @@
 
     public MetadataResolutionRequest( ArtifactMetadata query,
                                       LocalRepository localRepository,
-                                      Set<RemoteRepository> remoteRepositories )
+                                      List<RemoteRepository> remoteRepositories )
     {
         this.query = query;
         this.localRepository = localRepository;
@@ -49,7 +50,7 @@
     {
         if ( remoteRepositories == null )
         {
-            remoteRepositories = new HashSet();
+            remoteRepositories = new ArrayList<RemoteRepository>();
         }
         
         remoteRepositories.add( repository );
@@ -63,12 +64,12 @@
         return this;
     }
 
-    public Set<RemoteRepository> getRemoteRepositories()
+    public List<RemoteRepository> getRemoteRepositories()
     {
         return remoteRepositories;
     }
 
-    public MetadataResolutionRequest setRemoteRepositories( Set<RemoteRepository> remoteRepositories )
+    public MetadataResolutionRequest setRemoteRepositories( List<RemoteRepository> remoteRepositories )
     {
         this.remoteRepositories = remoteRepositories;
         return this;

Modified: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/MetadataSource.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/MetadataSource.java?rev=678107&r1=678106&r2=678107&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/MetadataSource.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/MetadataSource.java Fri Jul 18 23:06:33 2008
@@ -20,7 +20,7 @@
  */
 
 import java.util.Collection;
-import java.util.Set;
+import java.util.List;
 
 import org.apache.maven.mercury.repository.LocalRepository;
 import org.apache.maven.mercury.repository.RemoteRepository;
@@ -54,7 +54,7 @@
     MetadataResolution retrieve( 
                          ArtifactMetadata metadata
                        , LocalRepository localRepository
-                       , Set<RemoteRepository> remoteRepositories
+                       , List<RemoteRepository> remoteRepositories
                                )
     throws MetadataRetrievalException
     ;
@@ -72,7 +72,7 @@
     Collection<ArtifactMetadata> expand( 
                                    ArtifactMetadata metadataQuery
                                  , LocalRepository localRepository
-                                 , Set<RemoteRepository> remoteRepositories 
+                                 , List<RemoteRepository> remoteRepositories 
                                        )
     throws MetadataRetrievalException
     ;

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=678107&r1=678106&r2=678107&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 Fri Jul 18 23:06:33 2008
@@ -25,7 +25,7 @@
   private Set<MetadataTreeArtifactFilter> _filters;
   private List<Comparator<MetadataTreeNode>> _comparators;
   private LocalRepository _localRepository;
-  private Set<RemoteRepository> _remoteRepositories;
+  private List<RemoteRepository> _remoteRepositories;
   
   MetadataTreeNode _root;
   
@@ -34,7 +34,7 @@
       , Set<MetadataTreeArtifactFilter> filters
       , List<Comparator<MetadataTreeNode>> comparators
       , LocalRepository localRepository
-      , Set<RemoteRepository> remoteRepositories
+      , List<RemoteRepository> remoteRepositories
                         )
   {
     this._mdSource = mdSource;

Modified: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/retrieve/ArtifactRetriever.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/retrieve/ArtifactRetriever.java?rev=678107&r1=678106&r2=678107&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/retrieve/ArtifactRetriever.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/retrieve/ArtifactRetriever.java Fri Jul 18 23:06:33 2008
@@ -24,6 +24,7 @@
  * Responsible for retrieving a set of artifacts.
  * 
  * @author Jason van Zyl
+ * @author Oleg Gusakov
  */
 public interface ArtifactRetriever
 {
@@ -31,4 +32,5 @@
 
     /** @since 3.0 */
     ResolutionResult retrieve( ResolutionRequest request );
+
 }
\ No newline at end of file

Modified: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/retrieve/DefaultArtifactRetriever.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/retrieve/DefaultArtifactRetriever.java?rev=678107&r1=678106&r2=678107&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/retrieve/DefaultArtifactRetriever.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/retrieve/DefaultArtifactRetriever.java Fri Jul 18 23:06:33 2008
@@ -25,7 +25,7 @@
 import org.apache.maven.mercury.spi.http.client.retrieve.RetrievalResponse;
 import org.apache.maven.mercury.spi.http.client.retrieve.Retriever;
 
-/*
+/**
  * @author Jason van Zyl
  * 
  * @plexus.component

Modified: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/retrieve/ResolutionRequest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/retrieve/ResolutionRequest.java?rev=678107&r1=678106&r2=678107&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/retrieve/ResolutionRequest.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/retrieve/ResolutionRequest.java Fri Jul 18 23:06:33 2008
@@ -1,5 +1,6 @@
 package org.apache.maven.mercury.retrieve;
 
+import java.util.List;
 import java.util.Set;
 
 import org.apache.maven.mercury.Artifact;
@@ -13,12 +14,13 @@
  * to process a POMs dependencies.
  *
  * @author Jason van Zyl
+ * @author Oleg Gusakov
  */
 public class ResolutionRequest
 {
     private ArtifactMetadata _md;
     private LocalRepository localRepository;
-    private Set<RemoteRepository> remoteRepostories;
+    private List<RemoteRepository> remoteRepostories;
 
     public ArtifactMetadata getMd()
     {
@@ -95,12 +97,12 @@
         return this;
     }
 
-    public Set<RemoteRepository> getRemoteRepostories()
+    public List<RemoteRepository> getRemoteRepostories()
     {
         return remoteRepostories;
     }
 
-    public ResolutionRequest setRemoteRepostories( Set<RemoteRepository> remoteRepostories )
+    public ResolutionRequest setRemoteRepostories( List<RemoteRepository> remoteRepostories )
     {
         this.remoteRepostories = remoteRepostories;
 

Modified: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/retrieve/ResolutionResult.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/retrieve/ResolutionResult.java?rev=678107&r1=678106&r2=678107&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/retrieve/ResolutionResult.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/retrieve/ResolutionResult.java Fri Jul 18 23:06:33 2008
@@ -28,7 +28,7 @@
 import org.apache.maven.mercury.repository.RemoteRepository;
 import org.apache.maven.mercury.repository.Repository;
 
-/*
+/**
  * @author Jason van Zyl
  */
 public class ResolutionResult

Modified: maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/MetadataResolverTest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/MetadataResolverTest.java?rev=678107&r1=678106&r2=678107&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/MetadataResolverTest.java (original)
+++ maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/MetadataResolverTest.java Fri Jul 18 23:06:33 2008
@@ -2,6 +2,7 @@
 
 import java.io.File;
 import java.util.Collection;
+import java.util.List;
 import java.util.Set;
 
 import junit.framework.TestCase;
@@ -84,9 +85,9 @@
     }
 
     class SimpleSource
-        implements MetadataSource
+    implements MetadataSource
     {
-        public MetadataResolution retrieve( ArtifactMetadata artifact, LocalRepository localRepository, Set<RemoteRepository> remoteRepositories )
+        public MetadataResolution retrieve( ArtifactMetadata artifact, LocalRepository localRepository, List<RemoteRepository> remoteRepositories )
             throws MetadataRetrievalException
         {
             //TODO: This assumes that we have already pulled it down
@@ -96,7 +97,7 @@
 
         public Collection<ArtifactMetadata> expand(
             ArtifactMetadata metadataQuery, LocalRepository localRepository,
-            Set<RemoteRepository> remoteRepositories)
+            List<RemoteRepository> remoteRepositories)
             throws MetadataRetrievalException
         {
           // TODO Auto-generated method stub

Modified: maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/MockMetadataSource.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/MockMetadataSource.java?rev=678107&r1=678106&r2=678107&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/MockMetadataSource.java (original)
+++ maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/MockMetadataSource.java Fri Jul 18 23:06:33 2008
@@ -30,7 +30,7 @@
   public Collection<ArtifactMetadata> expand(
                     ArtifactMetadata mdq
                   , LocalRepository localRepository
-                  , Set<RemoteRepository> remoteRepositories
+                  , List<RemoteRepository> remoteRepositories
                                         )
       throws MetadataRetrievalException
   {
@@ -82,7 +82,7 @@
   public MetadataResolution retrieve( 
                       ArtifactMetadata metadata
                     , LocalRepository localRepository
-                    , Set<RemoteRepository> remoteRepositories
+                    , List<RemoteRepository> remoteRepositories
                                     )
       throws MetadataRetrievalException
   {

Added: 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=678107&view=auto
==============================================================================
--- maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/repository/metadata/MetadataReaderTest.java (added)
+++ maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/repository/metadata/MetadataReaderTest.java Fri Jul 18 23:06:33 2008
@@ -0,0 +1,107 @@
+package org.apache.maven.mercury.repository.metadata;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.List;
+
+import org.apache.maven.mercury.repository.metadata.io.xpp3.MetadataXpp3Reader;
+import org.apache.maven.mercury.spi.http.client.Binding;
+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.spi.http.server.SimpleTestServer;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+
+import junit.framework.TestCase;
+
+public class MetadataReaderTest
+extends TestCase
+{
+  MetadataXpp3Reader _reader;
+  File _testBase = new File("./target/test-classes/controlledRepo");
+  DefaultRetriever _retriever;
+  public String _port;
+  HttpTestServer _server;
+  DefaultRetrievalRequest _request;
+
+
+  @Override
+  protected void setUp()
+  throws Exception
+  {
+//    File [] list = _testBase.listFiles();
+//    if( list != null )
+//    {
+//      for( File f : list )
+//        System.out.println( f.getCanonicalPath() );
+//    }
+//    else
+//      System.out.println("no files in "+_testBase.getCanonicalPath() );
+    
+    _retriever = new DefaultRetriever();
+    _server = new HttpTestServer( _testBase, "/repo" );
+    _server.start();
+    _port = String.valueOf( _server.getPort() );
+
+    _reader = new MetadataXpp3Reader();
+    _request = new DefaultRetrievalRequest();
+  }
+
+  protected void tearDown()
+  throws Exception
+  {
+      super.tearDown();
+      _server.stop();
+      _server.destroy();
+  }
+
+  public void testReadMd()
+  throws FileNotFoundException, IOException, XmlPullParserException
+  {
+     Metadata mmd = _reader.read( new FileInputStream( new File( _testBase, "a/a/maven-metadata.xml") ) );
+     validateMmd( mmd );
+  }
+
+
+  public void testReadRemoteMd()
+  throws FileNotFoundException, IOException, XmlPullParserException
+  {
+    File temp = File.createTempFile("maven", "metadata" );
+    HashSet<Binding> bindings = new HashSet<Binding>();
+    
+    Binding aaMdBinding = new Binding( "http://localhost:"+_port+"/repo/a/a/maven-metadata.xml", temp, true );
+    bindings.add( aaMdBinding );
+    
+    _request.setBindings(bindings);
+    
+    RetrievalResponse response = _retriever.retrieve(_request);
+    
+    if( response.hasExceptions() )
+      fail("retrieval exceptions: "+response.getExceptions() );
+    
+    Metadata mmd = _reader.read( new FileInputStream( temp ) );
+    temp.delete();
+    
+    validateMmd( mmd );
+    
+  }
+  
+  private void validateMmd( Metadata mmd )
+  {
+    assertNotNull( mmd );
+    assertEquals("a", mmd.getGroupId() );
+    assertEquals("a", mmd.getArtifactId() );
+
+    assertNotNull( mmd.getVersioning() );
+    
+    List<String> versions = mmd.getVersioning().getVersions();
+    
+    assertNotNull( versions );
+    assertTrue( versions.size() > 3 );
+  }
+  
+}

Added: maven/sandbox/trunk/mercury/src/test/resources/controlledRepo/a/a/maven-metadata.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/test/resources/controlledRepo/a/a/maven-metadata.xml?rev=678107&view=auto
==============================================================================
--- maven/sandbox/trunk/mercury/src/test/resources/controlledRepo/a/a/maven-metadata.xml (added)
+++ maven/sandbox/trunk/mercury/src/test/resources/controlledRepo/a/a/maven-metadata.xml Fri Jul 18 23:06:33 2008
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?><metadata>
+  <groupId>a</groupId>
+  <artifactId>a</artifactId>
+  <version>4</version>
+  <versioning>
+    <release>4</release>
+    <versions>
+      <version>1</version>
+      <version>2</version>
+      <version>3</version>
+      <version>4</version>
+     </versions>
+    <lastUpdated>20080424212921</lastUpdated>
+  </versioning>
+</metadata>
\ No newline at end of file