From ab0724b375a7a51c75cb4acb9a0c85655113f528 Mon Sep 17 00:00:00 2001 From: "Maria Odea B. Ching" Date: Tue, 3 Jun 2008 06:22:36 +0000 Subject: [PATCH] [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 --- .../DeleteManagedRepositoryAction.java | 17 +++++++++++++++- .../DeleteManagedRepositoryActionTest.java | 20 +++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) 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 -- 2.39.5