Author: oching
Date: Fri Jan 28 03:19:09 2011
New Revision: 1064444

URL: http://svn.apache.org/viewvc?rev=1064444&view=rev
Log:
[MRM-1452] add ability to delete contents of a repository via xml-rpc
submitted by Marica Catherine Tan

Modified:
    
archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-api/src/main/java/org/apache/archiva/web/xmlrpc/api/AdministrationService.java
    
archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-security/src/main/java/org/apache/archiva/web/xmlrpc/security/ServiceMethodsPermissionsMapping.java
    
archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/main/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImpl.java
    
archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/test/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImplTest.java

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-api/src/main/java/org/apache/archiva/web/xmlrpc/api/AdministrationService.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-api/src/main/java/org/apache/archiva/web/xmlrpc/api/AdministrationService.java?rev=1064444&r1=1064443&r2=1064444&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-api/src/main/java/org/apache/archiva/web/xmlrpc/api/AdministrationService.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-api/src/main/java/org/apache/archiva/web/xmlrpc/api/AdministrationService.java
 Fri Jan 28 03:19:09 2011
@@ -114,6 +114,16 @@ public interface AdministrationService
         throws Exception;
 
     /**
+     * Deletes a managed repository content with the given repository id
+     * 
+     * @param repoId
+     * @return
+     * @throws Exception
+     */
+    public Boolean deleteManagedRepositoryContent( String repoId )
+        throws Exception;
+
+    /**
      * Get a managed repository with the given repository id.
      * @param repoId
      * @return

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-security/src/main/java/org/apache/archiva/web/xmlrpc/security/ServiceMethodsPermissionsMapping.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-security/src/main/java/org/apache/archiva/web/xmlrpc/security/ServiceMethodsPermissionsMapping.java?rev=1064444&r1=1064443&r2=1064444&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-security/src/main/java/org/apache/archiva/web/xmlrpc/security/ServiceMethodsPermissionsMapping.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-security/src/main/java/org/apache/archiva/web/xmlrpc/security/ServiceMethodsPermissionsMapping.java
 Fri Jan 28 03:19:09 2011
@@ -43,7 +43,8 @@ public class ServiceMethodsPermissionsMa
                        "AdministrationService.deleteArtifact", 
                        "AdministrationService.addManagedRepository",
                        "AdministrationService.deleteManagedRepository", 
"AdministrationService.getManagedRepository",
-                       "AdministrationService.merge");
+                       "AdministrationService.merge",
+                       "AdministrationService.deleteManagedRepositoryContent");
 
     public static final List<String> SERVICE_METHODS_FOR_OPERATION_RUN_INDEXER 
=
         Arrays.asList( "AdministrationService.executeRepositoryScanner" );

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/main/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImpl.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/main/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImpl.java?rev=1064444&r1=1064443&r2=1064444&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/main/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImpl.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/main/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImpl.java
 Fri Jan 28 03:19:09 2011
@@ -468,6 +468,44 @@ public class AdministrationServiceImpl
         return Boolean.TRUE;
     }
 
+    public Boolean deleteManagedRepositoryContent( String repoId )
+        throws Exception
+    {
+        Configuration config = archivaConfiguration.getConfiguration();
+
+        ManagedRepositoryConfiguration repository = 
config.findManagedRepositoryById( repoId );
+
+        if ( repository == null )
+        {
+            throw new Exception( "Repository Id : " + repoId + " not found." );
+        }
+
+        RepositorySession repositorySession = 
repositorySessionFactory.createSession();
+        try
+        {
+            MetadataRepository metadataRepository = 
repositorySession.getRepository();
+            metadataRepository.removeRepository( repository.getId() );
+            repositorySession.save();
+        }
+        finally
+        {
+            repositorySession.close();
+        }
+
+        File repoDir = new File( repository.getLocation() );
+        File[] children = repoDir.listFiles();
+
+        if ( children != null )
+        {
+            for ( File child : children )
+            {
+                FileUtils.deleteDirectory( child );
+            }
+        }
+
+        return Boolean.TRUE;
+    }
+
     public ManagedRepository getManagedRepository( String repoId )
         throws Exception
     {

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/test/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImplTest.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/test/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImplTest.java?rev=1064444&r1=1064443&r2=1064444&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/test/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImplTest.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/test/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImplTest.java
 Fri Jan 28 03:19:09 2011
@@ -665,6 +665,52 @@ public class AdministrationServiceImplTe
         assertRemoteRepo( repos.get( 1 ), remoteRepos.get( 1 ) );
     }
 
+    public void testDeleteInvalidRepositoryContent()
+    {
+        archivaConfigControl.expectAndReturn( 
archivaConfig.getConfiguration(), config );
+        configControl.expectAndReturn( config.findManagedRepositoryById( 
"invalid" ), null );
+
+        archivaConfigControl.replay();
+        configControl.replay();
+
+        try
+        {
+            service.deleteManagedRepositoryContent( "invalid" );
+        }
+        catch ( Exception e )
+        {
+            assertEquals( "Repository Id : invalid not found.", e.getMessage() 
);
+        }
+
+        archivaConfigControl.verify();
+        configControl.verify();
+    }
+
+    public void testDeleteRepositoryContent()
+        throws Exception
+    {
+        ManagedRepositoryConfiguration managedRepo = createManagedRepo( 
"default", "default-repo" );
+        assertTrue( new File( managedRepo.getLocation(), "org" ).exists() );
+
+        archivaConfigControl.expectAndReturn( 
archivaConfig.getConfiguration(), config );
+        configControl.expectAndReturn( config.findManagedRepositoryById( 
"internal" ), managedRepo );
+        metadataRepository.removeRepository( "internal" );
+        
+        archivaConfigControl.replay();
+        configControl.replay();
+        metadataRepositoryControl.replay();
+
+        boolean success = service.deleteManagedRepositoryContent( "internal" );
+        assertTrue( success );
+
+        archivaConfigControl.verify();
+        configControl.verify();
+        metadataRepositoryControl.verify();
+
+        assertFalse( new File( managedRepo.getLocation(), "org" ).exists() );
+        assertTrue( new File( managedRepo.getLocation() ).exists() );
+    }
+
     /* Merge method */
 
     public void testMergeRepositoryWithInvalidRepository()


Reply via email to