[MRM-823]

-remove repo in group when repo is removed


git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@662342 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Maria Odea B. Ching 2008-06-02 06:51:21 +00:00
parent 8b1dbf37ee
commit eb6967d2e6
2 changed files with 51 additions and 9 deletions

View File

@ -41,6 +41,7 @@ import org.codehaus.plexus.redback.role.RoleManagerException;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* DeleteManagedRepositoryAction * DeleteManagedRepositoryAction
@ -140,14 +141,9 @@ public class DeleteManagedRepositoryAction
throws RoleManagerException, ArchivaDatabaseException throws RoleManagerException, ArchivaDatabaseException
{ {
removeRepositoryRoles( cleanupRepository ); removeRepositoryRoles( cleanupRepository );
// TODO: [MRM-382] Remove index from artifacts of deleted managed repositories.
// [MRM-265] After removing a managed repository - Browse/Search still see it
cleanupDatabase( cleanupRepository.getId() ); cleanupDatabase( cleanupRepository.getId() );
cleanupScanStats( cleanupRepository.getId() ); cleanupScanStats( cleanupRepository.getId() );
// [MRM-520] Proxy Connectors are not deleted with the deletion of a Repository.
List<ProxyConnectorConfiguration> proxyConnectors = getProxyConnectors(); List<ProxyConnectorConfiguration> proxyConnectors = getProxyConnectors();
for ( ProxyConnectorConfiguration proxyConnector : proxyConnectors ) for ( ProxyConnectorConfiguration proxyConnector : proxyConnectors )
{ {
@ -156,6 +152,19 @@ public class DeleteManagedRepositoryAction
archivaConfiguration.getConfiguration().removeProxyConnector( proxyConnector ); archivaConfiguration.getConfiguration().removeProxyConnector( proxyConnector );
} }
} }
Map<String, List<String>> repoToGroupMap = archivaConfiguration.getConfiguration().getRepositoryToGroupMap();
if( repoToGroupMap != null )
{
if( repoToGroupMap.containsKey( cleanupRepository.getId() ) )
{
List<String> repoGroups = repoToGroupMap.get( cleanupRepository.getId() );
for( String repoGroup : repoGroups )
{
archivaConfiguration.getConfiguration().findRepositoryGroupById( repoGroup ).removeRepository( cleanupRepository.getId() );
}
}
}
} }
private void cleanupDatabase( String repoId ) private void cleanupDatabase( String repoId )

View File

@ -26,6 +26,7 @@ import org.apache.maven.archiva.configuration.IndeterminateConfigurationExceptio
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
import org.apache.maven.archiva.configuration.ProxyConnectorConfiguration; import org.apache.maven.archiva.configuration.ProxyConnectorConfiguration;
import org.apache.maven.archiva.configuration.RemoteRepositoryConfiguration; import org.apache.maven.archiva.configuration.RemoteRepositoryConfiguration;
import org.apache.maven.archiva.configuration.RepositoryGroupConfiguration;
import org.apache.maven.archiva.model.ArchivaProjectModel; import org.apache.maven.archiva.model.ArchivaProjectModel;
import org.apache.maven.archiva.security.ArchivaRoleConstants; import org.apache.maven.archiva.security.ArchivaRoleConstants;
import org.codehaus.plexus.redback.role.RoleManager; import org.codehaus.plexus.redback.role.RoleManager;
@ -37,7 +38,9 @@ import org.codehaus.plexus.spring.PlexusInSpringTestCase;
import org.easymock.MockControl; import org.easymock.MockControl;
import java.io.File; import java.io.File;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List;
/** /**
* DeleteManagedRepositoryActionTest * DeleteManagedRepositoryActionTest
@ -128,7 +131,7 @@ public class DeleteManagedRepositoryActionTest
{ {
prepareRoleManagerMock(); prepareRoleManagerMock();
Configuration configuration = prepDeletionTest( createRepository(), 3 ); Configuration configuration = prepDeletionTest( createRepository(), 4 );
String status = action.deleteEntry(); String status = action.deleteEntry();
@ -144,7 +147,7 @@ public class DeleteManagedRepositoryActionTest
{ {
prepareRoleManagerMock(); prepareRoleManagerMock();
Configuration configuration = prepDeletionTest( createRepository(), 3 ); Configuration configuration = prepDeletionTest( createRepository(), 4 );
String status = action.deleteContents(); String status = action.deleteContents();
@ -158,7 +161,7 @@ public class DeleteManagedRepositoryActionTest
public void testDeleteRepositoryAndAssociatedProxyConnectors() public void testDeleteRepositoryAndAssociatedProxyConnectors()
throws Exception throws Exception
{ {
Configuration configuration = prepDeletionTest( createRepository(), 4 ); Configuration configuration = prepDeletionTest( createRepository(), 5 );
configuration.addRemoteRepository( createRemoteRepository( "codehaus", "http://repository.codehaus.org" ) ); configuration.addRemoteRepository( createRemoteRepository( "codehaus", "http://repository.codehaus.org" ) );
configuration.addRemoteRepository( createRemoteRepository( "java.net", "http://dev.java.net/maven2" ) ); configuration.addRemoteRepository( createRemoteRepository( "java.net", "http://dev.java.net/maven2" ) );
configuration.addProxyConnector( createProxyConnector( REPO_ID, "codehaus" ) ); configuration.addProxyConnector( createProxyConnector( REPO_ID, "codehaus" ) );
@ -190,6 +193,27 @@ public class DeleteManagedRepositoryActionTest
assertTrue( location.exists() ); assertTrue( location.exists() );
} }
public void testDeleteRepositoryAndReposUnderRepoGroup()
throws Exception
{
Configuration configuration = prepDeletionTest( createRepository(), 5 );
List<String> repoIds = new ArrayList<String>();
repoIds.add( REPO_ID );
configuration.addRepositoryGroup( createRepoGroup( repoIds, "repo.group" ) );
prepareRoleManagerMock();
assertEquals( 1, configuration.getRepositoryGroups().size() );
String status = action.deleteContents();
assertEquals( Action.SUCCESS, status );
assertTrue( configuration.getManagedRepositories().isEmpty() );
assertEquals( 0, ( ( RepositoryGroupConfiguration ) configuration.getRepositoryGroups().get( 0 ) ).getRepositories().size() );
assertFalse( location.exists() );
}
private Configuration prepDeletionTest( ManagedRepositoryConfiguration originalRepository, int expectCountGetConfig ) private Configuration prepDeletionTest( ManagedRepositoryConfiguration originalRepository, int expectCountGetConfig )
throws RegistryException, IndeterminateConfigurationException throws RegistryException, IndeterminateConfigurationException
@ -276,6 +300,15 @@ public class DeleteManagedRepositoryActionTest
return connector; return connector;
} }
private RepositoryGroupConfiguration createRepoGroup( List<String> repoIds, String repoGroupId )
{
RepositoryGroupConfiguration repoGroup = new RepositoryGroupConfiguration();
repoGroup.setId( repoGroupId );
repoGroup.setRepositories( repoIds );
return repoGroup;
}
private void prepareRoleManagerMock() private void prepareRoleManagerMock()
throws RoleManagerException throws RoleManagerException
{ {