Author: brett
Date: Thu Aug 31 19:40:33 2006
New Revision: 439143

URL: http://svn.apache.org/viewvc?rev=439143&view=rev
Log:
[MRM-155] check paths are translated correctly when there is a mismatch between 
the requested repository layout and the managed repository layout
Submitted by: Nicolas de Loof (applied with changes)

Modified:
    
maven/archiva/trunk/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultProxyRequestHandler.java
    
maven/archiva/trunk/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ProxyRequestHandlerTest.java

Modified: 
maven/archiva/trunk/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultProxyRequestHandler.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultProxyRequestHandler.java?rev=439143&r1=439142&r2=439143&view=diff
==============================================================================
--- 
maven/archiva/trunk/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultProxyRequestHandler.java
 (original)
+++ 
maven/archiva/trunk/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultProxyRequestHandler.java
 Thu Aug 31 19:40:33 2006
@@ -124,7 +124,7 @@
             }
             else
             {
-                get( path, target, repository, managedRepository, wagonProxy, 
force );
+                target = get( path, target, repository, managedRepository, 
wagonProxy, force );
             }
         }
 
@@ -136,7 +136,11 @@
         return target;
     }
 
-    private void get( String path, File target, ProxiedArtifactRepository 
repository,
+    /**
+     * @return the target File may not be same as the target argument, if a
+     *         maven1 to maven2 path convertion occured.
+     */
+    private File get( String path, File target, ProxiedArtifactRepository 
repository,
                       ArtifactRepository managedRepository, ProxyInfo 
wagonProxy, boolean force )
         throws ProxyException
     {
@@ -192,6 +196,8 @@
 
             if ( artifact != null )
             {
+                target = new File( managedRepository.getBasedir(), 
managedRepository.pathOf( artifact ) );
+
                 ArtifactRepository artifactRepository = 
repository.getRepository();
 
                 // we use the release policy for tracking failures, but only 
check for updates on snapshots
@@ -227,6 +233,7 @@
             // in case it previously failed and we've since found it
             repository.clearFailure( path );
         }
+        return target;
     }
 
     private void mergeMetadataFiles( File target, File metadataFile )

Modified: 
maven/archiva/trunk/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ProxyRequestHandlerTest.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ProxyRequestHandlerTest.java?rev=439143&r1=439142&r2=439143&view=diff
==============================================================================
--- 
maven/archiva/trunk/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ProxyRequestHandlerTest.java
 (original)
+++ 
maven/archiva/trunk/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ProxyRequestHandlerTest.java
 Thu Aug 31 19:40:33 2006
@@ -110,7 +110,7 @@
         ArtifactRepositoryLayout legacyLayout =
             (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE, 
"legacy" );
 
-        legacyManagedRepository = createRepository( "managed-repository", 
repoLocation );
+        legacyManagedRepository = createRepository( "managed-repository", 
repoLocation, legacyLayout );
 
         File location = getTestFile( "src/test/repositories/proxied1" );
         proxiedRepository1 = createRepository( "proxied1", location );
@@ -1590,6 +1590,38 @@
         assertFalse( "Check file timestamp is not that of proxy", 
proxiedFile.lastModified() == file.lastModified() );
         assertEquals( "Check file timestamp is that of original managed file", 
originalModificationTime,
                       file.lastModified() );
+    }
+
+    public void testLegacyRequestConvertedToDefaultPathInManagedRepo()
+        throws Exception
+    {
+        // Check that a Maven1 legacy request is translated to a maven2 path in
+        // the managed repository.
+
+        String legacyPath = 
"org.apache.maven.test/jars/get-default-layout-present-1.0.jar";
+        String path = 
"org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar";
+        File expectedFile = new File( defaultManagedRepository.getBasedir(), 
path );
+        assertTrue( expectedFile.exists() );
+
+        File file = requestHandler.get( legacyPath, legacyProxiedRepositories, 
defaultManagedRepository );
+
+        assertEquals( "Check file matches", expectedFile, file );
+    }
+
+    public void testDefaultRequestConvertedToLegacyPathInManagedRepo()
+        throws Exception
+    {
+        // Check that a Maven2 default request is translated to a legacy path 
in
+        // the managed repository.
+
+        String legacyPath = 
"org.apache.maven.test/jars/get-default-layout-present-1.0.jar";
+        String path = 
"org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar";
+        File expectedFile = new File( legacyManagedRepository.getBasedir(), 
legacyPath );
+        assertTrue( expectedFile.exists() );
+
+        File file = requestHandler.get( path, proxiedRepositories, 
legacyManagedRepository );
+
+        assertEquals( "Check file matches", expectedFile, file );
     }
 
     private static Versioning getVersioning( List versions )


Reply via email to