remove IndexingContext when deleting a managed repository

git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1170259 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Olivier Lamy 2011-09-13 17:30:51 +00:00
parent 915ef10186
commit cd57d56fe9
1 changed files with 26 additions and 2 deletions

View File

@ -24,6 +24,8 @@ import org.apache.archiva.admin.model.managed.ManagedRepository;
import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin; import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin;
import org.apache.archiva.admin.repository.AbstractRepositoryAdmin; import org.apache.archiva.admin.repository.AbstractRepositoryAdmin;
import org.apache.archiva.audit.AuditEvent; import org.apache.archiva.audit.AuditEvent;
import org.apache.archiva.common.plexusbridge.PlexusSisuBridge;
import org.apache.archiva.common.plexusbridge.PlexusSisuBridgeException;
import org.apache.archiva.metadata.repository.MetadataRepository; import org.apache.archiva.metadata.repository.MetadataRepository;
import org.apache.archiva.metadata.repository.MetadataRepositoryException; import org.apache.archiva.metadata.repository.MetadataRepositoryException;
import org.apache.archiva.metadata.repository.RepositorySession; import org.apache.archiva.metadata.repository.RepositorySession;
@ -39,6 +41,8 @@ import org.apache.maven.archiva.configuration.Configuration;
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.RepositoryGroupConfiguration; import org.apache.maven.archiva.configuration.RepositoryGroupConfiguration;
import org.apache.maven.index.NexusIndexer;
import org.apache.maven.index.context.IndexingContext;
import org.codehaus.plexus.redback.role.RoleManager; import org.codehaus.plexus.redback.role.RoleManager;
import org.codehaus.plexus.redback.role.RoleManagerException; import org.codehaus.plexus.redback.role.RoleManagerException;
import org.codehaus.plexus.taskqueue.TaskQueueException; import org.codehaus.plexus.taskqueue.TaskQueueException;
@ -86,6 +90,9 @@ public class DefaultManagedRepositoryAdmin
@Inject @Inject
private RepositoryStatisticsManager repositoryStatisticsManager; private RepositoryStatisticsManager repositoryStatisticsManager;
@Inject
private PlexusSisuBridge plexusSisuBridge;
@Inject @Inject
protected RoleManager roleManager; protected RoleManager roleManager;
@ -209,7 +216,6 @@ public class DefaultManagedRepositoryAdmin
repository.setRetentionCount( retentionCount ); repository.setRetentionCount( retentionCount );
repository.setDeleteReleasedSnapshots( deteleReleasedSnapshots ); repository.setDeleteReleasedSnapshots( deteleReleasedSnapshots );
try try
{ {
addRepository( repository, config ); addRepository( repository, config );
@ -281,7 +287,6 @@ public class DefaultManagedRepositoryAdmin
if ( stagingRepository != null ) if ( stagingRepository != null )
{ {
// do not trigger event when deleting the staged one // do not trigger event when deleting the staged one
//triggerAuditEvent( stagingRepository.getId(), null, AuditEvent.DELETE_MANAGED_REPO, auditInformation );
deleteManagedRepository( stagingRepository, deleteContent, config, true ); deleteManagedRepository( stagingRepository, deleteContent, config, true );
} }
@ -301,6 +306,25 @@ public class DefaultManagedRepositoryAdmin
Configuration config, boolean stagedOne ) Configuration config, boolean stagedOne )
throws RepositoryAdminException throws RepositoryAdminException
{ {
try
{
NexusIndexer nexusIndexer = plexusSisuBridge.lookup( NexusIndexer.class );
IndexingContext context = nexusIndexer.getIndexingContexts().get( repository.getId() );
if ( context != null )
{
nexusIndexer.removeIndexingContext( context, deleteContent );
}
}
catch ( PlexusSisuBridgeException e )
{
throw new RepositoryAdminException( e.getMessage(), e );
}
catch ( IOException e )
{
throw new RepositoryAdminException( e.getMessage(), e );
}
if ( !stagedOne ) if ( !stagedOne )
{ {
RepositorySession repositorySession = getRepositorySessionFactory().createSession(); RepositorySession repositorySession = getRepositorySessionFactory().createSession();