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;
}
}