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 01:08:31 UTC
svn commit: r680873 - in /maven/sandbox/trunk/mercury: ./
src/main/java/org/apache/maven/mercury/
src/main/java/org/apache/maven/mercury/metadata/
src/main/java/org/apache/maven/mercury/repository/
src/main/java/org/apache/maven/mercury/repository/api/...
Author: ogusakov
Date: Tue Jul 29 16:08:30 2008
New Revision: 680873
URL: http://svn.apache.org/viewvc?rev=680873&view=rev
Log:
further preparations for project split. Implemented RemoteRepositoryReaderM2 with jetty client transport. No tests yet - waiting for jetty ..
Added:
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/ClasspathContainer.java (contents, props changed)
- copied, changed from r680513, maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/transform/ClasspathContainer.java
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/AbstractRepository.java (contents, props changed)
- copied, changed from r680571, maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/AbstractRepository.java
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/LocalRepository.java (contents, props changed)
- copied, changed from r680571, maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/LocalRepository.java
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/MetadataProcessingException.java (contents, props changed)
- copied, changed from r680571, maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/MetadataProcessingException.java
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/MetadataProcessor.java (contents, props changed)
- copied, changed from r680571, maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/MetadataProcessor.java
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/MetadataReader.java (contents, props changed)
- copied, changed from r680571, maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/MetadataReader.java
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/RemoteRepository.java (contents, props changed)
- copied, changed from r680571, maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/RemoteRepository.java
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/Repository.java (contents, props changed)
- copied, changed from r680571, maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/Repository.java
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryM2.java (contents, props changed)
- copied, changed from r680571, maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/DefaultLocalRepository.java
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryM2.java (contents, props changed)
- copied, changed from r680571, maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/DefaultRemoteRepository.java
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryReaderM2.java (contents, props changed)
- copied, changed from r680782, maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryReaderM2.java
Removed:
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/AbstractRepository.java
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/DefaultLocalRepository.java
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/DefaultRemoteRepository.java
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/LocalRepository.java
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/MetadataProcessingException.java
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/MetadataProcessor.java
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/MetadataReader.java
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/RemoteRepository.java
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/Repository.java
Modified:
maven/sandbox/trunk/mercury/pom.xml
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/Artifact.java
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/ArtifactMetadata.java
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/DefaultArtifact.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/repository/api/RepositoryCallback.java
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/RepositoryReader.java
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/RepositoryWriter.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/LocalRepositoryReaderM2.java
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/transport/SHA1Verifier.java
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/transport/api/Binding.java
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/transport/api/TransportTransaction.java
maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/AbstractSimpleTreeTest.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/metadata/sat/DefaultSatSolverTest.java
maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/repository/MetadataProcessorMock.java
Modified: maven/sandbox/trunk/mercury/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/pom.xml?rev=680873&r1=680872&r2=680873&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/pom.xml (original)
+++ maven/sandbox/trunk/mercury/pom.xml Tue Jul 29 16:08:30 2008
@@ -150,5 +150,10 @@
<artifactId>slf4j-simple</artifactId>
<version>1.5.2</version>
</dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-i18n</artifactId>
+ <version>1.0-beta-10-SNAPSHOT</version>
+ </dependency>
</dependencies>
</project>
Modified: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/Artifact.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/Artifact.java?rev=680873&r1=680872&r2=680873&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/Artifact.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/Artifact.java Tue Jul 29 16:08:30 2008
@@ -16,11 +16,8 @@
*/
import java.io.File;
-import java.util.List;
import java.util.regex.Pattern;
-import org.apache.maven.mercury.repository.Repository;
-
/*
* Description of an artifact.
*
Modified: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/ArtifactMetadata.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/ArtifactMetadata.java?rev=680873&r1=680872&r2=680873&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/ArtifactMetadata.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/ArtifactMetadata.java Tue Jul 29 16:08:30 2008
@@ -1,6 +1,5 @@
package org.apache.maven.mercury;
-import java.util.Collection;
import java.util.List;
Modified: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/DefaultArtifact.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/DefaultArtifact.java?rev=680873&r1=680872&r2=680873&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/DefaultArtifact.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/DefaultArtifact.java Tue Jul 29 16:08:30 2008
@@ -16,11 +16,8 @@
*/
import java.io.File;
-import java.util.List;
-import java.util.regex.Matcher;
-import org.apache.maven.mercury.repository.Repository;
-import org.codehaus.plexus.util.StringUtils;
+import org.apache.maven.mercury.repository.api.Repository;
/*
* @author Jason van Zyl
Copied: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/ClasspathContainer.java (from r680513, maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/transform/ClasspathContainer.java)
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/ClasspathContainer.java?p2=maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/ClasspathContainer.java&p1=maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/transform/ClasspathContainer.java&r1=680513&r2=680873&rev=680873&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/transform/ClasspathContainer.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/ClasspathContainer.java Tue Jul 29 16:08:30 2008
@@ -1,4 +1,4 @@
-package org.apache.maven.mercury.metadata.transform;
+package org.apache.maven.mercury.metadata;
import java.util.ArrayList;
import java.util.Iterator;
@@ -6,7 +6,6 @@
import org.apache.maven.mercury.ArtifactMetadata;
import org.apache.maven.mercury.ArtifactScopeEnum;
-import org.apache.maven.mercury.metadata.MetadataTreeNode;
/*
* classpath container that is aware of the classpath scope
Propchange: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/ClasspathContainer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/ClasspathContainer.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/ClasspathContainer.java
------------------------------------------------------------------------------
svn:mergeinfo =
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=680873&r1=680872&r2=680873&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 Tue Jul 29 16:08:30 2008
@@ -11,9 +11,7 @@
import org.apache.maven.mercury.ArtifactScopeEnum;
import org.apache.maven.mercury.metadata.sat.DefaultSatSolver;
import org.apache.maven.mercury.metadata.sat.SatException;
-import org.apache.maven.mercury.repository.LocalRepository;
-import org.apache.maven.mercury.repository.RemoteRepository;
-import org.apache.maven.mercury.repository.Repository;
+import org.apache.maven.mercury.repository.api.Repository;
import org.apache.maven.mercury.repository.api.RepositoryException;
import org.apache.maven.mercury.repository.api.VirtualRepositoryReader;
Copied: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/AbstractRepository.java (from r680571, maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/AbstractRepository.java)
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/AbstractRepository.java?p2=maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/AbstractRepository.java&p1=maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/AbstractRepository.java&r1=680571&r2=680873&rev=680873&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/AbstractRepository.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/AbstractRepository.java Tue Jul 29 16:08:30 2008
@@ -1,4 +1,11 @@
-package org.apache.maven.mercury.repository;
+package org.apache.maven.mercury.repository.api;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.codehaus.plexus.i18n.DefaultLanguage;
+import org.codehaus.plexus.i18n.Language;
/*
@@ -17,56 +24,155 @@
*/
/**
- * parent of all repositories
+ * parent of all repositories and also a helper class for registration of readers/writers
+ *
+ *
*/
public abstract class AbstractRepository
implements Repository
{
- public static final String DEFAULT_READ_PROTOCOL = "http";
- public static final String DEFAULT_WRITE_PROTOCOL = "http";
+ private static final Language lang = new DefaultLanguage( AbstractRepository.class );
+ //---------------------------------------------------------------------------
+ public static final String DEFAULT_REMOTE_READ_PROTOCOL = "http";
+ public static final String DEFAULT_REMOTE_WRITE_PROTOCOL = "http";
public static final String DEFAULT_LOCAL_READ_PROTOCOL = "file";
public static final String DEFAULT_LOCAL_WRITE_PROTOCOL = "file";
+ public static final String DEFAULT_REPOSITORY_TYPE = "m2";
+
private String id;
- private String defaultReadProtocol = DEFAULT_READ_PROTOCOL;
+ private String defaultReadProtocol = DEFAULT_REMOTE_READ_PROTOCOL;
- private String defaultWriteProtocol = DEFAULT_WRITE_PROTOCOL;
+ private String defaultWriteProtocol = DEFAULT_REMOTE_WRITE_PROTOCOL;
+ //---------------------------------------------------------------------------
+ private static Map< String, RepositoryReaderFactory > readerRegistry = Collections.synchronizedMap( new HashMap<String, RepositoryReaderFactory>(4) );
+ private static Map< String, RepositoryWriterFactory > writerRegistry = Collections.synchronizedMap( new HashMap<String, RepositoryWriterFactory>(4) );
+ //---------------------------------------------------------------------------
+ protected String type = DEFAULT_REPOSITORY_TYPE;
protected MetadataProcessor processor;
-
- public AbstractRepository( String id, MetadataProcessor processor )
+ protected RepositoryReader reader;
+ protected RepositoryWriter writer;
+ //---------------------------------------------------------------------------
+ public AbstractRepository( String id, String type, MetadataProcessor processor )
{
this.id = id;
this.processor = processor;
}
-
+ //---------------------------------------------------------------------------
public String getId()
{
return id;
}
-
+ //---------------------------------------------------------------------------
+ public MetadataProcessor getMetadataProcessor()
+ {
+ return processor;
+ }
+ //---------------------------------------------------------------------------
+ public void setMetadataProcessor( MetadataProcessor processor )
+ {
+ this.processor = processor;
+ }
+ //---------------------------------------------------------------------------
public String getDefaultReadProtocol()
{
return defaultReadProtocol;
}
-
+ //---------------------------------------------------------------------------
public void setDefaultReadProtocol(
String defaultReadProtocol )
{
this.defaultReadProtocol = defaultReadProtocol;
}
-
+ //---------------------------------------------------------------------------
public String getDefaultWriteProtocol()
{
return defaultWriteProtocol;
}
-
- public void setDefaultWriteProtocol(
- String defaultWriteProtocol )
+ //---------------------------------------------------------------------------
+ public void setDefaultWriteProtocol( String defaultWriteProtocol )
{
this.defaultWriteProtocol = defaultWriteProtocol;
}
-
+ //---------------------------------------------------------------------------
+ public static void register( String type, RepositoryReaderFactory readerFactory )
+ throws IllegalArgumentException
+ {
+ if( type == null || type.length() < 1 )
+ throw new IllegalArgumentException( lang.getMessage( "null.reader.type" ) );
+
+ if( readerFactory == null )
+ throw new IllegalArgumentException( lang.getMessage( "null.reader.factory" ) );
+
+ readerRegistry.put( type, readerFactory );
+ }
+ //---------------------------------------------------------------------------
+ public static void register( String type, RepositoryWriterFactory writerFactory )
+ throws IllegalArgumentException
+ {
+ if( type == null || type.length() < 1 )
+ throw new IllegalArgumentException( lang.getMessage( "null.writer.type" ) );
+
+ if( writerFactory == null )
+ throw new IllegalArgumentException( lang.getMessage( "null.writer.factory" ) );
+
+ writerRegistry.put( type, writerFactory );
+ }
+ //---------------------------------------------------------------------------
+ public static void upregisterReader( String type )
+ throws IllegalArgumentException
+ {
+ if( type == null || type.length() < 1 )
+ throw new IllegalArgumentException( lang.getMessage( "null.reader.type" ) );
+
+ readerRegistry.remove( type );
+ }
+ //---------------------------------------------------------------------------
+ public static void upregisterWriter( String type )
+ throws IllegalArgumentException
+ {
+ if( type == null || type.length() < 1 )
+ throw new IllegalArgumentException( lang.getMessage( "null.writer.type" ) );
+
+ writerRegistry.remove( type );
+ }
+ //---------------------------------------------------------------------------
+ public static RepositoryReader getReader( String type, Repository repo, MetadataProcessor mdProcessor )
+ throws IllegalArgumentException, RepositoryException
+ {
+ if( type == null || type.length() < 1 )
+ throw new IllegalArgumentException( lang.getMessage( "null.reader.type" ) );
+
+ if( repo == null )
+ throw new IllegalArgumentException( lang.getMessage( "null.reader.repo" ) );
+
+ RepositoryReaderFactory rf = readerRegistry.get( type );
+
+ if( rf == null )
+ throw new RepositoryException( lang.getMessage( "null.reader.factory.found" ) );
+
+ return rf.getReader( repo, mdProcessor );
+ }
+ //---------------------------------------------------------------------------
+ public static RepositoryWriter getWriter( String type, Repository repo, MetadataProcessor mdProcessor )
+ throws IllegalArgumentException, RepositoryException
+ {
+ if( type == null || type.length() < 1 )
+ throw new IllegalArgumentException( lang.getMessage( "null.writer.type" ) );
+
+ if( repo == null )
+ throw new IllegalArgumentException( lang.getMessage( "null.writer.repo" ) );
+
+ RepositoryWriterFactory wf = writerRegistry.get( type );
+
+ if( wf == null )
+ throw new RepositoryException( lang.getMessage( "null.writer.factory.found" ) );
+
+ return wf.getWriter( repo, mdProcessor );
+ }
+ //---------------------------------------------------------------------------
+ //---------------------------------------------------------------------------
}
Propchange: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/AbstractRepository.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/AbstractRepository.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/AbstractRepository.java
------------------------------------------------------------------------------
svn:mergeinfo =
Copied: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/LocalRepository.java (from r680571, maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/LocalRepository.java)
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/LocalRepository.java?p2=maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/LocalRepository.java&p1=maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/LocalRepository.java&r1=680571&r2=680873&rev=680873&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/LocalRepository.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/LocalRepository.java Tue Jul 29 16:08:30 2008
@@ -1,4 +1,4 @@
-package org.apache.maven.mercury.repository;
+package org.apache.maven.mercury.repository.api;
import java.io.File;
Propchange: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/LocalRepository.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/LocalRepository.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/LocalRepository.java
------------------------------------------------------------------------------
svn:mergeinfo =
Copied: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/MetadataProcessingException.java (from r680571, maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/MetadataProcessingException.java)
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/MetadataProcessingException.java?p2=maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/MetadataProcessingException.java&p1=maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/MetadataProcessingException.java&r1=680571&r2=680873&rev=680873&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/MetadataProcessingException.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/MetadataProcessingException.java Tue Jul 29 16:08:30 2008
@@ -1,4 +1,4 @@
-package org.apache.maven.mercury.repository;
+package org.apache.maven.mercury.repository.api;
/**
*
Propchange: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/MetadataProcessingException.java
------------------------------------------------------------------------------
svn:mergeinfo =
Copied: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/MetadataProcessor.java (from r680571, maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/MetadataProcessor.java)
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/MetadataProcessor.java?p2=maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/MetadataProcessor.java&p1=maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/MetadataProcessor.java&r1=680571&r2=680873&rev=680873&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/MetadataProcessor.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/MetadataProcessor.java Tue Jul 29 16:08:30 2008
@@ -1,4 +1,4 @@
-package org.apache.maven.mercury.repository;
+package org.apache.maven.mercury.repository.api;
import java.util.List;
Propchange: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/MetadataProcessor.java
------------------------------------------------------------------------------
svn:mergeinfo =
Copied: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/MetadataReader.java (from r680571, maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/MetadataReader.java)
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/MetadataReader.java?p2=maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/MetadataReader.java&p1=maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/MetadataReader.java&r1=680571&r2=680873&rev=680873&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/MetadataReader.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/MetadataReader.java Tue Jul 29 16:08:30 2008
@@ -1,9 +1,35 @@
-package org.apache.maven.mercury.repository;
+package org.apache.maven.mercury.repository.api;
import org.apache.maven.mercury.ArtifactBasicMetadata;
+/**
+ * This interface implementation is supplied to MetadataProcessor to simplify it's access to remote repositories
+ *
+ *
+ * @author Oleg Gusakov
+ * @version $Id$
+ *
+ */
public interface MetadataReader
{
- public byte [] readMetadata( ArtifactBasicMetadata md )
+ /**
+ * read content pointed by bmd. It will return POM bytes regardless of actual bmd type
+ *
+ * @param bmd coordinates
+ * @param type - replaces the getType() from bmd if not null
+ * @return
+ * @throws MetadataProcessingException
+ */
+ public byte [] readRawData( ArtifactBasicMetadata bmd, String type )
+ throws MetadataProcessingException;
+
+ /**
+ * read metadata for the artifact, pointed by bmd. It will return POM bytes regardless of actual bmd type
+ *
+ * @param bmd
+ * @return
+ * @throws MetadataProcessingException
+ */
+ public byte [] readMetadata( ArtifactBasicMetadata bmd )
throws MetadataProcessingException;
}
Propchange: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/MetadataReader.java
------------------------------------------------------------------------------
svn:mergeinfo =
Copied: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/RemoteRepository.java (from r680571, maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/RemoteRepository.java)
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/RemoteRepository.java?p2=maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/RemoteRepository.java&p1=maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/RemoteRepository.java&r1=680571&r2=680873&rev=680873&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/RemoteRepository.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/RemoteRepository.java Tue Jul 29 16:08:30 2008
@@ -1,4 +1,6 @@
-package org.apache.maven.mercury.repository;
+package org.apache.maven.mercury.repository.api;
+
+import org.apache.maven.mercury.transport.api.Server;
/*
@@ -23,7 +25,7 @@
/**
*/
public interface RemoteRepository
- extends Repository
+extends Repository
{
- String getUrl();
+ Server getServer();
}
Propchange: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/RemoteRepository.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/RemoteRepository.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/RemoteRepository.java
------------------------------------------------------------------------------
svn:mergeinfo =
Copied: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/Repository.java (from r680571, maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/Repository.java)
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/Repository.java?p2=maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/Repository.java&p1=maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/Repository.java&r1=680571&r2=680873&rev=680873&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/Repository.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/Repository.java Tue Jul 29 16:08:30 2008
@@ -1,8 +1,5 @@
-package org.apache.maven.mercury.repository;
+package org.apache.maven.mercury.repository.api;
-import org.apache.maven.mercury.repository.api.NonExistentProtocolException;
-import org.apache.maven.mercury.repository.api.RepositoryReader;
-import org.apache.maven.mercury.repository.api.RepositoryWriter;
/*
* Licensed to the Apache Software Foundation (ASF) under one
@@ -31,6 +28,12 @@
/**
+ * repository type - m2, nexus, ivy, p2 - to name a few. It defines the RepositoryReader/Writer
+ * that will be searched for in the registry.
+ */
+ public String getType();
+
+ /**
* Indicates whether this is local Repository. This flag defines the necessity to download
* the artifact, if it was cleared by the conflict resolver but not read from a localRepo.
*/
Propchange: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/Repository.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/Repository.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/Repository.java
------------------------------------------------------------------------------
svn:mergeinfo =
Modified: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/RepositoryCallback.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/RepositoryCallback.java?rev=680873&r1=680872&r2=680873&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/RepositoryCallback.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/RepositoryCallback.java Tue Jul 29 16:08:30 2008
@@ -1,6 +1,5 @@
package org.apache.maven.mercury.repository.api;
-import java.util.List;
/**
* This is a generic repository event callback. Used by all repository operations
Modified: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/RepositoryReader.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/RepositoryReader.java?rev=680873&r1=680872&r2=680873&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/RepositoryReader.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/RepositoryReader.java Tue Jul 29 16:08:30 2008
@@ -3,12 +3,9 @@
import java.util.List;
import java.util.Map;
-import org.apache.maven.mercury.Artifact;
import org.apache.maven.mercury.ArtifactBasicMetadata;
import org.apache.maven.mercury.ArtifactMetadata;
import org.apache.maven.mercury.DefaultArtifact;
-import org.apache.maven.mercury.repository.MetadataProcessor;
-import org.apache.maven.mercury.repository.Repository;
/**
* Repository reader API to be implemented by any repo implementation that wishes
@@ -20,6 +17,7 @@
*
*/
public interface RepositoryReader
+extends RepositoryOperator, MetadataReader
{
/**
* given basic coordinates query - instantiate all available matches as ArtifactBasicMetadata objects.
@@ -68,4 +66,5 @@
* Need if to trick circular dependency on maven-project, projectBuilder hides behind this processor
*/
public void setMetadataProcessor( MetadataProcessor mdProcessor );
+ public MetadataProcessor getMetadataProcessor();
}
Modified: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/RepositoryWriter.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/RepositoryWriter.java?rev=680873&r1=680872&r2=680873&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/RepositoryWriter.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/api/RepositoryWriter.java Tue Jul 29 16:08:30 2008
@@ -14,6 +14,7 @@
*
*/
public interface RepositoryWriter
+extends RepositoryOperator
{
/**
* write (upload) given artifact to the repository
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=680873&r1=680872&r2=680873&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 Tue Jul 29 16:08:30 2008
@@ -1,17 +1,12 @@
package org.apache.maven.mercury.repository.api;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.maven.mercury.ArtifactBasicMetadata;
import org.apache.maven.mercury.ArtifactMetadata;
-import org.apache.maven.mercury.metadata.MetadataTreeException;
-import org.apache.maven.mercury.repository.LocalRepository;
-import org.apache.maven.mercury.repository.RemoteRepository;
-import org.apache.maven.mercury.repository.Repository;
/**
* this helper class hides the necessity to talk to localRepo and a bunch of remoteRepos.
@@ -84,13 +79,24 @@
_repositoryReaders = new RepositoryReader[ repositoryCount ];
+ // move local repo's upfront - they are faster!
int i = 0;
for( Repository r : _repositories )
{
+ if( ! r.isLocal() )
+ continue;
+
_repositoryReaders[ i++ ] = r.getReader();
- if( r.isLocal() )
+ if( ! r.isReadOnly() )
_localRepository = (LocalRepository)r.getReader().getRepository();
}
+ for( Repository r : _repositories )
+ {
+ if( r.isLocal() )
+ continue;
+
+ _repositoryReaders[ i++ ] = r.getReader();
+ }
_initialized = true;
}
//----------------------------------------------------------------------------------------------------------------------------
Copied: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryM2.java (from r680571, maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/DefaultLocalRepository.java)
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryM2.java?p2=maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryM2.java&p1=maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/DefaultLocalRepository.java&r1=680571&r2=680873&rev=680873&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/DefaultLocalRepository.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryM2.java Tue Jul 29 16:08:30 2008
@@ -1,30 +1,37 @@
-package org.apache.maven.mercury.repository;
+package org.apache.maven.mercury.repository.local.m2;
import java.io.File;
+import org.apache.maven.mercury.repository.api.AbstractRepository;
+import org.apache.maven.mercury.repository.api.LocalRepository;
+import org.apache.maven.mercury.repository.api.MetadataProcessor;
import org.apache.maven.mercury.repository.api.NonExistentProtocolException;
import org.apache.maven.mercury.repository.api.RepositoryReader;
import org.apache.maven.mercury.repository.api.RepositoryWriter;
-import org.apache.maven.mercury.repository.local.m2.LocalRepositoryReaderM2;
-public class DefaultLocalRepository
+public class LocalRepositoryM2
extends AbstractRepository
implements LocalRepository
{
private File directory;
- private RepositoryReader reader;
-
- public DefaultLocalRepository( String id, File directory, MetadataProcessor processor )
+ //----------------------------------------------------------------------------------
+ public LocalRepositoryM2( String id, File directory, MetadataProcessor processor )
{
- super( id, processor );
+ super( id, DEFAULT_REPOSITORY_TYPE, processor );
this.directory = directory;
}
-
+ //----------------------------------------------------------------------------------
+ public LocalRepositoryM2( String id, File directory, MetadataProcessor processor, String type )
+ {
+ super( id, type, processor );
+ this.directory = directory;
+ }
+ //----------------------------------------------------------------------------------
public File getDirectory()
{
return directory;
}
-
+ //----------------------------------------------------------------------------------
public RepositoryReader getReader()
{
if( reader == null )
@@ -32,31 +39,38 @@
return reader;
}
-
+ //----------------------------------------------------------------------------------
public RepositoryReader getReader( String protocol )
{
return getReader();
}
-
+ //----------------------------------------------------------------------------------
public RepositoryWriter getWriter()
{
// TODO Auto-generated method stub
return null;
}
-
+ //----------------------------------------------------------------------------------
public RepositoryWriter getWriter( String protocol )
throws NonExistentProtocolException
{
return null;
}
-
+ //----------------------------------------------------------------------------------
public boolean isLocal()
{
return true;
}
-
+ //----------------------------------------------------------------------------------
public boolean isReadOnly()
{
return false;
}
+ //----------------------------------------------------------------------------------
+ public String getType()
+ {
+ return DEFAULT_REPOSITORY_TYPE;
+ }
+ //----------------------------------------------------------------------------------
+ //----------------------------------------------------------------------------------
}
Propchange: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryM2.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryM2.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryM2.java
------------------------------------------------------------------------------
svn:mergeinfo =
Modified: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryReaderM2.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryReaderM2.java?rev=680873&r1=680872&r2=680873&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryReaderM2.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryReaderM2.java Tue Jul 29 16:08:30 2008
@@ -12,25 +12,27 @@
import org.apache.maven.mercury.DefaultArtifact;
import org.apache.maven.mercury.metadata.version.VersionException;
import org.apache.maven.mercury.metadata.version.VersionRange;
-import org.apache.maven.mercury.repository.LocalRepository;
-import org.apache.maven.mercury.repository.MetadataProcessingException;
-import org.apache.maven.mercury.repository.MetadataProcessor;
-import org.apache.maven.mercury.repository.MetadataReader;
-import org.apache.maven.mercury.repository.Repository;
+import org.apache.maven.mercury.repository.api.AbstracRepositoryReader;
+import org.apache.maven.mercury.repository.api.AbstractRepository;
+import org.apache.maven.mercury.repository.api.LocalRepository;
+import org.apache.maven.mercury.repository.api.MetadataProcessingException;
+import org.apache.maven.mercury.repository.api.MetadataProcessor;
+import org.apache.maven.mercury.repository.api.MetadataReader;
+import org.apache.maven.mercury.repository.api.Repository;
import org.apache.maven.mercury.repository.api.RepositoryException;
import org.apache.maven.mercury.repository.api.RepositoryOperationResult;
import org.apache.maven.mercury.repository.api.RepositoryReader;
-import org.mortbay.log.Log;
public class LocalRepositoryReaderM2
+extends AbstracRepositoryReader
implements RepositoryReader, MetadataReader
{
private static final org.slf4j.Logger _log = org.slf4j.LoggerFactory.getLogger( LocalRepositoryReaderM2.class );
//---------------------------------------------------------------------------------------------------------------
+ private static final String [] _protocols = new String [] { "file" };
+
LocalRepository _repo;
File _repoDir;
-
- MetadataProcessor _mdProcessor;
//---------------------------------------------------------------------------------------------------------------
public LocalRepositoryReaderM2( LocalRepository repo, MetadataProcessor mdProcessor )
{
@@ -172,17 +174,18 @@
return res;
}
//---------------------------------------------------------------------------------------------------------------
- public void setMetadataProcessor( MetadataProcessor mdProcessor )
+ public byte[] readMetadata( ArtifactBasicMetadata bmd )
+ throws MetadataProcessingException
{
- this._mdProcessor = mdProcessor;
+ return readRawData( bmd, "pom" );
}
//---------------------------------------------------------------------------------------------------------------
- public byte[] readMetadata( ArtifactBasicMetadata bmd )
+ public byte[] readRawData( ArtifactBasicMetadata bmd, String type )
throws MetadataProcessingException
{
String bmdPath = bmd.getGroupId().replace( '.', '/' )+"/"+bmd.getArtifactId()+"/"+bmd.getVersion();
- File pomFile = new File( _repoDir, bmdPath+"/"+bmd.getBaseName()+".pom" );
+ File pomFile = new File( _repoDir, bmdPath+"/"+bmd.getBaseName()+'.' + (type == null ? bmd.getType() : type ) );
if( ! pomFile.exists() )
return null;
@@ -207,5 +210,18 @@
}
}
//---------------------------------------------------------------------------------------------------------------
+ public boolean canHandle( String protocol )
+ {
+ return AbstractRepository.DEFAULT_LOCAL_READ_PROTOCOL.equals( protocol );
+ }
+ //---------------------------------------------------------------------------------------------------------------
+ public String[] getProtocols()
+ {
+ return _protocols;
+ }
+ //---------------------------------------------------------------------------------------------------------------
+ public void close()
+ {
+ }
//---------------------------------------------------------------------------------------------------------------
}
Copied: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryM2.java (from r680571, maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/DefaultRemoteRepository.java)
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryM2.java?p2=maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryM2.java&p1=maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/DefaultRemoteRepository.java&r1=680571&r2=680873&rev=680873&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/DefaultRemoteRepository.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryM2.java Tue Jul 29 16:08:30 2008
@@ -1,57 +1,69 @@
-package org.apache.maven.mercury.repository;
+package org.apache.maven.mercury.repository.remote.m2;
+import org.apache.maven.mercury.repository.api.AbstractRepository;
+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.RepositoryReader;
import org.apache.maven.mercury.repository.api.RepositoryWriter;
+import org.apache.maven.mercury.transport.api.Server;
-public class DefaultRemoteRepository
+
+public class RemoteRepositoryM2
extends AbstractRepository
implements RemoteRepository
{
- private String url;
-
- public DefaultRemoteRepository( String id, String url, MetadataProcessor processor )
+ private Server _server;
+ //----------------------------------------------------------------------------------
+ public RemoteRepositoryM2( String id, Server server, MetadataProcessor processor )
{
- super( id, processor );
- this.url = url;
+ super( id, DEFAULT_REPOSITORY_TYPE, processor );
+ this._server = server;
}
-
- public String getUrl()
+ //----------------------------------------------------------------------------------
+ public Server getServer()
{
- return url;
+ return _server;
}
-
+ //----------------------------------------------------------------------------------
public RepositoryReader getReader()
{
return null;
}
-
+ //----------------------------------------------------------------------------------
public RepositoryReader getReader( String protocol )
{
// TODO Auto-generated method stub
return null;
}
-
+ //----------------------------------------------------------------------------------
public RepositoryWriter getWriter()
{
// TODO Auto-generated method stub
return null;
}
-
+ //----------------------------------------------------------------------------------
public RepositoryWriter getWriter( String protocol )
throws NonExistentProtocolException
{
// TODO Auto-generated method stub
return null;
}
-
+ //----------------------------------------------------------------------------------
public boolean isLocal()
{
return false;
}
-
+ //----------------------------------------------------------------------------------
public boolean isReadOnly()
{
return false;
}
+ //----------------------------------------------------------------------------------
+ public String getType()
+ {
+ return DEFAULT_REPOSITORY_TYPE;
+ }
+ //----------------------------------------------------------------------------------
+ //----------------------------------------------------------------------------------
}
Propchange: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryM2.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryM2.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryM2.java
------------------------------------------------------------------------------
svn:mergeinfo =
Copied: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryReaderM2.java (from r680782, maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryReaderM2.java)
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryReaderM2.java?p2=maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryReaderM2.java&p1=maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryReaderM2.java&r1=680782&r2=680873&rev=680873&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryReaderM2.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryReaderM2.java Tue Jul 29 16:08:30 2008
@@ -1,5 +1,6 @@
package org.apache.maven.mercury.repository.remote.m2;
+import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
@@ -12,44 +13,81 @@
import org.apache.maven.mercury.DefaultArtifact;
import org.apache.maven.mercury.metadata.version.VersionException;
import org.apache.maven.mercury.metadata.version.VersionRange;
-import org.apache.maven.mercury.repository.LocalRepository;
-import org.apache.maven.mercury.repository.MetadataProcessingException;
-import org.apache.maven.mercury.repository.MetadataProcessor;
-import org.apache.maven.mercury.repository.MetadataReader;
-import org.apache.maven.mercury.repository.Repository;
+import org.apache.maven.mercury.repository.api.AbstracRepositoryReader;
+import org.apache.maven.mercury.repository.api.AbstractRepository;
+import org.apache.maven.mercury.repository.api.MetadataProcessingException;
+import org.apache.maven.mercury.repository.api.MetadataProcessor;
+import org.apache.maven.mercury.repository.api.MetadataReader;
+import org.apache.maven.mercury.repository.api.RemoteRepository;
+import org.apache.maven.mercury.repository.api.Repository;
import org.apache.maven.mercury.repository.api.RepositoryException;
import org.apache.maven.mercury.repository.api.RepositoryOperationResult;
import org.apache.maven.mercury.repository.api.RepositoryReader;
-import org.mortbay.log.Log;
-
+import org.apache.maven.mercury.repository.metadata.Metadata;
+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.MercuryException;
+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.codehaus.plexus.i18n.DefaultLanguage;
+import org.codehaus.plexus.i18n.Language;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+/**
+ * implementation of M2 remote repository reader. Actual Transport used comes from RemoteRepository Server' URL
+ *
+ * Current implementation does not do the check and uses jetty-client directly.
+ * TODO - re-implements after jetty-client implements Transport
+ *
+ *
+ * @author Oleg Gusakov
+ * @version $Id$
+ *
+ */
public class RemoteRepositoryReaderM2
+extends AbstracRepositoryReader
implements RepositoryReader, MetadataReader
{
private static final org.slf4j.Logger _log = org.slf4j.LoggerFactory.getLogger( RemoteRepositoryReaderM2.class );
- //---------------------------------------------------------------------------------------------------------------
- LocalRepository _repo;
- File _repoDir;
+ private static final Language _lang = new DefaultLanguage( RemoteRepositoryReaderM2.class );
+ // TODO - replace with known Transport's protocols. Should be similar to RepositoryReader/Writer registration
+ private static final String [] _protocols = new String [] { "http", "https" };
- MetadataProcessor _mdProcessor;
+ // TODO replace with Transport
+ private DefaultRetriever _transport;
//---------------------------------------------------------------------------------------------------------------
- public RemoteRepositoryReaderM2( LocalRepository repo, MetadataProcessor mdProcessor )
+ RemoteRepository _repo;
+ //---------------------------------------------------------------------------------------------------------------
+ public RemoteRepositoryReaderM2( RemoteRepository repo, MetadataProcessor mdProcessor )
+ throws RepositoryException
{
+
if( repo == null )
- throw new IllegalArgumentException("localRepo cannot be null");
+ throw new IllegalArgumentException( _lang.getMessage( "bad.repository.null") );
- _repoDir = repo.getDirectory();
- if( _repoDir == null )
- throw new IllegalArgumentException("localRepo directory cannot be null");
+ if( repo.getServer() == null )
+ throw new IllegalArgumentException( _lang.getMessage( "bad.repository.server.null") );
+
+ if( repo.getServer().getURL() == null )
+ throw new IllegalArgumentException( _lang.getMessage( "bad.repository.server.url.null") );
- if( !_repoDir.exists() )
- throw new IllegalArgumentException("localRepo directory \""+_repoDir.getAbsolutePath()+"\" should exist");
-
_repo = repo;
if( mdProcessor == null )
throw new IllegalArgumentException("MetadataProcessor cannot be null ");
setMetadataProcessor( mdProcessor );
+
+ try
+ {
+ // TODO 2008-07-29 og: here I should analyze Server protocol
+ // and come with appropriate Transport implementation
+ _transport = new DefaultRetriever();
+ }
+ catch( MercuryException e )
+ {
+ throw new RepositoryException(e);
+ }
}
//---------------------------------------------------------------------------------------------------------------
public Repository getRepository()
@@ -77,25 +115,8 @@
Map<ArtifactBasicMetadata, ArtifactMetadata> ror = new HashMap<ArtifactBasicMetadata, ArtifactMetadata>(16);
- File pomFile = null;
for( ArtifactBasicMetadata bmd : query )
{
- String pomPath = bmd.getGroupId().replace( '.', '/' )
- + "/" + bmd.getArtifactId()
- + "/" + bmd.getVersion()
- + "/" + bmd.getBaseName()
- + ".pom"
- ;
-
- pomFile = new File( _repoDir, pomPath );
- if( ! pomFile.exists() )
- {
- _log.warn( "file \""+pomPath+"\" does not exist in local repo" );
- continue;
- }
-
- // TODO HIGH og: delegate POM processing to maven-project
- // for testing purpose - I plug in my test processor
try
{
List<ArtifactBasicMetadata> deps = _mdProcessor.getDependencies( bmd, this );
@@ -118,24 +139,50 @@
/**
* direct disk search, no redirects, first attempt
*/
- public Map<ArtifactBasicMetadata, RepositoryOperationResult<ArtifactBasicMetadata>> readVersions(
- List<? extends ArtifactBasicMetadata> query )
+ public Map<ArtifactBasicMetadata, RepositoryOperationResult<ArtifactBasicMetadata>> readVersions( List<? extends ArtifactBasicMetadata> query )
throws RepositoryException,
IllegalArgumentException
{
if( query == null || query.size() < 1 )
return null;
+
Map<ArtifactBasicMetadata, RepositoryOperationResult<ArtifactBasicMetadata>> res = new HashMap<ArtifactBasicMetadata, RepositoryOperationResult<ArtifactBasicMetadata>>( query.size() );
- File gaDir = null;
+ String gaPath = null;
for( ArtifactBasicMetadata bmd : query )
{
- gaDir = new File( _repoDir, bmd.getGroupId().replace( '.', '/' )+"/"+bmd.getArtifactId() );
- if( ! gaDir.exists() )
+ gaPath = bmd.getGroupId().replace( '.', '/' )+'/'+bmd.getArtifactId()+"/maven-metadata.xml";
+
+ byte[] mavenMetadata;
+ try
+ {
+ mavenMetadata = readRawData( gaPath );
+ }
+ catch( MetadataProcessingException e )
+ {
continue;
+ }
- File [] versionFiles = gaDir.listFiles();
+ if( mavenMetadata == null )
+ continue;
+ MetadataXpp3Reader mmReader = new MetadataXpp3Reader();
+ Metadata mmd;
+ try
+ {
+ mmd = mmReader.read( new ByteArrayInputStream(mavenMetadata) );
+ }
+ catch( IOException e )
+ {
+ _log.warn( _lang.getMessage( "maven.metadata.xml.exception", e.getMessage(), gaPath, _repo.getId() ) );
+ continue;
+ }
+ catch( XmlPullParserException pe )
+ {
+ _log.error( pe.getMessage() );
+ throw new RepositoryException( pe );
+ }
+
RepositoryOperationResult<ArtifactBasicMetadata> rr = null;
VersionRange versionQuery;
try
@@ -148,12 +195,14 @@
continue;
}
- for( File vf : versionFiles )
+ for( Object vo : mmd.getVersioning().getVersions() )
{
- if( !vf.isDirectory() )
+ if( vo == null || !(vo instanceof String) )
continue;
- if( !versionQuery.includes( vf.getName() ) )
+ String v = (String)vo;
+
+ if( !versionQuery.includes( v ) )
continue;
ArtifactBasicMetadata vmd = new ArtifactBasicMetadata();
@@ -161,7 +210,7 @@
vmd.setArtifactId( bmd.getArtifactId() );
vmd.setClassifier( bmd.getClassifier() );
vmd.setType( bmd.getType() );
- vmd.setVersion( vf.getName() );
+ vmd.setVersion( v );
rr = RepositoryOperationResult.add( rr, vmd );
}
@@ -172,27 +221,45 @@
return res;
}
//---------------------------------------------------------------------------------------------------------------
- public void setMetadataProcessor( MetadataProcessor mdProcessor )
+ public byte[] readMetadata( ArtifactBasicMetadata bmd )
+ throws MetadataProcessingException
{
- this._mdProcessor = mdProcessor;
+ return readRawData( bmd, "pom" );
}
//---------------------------------------------------------------------------------------------------------------
- public byte[] readMetadata( ArtifactBasicMetadata bmd )
+ public byte[] readRawData( ArtifactBasicMetadata bmd, String type )
throws MetadataProcessingException
{
- String bmdPath = bmd.getGroupId().replace( '.', '/' )+"/"+bmd.getArtifactId()+"/"+bmd.getVersion();
-
- File pomFile = new File( _repoDir, bmdPath+"/"+bmd.getBaseName()+".pom" );
-
- if( ! pomFile.exists() )
- return null;
+ String bmdPath = bmd.getGroupId().replace( '.', '/' )
+ + '/'+bmd.getArtifactId()
+ + '/'+bmd.getVersion()
+ + '/'+bmd.getBaseName()
+ + '.' + (type == null ? bmd.getType() : type )
+ ;
+ return readRawData( bmdPath );
+ }
+ //---------------------------------------------------------------------------------------------------------------
+ private byte[] readRawData( String path )
+ throws MetadataProcessingException
+ {
FileInputStream fis = null;
-
try
{
- fis = new FileInputStream( pomFile );
- int len = (int)pomFile.length();
+ File tempFile = File.createTempFile( "mercury", "readraw" );
+ Binding binding = new Binding( _repo.getServer().getURL().toString()+'/'+path , tempFile, false );
+ DefaultRetrievalRequest request = new DefaultRetrievalRequest();
+ request.addBinding( binding );
+
+ RetrievalResponse response = _transport.retrieve( request );
+
+ if( response.hasExceptions() )
+ {
+ throw new MetadataProcessingException( response.getExceptions().toString() );
+ }
+
+ fis = new FileInputStream( tempFile );
+ int len = (int)tempFile.length();
byte [] pom = new byte [ len ];
fis.read( pom );
return pom;
@@ -207,5 +274,20 @@
}
}
//---------------------------------------------------------------------------------------------------------------
+ public boolean canHandle(
+ String protocol )
+ {
+ return AbstractRepository.DEFAULT_REMOTE_READ_PROTOCOL.equals( protocol );
+ }
+ //---------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------
+ public void close()
+ {
+ // TODO Auto-generated method stub
+
+ }
+ public String[] getProtocols()
+ {
+ return _protocols;
+ }
}
Propchange: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryReaderM2.java
------------------------------------------------------------------------------
svn:mergeinfo =
Modified: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/transport/SHA1Verifier.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/transport/SHA1Verifier.java?rev=680873&r1=680872&r2=680873&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/transport/SHA1Verifier.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/transport/SHA1Verifier.java Tue Jul 29 16:08:30 2008
@@ -21,7 +21,6 @@
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
-import java.util.Arrays;
import org.apache.maven.mercury.transport.api.Verifier;
Modified: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/transport/api/Binding.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/transport/api/Binding.java?rev=680873&r1=680872&r2=680873&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/transport/api/Binding.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/transport/api/Binding.java Tue Jul 29 16:08:30 2008
@@ -19,7 +19,9 @@
package org.apache.maven.mercury.transport.api;
+import java.io.ByteArrayOutputStream;
import java.io.File;
+import java.io.InputStream;
import java.net.URI;
import org.apache.maven.mercury.repository.api.RepositoryException;
@@ -35,7 +37,16 @@
protected URI remoteResource;
protected File localFile;
- protected byte [] localBuffer;
+ /**
+ * inbound in-memory binding for reading remote content.
+ * It is created by the constructor
+ */
+ protected ByteArrayOutputStream localOS;
+ /**
+ * this is outbound in-memory binding. IS is passed by the client
+ */
+ protected InputStream localIS;
+
protected boolean lenientChecksum = true;
protected RepositoryException error;
@@ -54,13 +65,24 @@
this.lenientChecksum = lenientChecksum;
}
- public Binding(
- URI remoteUrl,
- byte [] localbuffer,
- boolean lenientChecksum )
+ /**
+ * this is in-memory binding for writing remote content into localOS
+ *
+ * @param remoteUrl
+ * @param lenientChecksum
+ */
+ public Binding( URI remoteUrl, boolean lenientChecksum )
+ {
+ this.remoteResource = remoteUrl;
+ // let's assume 4k on average
+ this.localOS = new ByteArrayOutputStream( 4*1024 );
+ this.lenientChecksum = lenientChecksum;
+ }
+
+ public Binding( URI remoteUrl, InputStream is, boolean lenientChecksum )
{
this.remoteResource = remoteUrl;
- this.localBuffer = localbuffer;
+ this.localIS = is;
this.lenientChecksum = lenientChecksum;
}
@@ -69,8 +91,7 @@
return lenientChecksum;
}
- public void setLenientChecksum(
- boolean leniantChecksum )
+ public void setLenientChecksum( boolean leniantChecksum )
{
this.lenientChecksum = leniantChecksum;
}
@@ -99,12 +120,20 @@
public boolean isInMemory()
{
- return localBuffer != null;
+ return localIS != null || localOS != null;
}
public boolean isFile()
{
return localFile != null;
}
+
+ public byte [] getInboundContent()
+ {
+ if( localOS != null )
+ return localOS.toByteArray();
+
+ return null;
+ }
}
Modified: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/transport/api/TransportTransaction.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/transport/api/TransportTransaction.java?rev=680873&r1=680872&r2=680873&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/transport/api/TransportTransaction.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/transport/api/TransportTransaction.java Tue Jul 29 16:08:30 2008
@@ -1,6 +1,8 @@
package org.apache.maven.mercury.transport.api;
+import java.io.ByteArrayInputStream;
import java.io.File;
+import java.io.InputStream;
import java.net.URI;
import java.util.ArrayList;
import java.util.Collections;
@@ -60,11 +62,20 @@
return this;
}
//------------------------------------------------------------------------------------------------
- public TransportTransaction add( URI remoteResource, byte [] localResource, boolean lenientChecksum )
+ public TransportTransaction add( URI remoteResource, boolean lenientChecksum )
{
init();
- _bindings.add( new Binding( remoteResource, localResource, lenientChecksum ) );
+ _bindings.add( new Binding( remoteResource, lenientChecksum ) );
+
+ return this;
+ }
+ //------------------------------------------------------------------------------------------------
+ public TransportTransaction add( URI remoteResource, InputStream is, boolean lenientChecksum )
+ {
+ init();
+
+ _bindings.add( new Binding( remoteResource, is, lenientChecksum ) );
return this;
}
@@ -82,7 +93,7 @@
{
init();
- _bindings.add( new Binding( remoteResource, localResource, true ) );
+ _bindings.add( new Binding( remoteResource, new ByteArrayInputStream(localResource), true ) );
return this;
}
Modified: maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/AbstractSimpleTreeTest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/AbstractSimpleTreeTest.java?rev=680873&r1=680872&r2=680873&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/AbstractSimpleTreeTest.java (original)
+++ maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/AbstractSimpleTreeTest.java Tue Jul 29 16:08:30 2008
@@ -1,9 +1,9 @@
package org.apache.maven.mercury.metadata;
-import org.apache.maven.mercury.ArtifactMetadata;
-
import junit.framework.TestCase;
+import org.apache.maven.mercury.ArtifactMetadata;
+
public abstract class AbstractSimpleTreeTest
extends TestCase
{
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=680873&r1=680872&r2=680873&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 Tue Jul 29 16:08:30 2008
@@ -10,10 +10,10 @@
import org.apache.commons.logging.impl.LogFactoryImpl;
import org.apache.maven.mercury.ArtifactMetadata;
import org.apache.maven.mercury.ArtifactScopeEnum;
-import org.apache.maven.mercury.repository.DefaultLocalRepository;
-import org.apache.maven.mercury.repository.MetadataProcessor;
import org.apache.maven.mercury.repository.MetadataProcessorMock;
-import org.apache.maven.mercury.repository.Repository;
+import org.apache.maven.mercury.repository.api.MetadataProcessor;
+import org.apache.maven.mercury.repository.api.Repository;
+import org.apache.maven.mercury.repository.local.m2.LocalRepositoryM2;
/**
@@ -32,7 +32,7 @@
File repoDir = new File("./target/test-classes/controlledRepo");
MetadataTree mt;
- DefaultLocalRepository localRepo;
+ LocalRepositoryM2 localRepo;
List<Repository> reps;
MetadataProcessor processor;
//----------------------------------------------------------------------------------------------
@@ -42,7 +42,7 @@
{
System.out.println("Current dir is "+ new File(".").getCanonicalPath() );
processor = new MetadataProcessorMock();
- localRepo = new DefaultLocalRepository( "local", repoDir, processor );
+ localRepo = new LocalRepositoryM2( "local", repoDir, processor );
reps = new ArrayList<Repository>(4);
reps.add( localRepo );
Modified: maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolverTest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolverTest.java?rev=680873&r1=680872&r2=680873&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolverTest.java (original)
+++ maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolverTest.java Tue Jul 29 16:08:30 2008
@@ -6,14 +6,14 @@
import java.util.List;
import java.util.Map;
+import junit.framework.TestCase;
+
import org.apache.maven.mercury.ArtifactMetadata;
import org.apache.maven.mercury.ArtifactScopeEnum;
import org.apache.maven.mercury.metadata.ClassicDepthComparator;
import org.apache.maven.mercury.metadata.ClassicVersionComparator;
import org.apache.maven.mercury.metadata.MetadataTreeNode;
-import junit.framework.TestCase;
-
/**
* @author <a href="oleg@codehaus.org">Oleg Gusakov</a>
*/
Modified: maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/repository/MetadataProcessorMock.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/repository/MetadataProcessorMock.java?rev=680873&r1=680872&r2=680873&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/repository/MetadataProcessorMock.java (original)
+++ maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/repository/MetadataProcessorMock.java Tue Jul 29 16:08:30 2008
@@ -1,14 +1,15 @@
package org.apache.maven.mercury.repository;
import java.io.ByteArrayInputStream;
-import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.digester.Digester;
import org.apache.maven.mercury.ArtifactBasicMetadata;
-import org.apache.maven.mercury.ArtifactMetadata;
+import org.apache.maven.mercury.repository.api.MetadataProcessingException;
+import org.apache.maven.mercury.repository.api.MetadataProcessor;
+import org.apache.maven.mercury.repository.api.MetadataReader;
import org.xml.sax.SAXException;
/**