You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by jo...@apache.org on 2007/08/30 03:22:24 UTC

svn commit: r571008 [4/4] - in /maven/archiva/trunk/archiva-base: archiva-proxy/ archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/ archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ archiva-proxy/src/test/repositories/ archiva-proxy/...

Modified: maven/archiva/trunk/archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/ChecksumTransferTest.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/ChecksumTransferTest.xml?rev=571008&r1=571007&r2=571008&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/ChecksumTransferTest.xml (original)
+++ maven/archiva/trunk/archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/ChecksumTransferTest.xml Wed Aug 29 18:22:19 2007
@@ -63,6 +63,28 @@
         </requirement>
       </requirements>
     </component>
+    
+    <component>
+      <role>org.codehaus.plexus.cache.Cache</role>
+      <role-hint>url-failures-cache</role-hint>
+      <implementation>org.codehaus.plexus.cache.ehcache.EhcacheCache</implementation>
+      <description>URL Failure Cache</description>
+      <configuration>
+        <disk-expiry-thread-interval-seconds>600</disk-expiry-thread-interval-seconds>
+        <disk-persistent>false</disk-persistent> <!--disabling disk persistence for unit testing. -->
+        <disk-store-path>${java.io.tmpdir}/archiva/urlcache</disk-store-path>
+        <eternal>false</eternal>
+        <max-elements-in-memory>1000</max-elements-in-memory>
+        <memory-eviction-policy>LRU</memory-eviction-policy>
+        <name>url-failures-cache</name>
+        <overflow-to-disk>false</overflow-to-disk>
+        <!-- 45 minutes = 2700 seconds -->
+        <time-to-idle-seconds>2700</time-to-idle-seconds>
+        <!-- 30 minutes = 1800 seconds  -->
+        <time-to-live-seconds>1800</time-to-live-seconds>
+      </configuration>
+    </component>
+        
     <component>
       <role>org.codehaus.plexus.logging.LoggerManager</role>
       <implementation>org.codehaus.plexus.logging.slf4j.Slf4jLoggerManager</implementation>

Modified: maven/archiva/trunk/archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/ManagedDefaultTransferTest.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/ManagedDefaultTransferTest.xml?rev=571008&r1=571007&r2=571008&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/ManagedDefaultTransferTest.xml (original)
+++ maven/archiva/trunk/archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/ManagedDefaultTransferTest.xml Wed Aug 29 18:22:19 2007
@@ -63,6 +63,28 @@
         </requirement>
       </requirements>
     </component>
+    
+    <component>
+      <role>org.codehaus.plexus.cache.Cache</role>
+      <role-hint>url-failures-cache</role-hint>
+      <implementation>org.codehaus.plexus.cache.ehcache.EhcacheCache</implementation>
+      <description>URL Failure Cache</description>
+      <configuration>
+        <disk-expiry-thread-interval-seconds>600</disk-expiry-thread-interval-seconds>
+        <disk-persistent>false</disk-persistent> <!--disabling disk persistence for unit testing. -->
+        <disk-store-path>${java.io.tmpdir}/archiva/urlcache</disk-store-path>
+        <eternal>false</eternal>
+        <max-elements-in-memory>1000</max-elements-in-memory>
+        <memory-eviction-policy>LRU</memory-eviction-policy>
+        <name>url-failures-cache</name>
+        <overflow-to-disk>false</overflow-to-disk>
+        <!-- 45 minutes = 2700 seconds -->
+        <time-to-idle-seconds>2700</time-to-idle-seconds>
+        <!-- 30 minutes = 1800 seconds  -->
+        <time-to-live-seconds>1800</time-to-live-seconds>
+      </configuration>
+    </component>
+        
     <component>
       <role>org.codehaus.plexus.logging.LoggerManager</role>
       <implementation>org.codehaus.plexus.logging.slf4j.Slf4jLoggerManager</implementation>

Modified: maven/archiva/trunk/archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/ManagedLegacyTransferTest.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/ManagedLegacyTransferTest.xml?rev=571008&r1=571007&r2=571008&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/ManagedLegacyTransferTest.xml (original)
+++ maven/archiva/trunk/archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/ManagedLegacyTransferTest.xml Wed Aug 29 18:22:19 2007
@@ -63,6 +63,28 @@
         </requirement>
       </requirements>
     </component>
