You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by jo...@apache.org on 2007/06/17 23:44:25 UTC

svn commit: r548120 - /maven/archiva/trunk/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/ArtifactUpdateDatabaseConsumer.java

Author: joakime
Date: Sun Jun 17 14:44:25 2007
New Revision: 548120

URL: http://svn.apache.org/viewvc?view=rev&rev=548120
Log:
[MRM-369]: [Repository Scanning] Exception on update to pre-existing artifact. 

Modified:
    maven/archiva/trunk/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/ArtifactUpdateDatabaseConsumer.java

Modified: maven/archiva/trunk/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/ArtifactUpdateDatabaseConsumer.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/ArtifactUpdateDatabaseConsumer.java?view=diff&rev=548120&r1=548119&r2=548120
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/ArtifactUpdateDatabaseConsumer.java (original)
+++ maven/archiva/trunk/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/ArtifactUpdateDatabaseConsumer.java Sun Jun 17 14:44:25 2007
@@ -83,7 +83,7 @@
      * @plexus.requirement
      */
     private ArchivaConfiguration configuration;
-    
+
     /**
      * @plexus.requirement
      */
@@ -161,10 +161,15 @@
     public void processFile( String path )
         throws ConsumerException
     {
-        try
+        ArchivaArtifact artifact = getLiveArtifact( path );
+
+        if ( artifact == null )
         {
-            ArchivaArtifact artifact = layout.toArtifact( path );
+            return;
+        }
 
+        try
+        {
             artifact.getModel().setRepositoryId( this.repository.getId() );
 
             // Calculate the hashcodes.
@@ -194,14 +199,41 @@
 
             dao.getArtifactDAO().saveArtifact( artifact );
         }
+        catch ( ArchivaDatabaseException e )
+        {
+            triggerConsumerError( DB_ERROR, "Unable to save artifact to database: " + e.getMessage() );
+        }
+    }
+
+    /**
+     * Get a Live Artifact from a Path.
+     * 
+     * Will resolve the artifact details from the path, and then return a database live version
+     * of that artifact.  Suitable for modification and saving (without the need to check for
+     * existance in database prior to save.)
+     * 
+     * @param path the path to work from.
+     * @return the artifact that is suitable for database saving.
+     */
+    public ArchivaArtifact getLiveArtifact( String path )
+    {
+        try
+        {
+            ArchivaArtifact artifact = layout.toArtifact( path );
+
+            ArchivaArtifact liveArtifact = dao.getArtifactDAO().createArtifact( artifact.getGroupId(),
+                                                                                artifact.getArtifactId(),
+                                                                                artifact.getVersion(),
+                                                                                artifact.getClassifier(),
+                                                                                artifact.getType() );
+
+            return liveArtifact;
+        }
         catch ( LayoutException e )
         {
             triggerConsumerError( TYPE_NOT_ARTIFACT, "Path " + path + " cannot be converted to artifact: "
                 + e.getMessage() );
-        }
-        catch ( ArchivaDatabaseException e )
-        {
-            triggerConsumerError( DB_ERROR, "Unable to save artifact to database: " + e.getMessage() );
+            return null;
         }
     }