You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by br...@apache.org on 2008/04/03 09:58:47 UTC
svn commit: r644205 [2/2] - in /archiva/branches/archiva-1.0.x:
archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/
archiva-base/archiva-configuration/src/main/mdo/
archiva-base/archiva-policies/src/main/java/org/ap...
Copied: archiva/branches/archiva-1.0.x/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ErrorHandlingTest.java (from r642429, archiva/branches/archiva-1.0.x/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ManagedDefaultTransferTest.java)
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.0.x/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ErrorHandlingTest.java?p2=archiva/branches/archiva-1.0.x/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ErrorHandlingTest.java&p1=archiva/branches/archiva-1.0.x/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ManagedDefaultTransferTest.java&r1=642429&r2=644205&rev=644205&view=diff
==============================================================================
--- archiva/branches/archiva-1.0.x/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ManagedDefaultTransferTest.java (original)
+++ archiva/branches/archiva-1.0.x/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ErrorHandlingTest.java Thu Apr 3 00:58:24 2008
@@ -19,445 +19,609 @@
* under the License.
*/
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.lang.StringUtils;
-import org.apache.maven.archiva.model.ArtifactReference;
import org.apache.maven.archiva.policies.CachedFailuresPolicy;
import org.apache.maven.archiva.policies.ChecksumPolicy;
+import org.apache.maven.archiva.policies.PropagateErrorsDownloadPolicy;
+import org.apache.maven.archiva.policies.PropagateErrorsOnUpdateDownloadPolicy;
+import org.apache.maven.archiva.policies.ProxyDownloadException;
import org.apache.maven.archiva.policies.ReleasesPolicy;
import org.apache.maven.archiva.policies.SnapshotsPolicy;
+import org.apache.maven.archiva.repository.layout.LayoutException;
import org.apache.maven.wagon.ResourceDoesNotExistException;
+import org.apache.maven.wagon.TransferFailedException;
+import org.apache.maven.wagon.authorization.AuthorizationException;
import java.io.File;
/**
- * ManagedDefaultTransferTest
+ * ErrorHandlingTest
*
* @author Brett Porter
- * @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
* @version $Id$
*/
-public class ManagedDefaultTransferTest
+public class ErrorHandlingTest
extends AbstractProxyTestCase
{
- public void testGetDefaultLayoutNotPresent()
+ private static final String PATH_IN_BOTH_REMOTES_NOT_LOCAL =
+ "org/apache/maven/test/get-in-both-proxies/1.0/get-in-both-proxies-1.0.jar";
+
+ private static final String PATH_IN_BOTH_REMOTES_AND_LOCAL =
+ "org/apache/maven/test/get-on-multiple-repos/1.0/get-on-multiple-repos-1.0.pom";
+
+ private static final String ID_MOCKED_PROXIED1 = "badproxied1";
+
+ private static final String NAME_MOCKED_PROXIED1 = "Bad Proxied 1";
+
+ private static final String ID_MOCKED_PROXIED2 = "badproxied2";
+
+ private static final String NAME_MOCKED_PROXIED2 = "Bad Proxied 2";
+
+ public void testPropagateErrorImmediatelyWithErrorThenSuccess()
throws Exception
{
- String path = "org/apache/maven/test/get-default-layout/1.0/get-default-layout-1.0.jar";
- setupTestableManagedRepository( path );
+ String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
+ File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
- File expectedFile = new File( managedDefaultDir, path );
- ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
+ createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.STOP );
+ saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2 );
- // Ensure file isn't present first.
- assertNotExistsInManagedDefaultRepo( expectedFile );
+ simulateGetError( path, expectedFile, createTransferException() );
- // Configure Connector (usually done within archiva.xml configuration)
- saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ONCE, SnapshotsPolicy.ONCE,
- CachedFailuresPolicy.NO );
+ confirmSingleFailure( path, ID_MOCKED_PROXIED1 );
+ }
- // Attempt the proxy fetch.
- File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
+ public void testPropagateErrorImmediatelyWithNotFoundThenError()
+ throws Exception
+ {
+ String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
+ File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
+
+ createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.STOP );
+ createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.STOP );
- File sourceFile = new File( REPOPATH_PROXIED1, path );
- assertFileEquals( expectedFile, downloadedFile, sourceFile );
- assertNoTempFiles( expectedFile );
+ simulateGetError( path, expectedFile, createResourceNotFoundException() );
+
+ simulateGetError( path, expectedFile, createTransferException() );
+
+ confirmSingleFailure( path, ID_MOCKED_PROXIED2 );
}
- /**
- * The attempt here should result in no file being transferred.
- * <p/>
- * The file exists locally, and the policy is ONCE.
- *
- * @throws Exception
- */
- public void testGetDefaultLayoutAlreadyPresentPolicyOnce()
+ public void testPropagateErrorImmediatelyWithSuccessThenError()
throws Exception
{
- String path = "org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar";
- setupTestableManagedRepository( path );
+ String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
+ File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
- File expectedFile = new File( managedDefaultDir, path );
+ saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1 );
- ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
+ createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.STOP );
- assertTrue( expectedFile.exists() );
+ confirmSuccess( path, expectedFile, REPOPATH_PROXIED1 );
+ }
- // Configure Connector (usually done within archiva.xml configuration)
- saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ONCE, SnapshotsPolicy.ONCE,
- CachedFailuresPolicy.NO );
+ public void testPropagateErrorImmediatelyWithNotFoundThenSuccess()
+ throws Exception
+ {
+ String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
+ File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
- // Attempt the proxy fetch.
- File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
+ createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.STOP );
+
+ saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2 );
+
+ simulateGetError( path, expectedFile, createResourceNotFoundException() );
- assertFileEquals( expectedFile, downloadedFile, expectedFile );
- assertNoTempFiles( expectedFile );
+ confirmSuccess( path, expectedFile, REPOPATH_PROXIED2 );
}
- /**
- * <p>
- * Request a file, that exists locally, and remotely.
- * </p>
- * <p>
- * All policies are set to IGNORE.
- * </p>
- * <p>
- * Managed file is newer than remote file.
- * </p>
- * <p>
- * Transfer should not have occured, as managed file is newer.
- * </p>
- *
- * @throws Exception
- */
- public void testGetDefaultLayoutAlreadyPresentNewerThanRemotePolicyIgnored()
+ public void testPropagateErrorAtEndWithErrorThenSuccess()
throws Exception
{
- String path = "org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar";
- setupTestableManagedRepository( path );
+ String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
+ File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
- File expectedFile = new File( managedDefaultDir, path );
- File remoteFile = new File( REPOPATH_PROXIED1, path );
-
- // Set the managed File to be newer than local.
- setManagedNewerThanRemote( expectedFile, remoteFile );
+ createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.STOP );
- long originalModificationTime = expectedFile.lastModified();
- ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
+ saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2 );
- assertTrue( expectedFile.exists() );
+ simulateGetError( path, expectedFile, createTransferException() );
- // Configure Connector (usually done within archiva.xml configuration)
- saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
- SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO );
+ confirmSingleFailure( path, ID_MOCKED_PROXIED1 );
+ }
- // Attempt the proxy fetch.
- File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
+ public void testPropagateErrorAtEndWithSuccessThenError()
+ throws Exception
+ {
+ String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
+ File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
- assertNotDownloaded( downloadedFile );
- assertNotModified( expectedFile, originalModificationTime );
- assertNoTempFiles( expectedFile );
+ saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1 );
+
+ createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.QUEUE );
+
+ confirmSuccess( path, expectedFile, REPOPATH_PROXIED1 );
}
-
- /**
- * <p>
- * Request a file, that exists locally, and remotely.
- * </p>
- * <p>
- * All policies are set to IGNORE.
- * </p>
- * <p>
- * Managed file is older than Remote file.
- * </p>
- * <p>
- * Transfer should have occured, as managed file is older than remote.
- * </p>
- *
- * @throws Exception
- */
- public void testGetDefaultLayoutAlreadyPresentOlderThanRemotePolicyIgnored()
+
+ public void testPropagateErrorAtEndWithNotFoundThenError()
throws Exception
{
- String path = "org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar";
- setupTestableManagedRepository( path );
+ String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
+ File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
- File expectedFile = new File( managedDefaultDir, path );
- File remoteFile = new File( REPOPATH_PROXIED1, path );
-
- // Set the managed file to be newer than remote file.
- setManagedOlderThanRemote( expectedFile, remoteFile );
-
- ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
+ createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.QUEUE );
- assertTrue( expectedFile.exists() );
+ createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.QUEUE );
- // Configure Connector (usually done within archiva.xml configuration)
- saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
- SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO );
+ simulateGetError( path, expectedFile, createResourceNotFoundException() );
- // Attempt the proxy fetch.
- File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
+ simulateGetError( path, expectedFile, createTransferException() );
- File proxiedFile = new File( REPOPATH_PROXIED1, path );
- assertFileEquals( expectedFile, downloadedFile, proxiedFile );
- assertNoTempFiles( expectedFile );
+ confirmSingleFailure( path, ID_MOCKED_PROXIED2 );
}
- /**
- * The attempt here should result in file being transferred.
- * <p/>
- * The file exists locally, is over 6 years old, and the policy is DAILY.
- *
- * @throws Exception
- */
- public void testGetDefaultLayoutRemoteUpdate()
+ public void testPropagateErrorAtEndWithErrorThenNotFound()
throws Exception
{
- String path = "org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar";
- setupTestableManagedRepository( path );
+ String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
+ File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
- File expectedFile = new File( managedDefaultDir, path );
- ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
+ createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.QUEUE );
- assertTrue( expectedFile.exists() );
- expectedFile.setLastModified( getPastDate().getTime() );
+ createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.QUEUE );
- // Configure Connector (usually done within archiva.xml configuration)
- saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.DAILY, SnapshotsPolicy.DAILY,
- CachedFailuresPolicy.NO );
+ simulateGetError( path, expectedFile, createTransferException() );
- // Attempt the proxy fetch.
- File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
+ simulateGetError( path, expectedFile, createResourceNotFoundException() );
- File proxiedFile = new File( REPOPATH_PROXIED1, path );
- assertFileEquals( expectedFile, downloadedFile, proxiedFile );
- assertNoTempFiles( expectedFile );
+ confirmSingleFailure( path, ID_MOCKED_PROXIED1 );
}
- public void testGetWhenInBothProxiedRepos()
+ public void testPropagateErrorAtEndWithErrorThenError()
throws Exception
{
- String path = "org/apache/maven/test/get-in-both-proxies/1.0/get-in-both-proxies-1.0.jar";
- setupTestableManagedRepository( path );
+ String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
+ File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
- File expectedFile = new File( managedDefaultDir, path );
- ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
+ createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.QUEUE );
- assertNotExistsInManagedDefaultRepo( expectedFile );
+ createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.QUEUE );
- // Configure Connector (usually done within archiva.xml configuration)
- saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1 );
- saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2 );
+ simulateGetError( path, expectedFile, createTransferException() );
- // Attempt the proxy fetch.
- File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
+ simulateGetError( path, expectedFile, createTransferException() );
- File proxied1File = new File( REPOPATH_PROXIED1, path );
- File proxied2File = new File( REPOPATH_PROXIED2, path );
- assertFileEquals( expectedFile, downloadedFile, proxied1File );
- assertNoTempFiles( expectedFile );
+ confirmFailures( path, new String[]{ID_MOCKED_PROXIED1, ID_MOCKED_PROXIED2} );
+ }
- // TODO: is this check even needed if it passes above?
- String actualContents = FileUtils.readFileToString( downloadedFile, null );
- String badContents = FileUtils.readFileToString( proxied2File, null );
- assertFalse( "Downloaded file contents should not be that of proxy 2",
- StringUtils.equals( actualContents, badContents ) );
+ public void testPropagateErrorAtEndWithNotFoundThenSuccess()
+ throws Exception
+ {
+ String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
+ File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
+
+ createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.QUEUE );
+
+ saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2 );
+
+ simulateGetError( path, expectedFile, createResourceNotFoundException() );
+
+ confirmSuccess( path, expectedFile, REPOPATH_PROXIED2 );
}
- public void testGetInSecondProxiedRepo()
+ public void testIgnoreErrorWithErrorThenSuccess()
throws Exception
{
- String path = "org/apache/maven/test/get-in-second-proxy/1.0/get-in-second-proxy-1.0.jar";
- setupTestableManagedRepository( path );
+ String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
+ File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
+
+ createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.IGNORE );
+
+ saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2 );
+
+ simulateGetError( path, expectedFile, createTransferException() );
- File expectedFile = new File( managedDefaultDir, path );
- ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
+ confirmSuccess( path, expectedFile, REPOPATH_PROXIED2 );
+ }
- assertNotExistsInManagedDefaultRepo( expectedFile );
+ public void testIgnoreErrorWithSuccessThenError()
+ throws Exception
+ {
+ String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
+ File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
- // Configure Connector (usually done within archiva.xml configuration)
saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1 );
- saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2 );
- // Attempt the proxy fetch.
- File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
+ createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.IGNORE );
- File proxied2File = new File( REPOPATH_PROXIED2, path );
- assertFileEquals( expectedFile, downloadedFile, proxied2File );
- assertNoTempFiles( expectedFile );
+ confirmSuccess( path, expectedFile, REPOPATH_PROXIED1 );
}
- public void testNotFoundInAnyProxies()
+ public void testIgnoreErrorWithNotFoundThenError()
throws Exception
{
- String path = "org/apache/maven/test/does-not-exist/1.0/does-not-exist-1.0.jar";
- setupTestableManagedRepository( path );
+ String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
+ File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
- File expectedFile = new File( managedDefaultDir, path );
- ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
+ createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.IGNORE );
- assertNotExistsInManagedDefaultRepo( expectedFile );
+ createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.IGNORE );
- // Configure Connector (usually done within archiva.xml configuration)
- saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1 );
- saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2 );
- saveConnector( ID_DEFAULT_MANAGED, ID_LEGACY_PROXIED );
+ simulateGetError( path, expectedFile, createResourceNotFoundException() );
- // Attempt the proxy fetch.
- File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
+ simulateGetError( path, expectedFile, createTransferException() );
- assertNull( "File returned was: " + downloadedFile + "; should have got a not found exception",
- downloadedFile );
- assertNoTempFiles( expectedFile );
+ confirmNotDownloadedNoError( path );
}
- public void testGetInSecondProxiedRepoFirstFails()
+ public void testIgnoreErrorWithErrorThenNotFound()
throws Exception
{
- String path = "org/apache/maven/test/get-in-second-proxy/1.0/get-in-second-proxy-1.0.jar";
- setupTestableManagedRepository( path );
+ String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
+ File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
- File expectedFile = new File( managedDefaultDir, path );
- ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
+ createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.IGNORE );
- assertNotExistsInManagedDefaultRepo( expectedFile );
+ createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.IGNORE );
- // Configure Repository (usually done within archiva.xml configuration)
- saveRemoteRepositoryConfig( "badproxied", "Bad Proxied", "test://bad.machine.com/repo/", "default" );
+ simulateGetError( path, expectedFile, createTransferException() );
- wagonMock.get( path, new File( expectedFile.getAbsolutePath() + ".tmp" ) );
- wagonMockControl.setThrowable( new ResourceDoesNotExistException( "transfer failed" ) );
- wagonMockControl.replay();
+ simulateGetError( path, expectedFile, createResourceNotFoundException() );
- // Configure Connector (usually done within archiva.xml configuration)
- saveConnector( ID_DEFAULT_MANAGED, "badproxied" );
- saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2 );
+ confirmNotDownloadedNoError( path );
+ }
- // Attempt the proxy fetch.
- File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
+ public void testIgnoreErrorWithErrorThenError()
+ throws Exception
+ {
+ String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
+ File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
- wagonMockControl.verify();
+ createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.IGNORE );
+
+ createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.IGNORE );
- File proxied2File = new File( REPOPATH_PROXIED2, path );
- assertFileEquals( expectedFile, downloadedFile, proxied2File );
- assertNoTempFiles( expectedFile );
+ simulateGetError( path, expectedFile, createTransferException() );
+
+ simulateGetError( path, expectedFile, createTransferException() );
+
+ confirmNotDownloadedNoError( path );
}
- public void testGetAllRepositoriesFail()
+ public void testPropagateOnUpdateAlwaysArtifactNotPresent()
throws Exception
{
- String path = "org/apache/maven/test/get-in-second-proxy/1.0/get-in-second-proxy-1.0.jar";
- setupTestableManagedRepository( path );
+ String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
+ File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
- File expectedFile = new File( managedDefaultDir.getAbsoluteFile(), path );
- ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
+ createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.STOP,
+ PropagateErrorsOnUpdateDownloadPolicy.ALWAYS );
+ createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.STOP,
+ PropagateErrorsOnUpdateDownloadPolicy.ALWAYS );
- assertNotExistsInManagedDefaultRepo( expectedFile );
+ simulateGetError( path, expectedFile, createTransferException() );
- // Configure Repository (usually done within archiva.xml configuration)
- saveRemoteRepositoryConfig( "badproxied1", "Bad Proxied 1", "test://bad.machine.com/repo/", "default" );
- saveRemoteRepositoryConfig( "badproxied2", "Bad Proxied 2", "test://dead.machine.com/repo/", "default" );
+ confirmSingleFailure( path, ID_MOCKED_PROXIED1 );
+ }
- // Configure Connector (usually done within archiva.xml configuration)
- saveConnector( ID_DEFAULT_MANAGED, "badproxied1" );
- saveConnector( ID_DEFAULT_MANAGED, "badproxied2" );
+ public void testPropagateOnUpdateAlwaysArtifactPresent()
+ throws Exception
+ {
+ String path = PATH_IN_BOTH_REMOTES_AND_LOCAL;
+ File expectedFile = setupRepositoriesWithLocalFilePresent( path );
- File tmpFile = new File( expectedFile.getParentFile(), expectedFile.getName() + ".tmp" );
- wagonMock.get( path, tmpFile );
- wagonMockControl.setThrowable( new ResourceDoesNotExistException( "Can't find resource." ) );
+ createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.STOP,
+ PropagateErrorsOnUpdateDownloadPolicy.ALWAYS );
+ createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.STOP,
+ PropagateErrorsOnUpdateDownloadPolicy.ALWAYS );
- wagonMock.get( path, tmpFile );
- wagonMockControl.setThrowable( new ResourceDoesNotExistException( "Can't find resource." ) );
+ simulateGetIfNewerError( path, expectedFile, createTransferException() );
- wagonMockControl.replay();
+ confirmSingleFailure( path, ID_MOCKED_PROXIED1 );
+ }
- File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
+ public void testPropagateOnUpdateAlwaysQueueArtifactNotPresent()
+ throws Exception
+ {
+ String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
+ File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
- assertNotDownloaded( downloadedFile );
+ createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.QUEUE,
+ PropagateErrorsOnUpdateDownloadPolicy.ALWAYS );
+ createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.QUEUE,
+ PropagateErrorsOnUpdateDownloadPolicy.ALWAYS );
- wagonMockControl.verify();
- assertNoTempFiles( expectedFile );
+ simulateGetError( path, expectedFile, createTransferException() );
+ simulateGetError( path, expectedFile, createTransferException() );
- // TODO: do not want failures to present as a not found [MRM-492]
- // TODO: How much information on each failure should we pass back to the user vs. logging in the proxy?
+ confirmFailures( path, new String[] { ID_MOCKED_PROXIED1, ID_MOCKED_PROXIED2 } );
}
- public void testGetFromLegacyProxyAlreadyPresentInManaged_NewerThanRemote()
+ public void testPropagateOnUpdateAlwaysQueueArtifactPresent()
throws Exception
{
- 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";
- setupTestableManagedRepository( path );
+ String path = PATH_IN_BOTH_REMOTES_AND_LOCAL;
+ File expectedFile = setupRepositoriesWithLocalFilePresent( path );
+
+ createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.QUEUE,
+ PropagateErrorsOnUpdateDownloadPolicy.ALWAYS );
+ createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.QUEUE,
+ PropagateErrorsOnUpdateDownloadPolicy.ALWAYS );
+
+ simulateGetIfNewerError( path, expectedFile, createTransferException() );
+ simulateGetIfNewerError( path, expectedFile, createTransferException() );
+
+ confirmFailures( path, new String[] { ID_MOCKED_PROXIED1, ID_MOCKED_PROXIED2 } );
+ }
+
+ public void testPropagateOnUpdateAlwaysIgnoreArtifactNotPresent()
+ throws Exception
+ {
+ String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
+ File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
+
+ createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.IGNORE,
+ PropagateErrorsOnUpdateDownloadPolicy.ALWAYS );
+ createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.IGNORE,
+ PropagateErrorsOnUpdateDownloadPolicy.ALWAYS );
+
+ simulateGetError( path, expectedFile, createTransferException() );
+ simulateGetError( path, expectedFile, createTransferException() );
- File expectedFile = new File( managedDefaultDir, path );
- File remoteFile = new File( REPOPATH_PROXIED_LEGACY, legacyPath );
-
- // Set the managed file to be newer than remote.
- setManagedNewerThanRemote( expectedFile, remoteFile );
- long expectedTimestamp = expectedFile.lastModified();
-
- ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
-
+ confirmNotDownloadedNoError( path );
+ }
+
+ public void testPropagateOnUpdateAlwaysIgnoreArtifactPresent()
+ throws Exception
+ {
+ String path = PATH_IN_BOTH_REMOTES_AND_LOCAL;
+ File expectedFile = setupRepositoriesWithLocalFilePresent( path );
+
+ createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.IGNORE,
+ PropagateErrorsOnUpdateDownloadPolicy.ALWAYS );
+ createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.IGNORE,
+ PropagateErrorsOnUpdateDownloadPolicy.ALWAYS );
+
+ simulateGetIfNewerError( path, expectedFile, createTransferException() );
+ simulateGetIfNewerError( path, expectedFile, createTransferException() );
+
+ confirmNotDownloadedNoError( path );
assertTrue( expectedFile.exists() );
+ }
- // Configure Connector (usually done within archiva.xml configuration)
- saveConnector( ID_DEFAULT_MANAGED, ID_LEGACY_PROXIED );
+ public void testPropagateOnUpdateNotPresentArtifactNotPresent()
+ throws Exception
+ {
+ String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
+ File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
- File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
+ createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.STOP,
+ PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT );
+ createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.STOP,
+ PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT );
- assertNotDownloaded( downloadedFile );
- assertNotModified( expectedFile, expectedTimestamp );
- assertNoTempFiles( expectedFile );
+ simulateGetError( path, expectedFile, createTransferException() );
+
+ confirmSingleFailure( path, ID_MOCKED_PROXIED1 );
}
-
- public void testGetFromLegacyProxyAlreadyPresentInManaged_OlderThanRemote()
+
+ public void testPropagateOnUpdateNotPresentArtifactPresent()
throws Exception
{
- 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";
- setupTestableManagedRepository( path );
+ String path = PATH_IN_BOTH_REMOTES_AND_LOCAL;
+ File expectedFile = setupRepositoriesWithLocalFilePresent( path );
+
+ createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.STOP,
+ PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT );
+ createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.STOP,
+ PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT );
- File expectedFile = new File( managedDefaultDir, path );
- File remoteFile = new File( REPOPATH_PROXIED_LEGACY, legacyPath );
+ simulateGetIfNewerError( path, expectedFile, createTransferException() );
+
+ confirmNotDownloadedNoError( path );
+ assertTrue( expectedFile.exists() );
+ }
+
+ public void testPropagateOnUpdateNotPresentQueueArtifactNotPresent()
+ throws Exception
+ {
+ String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
+ File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
- // Set the managed file to be older than remote.
- setManagedOlderThanRemote( expectedFile, remoteFile );
+ createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.QUEUE,
+ PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT );
+ createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.QUEUE,
+ PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT );
- ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
+ simulateGetError( path, expectedFile, createTransferException() );
+ simulateGetError( path, expectedFile, createTransferException() );
+ confirmFailures( path, new String[] { ID_MOCKED_PROXIED1, ID_MOCKED_PROXIED2 } );
+ }
+
+ public void testPropagateOnUpdateNotPresentQueueArtifactPresent()
+ throws Exception
+ {
+ String path = PATH_IN_BOTH_REMOTES_AND_LOCAL;
+ File expectedFile = setupRepositoriesWithLocalFilePresent( path );
+
+ createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.QUEUE,
+ PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT );
+ createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.QUEUE,
+ PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT );
+
+ simulateGetIfNewerError( path, expectedFile, createTransferException() );
+ simulateGetIfNewerError( path, expectedFile, createTransferException() );
+
+ confirmNotDownloadedNoError( path );
assertTrue( expectedFile.exists() );
+ }
+
+ public void testPropagateOnUpdateNotPresentIgnoreArtifactNotPresent()
+ throws Exception
+ {
+ String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL;
+ File expectedFile = setupRepositoriesWithLocalFileNotPresent( path );
- // Configure Connector (usually done within archiva.xml configuration)
- saveConnector( ID_DEFAULT_MANAGED, ID_LEGACY_PROXIED );
+ createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.IGNORE,
+ PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT );
+ createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.IGNORE,
+ PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT );
- File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
+ simulateGetError( path, expectedFile, createTransferException() );
+ simulateGetError( path, expectedFile, createTransferException() );
- File proxiedFile = new File( REPOPATH_PROXIED_LEGACY, legacyPath );
- assertFileEquals( expectedFile, downloadedFile, proxiedFile );
- assertNoTempFiles( expectedFile );
+ confirmNotDownloadedNoError( path );
}
- public void testGetFromLegacyProxyNotPresentInManaged()
+ public void testPropagateOnUpdateNotPresentIgnoreArtifactPresent()
throws Exception
{
- String legacyPath = "org.apache.maven.test/jars/example-lib-2.2.jar";
- String path = "org/apache/maven/test/example-lib/2.2/example-lib-2.2.jar";
- setupTestableManagedRepository( path );
+ String path = PATH_IN_BOTH_REMOTES_AND_LOCAL;
+ File expectedFile = setupRepositoriesWithLocalFilePresent( path );
- File expectedFile = new File( managedDefaultDir, path );
- ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
+ createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.IGNORE,
+ PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT );
+ createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.IGNORE,
+ PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT );
- assertNotExistsInManagedDefaultRepo( expectedFile );
+ simulateGetIfNewerError( path, expectedFile, createTransferException() );
+ simulateGetIfNewerError( path, expectedFile, createTransferException() );
- // Configure Connector (usually done within archiva.xml configuration)
- saveConnector( ID_DEFAULT_MANAGED, ID_LEGACY_PROXIED );
+ confirmNotDownloadedNoError( path );
+ assertTrue( expectedFile.exists() );
+ }
+
+ // ------------------------------------------
+ // HELPER METHODS
+ // ------------------------------------------
- File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
+ private void createMockedProxyConnector( String id, String name, String errorPolicy )
+ {
+ saveRemoteRepositoryConfig( id, name, "test://bad.machine.com/repo/", "default" );
+ saveConnector( ID_DEFAULT_MANAGED, id, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, SnapshotsPolicy.ALWAYS,
+ CachedFailuresPolicy.NO, errorPolicy );
+ }
- File proxiedFile = new File( REPOPATH_PROXIED_LEGACY, legacyPath );
- assertFileEquals( expectedFile, downloadedFile, proxiedFile );
- assertNoTempFiles( expectedFile );
+ private void createMockedProxyConnector( String id, String name, String errorPolicy, String errorOnUpdatePolicy )
+ {
+ saveRemoteRepositoryConfig( id, name, "test://bad.machine.com/repo/", "default" );
+ saveConnector( ID_DEFAULT_MANAGED, id, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, SnapshotsPolicy.ALWAYS,
+ CachedFailuresPolicy.NO, errorPolicy, errorOnUpdatePolicy );
}
- public void testGetFromLegacyProxyPluginNotPresentInManaged()
+ private File setupRepositoriesWithLocalFileNotPresent( String path )
throws Exception
{
- String legacyPath = "org.apache.maven.test/plugins/example-maven-plugin-0.42.jar";
- String path = "org/apache/maven/test/example-maven-plugin/0.42/example-maven-plugin-0.42.jar";
setupTestableManagedRepository( path );
- File expectedFile = new File( managedDefaultDir, path );
- ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
+ File file = new File( managedDefaultDir, path );
- assertNotExistsInManagedDefaultRepo( expectedFile );
+ assertNotExistsInManagedDefaultRepo( file );
+
+ return file;
+ }
+
+ private File setupRepositoriesWithLocalFilePresent( String path )
+ throws Exception
+ {
+ setupTestableManagedRepository( path );
- // Configure Connector (usually done within archiva.xml configuration)
- saveConnector( ID_DEFAULT_MANAGED, ID_LEGACY_PROXIED );
+ File file = new File( managedDefaultDir, path );
- File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
+ assertTrue( file.exists() );
- File proxiedFile = new File( REPOPATH_PROXIED_LEGACY, legacyPath );
- assertFileEquals( expectedFile, downloadedFile, proxiedFile );
- assertNoTempFiles( expectedFile );
+ return file;
+ }
+
+ private void simulateGetError( String path, File expectedFile, Exception throwable )
+ throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
+ {
+ wagonMock.get( path, createExpectedTempFile( expectedFile ) );
+ wagonMockControl.setThrowable( throwable, 1 );
+ }
+
+ private void simulateGetIfNewerError( String path, File expectedFile, TransferFailedException exception )
+ throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
+ {
+ wagonMock.getIfNewer( path, createExpectedTempFile( expectedFile ), expectedFile.lastModified() );
+ wagonMockControl.setThrowable( exception, 1 );
+ }
+
+ private File createExpectedTempFile( File expectedFile )
+ {
+ return new File( expectedFile.getParentFile(), expectedFile.getName() + ".tmp" ).getAbsoluteFile();
+ }
+
+ private void confirmSingleFailure( String path, String id )
+ throws LayoutException
+ {
+ confirmFailures( path, new String[]{id} );
+ }
+
+ private void confirmFailures( String path, String[] ids )
+ throws LayoutException
+ {
+ wagonMockControl.replay();
+
+ // Attempt the proxy fetch.
+ File downloadedFile = null;
+ try
+ {
+ downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository,
+ managedDefaultRepository.toArtifactReference( path ) );
+ fail( "Proxy should not have succeeded" );
+ }
+ catch ( ProxyDownloadException e )
+ {
+ assertEquals( ids.length, e.getFailures().size() );
+ for ( String id : ids )
+ {
+ assertTrue( e.getFailures().keySet().contains( id ) );
+ }
+ }
+
+ wagonMockControl.verify();
+
+ assertNotDownloaded( downloadedFile );
+ }
+
+ private void confirmSuccess( String path, File expectedFile, String basedir )
+ throws Exception
+ {
+ File downloadedFile = performDownload( path );
+
+ File proxied1File = new File( basedir, path );
+ assertFileEquals( expectedFile, downloadedFile, proxied1File );
+ }
+
+ private void confirmNotDownloadedNoError( String path )
+ throws Exception
+ {
+ File downloadedFile = performDownload( path );
+
+ assertNotDownloaded( downloadedFile );
+ }
+
+ private File performDownload( String path )
+ throws ProxyDownloadException, LayoutException
+ {
+ wagonMockControl.replay();
+
+ // Attempt the proxy fetch.
+ File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository,
+ managedDefaultRepository.toArtifactReference( path ) );
+
+ wagonMockControl.verify();
+ return downloadedFile;
+ }
+
+ private static TransferFailedException createTransferException()
+ {
+ return new TransferFailedException( "test download exception" );
+ }
+
+ private static ResourceDoesNotExistException createResourceNotFoundException()
+ {
+ return new ResourceDoesNotExistException( "test download not found" );
}
-}
+}
\ No newline at end of file
Copied: archiva/branches/archiva-1.0.x/archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/ErrorHandlingTest.xml (from r642429, archiva/branches/archiva-1.0.x/archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/CacheFailuresTransferTest.xml)
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.0.x/archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/ErrorHandlingTest.xml?p2=archiva/branches/archiva-1.0.x/archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/ErrorHandlingTest.xml&p1=archiva/branches/archiva-1.0.x/archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/CacheFailuresTransferTest.xml&r1=642429&r2=644205&rev=644205&view=diff
==============================================================================
--- archiva/branches/archiva-1.0.x/archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/CacheFailuresTransferTest.xml (original)
+++ archiva/branches/archiva-1.0.x/archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/ErrorHandlingTest.xml Thu Apr 3 00:58:24 2008
@@ -73,6 +73,10 @@
<field-name>postDownloadPolicies</field-name>
</requirement>
<requirement>
+ <role>org.apache.maven.archiva.policies.DownloadErrorPolicy</role>
+ <field-name>downloadErrorPolicies</field-name>
+ </requirement>
+ <requirement>
<role>org.apache.maven.archiva.policies.urlcache.UrlFailureCache</role>
<role-hint>default</role-hint>
<field-name>urlFailureCache</field-name>
Modified: archiva/branches/archiva-1.0.x/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/AbstractProxyConnectorFormAction.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.0.x/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/AbstractProxyConnectorFormAction.java?rev=644205&r1=644204&r2=644205&view=diff
==============================================================================
--- archiva/branches/archiva-1.0.x/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/AbstractProxyConnectorFormAction.java (original)
+++ archiva/branches/archiva-1.0.x/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/AbstractProxyConnectorFormAction.java Thu Apr 3 00:58:24 2008
@@ -22,7 +22,8 @@
import com.opensymphony.xwork.Preparable;
import org.apache.commons.lang.StringUtils;
import org.apache.maven.archiva.configuration.ProxyConnectorConfiguration;
-import org.apache.maven.archiva.policies.DownloadPolicy;
+import org.apache.maven.archiva.policies.DownloadErrorPolicy;
+import org.apache.maven.archiva.policies.Policy;
import org.apache.maven.archiva.policies.PostDownloadPolicy;
import org.apache.maven.archiva.policies.PreDownloadPolicy;
@@ -55,6 +56,11 @@
private Map<String, PostDownloadPolicy> postDownloadPolicyMap;
/**
+ * @plexus.requirement role="org.apache.maven.archiva.policies.DownloadErrorPolicy"
+ */
+ private Map<String, DownloadErrorPolicy> downloadErrorPolicyMap;
+
+ /**
* The list of network proxy ids that are available.
*/
private List<String> proxyIdOptions;
@@ -72,7 +78,7 @@
/**
* The map of policies that are available to be set.
*/
- private Map<String, DownloadPolicy> policyMap;
+ private Map<String, Policy> policyMap;
/**
* The property key to add or remove.
@@ -185,7 +191,7 @@
return pattern;
}
- public Map<String, DownloadPolicy> getPolicyMap()
+ public Map<String, Policy> getPolicyMap()
{
return policyMap;
}
@@ -318,7 +324,7 @@
this.pattern = pattern;
}
- public void setPolicyMap( Map<String, DownloadPolicy> policyMap )
+ public void setPolicyMap( Map<String, Policy> policyMap )
{
this.policyMap = policyMap;
}
@@ -363,12 +369,13 @@
return options;
}
- protected Map<String, DownloadPolicy> createPolicyMap()
+ protected Map<String, Policy> createPolicyMap()
{
- Map<String, DownloadPolicy> policyMap = new HashMap<String, DownloadPolicy>();
+ Map<String, Policy> policyMap = new HashMap<String, Policy>();
policyMap.putAll( preDownloadPolicyMap );
policyMap.putAll( postDownloadPolicyMap );
+ policyMap.putAll( downloadErrorPolicyMap );
return policyMap;
}
@@ -387,10 +394,10 @@
else
{
// Validate / Fix policy settings arriving from browser.
- for ( Map.Entry<String, DownloadPolicy> entry : getPolicyMap().entrySet() )
+ for ( Map.Entry<String, Policy> entry : getPolicyMap().entrySet() )
{
- String policyId = (String) entry.getKey();
- DownloadPolicy policy = (DownloadPolicy) entry.getValue();
+ String policyId = entry.getKey();
+ Policy policy = entry.getValue();
List<String> options = policy.getOptions();
if ( !connector.getPolicies().containsKey( policyId ) )
Modified: archiva/branches/archiva-1.0.x/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/ProxiedDavServer.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.0.x/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/ProxiedDavServer.java?rev=644205&r1=644204&r2=644205&view=diff
==============================================================================
--- archiva/branches/archiva-1.0.x/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/ProxiedDavServer.java (original)
+++ archiva/branches/archiva-1.0.x/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/ProxiedDavServer.java Thu Apr 3 00:58:24 2008
@@ -19,23 +19,11 @@
* under the License.
*/
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletResponse;
-
import org.apache.maven.archiva.common.utils.PathUtil;
import org.apache.maven.archiva.model.ArtifactReference;
import org.apache.maven.archiva.model.ProjectReference;
import org.apache.maven.archiva.model.VersionedReference;
-import org.apache.maven.archiva.proxy.ProxyException;
+import org.apache.maven.archiva.policies.ProxyDownloadException;
import org.apache.maven.archiva.proxy.RepositoryProxyConnectors;
import org.apache.maven.archiva.repository.ManagedRepositoryContent;
import org.apache.maven.archiva.repository.RepositoryContentFactory;
@@ -61,6 +49,17 @@
import org.codehaus.plexus.webdav.servlet.DavServerRequest;
import org.codehaus.plexus.webdav.util.WebdavMethodUtil;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* ProxiedDavServer
*
@@ -365,7 +364,7 @@
{
/* eat it */
}
- catch ( ProxyException e )
+ catch ( ProxyDownloadException e )
{
throw new ServletException( "Unable to fetch artifact resource.", e );
}
@@ -392,10 +391,6 @@
{
/* eat it */
}
- catch ( ProxyException e )
- {
- throw new ServletException( "Unable to fetch versioned metadata resource.", e );
- }
try
{
@@ -410,10 +405,6 @@
{
/* eat it */
}
- catch ( ProxyException e )
- {
- throw new ServletException( "Unable to fetch project metadata resource.", e );
- }
return false;
}
@@ -429,7 +420,7 @@
* artifact.
*/
protected void applyServerSideRelocation( ArtifactReference artifact )
- throws ProxyException
+ throws ProxyDownloadException
{
if ( "pom".equals( artifact.getType() ) )
{
Modified: archiva/branches/archiva-1.0.x/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/proxyConnectorForm.jspf
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.0.x/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/proxyConnectorForm.jspf?rev=644205&r1=644204&r2=644205&view=diff
==============================================================================
--- archiva/branches/archiva-1.0.x/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/proxyConnectorForm.jspf (original)
+++ archiva/branches/archiva-1.0.x/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/proxyConnectorForm.jspf Thu Apr 3 00:58:24 2008
@@ -42,7 +42,7 @@
<tr>
<td>
<ww:label for="policy_${policy.key}" required="true"
- theme="simple">${policy.key}:
+ theme="simple">${policy.value.name}:
</ww:label>
</td>
<td>
Modified: archiva/branches/archiva-1.0.x/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/AddProxyConnectorActionTest.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.0.x/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/AddProxyConnectorActionTest.java?rev=644205&r1=644204&r2=644205&view=diff
==============================================================================
--- archiva/branches/archiva-1.0.x/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/AddProxyConnectorActionTest.java (original)
+++ archiva/branches/archiva-1.0.x/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/AddProxyConnectorActionTest.java Thu Apr 3 00:58:24 2008
@@ -28,6 +28,8 @@
import org.apache.maven.archiva.configuration.RemoteRepositoryConfiguration;
import org.apache.maven.archiva.policies.CachedFailuresPolicy;
import org.apache.maven.archiva.policies.ChecksumPolicy;
+import org.apache.maven.archiva.policies.PropagateErrorsDownloadPolicy;
+import org.apache.maven.archiva.policies.PropagateErrorsOnUpdateDownloadPolicy;
import org.apache.maven.archiva.policies.ReleasesPolicy;
import org.apache.maven.archiva.policies.SnapshotsPolicy;
import org.apache.maven.archiva.web.action.AbstractWebworkTestCase;
@@ -36,6 +38,7 @@
import org.easymock.MockControl;
import java.util.List;
+import java.util.Map;
/**
* AddProxyConnectorActionTest
@@ -390,10 +393,13 @@
connector.setTargetRepoId( "central" );
// TODO: Set these options programatically via list of available policies.
- connector.getPolicies().put( "releases", new ReleasesPolicy().getDefaultOption() );
- connector.getPolicies().put( "snapshots", new SnapshotsPolicy().getDefaultOption() );
- connector.getPolicies().put( "checksum", new ChecksumPolicy().getDefaultOption() );
- connector.getPolicies().put( "cache-failures", new CachedFailuresPolicy().getDefaultOption() );
+ Map<String, String> policies = connector.getPolicies();
+ policies.put( "releases", new ReleasesPolicy().getDefaultOption() );
+ policies.put( "snapshots", new SnapshotsPolicy().getDefaultOption() );
+ policies.put( "checksum", new ChecksumPolicy().getDefaultOption() );
+ policies.put( "cache-failures", new CachedFailuresPolicy().getDefaultOption() );
+ policies.put( "propagate-errors", new PropagateErrorsDownloadPolicy().getDefaultOption() );
+ policies.put( "propagate-errors-on-update", new PropagateErrorsOnUpdateDownloadPolicy().getDefaultOption() );
}
@Override
Modified: archiva/branches/archiva-1.0.x/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/EditProxyConnectorActionTest.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.0.x/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/EditProxyConnectorActionTest.java?rev=644205&r1=644204&r2=644205&view=diff
==============================================================================
--- archiva/branches/archiva-1.0.x/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/EditProxyConnectorActionTest.java (original)
+++ archiva/branches/archiva-1.0.x/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/EditProxyConnectorActionTest.java Thu Apr 3 00:58:24 2008
@@ -28,6 +28,8 @@
import org.apache.maven.archiva.configuration.RemoteRepositoryConfiguration;
import org.apache.maven.archiva.policies.CachedFailuresPolicy;
import org.apache.maven.archiva.policies.ChecksumPolicy;
+import org.apache.maven.archiva.policies.PropagateErrorsDownloadPolicy;
+import org.apache.maven.archiva.policies.PropagateErrorsOnUpdateDownloadPolicy;
import org.apache.maven.archiva.policies.ReleasesPolicy;
import org.apache.maven.archiva.policies.SnapshotsPolicy;
import org.apache.maven.archiva.web.action.AbstractWebworkTestCase;
@@ -36,6 +38,7 @@
import org.easymock.MockControl;
import java.util.List;
+import java.util.Map;
/**
* EditProxyConnectorActionTest
@@ -395,10 +398,13 @@
connector.setTargetRepoId( TEST_TARGET_ID );
// TODO: Set these options programatically via list of available policies.
- connector.getPolicies().put( "releases", new ReleasesPolicy().getDefaultOption() );
- connector.getPolicies().put( "snapshots", new SnapshotsPolicy().getDefaultOption() );
- connector.getPolicies().put( "checksum", new ChecksumPolicy().getDefaultOption() );
- connector.getPolicies().put( "cache-failures", new CachedFailuresPolicy().getDefaultOption() );
+ Map<String, String> policies = connector.getPolicies();
+ policies.put( "releases", new ReleasesPolicy().getDefaultOption() );
+ policies.put( "snapshots", new SnapshotsPolicy().getDefaultOption() );
+ policies.put( "checksum", new ChecksumPolicy().getDefaultOption() );
+ policies.put( "cache-failures", new CachedFailuresPolicy().getDefaultOption() );
+ policies.put( "propagate-errors", new PropagateErrorsDownloadPolicy().getDefaultOption() );
+ policies.put( "propagate-errors-on-update", new PropagateErrorsOnUpdateDownloadPolicy().getDefaultOption() );
config.addProxyConnector( connector );