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/28 23:34:22 UTC
svn commit: r680512 - in /maven/sandbox/trunk/mercury/src:
main/java/org/apache/maven/mercury/repository/
main/java/org/apache/maven/mercury/repository/local/
main/java/org/apache/maven/mercury/repository/local/m2/
test/java/org/apache/maven/mercury/re...
Author: ogusakov
Date: Mon Jul 28 14:34:21 2008
New Revision: 680512
URL: http://svn.apache.org/viewvc?rev=680512&view=rev
Log:
split repository readers into appropriate packages to later move out into projects
Added:
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/local/
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/local/m2/ (with props)
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryReaderM2.java (with props)
Removed:
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/LocalRepositoryReader.java
Modified:
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/DefaultLocalRepository.java
maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/repository/metadata/MetadataReaderTest.java
Modified: 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/DefaultLocalRepository.java?rev=680512&r1=680511&r2=680512&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/DefaultLocalRepository.java Mon Jul 28 14:34:21 2008
@@ -5,6 +5,7 @@
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
extends AbstractRepository
@@ -27,7 +28,7 @@
public RepositoryReader getReader()
{
if( reader == null )
- reader = new LocalRepositoryReader( this, processor );
+ reader = new LocalRepositoryReaderM2( this, processor );
return reader;
}
Propchange: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/local/m2/
------------------------------------------------------------------------------
svn:mergeinfo =
Added: 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=680512&view=auto
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryReaderM2.java (added)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryReaderM2.java Mon Jul 28 14:34:21 2008
@@ -0,0 +1,211 @@
+package org.apache.maven.mercury.repository.local.m2;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+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.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.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
+implements RepositoryReader, MetadataReader
+{
+ private static final org.slf4j.Logger _log = org.slf4j.LoggerFactory.getLogger( LocalRepositoryReaderM2.class );
+ //---------------------------------------------------------------------------------------------------------------
+ LocalRepository _repo;
+ File _repoDir;
+
+ MetadataProcessor _mdProcessor;
+ //---------------------------------------------------------------------------------------------------------------
+ public LocalRepositoryReaderM2( LocalRepository repo, MetadataProcessor mdProcessor )
+ {
+ if( repo == null )
+ throw new IllegalArgumentException("localRepo cannot be null");
+
+ _repoDir = repo.getDirectory();
+ if( _repoDir == null )
+ throw new IllegalArgumentException("localRepo directory cannot be 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 );
+ }
+ //---------------------------------------------------------------------------------------------------------------
+ public Repository getRepository()
+ {
+ return _repo;
+ }
+ //---------------------------------------------------------------------------------------------------------------
+ public RepositoryOperationResult<DefaultArtifact> readArtifacts( List<? extends ArtifactBasicMetadata> query )
+ throws RepositoryException,
+ IllegalArgumentException
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+ //---------------------------------------------------------------------------------------------------------------
+ /**
+ *
+ */
+ public Map<ArtifactBasicMetadata, ArtifactMetadata> readDependencies( List<? extends ArtifactBasicMetadata> query )
+ throws RepositoryException,
+ IllegalArgumentException
+ {
+ if( query == null || query.size() < 1 )
+ return null;
+
+ 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 );
+ ArtifactMetadata md = new ArtifactMetadata( bmd );
+ md.setDependencies( deps );
+
+ ror.put( bmd, md );
+ }
+ catch( MetadataProcessingException e )
+ {
+ _log.warn( "error reading "+bmd.toString()+" dependencies", e );
+ continue;
+ }
+
+ }
+
+ return ror;
+ }
+ //---------------------------------------------------------------------------------------------------------------
+ /**
+ * direct disk search, no redirects, first attempt
+ */
+ 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;
+ for( ArtifactBasicMetadata bmd : query )
+ {
+ gaDir = new File( _repoDir, bmd.getGroupId().replace( '.', '/' )+"/"+bmd.getArtifactId() );
+ if( ! gaDir.exists() )
+ continue;
+
+ File [] versionFiles = gaDir.listFiles();
+
+ RepositoryOperationResult<ArtifactBasicMetadata> rr = null;
+ VersionRange versionQuery;
+ try
+ {
+ versionQuery = new VersionRange( bmd.getVersion() );
+ }
+ catch( VersionException e )
+ {
+ rr = RepositoryOperationResult.add( rr, new RepositoryException(e) );
+ continue;
+ }
+
+ for( File vf : versionFiles )
+ {
+ if( !vf.isDirectory() )
+ continue;
+
+ if( !versionQuery.includes( vf.getName() ) )
+ continue;
+
+ ArtifactBasicMetadata vmd = new ArtifactBasicMetadata();
+ vmd.setGroupId( bmd.getGroupId() );
+ vmd.setArtifactId( bmd.getArtifactId() );
+ vmd.setClassifier( bmd.getClassifier() );
+ vmd.setType( bmd.getType() );
+ vmd.setVersion( vf.getName() );
+
+ rr = RepositoryOperationResult.add( rr, vmd );
+ }
+ if( rr != null )
+ res.put( bmd, rr );
+ }
+
+ return res;
+ }
+ //---------------------------------------------------------------------------------------------------------------
+ public void setMetadataProcessor( MetadataProcessor mdProcessor )
+ {
+ this._mdProcessor = mdProcessor;
+ }
+ //---------------------------------------------------------------------------------------------------------------
+ public byte[] readMetadata( ArtifactBasicMetadata bmd )
+ 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;
+
+ FileInputStream fis = null;
+
+ try
+ {
+ fis = new FileInputStream( pomFile );
+ int len = (int)pomFile.length();
+ byte [] pom = new byte [ len ];
+ fis.read( pom );
+ return pom;
+ }
+ catch( IOException e )
+ {
+ throw new MetadataProcessingException(e);
+ }
+ finally
+ {
+ if( fis != null ) try { fis.close(); } catch( Exception any ) {}
+ }
+ }
+ //---------------------------------------------------------------------------------------------------------------
+ //---------------------------------------------------------------------------------------------------------------
+}
Propchange: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryReaderM2.java
------------------------------------------------------------------------------
svn:mergeinfo =
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=680512&r1=680511&r2=680512&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 Mon Jul 28 14:34:21 2008
@@ -70,7 +70,7 @@
RetrievalResponse response = _retriever.retrieve(_request);
if( response.hasExceptions() )
- fail("retrieval exceptions: "+response.getExceptions() );
+ fail("retrieval exceptions: "+response.getExceptions()+"\nReading from "+aaMdBinding.getRemoteUrl() );
Metadata mmd = _reader.read( new FileInputStream( temp ) );
temp.delete();