You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by oc...@apache.org on 2007/10/21 19:30:09 UTC

svn commit: r586919 - in /maven/archiva/trunk: archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/ archiva-database/src/main/java/org/apache/maven/archiva/database/ archiva-database/src/m...

Author: oching
Date: Sun Oct 21 10:30:07 2007
New Revision: 586919

URL: http://svn.apache.org/viewvc?rev=586919&view=rev
Log:
[MRM-265]
- added method for deleting the artifacts in the db when a repo is deleted
- also deleted repo scan statistics when the repo is deleted
- created DAO that does retrieving, deleting and adding of RepositoryContentStatistics to the db
- added and updated tests


Added:
    maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/RepositoryContentStatisticsByRepositoryConstraint.java
    maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoRepositoryContentStatisticsDAO.java
    maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/constraints/RepositoryContentStatisticsByRepositoryConstraintTest.java
    maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/jdo/JdoRepositoryContentStatisticsDAOTest.java
    maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/ArtifactDAOStub.java
    maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryArchivaDAOStub.java
    maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/ProjectModelDAOStub.java
    maven/archiva/trunk/archiva-web/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.xml
Modified:
    maven/archiva/trunk/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/ProjectModelToDatabaseConsumer.java
    maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/ArchivaDAO.java
    maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoArchivaDAO.java
    maven/archiva/trunk/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/executors/ArchivaRepositoryScanningTaskExecutor.java
    maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java
    maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/ArchivaDAOStub.java
    maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java

Modified: maven/archiva/trunk/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/ProjectModelToDatabaseConsumer.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/ProjectModelToDatabaseConsumer.java?rev=586919&r1=586918&r2=586919&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/ProjectModelToDatabaseConsumer.java (original)
+++ maven/archiva/trunk/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/ProjectModelToDatabaseConsumer.java Sun Oct 21 10:30:07 2007
@@ -166,8 +166,7 @@
 
             if ( isValidModel( model, repo, artifact ) )
             {
-                getLogger().info( "Adding project model to database - " + Keys.toKey( model ) );
-
+                getLogger().info( "Adding project model to database - " + Keys.toKey( model ) );                
                 dao.getProjectModelDAO().saveProjectModel( model );
             }
             else

Modified: maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/ArchivaDAO.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/ArchivaDAO.java?rev=586919&r1=586918&r2=586919&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/ArchivaDAO.java (original)
+++ maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/ArchivaDAO.java Sun Oct 21 10:30:07 2007
@@ -22,6 +22,8 @@
 import java.io.Serializable;
 import java.util.List;
 
+import org.apache.maven.archiva.model.RepositoryContentStatistics;
+
 /**
  * ArchivaDAO - The interface for all content within the database.
  *
@@ -47,10 +49,12 @@
      * @return the post-serialized object.
      */
     Object save( Serializable obj );
-
+    
     ArtifactDAO getArtifactDAO();
 
     ProjectModelDAO getProjectModelDAO();
 
     RepositoryProblemDAO getRepositoryProblemDAO();
+    
+    RepositoryContentStatisticsDAO getRepositoryContentStatisticsDAO();
 }

Added: maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/RepositoryContentStatisticsByRepositoryConstraint.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/RepositoryContentStatisticsByRepositoryConstraint.java?rev=586919&view=auto
==============================================================================
--- maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/RepositoryContentStatisticsByRepositoryConstraint.java (added)
+++ maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/RepositoryContentStatisticsByRepositoryConstraint.java Sun Oct 21 10:30:07 2007
@@ -0,0 +1,49 @@
+package org.apache.maven.archiva.database.constraints;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * RepositoryContentStatisticsByRepositoryConstraint
+ *
+ * @author <a href="mailto:oching@apache.org">Maria Odea Ching</a>
+ * @version
+ */
+public class RepositoryContentStatisticsByRepositoryConstraint
+    extends AbstractDeclarativeConstraint
+{
+    private String whereClause;
+
+    public RepositoryContentStatisticsByRepositoryConstraint( String repoId )
+    {               
+        whereClause = "repositoryId == repoId";
+        declParams = new String[] { "String repoId" };
+        params = new Object[] { repoId };
+    }
+
+    public String getSortColumn()
+    {
+        return "whenGathered";
+    }
+    
+    public String getWhereCondition()
+    {
+        return whereClause;
+    }
+}

Modified: maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoArchivaDAO.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoArchivaDAO.java?rev=586919&r1=586918&r2=586919&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoArchivaDAO.java (original)
+++ maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoArchivaDAO.java Sun Oct 21 10:30:07 2007
@@ -22,6 +22,7 @@
 import org.apache.maven.archiva.database.ArchivaDAO;
 import org.apache.maven.archiva.database.ArtifactDAO;
 import org.apache.maven.archiva.database.ProjectModelDAO;
+import org.apache.maven.archiva.database.RepositoryContentStatisticsDAO;
 import org.apache.maven.archiva.database.RepositoryProblemDAO;
 import org.apache.maven.archiva.database.SimpleConstraint;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
@@ -60,6 +61,12 @@
      * @plexus.requirement role-hint="jdo"
      */
     private RepositoryProblemDAO repositoryProblemDAO;
