mirror of https://github.com/apache/archiva.git
[MRM-789]
-check if the repo location is referenced as a system property before deleting the contents of the repo git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@662662 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
82bc905da8
commit
ab0724b375
|
@ -42,6 +42,7 @@ import org.codehaus.plexus.redback.role.RoleManagerException;
|
|||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
|
||||
/**
|
||||
* DeleteManagedRepositoryAction
|
||||
|
@ -93,7 +94,7 @@ public class DeleteManagedRepositoryAction
|
|||
}
|
||||
|
||||
private String deleteRepository( boolean deleteContents )
|
||||
{
|
||||
{
|
||||
ManagedRepositoryConfiguration existingRepository = repository;
|
||||
if ( existingRepository == null )
|
||||
{
|
||||
|
@ -101,6 +102,20 @@ public class DeleteManagedRepositoryAction
|
|||
return ERROR;
|
||||
}
|
||||
|
||||
if( deleteContents )
|
||||
{
|
||||
// [MRM-789] Archiva may delete your app server installation
|
||||
Properties props = System.getProperties();
|
||||
for( Object value : props.values() )
|
||||
{
|
||||
if( StringUtils.equalsIgnoreCase( ( (String) value ).trim(), existingRepository.getLocation().trim() ) )
|
||||
{
|
||||
addActionError( "Unable to delete repository. The location is being referenced in the system properties." );
|
||||
return ERROR;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
String result = SUCCESS;
|
||||
|
||||
try
|
||||
|
|
|
@ -214,6 +214,26 @@ public class DeleteManagedRepositoryActionTest
|
|||
|
||||
assertFalse( location.exists() );
|
||||
}
|
||||
|
||||
public void testDeleteRepositoryLocationReferencedInSysPropertiesError()
|
||||
throws Exception
|
||||
{
|
||||
System.setProperty( "test.property", getTestFile( "target/test/location" ).getAbsolutePath() );
|
||||
|
||||
prepareRoleManagerMock();
|
||||
|
||||
Configuration configuration = prepDeletionTest( createRepository(), 4 );
|
||||
|
||||
String status = action.deleteContents();
|
||||
|
||||
assertEquals( Action.ERROR, status );
|
||||
|
||||
assertFalse( configuration.getManagedRepositories().isEmpty() );
|
||||
|
||||
assertTrue( location.exists() );
|
||||
|
||||
System.clearProperty( "test.property" );
|
||||
}
|
||||
|
||||
private Configuration prepDeletionTest( ManagedRepositoryConfiguration originalRepository, int expectCountGetConfig )
|
||||
throws RegistryException, IndeterminateConfigurationException
|
||||
|
|
Loading…
Reference in New Issue