+    
+    <component>
+      <role>org.codehaus.plexus.cache.Cache</role>
+      <role-hint>url-failures-cache</role-hint>
+      <implementation>org.codehaus.plexus.cache.ehcache.EhcacheCache</implementation>
+      <description>URL Failure Cache</description>
+      <configuration>
+        <disk-expiry-thread-interval-seconds>600</disk-expiry-thread-interval-seconds>
+        <disk-persistent>false</disk-persistent> <!--disabling disk persistence for unit testing. -->
+        <disk-store-path>${java.io.tmpdir}/archiva/urlcache</disk-store-path>
+        <eternal>false</eternal>
+        <max-elements-in-memory>1000</max-elements-in-memory>
+        <memory-eviction-policy>LRU</memory-eviction-policy>
+        <name>url-failures-cache</name>
+        <overflow-to-disk>false</overflow-to-disk>
+        <!-- 45 minutes = 2700 seconds -->
+        <time-to-idle-seconds>2700</time-to-idle-seconds>
+        <!-- 30 minutes = 1800 seconds  -->
+        <time-to-live-seconds>1800</time-to-live-seconds>
+      </configuration>
+    </component>
+        
     <component>
       <role>org.codehaus.plexus.logging.LoggerManager</role>
       <implementation>org.codehaus.plexus.logging.slf4j.Slf4jLoggerManager</implementation>

Modified: maven/archiva/trunk/archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/MetadataTransferTest.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/MetadataTransferTest.xml?rev=571008&r1=571007&r2=571008&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/MetadataTransferTest.xml (original)
+++ maven/archiva/trunk/archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/MetadataTransferTest.xml Wed Aug 29 18:22:19 2007
@@ -29,6 +29,28 @@
       <role-hint>mock</role-hint>
       <implementation>org.apache.maven.archiva.proxy.MockConfiguration</implementation>
     </component>
+    
+    <component>
+      <role>org.apache.maven.archiva.repository.metadata.MetadataTools</role>
+      <implementation>org.apache.maven.archiva.repository.metadata.MetadataTools</implementation>
+      <description>MetadataTools</description>
+      <requirements>
+        <requirement>
+          <role>org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayoutFactory</role>
+          <field-name>layoutFactory</field-name>
+        </requirement>
+        <requirement>
+          <role>org.apache.maven.archiva.configuration.FileTypes</role>
+          <field-name>filetypes</field-name>
+        </requirement>
+        <requirement>
+          <role>org.apache.maven.archiva.configuration.ArchivaConfiguration</role>
+          <role-hint>mock</role-hint>
+          <field-name>configuration</field-name>
+        </requirement>
+      </requirements>
+    </component>
+    
     <component>
       <role>org.apache.maven.archiva.proxy.RepositoryProxyConnectors</role>
       <role-hint>default</role-hint>
@@ -49,6 +71,10 @@
           <field-name>layoutFactory</field-name>
         </requirement>
         <requirement>
+          <role>org.apache.maven.archiva.repository.metadata.MetadataTools</role>
+          <field-name>metadataTools</field-name>
+        </requirement>
+        <requirement>
           <role>org.apache.maven.archiva.policies.PreDownloadPolicy</role>
           <field-name>preDownloadPolicies</field-name>
         </requirement>
@@ -63,6 +89,28 @@
         </requirement>
       </requirements>
     </component>
+    
+    <component>
+      <role>org.codehaus.plexus.cache.Cache</role>
+      <role-hint>url-failures-cache</role-hint>
+      <implementation>org.codehaus.plexus.cache.ehcache.EhcacheCache</implementation>
+      <description>URL Failure Cache</description>
+      <configuration>
+        <disk-expiry-thread-interval-seconds>600</disk-expiry-thread-interval-seconds>
+        <disk-persistent>false</disk-persistent> <!--disabling disk persistence for unit testing. -->
+        <disk-store-path>${java.io.tmpdir}/archiva/urlcache</disk-store-path>
+        <eternal>false</eternal>
+        <max-elements-in-memory>1000</max-elements-in-memory>
+        <memory-eviction-policy>LRU</memory-eviction-policy>
+        <name>url-failures-cache</name>
+        <overflow-to-disk>false</overflow-to-disk>
+        <!-- 45 minutes = 2700 seconds -->
+        <time-to-idle-seconds>2700</time-to-idle-seconds>
+        <!-- 30 minutes = 1800 seconds  -->
+        <time-to-live-seconds>1800</time-to-live-seconds>
+      </configuration>
+    </component>
+        
     <component>
       <role>org.codehaus.plexus.logging.LoggerManager</role>
       <implementation>org.codehaus.plexus.logging.slf4j.Slf4jLoggerManager</implementation>

