Author: olamy
Date: Thu Sep  6 12:37:14 2012
New Revision: 1381575

URL: http://svn.apache.org/viewvc?rev=1381575&view=rev
Log:
add a method to remove namespace(groupId) in MetadataRepository

Modified:
    
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java
    
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/RepositoriesServiceTest.java
    
archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataRepository.java
    
archiva/trunk/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepository.java

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java?rev=1381575&r1=1381574&r2=1381575&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java
 Thu Sep  6 12:37:14 2012
@@ -31,6 +31,7 @@ import org.apache.archiva.common.plexusb
 import org.apache.archiva.common.utils.VersionComparator;
 import org.apache.archiva.common.utils.VersionUtil;
 import org.apache.archiva.maven2.metadata.MavenMetadataReader;
+import org.apache.archiva.maven2.model.Artifact;
 import org.apache.archiva.metadata.model.ArtifactMetadata;
 import org.apache.archiva.metadata.repository.MetadataRepository;
 import org.apache.archiva.metadata.repository.MetadataRepositoryException;
@@ -61,7 +62,6 @@ import org.apache.archiva.repository.met
 import org.apache.archiva.repository.scanner.RepositoryScanStatistics;
 import org.apache.archiva.repository.scanner.RepositoryScanner;
 import org.apache.archiva.repository.scanner.RepositoryScannerException;
-import org.apache.archiva.maven2.model.Artifact;
 import org.apache.archiva.rest.api.model.ArtifactTransferRequest;
 import org.apache.archiva.rest.api.services.ArchivaRestServiceException;
 import org.apache.archiva.rest.api.services.RepositoriesService;
@@ -105,7 +105,7 @@ import java.util.TimeZone;
  * @author Olivier Lamy
  * @since 1.4-M1
  */
-@Service( "repositoriesService#rest" )
+@Service ( "repositoriesService#rest" )
 public class DefaultRepositoriesService
     extends AbstractRestService
     implements RepositoriesService
@@ -113,11 +113,11 @@ public class DefaultRepositoriesService
     private Logger log = LoggerFactory.getLogger( getClass() );
 
     @Inject
-    @Named( value = "archivaTaskScheduler#repository" )
+    @Named ( value = "archivaTaskScheduler#repository" )
     private RepositoryArchivaTaskScheduler repositoryTaskScheduler;
 
     @Inject
-    @Named( value = "taskExecutor#indexing" )
+    @Named ( value = "taskExecutor#indexing" )
     private ArchivaIndexingTaskExecutor archivaIndexingTaskExecutor;
 
     @Inject
@@ -136,14 +136,14 @@ public class DefaultRepositoriesService
     private RepositoryContentFactory repositoryFactory;
 
     @Inject
-    @Named( value = "archivaTaskScheduler#repository" )
+    @Named ( value = "archivaTaskScheduler#repository" )
     private ArchivaTaskScheduler scheduler;
 
     @Inject
     private DownloadRemoteIndexScheduler downloadRemoteIndexScheduler;
 
     @Inject
-    @Named( value = "repositorySessionFactory" )
+    @Named ( value = "repositorySessionFactory" )
     protected RepositorySessionFactory repositorySessionFactory;
 
     @Inject
@@ -861,18 +861,35 @@ public class DefaultRepositoriesService
             throw new ArchivaRestServiceException( "artifact.groupId cannot be 
null", 400, null );
         }
 
+        RepositorySession repositorySession = 
repositorySessionFactory.createSession();
+
         try
         {
             ManagedRepositoryContent repository = 
repositoryFactory.getManagedRepositoryContent( repositoryId );
 
             repository.deleteGroupId( groupId );
 
+            MetadataRepository metadataRepository = 
repositorySession.getRepository();
+
+            metadataRepository.removeNamespace( repositoryId, groupId );
+
+            metadataRepository.save();
+        }
+        catch ( MetadataRepositoryException e )
+        {
+            log.error( e.getMessage(), e );
+            throw new ArchivaRestServiceException( "Repository exception: " + 
e.getMessage(), 500, e );
         }
         catch ( RepositoryException e )
         {
             log.error( e.getMessage(), e );
             throw new ArchivaRestServiceException( "Repository exception: " + 
e.getMessage(), 500, e );
         }
