Author: joakime
Date: Fri Oct 19 15:47:43 2007
New Revision: 586635

URL: http://svn.apache.org/viewvc?rev=586635&view=rev
Log:
[MRM-520] Proxy Connectors are not deleted with the deletion of a Repository.
Added ability of delete (managed|remote) repository action to clear out the 
associated proxy connector.
Added tests.


Modified:
    
maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AbstractRepositoriesAdminAction.java
    
maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java
    
maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteRemoteRepositoryAction.java
    
maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java
    
maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteRemoteRepositoryActionTest.java

Modified: 
maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AbstractRepositoriesAdminAction.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AbstractRepositoriesAdminAction.java?rev=586635&r1=586634&r2=586635&view=diff
==============================================================================
--- 
maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AbstractRepositoriesAdminAction.java
 (original)
+++ 
maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AbstractRepositoriesAdminAction.java
 Fri Oct 19 15:47:43 2007
@@ -23,6 +23,7 @@
 import org.apache.maven.archiva.configuration.Configuration;
 import 
org.apache.maven.archiva.configuration.IndeterminateConfigurationException;
 import org.apache.maven.archiva.configuration.InvalidConfigurationException;
+import org.apache.maven.archiva.configuration.ProxyConnectorConfiguration;
 import org.apache.maven.archiva.security.ArchivaRoleConstants;
 import org.codehaus.plexus.redback.rbac.Resource;
 import org.codehaus.plexus.redback.xwork.interceptor.SecureAction;
@@ -32,6 +33,8 @@
 import org.codehaus.plexus.xwork.action.PlexusActionSupport;
 
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * Abstract AdminRepositories Action base.
@@ -100,5 +103,15 @@
         }
 
         return SUCCESS;
+    }
+
+    /**
+     * Get the list of ProxyConnectors that are present in the configuration.
+     * 
+     * @return a new list of ProxyConnectors present in the configuration.
+     */
+    protected List<ProxyConnectorConfiguration> getProxyConnectors()
+    {
+        return new ArrayList<ProxyConnectorConfiguration>( 
archivaConfiguration.getConfiguration().getProxyConnectors() );
     }
 }

Modified: 
maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java?rev=586635&r1=586634&r2=586635&view=diff
==============================================================================
--- 
maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java
 (original)
+++ 
maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java
 Fri Oct 19 15:47:43 2007
@@ -24,9 +24,11 @@
 import org.apache.commons.lang.StringUtils;
 import org.apache.maven.archiva.configuration.Configuration;
 import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
+import org.apache.maven.archiva.configuration.ProxyConnectorConfiguration;
 import org.codehaus.plexus.redback.role.RoleManagerException;
 
 import java.io.IOException;
