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 );