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 2008/02/17 11:40:30 UTC

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

Author: oching
Date: Sun Feb 17 02:40:28 2008
New Revision: 628473

URL: http://svn.apache.org/viewvc?rev=628473&view=rev
Log:
[MRM-692]
 Applied patch submitted by Dario Oliveros

-added RepositoryProblemByArtifactConstraint for querying repo problems by artifact
-remove repo problems if artifact no longer exists in the repo

Added:
    maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/RepositoryProblemByArtifactConstraint.java
Modified:
    maven/archiva/trunk/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/DatabaseCleanupRemoveArtifactConsumer.java
    maven/archiva/trunk/archiva-base/archiva-consumers/archiva-database-consumers/src/test/java/org/apache/maven/archiva/consumers/database/DatabaseCleanupRemoveArtifactConsumerTest.java

Modified: maven/archiva/trunk/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/DatabaseCleanupRemoveArtifactConsumer.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/DatabaseCleanupRemoveArtifactConsumer.java?rev=628473&r1=628472&r2=628473&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/DatabaseCleanupRemoveArtifactConsumer.java (original)
+++ maven/archiva/trunk/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/DatabaseCleanupRemoveArtifactConsumer.java Sun Feb 17 02:40:28 2008
@@ -22,9 +22,13 @@
 import org.apache.maven.archiva.consumers.AbstractMonitoredConsumer;
 import org.apache.maven.archiva.consumers.ConsumerException;
 import org.apache.maven.archiva.consumers.DatabaseCleanupConsumer;
+import org.apache.maven.archiva.database.Constraint;
+import org.apache.maven.archiva.database.RepositoryProblemDAO;
+import org.apache.maven.archiva.database.constraints.RepositoryProblemByArtifactConstraint;
 import org.apache.maven.archiva.model.ArchivaArtifact;
 import org.apache.maven.archiva.database.ArtifactDAO;
 import org.apache.maven.archiva.database.ArchivaDatabaseException;
+import org.apache.maven.archiva.model.RepositoryProblem;
 import org.apache.maven.archiva.repository.ManagedRepositoryContent;
 import org.apache.maven.archiva.repository.RepositoryContentFactory;
 import org.apache.maven.archiva.repository.RepositoryException;
@@ -61,7 +65,12 @@
      * @plexus.requirement role-hint="jdo"
      */
     private ArtifactDAO artifactDAO;
-    
+
+    /**
+     * @plexus.requirement role-hint="jdo"
+     */
+    private RepositoryProblemDAO repositoryProblemDAO;
+
     /**
      * @plexus.requirement
      */
@@ -80,34 +89,47 @@
 
     public List<String> getIncludedTypes()
     {   
-    	return null;
+        return null;
     }
 
     public void processArchivaArtifact( ArchivaArtifact artifact )
         throws ConsumerException
-    {	
-    	try
-    	{
-	    	ManagedRepositoryContent repositoryContent = 
-	    		repositoryFactory.getManagedRepositoryContent( artifact.getModel().getRepositoryId() );
-	 	    	
-	    	File file = new File( repositoryContent.getRepoRoot(), repositoryContent.toPath( artifact ) );
-	    		    	
-	    	if( !file.exists() )
-	        {	        	     
-	    		artifactDAO.deleteArtifact( artifact );
-	        }	    	
-    	}
-    	catch ( RepositoryException re )
-    	{
-    		throw new ConsumerException( "Can't run database cleanup remove artifact consumer: " + 
-    				re.getMessage() );
-    	}
-    	catch ( ArchivaDatabaseException e )
+    {
+        try
+        {
+            ManagedRepositoryContent repositoryContent =
+                repositoryFactory.getManagedRepositoryContent( artifact.getModel().getRepositoryId() );
+
+            File file = new File( repositoryContent.getRepoRoot(), repositoryContent.toPath( artifact ) );
+
+            if( !file.exists() )
+            {                    
+                artifactDAO.deleteArtifact( artifact );
+
+                // Remove all repository problems related to this artifact
+                Constraint artifactConstraint = new RepositoryProblemByArtifactConstraint( artifact );
+                List<RepositoryProblem> repositoryProblems =
+                    repositoryProblemDAO.queryRepositoryProblems( artifactConstraint );
+
+                if ( repositoryProblems != null )
+                {
+                    for ( RepositoryProblem repositoryProblem : repositoryProblems )
+                    {
+                        repositoryProblemDAO.deleteRepositoryProblem( repositoryProblem );
+                    }
+                }
+            }
+        }
+        catch ( RepositoryException re )
+        {
+            throw new ConsumerException( "Can't run database cleanup remove artifact consumer: " + 
+                                         re.getMessage() );
+        }
+        catch ( ArchivaDatabaseException e )
         {
             throw new ConsumerException( e.getMessage() );
         }
-    }    	
+    }
 
     public String getDescription()
     {
@@ -128,9 +150,14 @@
     {
         this.artifactDAO = artifactDAO;
     }
-    
+
+    public void setRepositoryProblemDAO( RepositoryProblemDAO repositoryProblemDAO )
+    {
+        this.repositoryProblemDAO = repositoryProblemDAO;
+    }
+
     public void setRepositoryFactory( RepositoryContentFactory repositoryFactory )
     {
         this.repositoryFactory = repositoryFactory;
-    }     
+    }
 }

