Author: ogusakov Date: Mon Oct 13 19:34:31 2008 New Revision: 704295 URL: http://svn.apache.org/viewvc?rev=704295&view=rev Log: both remote repo reader and writer are cache-enabled
Modified: maven/mercury/trunk/mercury-external/src/main/java/org/apache/maven/mercury/builder/api/DependencyProcessor.java maven/mercury/trunk/mercury-repo/mercury-repo-remote-m2/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryWriterM2.java Modified: maven/mercury/trunk/mercury-external/src/main/java/org/apache/maven/mercury/builder/api/DependencyProcessor.java URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-external/src/main/java/org/apache/maven/mercury/builder/api/DependencyProcessor.java?rev=704295&r1=704294&r2=704295&view=diff ============================================================================== --- maven/mercury/trunk/mercury-external/src/main/java/org/apache/maven/mercury/builder/api/DependencyProcessor.java (original) +++ maven/mercury/trunk/mercury-external/src/main/java/org/apache/maven/mercury/builder/api/DependencyProcessor.java Mon Oct 13 19:34:31 2008 @@ -7,6 +7,16 @@ public interface DependencyProcessor { - List<ArtifactBasicMetadata> getDependencies( ArtifactBasicMetadata bmd, MetadataReader mdReader, Hashtable env ) - throws MetadataReaderException; + + public static final DependencyProcessor NULL_PROCESSOR = + new DependencyProcessor() { + public List<ArtifactBasicMetadata> getDependencies( ArtifactBasicMetadata bmd, MetadataReader mdReader, Hashtable env ) + throws MetadataReaderException + { + return null; + } + }; + + List<ArtifactBasicMetadata> getDependencies( ArtifactBasicMetadata bmd, MetadataReader mdReader, Hashtable env ) + throws MetadataReaderException; } Modified: maven/mercury/trunk/mercury-repo/mercury-repo-remote-m2/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryWriterM2.java URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-repo/mercury-repo-remote-m2/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryWriterM2.java?rev=704295&r1=704294&r2=704295&view=diff ============================================================================== --- maven/mercury/trunk/mercury-repo/mercury-repo-remote-m2/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryWriterM2.java (original) +++ maven/mercury/trunk/mercury-repo/mercury-repo-remote-m2/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryWriterM2.java Mon Oct 13 19:34:31 2008 @@ -8,23 +8,21 @@ import java.net.URL; import java.util.Collection; import java.util.HashSet; -import java.util.Hashtable; -import java.util.List; import java.util.Set; import org.apache.maven.mercury.artifact.Artifact; -import org.apache.maven.mercury.artifact.ArtifactBasicMetadata; +import org.apache.maven.mercury.artifact.DefaultArtifact; import org.apache.maven.mercury.artifact.Quality; import org.apache.maven.mercury.artifact.version.DefaultArtifactVersion; import org.apache.maven.mercury.builder.api.DependencyProcessor; -import org.apache.maven.mercury.builder.api.MetadataReader; -import org.apache.maven.mercury.builder.api.MetadataReaderException; import org.apache.maven.mercury.crypto.api.StreamVerifierFactory; import org.apache.maven.mercury.repository.api.AbstractRepository; import org.apache.maven.mercury.repository.api.AbstractRepositoryWriter; 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.RepositoryGAMetadata; +import org.apache.maven.mercury.repository.api.RepositoryGAVMetadata; import org.apache.maven.mercury.repository.api.RepositoryReader; import org.apache.maven.mercury.repository.api.RepositoryWriter; import org.apache.maven.mercury.repository.metadata.AddVersionOperation; @@ -76,16 +74,7 @@ _repo = repo; - _reader = _repo.getReader( - new DependencyProcessor() { - - public List<ArtifactBasicMetadata> getDependencies( ArtifactBasicMetadata bmd, MetadataReader mdReader, Hashtable env ) - throws MetadataReaderException - { - return null; - } - } - ); + _reader = _repo.getReader( DependencyProcessor.NULL_PROCESSOR ); try { @@ -236,6 +225,8 @@ mdOp = new AddVersionOperation( new StringOperand(artifact.getVersion()) ); byte [] gaResBytes = MetadataBuilder.changeMetadata( md, mdOp ); + Metadata gaMd = MetadataBuilder.getMetadata( gaResBytes ); + bindings.add( new Binding(new URL(gaMdUrl), new ByteArrayInputStream(gaResBytes)) ); // now - GAV metadata @@ -250,6 +241,8 @@ } byte [] gavResBytes = MetadataBuilder.changeMetadata( md, mdOp ); + Metadata gavMd = MetadataBuilder.getMetadata( gavResBytes ); + bindings.add( new Binding( new URL(gavMdUrl), new ByteArrayInputStream(gavResBytes)) ); if( !isPom && hasPomBlob ) @@ -265,6 +258,15 @@ if( response.hasExceptions() ) throw new RepositoryException( response.getExceptions().toString() ); + + if( _mdCache != null ) + { + // cache metadata + _mdCache.updateGA( _repo.getId(), new RepositoryGAMetadata(gaMd) ); + _mdCache.updateGAV( _repo.getId(), new RepositoryGAVMetadata(gavMd) ); + if( hasPomBlob && DefaultArtifact.class.isAssignableFrom( artifact.getClass() ) ) + _mdCache.saveRaw( (DefaultArtifact)artifact, pomBlob ); + } } catch( Exception e )