Modified: maven/archiva/trunk/archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/RelocateTransferTest.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/RelocateTransferTest.xml?rev=571008&r1=571007&r2=571008&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/RelocateTransferTest.xml (original)
+++ maven/archiva/trunk/archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/RelocateTransferTest.xml Wed Aug 29 18:22:19 2007
@@ -49,6 +49,10 @@
           <field-name>layoutFactory</field-name>
         </requirement>
         <requirement>
+          <role>org.apache.maven.archiva.repository.metadata.MetadataTools</role>
+          <field-name>metadataTools</field-name>
+        </requirement>
+        <requirement>
           <role>org.apache.maven.archiva.policies.PreDownloadPolicy</role>
           <field-name>preDownloadPolicies</field-name>
         </requirement>
@@ -63,6 +67,28 @@
         </requirement>
       </requirements>
     </component>
+    
+    <component>
+      <role>org.codehaus.plexus.cache.Cache</role>
+      <role-hint>url-failures-cache</role-hint>
+      <implementation>org.codehaus.plexus.cache.ehcache.EhcacheCache</implementation>
+      <description>URL Failure Cache</description>
+      <configuration>
+        <disk-expiry-thread-interval-seconds>600</disk-expiry-thread-interval-seconds>
+        <disk-persistent>false</disk-persistent> <!--disabling disk persistence for unit testing. -->
+        <disk-store-path>${java.io.tmpdir}/archiva/urlcache</disk-store-path>
+        <eternal>false</eternal>
+        <max-elements-in-memory>1000</max-elements-in-memory>
+        <memory-eviction-policy>LRU</memory-eviction-policy>
+        <name>url-failures-cache</name>
+        <overflow-to-disk>false</overflow-to-disk>
+        <!-- 45 minutes = 2700 seconds -->
+        <time-to-idle-seconds>2700</time-to-idle-seconds>
+        <!-- 30 minutes = 1800 seconds  -->
+        <time-to-live-seconds>1800</time-to-live-seconds>
+      </configuration>
+    </component>
+        
     <component>
       <role>org.codehaus.plexus.logging.LoggerManager</role>
       <implementation>org.codehaus.plexus.logging.slf4j.Slf4jLoggerManager</implementation>

Modified: maven/archiva/trunk/archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/SnapshotTransferTest.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/SnapshotTransferTest.xml?rev=571008&r1=571007&r2=571008&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/SnapshotTransferTest.xml (original)
+++ maven/archiva/trunk/archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/SnapshotTransferTest.xml Wed Aug 29 18:22:19 2007
@@ -63,6 +63,28 @@
         </requirement>
       </requirements>
     </component>
+    
+    <component>
+      <role>org.codehaus.plexus.cache.Cache</role>
+      <role-hint>url-failures-cache</role-hint>
+      <implementation>org.codehaus.plexus.cache.ehcache.EhcacheCache</implementation>
+      <description>URL Failure Cache</description>
+      <configuration>
+        <disk-expiry-thread-interval-seconds>600</disk-expiry-thread-interval-seconds>
+        <disk-persistent>false</disk-persistent> <!--disabling disk persistence for unit testing. -->
+        <disk-store-path>${java.io.tmpdir}/archiva/urlcache</disk-store-path>
+        <eternal>false</eternal>
+        <max-elements-in-memory>1000</max-elements-in-memory>
+        <memory-eviction-policy>LRU</memory-eviction-policy>
+        <name>url-failures-cache</name>
+        <overflow-to-disk>false</overflow-to-disk>
+        <!-- 45 minutes = 2700 seconds -->
+        <time-to-idle-seconds>2700</time-to-idle-seconds>
+        <!-- 30 minutes = 1800 seconds  -->
+        <time-to-live-seconds>1800</time-to-live-seconds>
+      </configuration>
+    </component>
+        
     <component>
       <role>org.codehaus.plexus.logging.LoggerManager</role>
       <implementation>org.codehaus.plexus.logging.slf4j.Slf4jLoggerManager</implementation>

