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