Modified: maven/archiva/trunk/archiva-base/archiva-consumers/archiva-database-consumers/src/test/java/org/apache/maven/archiva/consumers/database/DatabaseCleanupRemoveArtifactConsumerTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-consumers/archiva-database-consumers/src/test/java/org/apache/maven/archiva/consumers/database/DatabaseCleanupRemoveArtifactConsumerTest.java?rev=628473&r1=628472&r2=628473&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-consumers/archiva-database-consumers/src/test/java/org/apache/maven/archiva/consumers/database/DatabaseCleanupRemoveArtifactConsumerTest.java (original)
+++ maven/archiva/trunk/archiva-base/archiva-consumers/archiva-database-consumers/src/test/java/org/apache/maven/archiva/consumers/database/DatabaseCleanupRemoveArtifactConsumerTest.java Sun Feb 17 02:40:28 2008
@@ -22,10 +22,11 @@
 import org.easymock.MockControl;
 import org.apache.maven.archiva.model.ArchivaArtifact;
 import org.apache.maven.archiva.database.ArtifactDAO;
+import org.apache.maven.archiva.database.RepositoryProblemDAO;
 
 /**
  * Test for DatabaseCleanupRemoveArtifactConsumerTest
- *
+ * 
  * @author <a href="mailto:oching@apache.org">Maria Odea Ching</a>
  */
 public class DatabaseCleanupRemoveArtifactConsumerTest
@@ -35,6 +36,10 @@
 
     private ArtifactDAO artifactDAOMock;
 
+    private MockControl repositoryProblemDAOControl;
+
+    private RepositoryProblemDAO repositoryProblemDAOMock;
+
     private DatabaseCleanupRemoveArtifactConsumer dbCleanupRemoveArtifactConsumer;
 
     public void setUp()
@@ -48,8 +53,14 @@
 
         artifactDAOMock = (ArtifactDAO) artifactDAOControl.getMock();
 
+        repositoryProblemDAOControl = MockControl.createControl( RepositoryProblemDAO.class );
+
+        repositoryProblemDAOMock = (RepositoryProblemDAO) repositoryProblemDAOControl.getMock();
+
         dbCleanupRemoveArtifactConsumer.setArtifactDAO( artifactDAOMock );
-        
+
+        dbCleanupRemoveArtifactConsumer.setRepositoryProblemDAO( repositoryProblemDAOMock );
+
         dbCleanupRemoveArtifactConsumer.setRepositoryFactory( repositoryFactory );
     }
 
@@ -60,9 +71,13 @@
 
         artifactDAOControl.replay();
 
+        repositoryProblemDAOControl.replay();
+
         dbCleanupRemoveArtifactConsumer.processArchivaArtifact( artifact );
 
         artifactDAOControl.verify();
+        
+        repositoryProblemDAOControl.verify();
     }
 
     public void testIfArtifactWasDeleted()
@@ -73,10 +88,10 @@
         artifactDAOMock.deleteArtifact( artifact );
 
         artifactDAOControl.replay();
-
+        
         dbCleanupRemoveArtifactConsumer.processArchivaArtifact( artifact );
 
-        artifactDAOControl.verify();
+        artifactDAOControl.verify();        
     }
 
 }

Added: maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/RepositoryProblemByArtifactConstraint.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/RepositoryProblemByArtifactConstraint.java?rev=628473&view=auto
==============================================================================
--- maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/RepositoryProblemByArtifactConstraint.java (added)
+++ maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/RepositoryProblemByArtifactConstraint.java Sun Feb 17 02:40:28 2008
@@ -0,0 +1,57 @@
+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 org.apache.maven.archiva.database.Constraint;
+import org.apache.maven.archiva.model.ArchivaArtifact;
+
+/**
+ * RepositoryProblemByArtifactConstraint
+ */
+public class RepositoryProblemByArtifactConstraint
+    extends AbstractDeclarativeConstraint
+    implements Constraint
+{
+    private String whereClause;
+
+    private void createWhereClause( ArchivaArtifact artifact )
+    {
+        whereClause =
+            "groupId.like(desiredGroupId) && artifactId.like(desiredArtifactId) && version.like(desiredVersion)";
+        declParams = new String[] { "String desiredGroupId" , "String desiredArtifactId" , "String desiredVersion"};
+        params = new Object[] { artifact.getGroupId() + "%" , artifact.getArtifactId() + "%", artifact.getVersion() + "%"};
+    }
+
+    public RepositoryProblemByArtifactConstraint( ArchivaArtifact desiredArtifact )
+    {
+        super();
+        createWhereClause( desiredArtifact );
+    }
+
+    public String getSortColumn()
+    {
+        return "artifactId";
+    }
+
+    public String getWhereCondition()
+    {
+        return whereClause;
+    }
+}