Modified: maven/archiva/trunk/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/MetadataTools.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/MetadataTools.java?rev=571008&r1=571007&r2=571008&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/MetadataTools.java (original)
+++ maven/archiva/trunk/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/MetadataTools.java Wed Aug 29 18:22:19 2007
@@ -16,6 +16,7 @@
  * limitations under the License.
  */
 
+import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.math.NumberUtils;
 import org.apache.maven.archiva.common.utils.PathUtil;
 import org.apache.maven.archiva.common.utils.VersionComparator;
@@ -136,14 +137,9 @@
         }
 
         Set<String> foundVersions = new HashSet<String>();
-
-        // TODO: should really determine if valid based on artifactPatterns, not POM existance.
-        //       this method was written before the gatherSnapshotVersions() method, consider
-        //       using the routines from that method used to determine artifacts via pattern.
-        ArtifactReference pomReference = new ArtifactReference();
-        pomReference.setGroupId( reference.getGroupId() );
-        pomReference.setArtifactId( reference.getArtifactId() );
-        pomReference.setType( "pom" );
+        VersionedReference versionRef = new VersionedReference();
+        versionRef.setGroupId( reference.getGroupId() );
+        versionRef.setArtifactId( reference.getArtifactId() );
 
         File repoFiles[] = repoDir.listFiles();
         for ( int i = 0; i < repoFiles.length; i++ )
@@ -154,14 +150,13 @@
                 continue;
             }
 
-            // Test if dir has pom, which proves to us that it is a valid version directory.
+            // Test if dir has an artifact, which proves to us that it is a valid version directory.
             String version = repoFiles[i].getName();
-            pomReference.setVersion( version );
+            versionRef.setVersion( version );
 
-            File artifactFile = new File( managedRepository.getUrl().getPath(), layout.toPath( pomReference ) );
-            if ( artifactFile.exists() )
+            if ( hasArtifact( managedRepository, versionRef ) )
             {
-                // Found a pom, must be a valid version.
+                // Found an artifact, must be a valid version.
                 foundVersions.add( version );
             }
         }
@@ -169,6 +164,19 @@
         return foundVersions;
     }
 