+    
+    /**
+     * @plexus.requirement role-hint="jdo"
+     */
+    private RepositoryContentStatisticsDAO repositoryContentStatisticsDAO;
+
 
     public List query( SimpleConstraint constraint )
     {
@@ -70,7 +77,7 @@
     {
         return jdo.saveObject( obj );
     }
-
+    
     public ArtifactDAO getArtifactDAO()
     {
         return artifactDAO;
@@ -84,5 +91,10 @@
     public RepositoryProblemDAO getRepositoryProblemDAO()
     {
         return repositoryProblemDAO;
+    }
+    
+    public RepositoryContentStatisticsDAO getRepositoryContentStatisticsDAO()
+    {
+        return repositoryContentStatisticsDAO;
     }
 }

Added: maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoRepositoryContentStatisticsDAO.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoRepositoryContentStatisticsDAO.java?rev=586919&view=auto
==============================================================================
--- maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoRepositoryContentStatisticsDAO.java (added)
+++ maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoRepositoryContentStatisticsDAO.java Sun Oct 21 10:30:07 2007
@@ -0,0 +1,67 @@
+package org.apache.maven.archiva.database.jdo;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.List;
+
+import org.apache.maven.archiva.database.ArchivaDatabaseException;
+import org.apache.maven.archiva.database.Constraint;
+import org.apache.maven.archiva.database.ObjectNotFoundException;
+import org.apache.maven.archiva.database.RepositoryContentStatisticsDAO;
+import org.apache.maven.archiva.model.RepositoryContentStatistics;
+
+/**
+ * JdoRepositoryContentStatisticsDAO 
+ *
+ * @author <a href="mailto:oching@apache.org">Maria Odea Ching</a>
+ * @version
+ * 
+ * @plexus.component role-hint="jdo"
+ */
+public class JdoRepositoryContentStatisticsDAO
+    implements RepositoryContentStatisticsDAO
+{
+    /**
+     * @plexus.requirement role-hint="archiva"
+     */
+    private JdoAccess jdo;
+    
+    public void deleteRepositoryContentStatistics( RepositoryContentStatistics stats )
+        throws ArchivaDatabaseException
+    {
+        jdo.removeObject( stats );
+    }
+
+    public List queryRepositoryContentStatistics( Constraint constraint )
+        throws ObjectNotFoundException, ArchivaDatabaseException
+    {
+        List results = jdo.queryObjects( RepositoryContentStatistics.class, constraint );
+        
+        return results;
+    }
+
+    public RepositoryContentStatistics saveRepositoryContentStatistics( RepositoryContentStatistics stats )
+    {
+        RepositoryContentStatistics savedStats = (RepositoryContentStatistics) jdo.saveObject( stats );
+        
+        return savedStats;
+    }
+
+}

Added: maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/constraints/RepositoryContentStatisticsByRepositoryConstraintTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/constraints/RepositoryContentStatisticsByRepositoryConstraintTest.java?rev=586919&view=auto
==============================================================================
--- maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/constraints/RepositoryContentStatisticsByRepositoryConstraintTest.java (added)
+++ maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/constraints/RepositoryContentStatisticsByRepositoryConstraintTest.java Sun Oct 21 10:30:07 2007
@@ -0,0 +1,79 @@
+package org.apache.maven.archiva.database.constraints;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.List;
+
+import org.apache.maven.archiva.database.AbstractArchivaDatabaseTestCase;
+import org.apache.maven.archiva.database.Constraint;
+import org.apache.maven.archiva.model.RepositoryContentStatistics;
+
+/**
+ * RepositoryContentStatisticsByRepositoryConstraintTest
+ * 
+ * @author <a href="mailto:oching@apache.org">Maria Odea Ching</a>
+ * @version
+ */
+public class RepositoryContentStatisticsByRepositoryConstraintTest
+    extends AbstractArchivaDatabaseTestCase
+{
+    private RepositoryContentStatistics createStats( String repoId, String timestamp, long duration, long totalfiles,
+                                                     long newfiles )
+        throws Exception
+    {
+        RepositoryContentStatistics stats = new RepositoryContentStatistics();
+        stats.setRepositoryId( repoId );
+        stats.setDuration( duration );
+        stats.setNewFileCount( newfiles );
+        stats.setTotalFileCount( totalfiles );
+        stats.setWhenGathered( toDate( timestamp ) );
+
+        return stats;
+    }
+
+    protected void setUp()
+        throws Exception
+    {
+        super.setUp();
+
+        dao.getRepositoryContentStatisticsDAO().saveRepositoryContentStatistics(
+                        createStats( "internal", "2007/10/21 8:00:00", 20000, 12000, 400 ) );
+        dao.getRepositoryContentStatisticsDAO().saveRepositoryContentStatistics(
+                        createStats( "internal", "2007/10/20 8:00:00", 20000, 11800, 0 ) );
+        dao.getRepositoryContentStatisticsDAO().saveRepositoryContentStatistics(
+                        createStats( "internal", "2007/10/19 8:00:00", 20000, 11800, 100 ) );
+        dao.getRepositoryContentStatisticsDAO().saveRepositoryContentStatistics(
+                        createStats( "internal", "2007/10/18 8:00:00", 20000, 11700, 320 ) );
+    }
+
+    public void testStats()
+        throws Exception
+    {
+        Constraint constraint = new RepositoryContentStatisticsByRepositoryConstraint( "internal" );
+        List results = dao.getRepositoryContentStatisticsDAO().queryRepositoryContentStatistics( constraint );
+        assertNotNull( "Stats: results (not null)", results );
+        assertEquals( "Stats: results.size", 4, results.size() );
+
+        assertEquals( "internal", ( (RepositoryContentStatistics) results.get( 0 ) ).getRepositoryId() );
+        assertEquals( "internal", ( (RepositoryContentStatistics) results.get( 1 ) ).getRepositoryId() );
+        assertEquals( "internal", ( (RepositoryContentStatistics) results.get( 2 ) ).getRepositoryId() );
+        assertEquals( "internal", ( (RepositoryContentStatistics) results.get( 3 ) ).getRepositoryId() );
+    }
+}

Added: maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/jdo/JdoRepositoryContentStatisticsDAOTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/jdo/JdoRepositoryContentStatisticsDAOTest.java?rev=586919&view=auto
==============================================================================
--- maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/jdo/JdoRepositoryContentStatisticsDAOTest.java (added)
+++ maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/jdo/JdoRepositoryContentStatisticsDAOTest.java Sun Oct 21 10:30:07 2007
@@ -0,0 +1,84 @@
+package org.apache.maven.archiva.database.jdo;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.List;
+
+import javax.jdo.JDOHelper;
+
+import org.apache.maven.archiva.database.AbstractArchivaDatabaseTestCase;
+import org.apache.maven.archiva.database.RepositoryContentStatisticsDAO;
+import org.apache.maven.archiva.database.constraints.RepositoryContentStatisticsByRepositoryConstraint;
+import org.apache.maven.archiva.model.RepositoryContentStatistics;
+
+/**
+ * JdoRepositoryContentStatisticsDAOTest
+ * 
+ * @author <a href="mailto:oching@apache.org">Maria Odea Ching</a>
+ * @version
+ */
+public class JdoRepositoryContentStatisticsDAOTest
+    extends AbstractArchivaDatabaseTestCase
+{
+    public void testCRUD()
+        throws Exception
+    {
+        RepositoryContentStatisticsDAO repoContentStatisticsDAO = dao.getRepositoryContentStatisticsDAO();
+
+        // create
+        RepositoryContentStatistics savedStats =
+           repoContentStatisticsDAO.saveRepositoryContentStatistics( createStats( "internal", "2007/10/21 8:00:00",
+           20000, 12000, 400 ) );
+        assertNotNull( savedStats );
+
+        String savedKeyId = JDOHelper.getObjectId( savedStats ).toString();
+        assertEquals( "1[OID]org.apache.maven.archiva.model.RepositoryContentStatistics", savedKeyId );
+
+        // query
+        List results =
+           repoContentStatisticsDAO.queryRepositoryContentStatistics( new RepositoryContentStatisticsByRepositoryConstraint(
+                                                                                                                              "internal" ) );
+        assertNotNull( results );
+        assertEquals( 1, results.size() );
+
+        RepositoryContentStatistics stats = (RepositoryContentStatistics) results.get( 0 );
+        assertEquals( "internal", stats.getRepositoryId() );
+
+        // delete
+        repoContentStatisticsDAO.deleteRepositoryContentStatistics( stats );
+
+        assertEquals( 0, repoContentStatisticsDAO.queryRepositoryContentStatistics(
+            new RepositoryContentStatisticsByRepositoryConstraint( "internal" ) ).size() );
+    }
+
+    private RepositoryContentStatistics createStats( String repoId, String timestamp, long duration, long totalfiles,
+                                                     long newfiles )
+        throws Exception
+    {
+        RepositoryContentStatistics stats = new RepositoryContentStatistics();
+        stats.setRepositoryId( repoId );
+        stats.setDuration( duration );
+        stats.setNewFileCount( newfiles );
+        stats.setTotalFileCount( totalfiles );
+        stats.setWhenGathered( toDate( timestamp ) );
+
+        return stats;
+    }
+}

Modified: maven/archiva/trunk/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/executors/ArchivaRepositoryScanningTaskExecutor.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/executors/ArchivaRepositoryScanningTaskExecutor.java?rev=586919&r1=586918&r2=586919&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/executors/ArchivaRepositoryScanningTaskExecutor.java (original)
+++ maven/archiva/trunk/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/executors/ArchivaRepositoryScanningTaskExecutor.java Sun Oct 21 10:30:07 2007
@@ -24,6 +24,7 @@
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
 import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
 import org.apache.maven.archiva.database.ArchivaDAO;
+import org.apache.maven.archiva.database.ArchivaDatabaseException;
 import org.apache.maven.archiva.database.constraints.MostRecentRepositoryScanStatistics;
 import org.apache.maven.archiva.model.RepositoryContentStatistics;
 import org.apache.maven.archiva.repository.RepositoryException;
@@ -114,11 +115,11 @@
             dbstats.setTotalFileCount( stats.getTotalFileCount() );
             dbstats.setWhenGathered( stats.getWhenGathered() );
             
-            dao.save( dbstats );
+            dao.getRepositoryContentStatisticsDAO().saveRepositoryContentStatistics( dbstats );
         }
         catch ( RepositoryException e )
         {
             throw new TaskExecutionException( "Repository error when executing repository job.", e );
-        }
+        }        
     }
 }

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java?rev=586919&r1=586918&r2=586919&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java Sun Oct 21 10:30:07 2007
@@ -24,18 +24,29 @@
 import org.apache.commons.lang.StringUtils;
 import org.apache.maven.archiva.configuration.Configuration;
 import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
