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 )


Reply via email to