+        finally
+        {
+
+            repositorySession.close();
+        }
         return true;
     }
 

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/RepositoriesServiceTest.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/RepositoriesServiceTest.java?rev=1381575&r1=1381574&r2=1381575&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/RepositoriesServiceTest.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/RepositoriesServiceTest.java
 Thu Sep  6 12:37:14 2012
@@ -287,7 +287,7 @@ public class RepositoriesServiceTest
             assertTrue( "directory not exists", directory.exists() );
 
             RepositoriesService repositoriesService = getRepositoriesService( 
authorizationHeader );
-            repositoriesService.deleteGroupId( "org.apache.karaf.features", 
SOURCE_REPO_ID );
+            repositoriesService.deleteGroupId( "org.apache.karaf", 
SOURCE_REPO_ID );
 
             assertFalse( "directory not exists", directory.exists() );
 
@@ -297,7 +297,13 @@ public class RepositoriesServiceTest
 
             Assertions.assertThat( browseResult.getBrowseResultEntries() 
).isNotNull().isEmpty();
 
-            log.info( "browseResult: {}", browseResult );
+            browseResult = browseService.browseGroupId( "org.apache.karaf", 
SOURCE_REPO_ID );
+
+            assertNotNull( browseResult );
+
+            Assertions.assertThat( browseResult.getBrowseResultEntries() 
).isNotNull().isEmpty();
+
+            log.info( "browseResult empty: {}", browseResult );
         }
         finally
         {

Modified: 
archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataRepository.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataRepository.java?rev=1381575&r1=1381574&r2=1381575&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataRepository.java
 (original)
+++ 
archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataRepository.java
 Thu Sep  6 12:37:14 2012
@@ -81,6 +81,7 @@ public interface MetadataRepository
 
     /**
      * used for deleting timestamped version of SNAPSHOT artifacts
+     *
      * @param artifactMetadata the artifactMetadata with the timestamped 
version (2.0-20120618.214135-2)
      * @param baseVersion      the base version of the snapshot (2.0-SNAPSHOT)
      * @throws MetadataRepositoryException
@@ -110,6 +111,16 @@ public interface MetadataRepository
     void removeRepository( String repositoryId )
         throws MetadataRepositoryException;
 
+    /**
+     *
+     * @param repositoryId
+     * @param project
+     * @since 1.4-M3
+     * @throws MetadataRepositoryException
+     */
+    void removeNamespace( String repositoryId, String project )
+        throws MetadataRepositoryException;
+
     List<ArtifactMetadata> getArtifacts( String repositoryId )
         throws MetadataRepositoryException;
 

Modified: 
archiva/trunk/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepository.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepository.java?rev=1381575&r1=1381574&r2=1381575&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepository.java
 (original)
+++ 
archiva/trunk/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepository.java
 Thu Sep  6 12:37:14 2012
@@ -476,6 +476,28 @@ public class JcrMetadataRepository
         }
     }
 
+    public void removeNamespace( String repositoryId, String projectId )
+        throws MetadataRepositoryException
+    {
+        try
+        {
+            Node root = getJcrSession().getRootNode();
+            String path = getNamespacePath( repositoryId, projectId );
+            if ( root.hasNode( path ) )
+            {
+                Node node = root.getNode( path );
+                if ( node.isNodeType( NAMESPACE_NODE_TYPE ) )
+                {
+                    node.remove();
+                }
+            }
+        }
+        catch ( RepositoryException e )
+        {
+            throw new MetadataRepositoryException( e.getMessage(), e );
+        }
+    }
+
     public void removeMetadataFacets( String repositoryId, String facetId )
         throws MetadataRepositoryException
     {


Reply via email to