+
+import org.apache.maven.archiva.database.ArchivaDAO;
+import org.apache.maven.archiva.database.ArchivaDatabaseException;
+import org.apache.maven.archiva.database.Constraint;
+import org.apache.maven.archiva.database.ObjectNotFoundException;
+import org.apache.maven.archiva.database.constraints.ArtifactsByRepositoryConstraint;
+import org.apache.maven.archiva.database.constraints.RepositoryContentStatisticsByRepositoryConstraint;
+import org.apache.maven.archiva.model.ArchivaArtifact;
+import org.apache.maven.archiva.model.ArchivaProjectModel;
+import org.apache.maven.archiva.model.RepositoryContentStatistics;
+
 import org.apache.maven.archiva.configuration.ProxyConnectorConfiguration;
+
 import org.codehaus.plexus.redback.role.RoleManagerException;
 
 import java.io.IOException;
 import java.util.List;
 
 /**
- * DeleteManagedRepositoryAction 
- *
+ * DeleteManagedRepositoryAction
+ * 
  * @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
  * @version $Id$
- * 
  * @plexus.component role="com.opensymphony.xwork.Action" role-hint="deleteManagedRepositoryAction"
  */
 public class DeleteManagedRepositoryAction
@@ -46,6 +57,11 @@
 
     private String repoid;
 
