Author: oching
Date: Mon Jun  2 23:22:36 2008
New Revision: 662662

URL: http://svn.apache.org/viewvc?rev=662662&view=rev
Log:
[MRM-789]
-check if the repo location is referenced as a system property before deleting 
the contents of the repo

Modified:
    
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java
    
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java?rev=662662&r1=662661&r2=662662&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java
 Mon Jun  2 23:22:36 2008
@@ -42,6 +42,7 @@
 import java.io.IOException;
 import java.util.List;
 import java.util.Map;
+import java.util.Properties;
 
 /**
  * DeleteManagedRepositoryAction
@@ -93,7 +94,7 @@
     }
 
     private String deleteRepository( boolean deleteContents )
-    {
+    {   
         ManagedRepositoryConfiguration existingRepository = repository;
         if ( existingRepository == null )
         {
@@ -101,6 +102,20 @@
             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

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java?rev=662662&r1=662661&r2=662662&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java
 Mon Jun  2 23:22:36 2008
@@ -214,6 +214,26 @@
 
         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


Reply via email to