+    private boolean hasArtifact( ArchivaRepository managedRepository, VersionedReference reference )
+        throws LayoutException
+    {
+        try
+        {
+            return ( getFirstArtifact( managedRepository, reference ) != null );
+        }
+        catch ( IOException e )
+        {
+            return false;
+        }
+    }
+
     /**
      * Get the first Artifact found in the provided VersionedReference location. 
      * 
@@ -262,6 +270,7 @@
 
         Set<String> foundVersions = new HashSet<String>();
 
+        // First gather up the versions found as artifacts in the managed repository.
         File repoFiles[] = repoDir.listFiles();
         for ( int i = 0; i < repoFiles.length; i++ )
         {
@@ -284,6 +293,46 @@
             }
         }
 
+        // Next gather up the referenced 'latest' versions found in any proxied repositories
+        // maven-metadata-${proxyId}.xml files that may be present.
+
+        // Does this repository have a set of remote proxied repositories?
+        Set proxiedRepoIds = this.proxies.get( managedRepository.getId() );
+
+        if ( proxiedRepoIds != null )
+        {
+            String baseVersion = VersionUtil.getBaseVersion( reference.getVersion() );
+            baseVersion = baseVersion.substring( 0, baseVersion.indexOf( VersionUtil.SNAPSHOT ) - 1 );
+
+            // Add in the proxied repo version ids too.
+            Iterator<String> it = proxiedRepoIds.iterator();
+            while ( it.hasNext() )
+            {
+                String proxyId = it.next();
+
+                ArchivaRepositoryMetadata proxyMetadata = readProxyMetadata( managedRepository, reference, proxyId );
+                if ( proxyMetadata == null )
+                {
+                    // There is no proxy metadata, skip it.
+                    continue;
+                }
+
+                // Is there some snapshot info?
+                SnapshotVersion snapshot = proxyMetadata.getSnapshotVersion();
+                if ( snapshot != null )
+                {
+                    String timestamp = snapshot.getTimestamp();
+                    int buildNumber = snapshot.getBuildNumber();
+
+                    // Only interested in the timestamp + buildnumber.
+                    if ( StringUtils.isNotBlank( timestamp ) && ( buildNumber > 0 ) )
+                    {
+                        foundVersions.add( baseVersion + "-" + timestamp + "-" + buildNumber );
+                    }
+                }
+            }
+        }
+
         return foundVersions;
     }
 
@@ -372,6 +421,27 @@
         }
     }
 
+    public ArchivaRepositoryMetadata readProxyMetadata( ArchivaRepository managedRepository,
+                                                        VersionedReference reference, String proxyId )
+        throws LayoutException
+    {
+        BidirectionalRepositoryLayout layout = layoutFactory.getLayout( managedRepository.getLayoutType() );
+        String metadataPath = getRepositorySpecificName( proxyId, layout.toPath( reference ) );
+        File metadataFile = new File( managedRepository.getUrl().getPath(), metadataPath );
+
+        try
+        {
+            return RepositoryMetadataReader.read( metadataFile );
+        }
+        catch ( RepositoryMetadataException e )
+        {
+            // TODO: [monitor] consider a monitor for this event.
+            // TODO: consider a read-redo on monitor return code?
+            log.warn( "Unable to read metadata: " + metadataFile.getAbsolutePath(), e );
+            return null;
+        }
+    }
+
     /**
      * Update the metadata to represent the all versions of 
      * the provided groupId:artifactId project reference,
@@ -466,7 +536,8 @@
             // Do SNAPSHOT handling.
             metadata.setVersion( VersionUtil.getBaseVersion( reference.getVersion() ) );
 
-            // Gather up all of the versions found in the reference dir.
+            // Gather up all of the versions found in the reference dir, and any
+            // proxied maven-metadata.xml files.
             Set snapshotVersions = gatherSnapshotVersions( managedRepository, reference );
 
             if ( snapshotVersions.isEmpty() )
@@ -514,15 +585,15 @@
                  * archive, the most recent timestamp in the archive?
                  */
                 ArtifactReference artifact = getFirstArtifact( managedRepository, reference );
-                
+
                 if ( artifact == null )
                 {
                     throw new IOException( "Not snapshot artifact found to reference in " + reference );
                 }
-                
+
                 File artifactFile = new File( managedRepository.getUrl().getPath(), layout.toPath( artifact ) );
-                
-                if( artifactFile.exists() )
+
+                if ( artifactFile.exists() )
                 {
                     Date lastModified = new Date( artifactFile.lastModified() );
                     metadata.setLastUpdatedTimestamp( lastModified );

Modified: maven/archiva/trunk/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/RepositoryMetadataReader.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/RepositoryMetadataReader.java?rev=571008&r1=571007&r2=571008&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/RepositoryMetadataReader.java (original)
+++ maven/archiva/trunk/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/RepositoryMetadataReader.java Wed Aug 29 18:22:19 2007
@@ -55,6 +55,7 @@
 
             metadata.setGroupId( xml.getElementText( "//metadata/groupId" ) );
             metadata.setArtifactId( xml.getElementText( "//metadata/artifactId" ) );
+            metadata.setVersion( xml.getElementText( "//metadata/version" ) );
             metadata.setFileLastModified( new Date( metadataFile.lastModified() ) );
             metadata.setFileSize( metadataFile.length() );
             metadata.setWhenIndexed( null );

Modified: maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/metadata/MetadataToolsTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/metadata/MetadataToolsTest.java?rev=571008&r1=571007&r2=571008&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/metadata/MetadataToolsTest.java (original)
+++ maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/metadata/MetadataToolsTest.java Wed Aug 29 18:22:19 2007
@@ -71,7 +71,12 @@
     public void testGatherAvailableVersionsMissingMultipleVersions()
         throws Exception
     {
-        assertAvailableVersions( "missing_metadata_b", new String[] { "1.0", "1.0.1", "2.0", "2.0-20070821-dev" } );
+        assertAvailableVersions( "missing_metadata_b", new String[] {
+            "1.0",
+            "1.0.1",
+            "2.0",
+            "2.0.1",
+            "2.0-20070821-dev" } );
     }
 
     public void testGatherAvailableVersionsSimpleYetIncomplete()
@@ -100,6 +105,27 @@
             "1.0-alpha-11-20070316.175232-11" } );
     }
 
