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/05/29 21:24:48 UTC
svn commit: r542631 - in
/maven/archiva/trunk/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database:
ProjectModelToDatabaseConsumer.java
project/WrappedDatabaseProjectModelResolver.java
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 {@link ProjectModelResolver} to allow for insertion of resolved project models on discovery.
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">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