+    /**
+     * @plexus.requirement role-hint="jdo"
+     */
+    private ArchivaDAO archivaDAO;
+
     public void prepare()
     {
         if ( StringUtils.isNotBlank( repoid ) )
@@ -89,13 +105,12 @@
         try
         {
             Configuration configuration = archivaConfiguration.getConfiguration();
+            cleanupRepositoryData( existingRepository );
             removeRepository( repoid, configuration );
             result = saveConfiguration( configuration );
 
             if ( result.equals( SUCCESS ) )
             {
-                cleanupRepositoryData( existingRepository );
-
                 if ( deleteContents )
                 {
                     removeContents( existingRepository );
@@ -112,19 +127,26 @@
             addActionError( "Unable to delete repository: " + e.getMessage() );
             result = ERROR;
         }
+        catch ( ArchivaDatabaseException e )
+        {
+            addActionError( "Unable to delete repositoy: " + e.getMessage() );
+            result = ERROR;
+        }
 
         return result;
     }
 
     private void cleanupRepositoryData( ManagedRepositoryConfiguration cleanupRepository )
-        throws RoleManagerException
+        throws RoleManagerException, ArchivaDatabaseException
     {
         removeRepositoryRoles( cleanupRepository );
 
         // TODO: [MRM-382] Remove index from artifacts of deleted managed repositories.
 
-        // TODO: [MRM-265] After removing a managed repository - Browse/Search still see it
-        
+        // [MRM-265] After removing a managed repository - Browse/Search still see it
+        cleanupDatabase( cleanupRepository.getId() );
+        cleanupScanStats( cleanupRepository.getId() );
+
         // [MRM-520] Proxy Connectors are not deleted with the deletion of a Repository.
         List<ProxyConnectorConfiguration> proxyConnectors = getProxyConnectors();
         for ( ProxyConnectorConfiguration proxyConnector : proxyConnectors )
@@ -136,6 +158,52 @@
         }
     }
 
+    private void cleanupDatabase( String repoId )
+        throws ArchivaDatabaseException
+    {
+        Constraint constraint = new ArtifactsByRepositoryConstraint( repoId );
+
+        List<ArchivaArtifact> artifacts = archivaDAO.getArtifactDAO().queryArtifacts( constraint );
+
+        for ( ArchivaArtifact artifact : artifacts )
+        {
+            getLogger().info( "Removing artifact " + artifact + " from the database." );
+            try
+            {
+                archivaDAO.getArtifactDAO().deleteArtifact( artifact );
+
+                ArchivaProjectModel projectModel =
+                    archivaDAO.getProjectModelDAO().getProjectModel( artifact.getGroupId(), artifact.getArtifactId(),
+                                                                     artifact.getVersion() );
+
+                archivaDAO.getProjectModelDAO().deleteProjectModel( projectModel );
+            }
+            catch ( ObjectNotFoundException oe )
+            {
+                getLogger().info( "Project model of artifact " + artifact + " does not exist in the database. " +
+                                      "Moving on to the next artifact." );
+            }
+            catch ( ArchivaDatabaseException ae )
+            {
+                getLogger().info( "Unable to delete artifact " + artifact + " from the database. " +
+                                      "Moving on to the next artifact." );
+            }
+        }
+    }
+
+    private void cleanupScanStats( String repoId )
+        throws ArchivaDatabaseException
+    {
+        List<RepositoryContentStatistics> results =
+            archivaDAO.getRepositoryContentStatisticsDAO().queryRepositoryContentStatistics(
+            new RepositoryContentStatisticsByRepositoryConstraint( repoId ) );
+
+        for ( RepositoryContentStatistics stats : results )
+        {
+            archivaDAO.getRepositoryContentStatisticsDAO().deleteRepositoryContentStatistics( stats );
+        }
+    }
+
     public ManagedRepositoryConfiguration getRepository()
     {
         return repository;
@@ -154,5 +222,15 @@
     public void setRepoid( String repoid )
     {
         this.repoid = repoid;
+    }
+
+    public void setArchivaDAO( ArchivaDAO archivaDAO )
+    {
+        this.archivaDAO = archivaDAO;
+    }
+
+    public ArchivaDAO getArchivaDAO()
+    {
+        return archivaDAO;
     }
 }

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/ArchivaDAOStub.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/ArchivaDAOStub.java?rev=586919&r1=586918&r2=586919&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/ArchivaDAOStub.java (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/ArchivaDAOStub.java Sun Oct 21 10:30:07 2007
@@ -4,6 +4,7 @@
 import org.apache.maven.archiva.database.ArchivaDAO;
 import org.apache.maven.archiva.database.ArtifactDAO;
 import org.apache.maven.archiva.database.ProjectModelDAO;
+import org.apache.maven.archiva.database.RepositoryContentStatisticsDAO;
 import org.apache.maven.archiva.database.RepositoryProblemDAO;
 import org.apache.maven.archiva.database.SimpleConstraint;
 import org.apache.maven.archiva.model.RepositoryContentStatistics;
@@ -46,6 +47,7 @@
     public List query( SimpleConstraint constraint )
     {
         Assert.assertEquals( RepositoryContentStatistics.class, constraint.getResultClass() );
+        
 
         List<RepositoryContentStatistics> stats = new ArrayList<RepositoryContentStatistics>();
         for ( String repo : configuration.getConfiguration().getManagedRepositoriesAsMap().keySet() )
@@ -64,16 +66,22 @@
 
     public ArtifactDAO getArtifactDAO()
     {
-        throw new UnsupportedOperationException( "query not implemented for stub" );
+        throw new UnsupportedOperationException( "method not implemented for stub" );
     }
 
     public ProjectModelDAO getProjectModelDAO()
     {
-        throw new UnsupportedOperationException( "query not implemented for stub" );
+        throw new UnsupportedOperationException( "method not implemented for stub" );
     }
 
     public RepositoryProblemDAO getRepositoryProblemDAO()
     {
-        throw new UnsupportedOperationException( "query not implemented for stub" );
+        throw new UnsupportedOperationException( "method not implemented for stub" );
+    }
+    
+    public RepositoryContentStatisticsDAO getRepositoryContentStatisticsDAO()
+    {
+        throw new UnsupportedOperationException( "method not implemented for stub" );
     }
+    
 }

Added: maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/ArtifactDAOStub.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/ArtifactDAOStub.java?rev=586919&view=auto
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/ArtifactDAOStub.java (added)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/ArtifactDAOStub.java Sun Oct 21 10:30:07 2007
@@ -0,0 +1,90 @@
+package org.apache.maven.archiva.web.action.admin.repositories;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.maven.archiva.database.ArchivaDatabaseException;
+import org.apache.maven.archiva.database.ArtifactDAO;
+import org.apache.maven.archiva.database.Constraint;
+import org.apache.maven.archiva.database.ObjectNotFoundException;
+import org.apache.maven.archiva.model.ArchivaArtifact;
+import org.apache.maven.archiva.model.ArchivaArtifactModel;
+
+/**
+ * ArtifactDAOStub
+ * 
+ * @author <a href="mailto:oching@apache.org">Maria Odea Ching</a>
+ * @version
+ */
+public class ArtifactDAOStub
+    implements ArtifactDAO
+{
+
+    public ArchivaArtifact createArtifact( String groupId, String artifactId, String version, String classifier,
+                                           String type )
+    {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public void deleteArtifact( ArchivaArtifact artifact )
+        throws ArchivaDatabaseException
+    {
+        // TODO Auto-generated method stub
+
+    }
+
+    public ArchivaArtifact getArtifact( String groupId, String artifactId, String version, String classifier,
+                                        String type )
+        throws ObjectNotFoundException, ArchivaDatabaseException
+    {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public List<ArchivaArtifact> queryArtifacts( Constraint constraint )
+        throws ObjectNotFoundException, ArchivaDatabaseException
+    {
+
+        List<ArchivaArtifact> artifacts = new ArrayList<ArchivaArtifact>();
+
+        ArchivaArtifactModel model = new ArchivaArtifactModel();
+        model.setGroupId( "org.apache.maven.archiva" );
+        model.setArtifactId( "test-artifact" );
+        model.setVersion( "1.0" );
+        model.setType( "jar" );
+        model.setRepositoryId( "repo-ident" );
+
+        ArchivaArtifact artifact = new ArchivaArtifact( model );
+        artifacts.add( artifact );
+
+        return artifacts;
+    }
+
+    public ArchivaArtifact saveArtifact( ArchivaArtifact artifact )
+        throws ArchivaDatabaseException
+    {
+        // TODO Auto-generated method stub
+        return null;
+    }
+        
+}

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java?rev=586919&r1=586918&r2=586919&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java Sun Oct 21 10:30:07 2007
@@ -25,8 +25,12 @@
 import org.apache.maven.archiva.configuration.Configuration;
 import org.apache.maven.archiva.configuration.IndeterminateConfigurationException;
 import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
+
+import org.apache.maven.archiva.model.ArchivaProjectModel;
+
 import org.apache.maven.archiva.configuration.ProxyConnectorConfiguration;
 import org.apache.maven.archiva.configuration.RemoteRepositoryConfiguration;
+
 import org.apache.maven.archiva.security.ArchivaRoleConstants;
 import org.codehaus.plexus.PlexusTestCase;
 import org.codehaus.plexus.redback.role.RoleManager;
@@ -57,7 +61,7 @@
     private MockControl archivaConfigurationControl;
 
     private ArchivaConfiguration archivaConfiguration;
-
+    
     private static final String REPO_ID = "repo-ident";
 
     private File location;
@@ -68,7 +72,7 @@
         super.setUp();
 
         action = (DeleteManagedRepositoryAction) lookup( Action.class.getName(), "deleteManagedRepositoryAction" );
-
+        
         archivaConfigurationControl = MockControl.createControl( ArchivaConfiguration.class );
         archivaConfiguration = (ArchivaConfiguration) archivaConfigurationControl.getMock();
         action.setArchivaConfiguration( archivaConfiguration );
@@ -76,7 +80,7 @@
         roleManagerControl = MockControl.createControl( RoleManager.class );
         roleManager = (RoleManager) roleManagerControl.getMock();
         action.setRoleManager( roleManager );
-        location = getTestFile( "target/test/location" );
+        location = getTestFile( "target/test/location" );          
     }
 
     public void testSecureActionBundle()
@@ -119,11 +123,13 @@
 
     public void testDeleteRepositoryKeepContent()
         throws Exception
-    {
+    {    	
         prepareRoleManagerMock();
         
-        Configuration configuration = prepDeletionTest( createRepository(), 3 );
-        String status = action.deleteEntry();
+        Configuration configuration = prepDeletionTest( createRepository(), 3 );                
+        
+        String status = action.deleteEntry();        
+                
         assertEquals( Action.SUCCESS, status );
 
         assertTrue( configuration.getManagedRepositories().isEmpty() );
@@ -136,8 +142,10 @@
     {
         prepareRoleManagerMock();
         
-        Configuration configuration = prepDeletionTest( createRepository(), 3 );
+        Configuration configuration = prepDeletionTest( createRepository(), 3 );              
+        
         String status = action.deleteContents();
+               
         assertEquals( Action.SUCCESS, status );
 
         assertTrue( configuration.getManagedRepositories().isEmpty() );
@@ -277,4 +285,14 @@
         roleManager.removeTemplatedRole( ArchivaRoleConstants.TEMPLATE_REPOSITORY_MANAGER, REPO_ID );
         roleManagerControl.replay();
     }
+    
+    protected ArchivaProjectModel createProjectModel( String groupId, String artifactId, String version )
+    {
+        ArchivaProjectModel projectModel = new ArchivaProjectModel();
+        projectModel.setGroupId( groupId );
+        projectModel.setArtifactId( artifactId );
+        projectModel.setVersion( version );
+
+        return projectModel;
+    }   
 }

Added: maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryArchivaDAOStub.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryArchivaDAOStub.java?rev=586919&view=auto
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryArchivaDAOStub.java (added)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryArchivaDAOStub.java Sun Oct 21 10:30:07 2007
@@ -0,0 +1,85 @@
+package org.apache.maven.archiva.web.action.admin.repositories;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.Serializable;
+import java.util.List;
+
+import org.apache.maven.archiva.database.ArchivaDAO;
+import org.apache.maven.archiva.database.ArtifactDAO;
+import org.apache.maven.archiva.database.ProjectModelDAO;
+import org.apache.maven.archiva.database.RepositoryContentStatisticsDAO;
+import org.apache.maven.archiva.database.RepositoryProblemDAO;
+import org.apache.maven.archiva.database.SimpleConstraint;
+
+/**
+ * DeleteManagedRepositoryArchivaDAOStub
+ * 
+ * @author <a href="mailto:oching@apache.org">Maria Odea Ching</a>
+ * @version
+ */
+public class DeleteManagedRepositoryArchivaDAOStub
+    implements ArchivaDAO
+{
+    /**
+     * @plexus.requirement role-hint="jdo"
+     */
+    private ProjectModelDAO projectModelDAO;
+
+    /**
+     * @plexus.requirement role-hint="jdo"
+     */
+    private ArtifactDAO artifactDAO;
+
+    /**
+     * @plexus.requirement role-hint="jdo"
+     */
+    private RepositoryContentStatisticsDAO repoContentStatisticsDAO;
+
+    public List query( SimpleConstraint constraint )
+    {
+        return null;
+    }
+
+    public Object save( Serializable obj )
+    {
+        throw new UnsupportedOperationException( "query not implemented for stub" );
+    }
+
+    public ArtifactDAO getArtifactDAO()
+    {
+        return artifactDAO;
+    }
+
+    public ProjectModelDAO getProjectModelDAO()
+    {
+        return projectModelDAO;
+    }
+
+    public RepositoryProblemDAO getRepositoryProblemDAO()
+    {
+        throw new UnsupportedOperationException( "query not implemented for stub" );
+    }
+
+    public RepositoryContentStatisticsDAO getRepositoryContentStatisticsDAO()
+    {
+        return repoContentStatisticsDAO;
+    }
+}

Added: maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/ProjectModelDAOStub.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/ProjectModelDAOStub.java?rev=586919&view=auto
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/ProjectModelDAOStub.java (added)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/ProjectModelDAOStub.java Sun Oct 21 10:30:07 2007
@@ -0,0 +1,78 @@
+package org.apache.maven.archiva.web.action.admin.repositories;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.List;
+
+import org.apache.maven.archiva.database.ArchivaDatabaseException;
+import org.apache.maven.archiva.database.Constraint;
+import org.apache.maven.archiva.database.ObjectNotFoundException;
+import org.apache.maven.archiva.database.ProjectModelDAO;
+import org.apache.maven.archiva.model.ArchivaProjectModel;
+
+/**
+ * ProjectModelDAOStub
+ * 
+ * @author <a href="mailto:oching@apache.org">Maria Odea Ching</a>
+ * @version
+ */
+public class ProjectModelDAOStub
+    implements ProjectModelDAO
+{
+
+    public ArchivaProjectModel createProjectModel( String groupId, String artifactId, String version )
+    {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public void deleteProjectModel( ArchivaProjectModel model )
+        throws ArchivaDatabaseException
+    {
+        // TODO Auto-generated method stub
+
+    }
+
+    public ArchivaProjectModel getProjectModel( String groupId, String artifactId, String version )
+        throws ObjectNotFoundException, ArchivaDatabaseException
+    {
+        ArchivaProjectModel projectModel = new ArchivaProjectModel();
+        projectModel.setGroupId( groupId );
+        projectModel.setArtifactId( artifactId );
+        projectModel.setVersion( version );
+
+        return projectModel;
+    }
+
+    public List queryProjectModels( Constraint constraint )
+        throws ObjectNotFoundException, ArchivaDatabaseException
+    {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public ArchivaProjectModel saveProjectModel( ArchivaProjectModel model )
+        throws ArchivaDatabaseException
+    {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+}

Added: maven/archiva/trunk/archiva-web/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.xml?rev=586919&view=auto
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.xml (added)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.xml Sun Oct 21 10:30:07 2007
@@ -0,0 +1,78 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~  http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+
+<plexus>
+  <components>  
+  	<component>
+      <role>org.codehaus.plexus.logging.LoggerManager</role>
+      <implementation>org.codehaus.plexus.logging.slf4j.Slf4jLoggerManager</implementation>
+      <lifecycle-handler>basic</lifecycle-handler>
+    </component>
+    <component>
+      <role>com.opensymphony.xwork.Action</role>
+      <role-hint>deleteManagedRepositoryAction</role-hint>
+      <implementation>org.apache.maven.archiva.web.action.admin.repositories.DeleteManagedRepositoryAction</implementation>
+      <instantiation-strategy>per-lookup</instantiation-strategy>
+      <requirements>
+        <requirement>
+          <role>org.apache.maven.archiva.database.ArchivaDAO</role>
+          <role-hint>jdo</role-hint>
+          <field-name>archivaDAO</field-name>
+        </requirement>
+      </requirements>
+    </component>
+  	<component>
+      <role>org.apache.maven.archiva.database.ArchivaDAO</role>
+      <role-hint>jdo</role-hint>
+      <implementation>org.apache.maven.archiva.web.action.admin.repositories.DeleteManagedRepositoryArchivaDAOStub</implementation>
+      <requirements>
+      	<requirement>
+      		<role>org.apache.maven.archiva.database.ArtifactDAO</role>
+      		<role-hint>jdo</role-hint>
+      		<field-name>artifactDAO</field-name>
+      	</requirement>
+      	<requirement>
+      		<role>org.apache.maven.archiva.database.ProjectModelDAO</role>
+      		<role-hint>jdo</role-hint>
+      		<field-name>projectModelDAO</field-name>
+      	</requirement>
+      	<requirement>
+      		<role>org.apache.maven.archiva.database.RepositoryContentStatisticsDAO</role>
+      		<role-hint>jdo</role-hint>
+      		<field-name>repoContentStatisticsDAO</field-name>
+      	</requirement>      	 
+      </requirements>            
+    </component>
+    <component>
+      <role>org.apache.maven.archiva.database.ArtifactDAO</role>
+      <role-hint>jdo</role-hint>
+      <implementation>org.apache.maven.archiva.web.action.admin.repositories.ArtifactDAOStub</implementation>
+    </component>        
+    <component>
+      <role>org.apache.maven.archiva.database.ProjectModelDAO</role>
+      <role-hint>jdo</role-hint>
+      <implementation>org.apache.maven.archiva.web.action.admin.repositories.ProjectModelDAOStub</implementation>
+    </component>   
+    <component>
+      <role>org.apache.maven.archiva.database.RepositoryContentStatisticsDAO</role>
+      <role-hint>jdo</role-hint>
+      <implementation>org.apache.maven.archiva.web.action.admin.repositories.RepositoryContentStatisticsDAOStub</implementation>
+    </component>        
+  </components>
+</plexus>



Re: svn commit: r586919 - in /maven/archiva/trunk: archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/ archiva-database/src/main/java/org/apache/maven/archiva/database/ archiva-database/src/m...

Posted by Brett Porter <br...@apache.org>.
On 22/10/2007, at 10:42 AM, Maria Odea Ching wrote:

> Hi Brett,
>
> I thought that if there was a problem cleaning up the repository  
> data, the delete of the repo shouldn't proceed.. or should it? :-)

That makes sense - I just wanted to check if there was anything else.

My only concern is the saveConfiguration method returning something  
other than success and the repository will still be configured but  
most of the data deleted. I'm not sure if that's possible, though :)

Anyway, this should be fine for now - if we do push these back from  
the web layer we should ensure we have some more testing around the  
exception cases.

Thanks,
Brett

>
> Thanks,
> Deng
>
> Brett Porter wrote:
>> Hi Deng,
>>
>> On 22/10/2007, at 3:30 AM, oching@apache.org wrote:
>>
>>> @@ -89,13 +105,12 @@
>>> try
>>> {
>>> Configuration configuration =  
>>> archivaConfiguration.getConfiguration();
>>> + cleanupRepositoryData( existingRepository );
>>> removeRepository( repoid, configuration );
>>> result = saveConfiguration( configuration );
>>>
>>> if ( result.equals( SUCCESS ) )
>>> {
>>> - cleanupRepositoryData( existingRepository );
>>> -
>>
>> Can you just clarify why this was moved?

Re: svn commit: r586919 - in /maven/archiva/trunk: archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/ archiva-database/src/main/java/org/apache/maven/archiva/database/ archiva-database/src/m...

Posted by Maria Odea Ching <oc...@exist.com>.
Hi Brett,

I thought that if there was a problem cleaning up the repository data, 
the delete of the repo shouldn't proceed.. or should it? :-)

Thanks,
Deng

Brett Porter wrote:
> Hi Deng,
>
> On 22/10/2007, at 3:30 AM, oching@apache.org wrote:
>
>> @@ -89,13 +105,12 @@
>> try
>> {
>> Configuration configuration = archivaConfiguration.getConfiguration();
>> + cleanupRepositoryData( existingRepository );
>> removeRepository( repoid, configuration );
>> result = saveConfiguration( configuration );
>>
>> if ( result.equals( SUCCESS ) )
>> {
>> - cleanupRepositoryData( existingRepository );
>> -
>
> Can you just clarify why this was moved?
>
>> private void cleanupRepositoryData( ManagedRepositoryConfiguration 
>> cleanupRepository )
>> - throws RoleManagerException
>> + throws RoleManagerException, ArchivaDatabaseException
>> {
>> removeRepositoryRoles( cleanupRepository );
>>
>> // TODO: [MRM-382] Remove index from artifacts of deleted managed 
>> repositories.
>>
>> - // TODO: [MRM-265] After removing a managed repository - 
>> Browse/Search still see it
>> -
>> + // [MRM-265] After removing a managed repository - Browse/Search 
>> still see it
>> + cleanupDatabase( cleanupRepository.getId() );
>> + cleanupScanStats( cleanupRepository.getId() );
>> +
>> // [MRM-520] Proxy Connectors are not deleted with the deletion of a 
>> Repository.
>> List<ProxyConnectorConfiguration> proxyConnectors = 
>> getProxyConnectors();
>> for ( ProxyConnectorConfiguration proxyConnector : proxyConnectors )
>
> Just a general note (not specific to this commit) - we need to start 
> thinking about the accumulation of logic in the web actions and 
> shuffle it over to the business layer.
>
> Thanks!
>
> Cheers,
> Brett
>
> -- 
> Brett Porter - brett@apache.org
> Blog: http://www.devzuz.org/blogs/bporter/
>


Re: svn commit: r586919 - in /maven/archiva/trunk: archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/ archiva-database/src/main/java/org/apache/maven/archiva/database/ archiva-database/src/m...

Posted by Brett Porter <br...@apache.org>.
Hi Deng,

On 22/10/2007, at 3:30 AM, oching@apache.org wrote:

> @@ -89,13 +105,12 @@
>          try
>          {
>              Configuration configuration =  
> archivaConfiguration.getConfiguration();
> +            cleanupRepositoryData( existingRepository );
>              removeRepository( repoid, configuration );
>              result = saveConfiguration( configuration );
>
>              if ( result.equals( SUCCESS ) )
>              {
> -                cleanupRepositoryData( existingRepository );
> -

Can you just clarify why this was moved?

>      private void cleanupRepositoryData 
> ( ManagedRepositoryConfiguration cleanupRepository )
> -        throws RoleManagerException
> +        throws RoleManagerException, ArchivaDatabaseException
>      {
>          removeRepositoryRoles( cleanupRepository );
>
>          // TODO: [MRM-382] Remove index from artifacts of deleted  
> managed repositories.
>
> -        // TODO: [MRM-265] After removing a managed repository -  
> Browse/Search still see it
> -
> +        // [MRM-265] After removing a managed repository - Browse/ 
> Search still see it
> +        cleanupDatabase( cleanupRepository.getId() );
> +        cleanupScanStats( cleanupRepository.getId() );
> +
>          // [MRM-520] Proxy Connectors are not deleted with the  
> deletion of a Repository.
>          List<ProxyConnectorConfiguration> proxyConnectors =  
> getProxyConnectors();
>          for ( ProxyConnectorConfiguration proxyConnector :  
> proxyConnectors )

Just a general note (not specific to this commit) - we need to start  
thinking about the accumulation of logic in the web actions and  
shuffle it over to the business layer.

Thanks!

Cheers,
Brett

--
Brett Porter - brett@apache.org
Blog: http://www.devzuz.org/blogs/bporter/