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