+import java.util.List;
 
 /**
  * DeleteManagedRepositoryAction 
@@ -123,7 +125,15 @@
 
         // TODO: [MRM-265] After removing a managed repository - Browse/Search 
still see it
         
-        // TODO: [MRM-520] Proxy Connectors are not deleted with the deletion 
of a Repository.
+        // [MRM-520] Proxy Connectors are not deleted with the deletion of a 
Repository.
+        List<ProxyConnectorConfiguration> proxyConnectors = 
getProxyConnectors();
+        for ( ProxyConnectorConfiguration proxyConnector : proxyConnectors )
+        {
+            if ( StringUtils.equals( proxyConnector.getSourceRepoId(), 
cleanupRepository.getId() ) )
+            {
+                archivaConfiguration.getConfiguration().removeProxyConnector( 
proxyConnector );
+            }
+        }
     }
 
     public ManagedRepositoryConfiguration getRepository()

Modified: 
maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteRemoteRepositoryAction.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteRemoteRepositoryAction.java?rev=586635&r1=586634&r2=586635&view=diff
==============================================================================
--- 
maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteRemoteRepositoryAction.java
 (original)
+++ 
maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteRemoteRepositoryAction.java
 Fri Oct 19 15:47:43 2007
@@ -23,8 +23,11 @@
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.maven.archiva.configuration.Configuration;
+import org.apache.maven.archiva.configuration.ProxyConnectorConfiguration;
 import org.apache.maven.archiva.configuration.RemoteRepositoryConfiguration;
 
+import java.util.List;
+
 /**
  * DeleteRemoteRepositoryAction 
  *
@@ -81,7 +84,16 @@
 
     private void cleanupRepositoryData( RemoteRepositoryConfiguration 
existingRepository )
     {
-        // TODO: [MRM-520] Proxy Connectors are not deleted with the deletion 
of a Repository.
+        // [MRM-520] Proxy Connectors are not deleted with the deletion of a 
Repository.
+        
+        List<ProxyConnectorConfiguration> proxyConnectors = 
getProxyConnectors();
+        for ( ProxyConnectorConfiguration proxyConnector : proxyConnectors )
+        {
+            if ( StringUtils.equals( proxyConnector.getTargetRepoId(), 
existingRepository.getId() ) )
+            {
+                archivaConfiguration.getConfiguration().removeProxyConnector( 
proxyConnector );
+            }
+        }
     }
 
     public RemoteRepositoryConfiguration getRepository()

Modified: 
maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java?rev=586635&r1=586634&r2=586635&view=diff
==============================================================================
--- 
maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java
 (original)
+++ 
maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java
 Fri Oct 19 15:47:43 2007
@@ -25,6 +25,8 @@
 import org.apache.maven.archiva.configuration.Configuration;
 import 
org.apache.maven.archiva.configuration.IndeterminateConfigurationException;
 import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
+import org.apache.maven.archiva.configuration.ProxyConnectorConfiguration;
+import org.apache.maven.archiva.configuration.RemoteRepositoryConfiguration;
 import org.apache.maven.archiva.security.ArchivaRoleConstants;
 import org.codehaus.plexus.PlexusTestCase;
 import org.codehaus.plexus.redback.role.RoleManager;
@@ -120,7 +122,7 @@
     {
         prepareRoleManagerMock();
         
-        Configuration configuration = prepDeletionTest( createRepository(), 
"delete-entry" );
+        Configuration configuration = prepDeletionTest( createRepository(), 3 
);
         String status = action.deleteEntry();
         assertEquals( Action.SUCCESS, status );
 
@@ -134,7 +136,7 @@
     {
         prepareRoleManagerMock();
         
-        Configuration configuration = prepDeletionTest( createRepository(), 
"delete-contents" );
+        Configuration configuration = prepDeletionTest( createRepository(), 3 
);
         String status = action.deleteContents();
         assertEquals( Action.SUCCESS, status );
 
@@ -142,12 +144,33 @@
 
         assertFalse( location.exists() );
     }
+    
+    public void testDeleteRepositoryAndAssociatedProxyConnectors()
+        throws Exception
+    {
+        Configuration configuration = prepDeletionTest( createRepository(), 4 
);
+        configuration.addRemoteRepository( createRemoteRepository( "codehaus", 
"http://repository.codehaus.org"; ) );
+        configuration.addRemoteRepository( createRemoteRepository( "java.net", 
"http://dev.java.net/maven2"; ) );
+        configuration.addProxyConnector( createProxyConnector( REPO_ID, 
"codehaus" ) );
+
+        prepareRoleManagerMock();
+
+        assertEquals( 1, configuration.getProxyConnectors().size() );
+        
+        String status = action.deleteContents();
+        assertEquals( Action.SUCCESS, status );
+
+        assertTrue( configuration.getManagedRepositories().isEmpty() );
+        assertEquals( 0, configuration.getProxyConnectors().size() );
 
+        assertFalse( location.exists() );
+    }
+    
     public void testDeleteRepositoryCancelled()
         throws Exception
     {
         ManagedRepositoryConfiguration originalRepository = createRepository();
-        Configuration configuration = prepDeletionTest( originalRepository, 
null );
+        Configuration configuration = prepDeletionTest( originalRepository, 3 
);
         String status = action.execute();
         assertEquals( Action.SUCCESS, status );
 
@@ -158,7 +181,7 @@
         assertTrue( location.exists() );
     }
 
-    private Configuration prepDeletionTest( ManagedRepositoryConfiguration 
originalRepository, String mode )
+    private Configuration prepDeletionTest( ManagedRepositoryConfiguration 
originalRepository, int expectCountGetConfig )
         throws RegistryException, IndeterminateConfigurationException
     {
         location.mkdirs();
@@ -166,9 +189,7 @@
         Configuration configuration = createConfigurationForEditing( 
originalRepository );
 
         archivaConfiguration.getConfiguration();
-        archivaConfigurationControl.setReturnValue( configuration );
-        archivaConfiguration.getConfiguration();
-        archivaConfigurationControl.setReturnValue( configuration );
+        archivaConfigurationControl.setReturnValue( configuration, 
expectCountGetConfig );
 
         archivaConfiguration.save( configuration );
         archivaConfigurationControl.replay();
@@ -213,23 +234,36 @@
     {
         ManagedRepositoryConfiguration r = new 
ManagedRepositoryConfiguration();
         r.setId( REPO_ID );
-        populateRepository( r );
+        r.setName( "repo name" );
+        r.setLocation( location.getAbsolutePath() );
+        r.setLayout( "default" );
+        r.setRefreshCronExpression( "* 0/5 * * * ?" );
+        r.setDaysOlder( 0 );
+        r.setRetentionCount( 0 );
+        r.setReleases( true );
+        r.setSnapshots( true );
+        r.setScanned( false );
+        r.setDeleteReleasedSnapshots( false );
         return r;
     }
 
-    private void populateRepository( ManagedRepositoryConfiguration repository 
)
+    private RemoteRepositoryConfiguration createRemoteRepository(String id, 
String url)
     {
-        repository.setId( REPO_ID );
-        repository.setName( "repo name" );
-        repository.setLocation( location.getAbsolutePath() );
-        repository.setLayout( "default" );
-        repository.setRefreshCronExpression( "* 0/5 * * * ?" );
-        repository.setDaysOlder( 31 );
-        repository.setRetentionCount( 20 );
-        repository.setReleases( true );
-        repository.setSnapshots( true );
-        repository.setScanned( false );
-        repository.setDeleteReleasedSnapshots( true );
+        RemoteRepositoryConfiguration r = new RemoteRepositoryConfiguration();
+        r.setId( id );
+        r.setUrl( url );
+        r.setLayout( "default" );
+        
+        return r;
+    }
+    
+    private ProxyConnectorConfiguration createProxyConnector( String 
managedRepoId, String remoteRepoId )
+    {
+        ProxyConnectorConfiguration connector = new 
ProxyConnectorConfiguration();
+        connector.setSourceRepoId( managedRepoId );
+        connector.setTargetRepoId( remoteRepoId );
+
+        return connector;
     }
 
     private void prepareRoleManagerMock()

Modified: 
maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteRemoteRepositoryActionTest.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteRemoteRepositoryActionTest.java?rev=586635&r1=586634&r2=586635&view=diff
==============================================================================
--- 
maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteRemoteRepositoryActionTest.java
 (original)
+++ 
maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteRemoteRepositoryActionTest.java
 Fri Oct 19 15:47:43 2007
@@ -24,6 +24,8 @@
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
 import org.apache.maven.archiva.configuration.Configuration;
 import 
org.apache.maven.archiva.configuration.IndeterminateConfigurationException;
+import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
+import org.apache.maven.archiva.configuration.ProxyConnectorConfiguration;
 import org.apache.maven.archiva.configuration.RemoteRepositoryConfiguration;
 import org.codehaus.plexus.PlexusTestCase;
 import org.codehaus.plexus.registry.RegistryException;
@@ -89,11 +91,12 @@
         throws RegistryException, IndeterminateConfigurationException
     {
         Configuration configuration = createConfigurationForEditing( 
createRepository() );
+        configuration.addManagedRepository( createManagedRepository( 
"internal", getTestPath( "target/repo/internal" ) ) );
+        configuration.addManagedRepository( createManagedRepository( 
"snapshots", getTestPath( "target/repo/snapshots" ) ) );
+        configuration.addProxyConnector( createProxyConnector( "internal", 
REPO_ID) );
         
         archivaConfiguration.getConfiguration();
-        archivaConfigurationControl.setReturnValue( configuration );
-        archivaConfiguration.getConfiguration();
-        archivaConfigurationControl.setReturnValue( configuration );
+        archivaConfigurationControl.setReturnValue( configuration, 4 );
         
         archivaConfiguration.save( configuration );
         archivaConfigurationControl.replay();
@@ -106,10 +109,13 @@
         assertNotNull( repository );
         assertRepositoryEquals( repository, createRepository() );
         
+        assertEquals( 1, configuration.getProxyConnectors().size() );
+        
         String status = action.delete();
         assertEquals( Action.SUCCESS, status );
 
         assertTrue( configuration.getRemoteRepositories().isEmpty() );
+        assertEquals( 0, configuration.getProxyConnectors().size() );
     }
 
     public void testDeleteRemoteRepositoryCancelled()
@@ -119,9 +125,7 @@
         Configuration configuration = createConfigurationForEditing( 
originalRepository );
 
         archivaConfiguration.getConfiguration();
-        archivaConfigurationControl.setReturnValue( configuration );
-        archivaConfiguration.getConfiguration();
-        archivaConfigurationControl.setReturnValue( configuration );
+        archivaConfigurationControl.setReturnValue( configuration, 2 );
 
         archivaConfiguration.save( configuration );
         archivaConfigurationControl.replay();
@@ -165,6 +169,32 @@
         assertEquals( expectedRepository.getUrl(), actualRepository.getUrl() );
         assertEquals( expectedRepository.getName(), actualRepository.getName() 
);
     }
+    
+    private ManagedRepositoryConfiguration createManagedRepository( String 
string, String testPath )
+    {
+        ManagedRepositoryConfiguration r = new 
ManagedRepositoryConfiguration();
+        r.setId( REPO_ID );
+        r.setName( "repo name" );
+        r.setLocation( testPath );
+        r.setLayout( "default" );
+        r.setRefreshCronExpression( "* 0/5 * * * ?" );
+        r.setDaysOlder( 0 );
+        r.setRetentionCount( 0 );
+        r.setReleases( true );
+        r.setSnapshots( true );
+        r.setScanned( false );
+        r.setDeleteReleasedSnapshots( false );
+        return r;
+    }
+
+    private ProxyConnectorConfiguration createProxyConnector( String 
managedRepoId, String remoteRepoId )
+    {
+        ProxyConnectorConfiguration connector = new 
ProxyConnectorConfiguration();
+        connector.setSourceRepoId( managedRepoId );
+        connector.setTargetRepoId( remoteRepoId );
+
+        return connector;
+    }
 
     private void populateRepository( RemoteRepositoryConfiguration repository )
     {
@@ -174,6 +204,5 @@
         repository.setLayout( "default" );
     }
     
-    // TODO: what if there are proxy connectors attached to a deleted 
repository?
     // TODO: what about removing proxied content if a proxy is removed?
 }


Reply via email to