Author: joakime
Date: Tue May 29 12:24:48 2007
New Revision: 542631
URL: http://svn.apache.org/viewvc?view=rev&rev=542631
Log:
[MRM-380]: When trying to look at project with empty groupId
Update for efficicency. Save resolved project models to database as they are
resolved.
Added:
maven/archiva/trunk/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/project/WrappedDatabaseProjectModelResolver.java
(with props)
Modified:
maven/archiva/trunk/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/ProjectModelToDatabaseConsumer.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?view=diff&rev=542631&r1=542630&r2=542631
==============================================================================
---
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
Tue May 29 12:24:48 2007
@@ -26,6 +26,7 @@
import org.apache.maven.archiva.consumers.AbstractMonitoredConsumer;
import org.apache.maven.archiva.consumers.ConsumerException;
import org.apache.maven.archiva.consumers.DatabaseUnprocessedArtifactConsumer;
+import
org.apache.maven.archiva.consumers.database.project.WrappedDatabaseProjectModelResolver;
import org.apache.maven.archiva.database.ArchivaDAO;
import org.apache.maven.archiva.database.ArchivaDatabaseException;
import org.apache.maven.archiva.database.ObjectNotFoundException;
@@ -286,7 +287,8 @@
while ( it.hasNext() )
{
ProjectModelResolver resolver = (ProjectModelResolver)
it.next();
- effectiveModelFilter.addProjectModelResolver( resolver );
+ ProjectModelResolver wrapped = new
WrappedDatabaseProjectModelResolver( dao, resolver );
+ effectiveModelFilter.addProjectModelResolver( wrapped );
}
}
}
Added:
maven/archiva/trunk/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/project/WrappedDatabaseProjectModelResolver.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/project/WrappedDatabaseProjectModelResolver.java?view=auto&rev=542631
==============================================================================
---
maven/archiva/trunk/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/project/WrappedDatabaseProjectModelResolver.java
(added)
+++
maven/archiva/trunk/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/project/WrappedDatabaseProjectModelResolver.java
Tue May 29 12:24:48 2007
@@ -0,0 +1,93 @@
+package org.apache.maven.archiva.consumers.database.project;
+
+import org.apache.maven.archiva.database.ArchivaDAO;
+import org.apache.maven.archiva.database.ArchivaDatabaseException;
+import org.apache.maven.archiva.database.ObjectNotFoundException;
+import org.apache.maven.archiva.model.ArchivaProjectModel;
+import org.apache.maven.archiva.model.VersionedReference;
+import org.apache.maven.archiva.repository.project.ProjectModelException;
+import org.apache.maven.archiva.repository.project.ProjectModelResolver;
+
+/**
+ * Wrapped [EMAIL PROTECTED] ProjectModelResolver} to allow for insertion of
resolved project models on discovery.
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class WrappedDatabaseProjectModelResolver
+ implements ProjectModelResolver
+{
+ private ArchivaDAO dao;
+
+ private ProjectModelResolver resolver;
+
+ public WrappedDatabaseProjectModelResolver( ArchivaDAO dao,
ProjectModelResolver resolver )
+ {
+ this.dao = dao;
+ this.resolver = resolver;
+ }
+
+ public ArchivaProjectModel resolveProjectModel( VersionedReference
reference )
+ throws ProjectModelException
+ {
+ ArchivaProjectModel model = resolver.resolveProjectModel( reference );
+ if ( model == null )
+ {
+ return model;
+ }
+
+ // Test if it exists.
+ if ( existsInDatabase( model ) )
+ {
+ removeFromDatabase( model );
+ }
+
+ saveInDatabase( model );
+
+ return model;
+ }
+
+ private void saveInDatabase( ArchivaProjectModel model ) throws
ProjectModelException
+ {
+ try
+ {
+ dao.getProjectModelDAO().saveProjectModel( model );
+ }
+ catch ( ArchivaDatabaseException e )
+ {
+ throw new ProjectModelException( "Unable to save model to
database: " + e.getMessage(), e );
+ }
+ }
+
+ private void removeFromDatabase( ArchivaProjectModel model ) throws
ProjectModelException
+ {
+ try
+ {
+ dao.getProjectModelDAO().deleteProjectModel( model );
+ }
+ catch ( ArchivaDatabaseException e )
+ {
+ throw new ProjectModelException( "Unable to remove existing model
from database: " + e.getMessage(), e );
+ }
+ }
+
+ private boolean existsInDatabase( ArchivaProjectModel model ) throws
ProjectModelException
+ {
+ try
+ {
+ ArchivaProjectModel dbmodel =
dao.getProjectModelDAO().getProjectModel( model.getGroupId(),
+
model.getArtifactId(),
+
model.getVersion() );
+
+ return ( dbmodel != null );
+ }
+ catch ( ObjectNotFoundException e )
+ {
+ return false;
+ }
+ catch ( ArchivaDatabaseException e )
+ {
+ throw new ProjectModelException( "Unable to check for existing
model from database: " + e.getMessage(), e );
+ }
+ }
+}
Propchange:
maven/archiva/trunk/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/project/WrappedDatabaseProjectModelResolver.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/archiva/trunk/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/project/WrappedDatabaseProjectModelResolver.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Propchange:
maven/archiva/trunk/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/project/WrappedDatabaseProjectModelResolver.java
------------------------------------------------------------------------------
svn:mime-type = text/plain