diff options
author | Maria Odea B. Ching <oching@apache.org> | 2008-06-03 06:22:36 +0000 |
---|---|---|
committer | Maria Odea B. Ching <oching@apache.org> | 2008-06-03 06:22:36 +0000 |
commit | ab0724b375a7a51c75cb4acb9a0c85655113f528 (patch) | |
tree | bf799209406d64de70debebf299cec8ba055c647 /archiva-modules | |
parent | 82bc905da8eb4d03ce333e8adec8311369ed2ed7 (diff) | |
download | archiva-ab0724b375a7a51c75cb4acb9a0c85655113f528.tar.gz archiva-ab0724b375a7a51c75cb4acb9a0c85655113f528.zip |
[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
Diffstat (limited to 'archiva-modules')
2 files changed, 36 insertions, 1 deletions
diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java index 438031320..14e62d4e6 100644 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java +++ b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java @@ -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 diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java index 41536c1c7..4cb35ab71 100644 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java +++ b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java @@ -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 |