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 )