+    public void testGatherSnapshotVersionsAWithProxies()
+        throws Exception
+    {
+        // These proxied repositories do not need to exist for the purposes of this unit test,
+        // just the repository ids are important.
+        createProxyConnector( "test-repo", "apache-snapshots" );
+        createProxyConnector( "test-repo", "internal-snapshots" );
+        createProxyConnector( "test-repo", "snapshots.codehaus.org" );
+
+        assertSnapshotVersions( "snap_shots_a", "1.0-alpha-11-SNAPSHOT", new String[] {
+            "1.0-alpha-11-SNAPSHOT",
+            "1.0-alpha-11-20070221.194724-2",
+            "1.0-alpha-11-20070302.212723-3",
+            "1.0-alpha-11-20070303.152828-4",
+            "1.0-alpha-11-20070305.215149-5",
+            "1.0-alpha-11-20070307.170909-6",
+            "1.0-alpha-11-20070314.211405-9",
+            "1.0-alpha-11-20070315.033030-10" /* Arrives in via snapshots.codehaus.org proxy */,
+            "1.0-alpha-11-20070316.175232-11" } );
+    }
+
     public void testGetRepositorySpecificName()
     {
         ArchivaRepository repoJavaNet = new ArchivaRepository( "maven2-repository.dev.java.net",
@@ -135,7 +161,12 @@
     public void testUpdateProjectMissingMultipleVersions()
         throws Exception
     {
-        assertUpdatedProjectMetadata( "missing_metadata_b", new String[] { "1.0", "1.0.1", "2.0", "2.0-20070821-dev" } );
+        assertUpdatedProjectMetadata( "missing_metadata_b", new String[] {
+            "1.0",
+            "1.0.1",
+            "2.0",
+            "2.0.1",
+            "2.0-20070821-dev" } );
     }
 
     public void testUpdateProjectMissingMultipleVersionsWithProxies()
@@ -274,7 +305,7 @@
         String actualMetadata = FileUtils.readFileToString( metadataFile, null );
 
         DetailedDiff detailedDiff = new DetailedDiff( new Diff( expectedMetadata, actualMetadata ) );
-        if( !detailedDiff.similar() )
+        if ( !detailedDiff.similar() )
         {
             assertEquals( expectedMetadata, actualMetadata );
         }

Added: maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_metadata_b/2.0.1/missing_metadata_b-2.0.1.jar
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_metadata_b/2.0.1/missing_metadata_b-2.0.1.jar?rev=571008&view=auto
==============================================================================
Binary file - no diff available.

Propchange: maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_metadata_b/2.0.1/missing_metadata_b-2.0.1.jar
------------------------------------------------------------------------------
    svn:mime-type = application/java-archive

Modified: maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/maven-metadata-snapshots.codehaus.org.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/maven-metadata-snapshots.codehaus.org.xml?rev=571008&r1=571007&r2=571008&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/maven-metadata-snapshots.codehaus.org.xml (original)
+++ maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/maven-metadata-snapshots.codehaus.org.xml Wed Aug 29 18:22:19 2007
@@ -4,9 +4,9 @@
   <version>1.0-alpha-11-SNAPSHOT</version>
   <versioning>
     <snapshot>
-      <timestamp>20070316.175232</timestamp>
-      <buildNumber>11</buildNumber>
+      <timestamp>20070315.033030</timestamp>
+      <buildNumber>10</buildNumber>
     </snapshot>
-    <lastUpdated>20070316175456</lastUpdated>
+    <lastUpdated>20070315.033030</lastUpdated>
   </versioning>
 </metadata>