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/02/23 20:05:37 UTC

svn commit: r511053 [3/6] - in /maven/archiva/trunk: ./ archiva-applet/ archiva-cli/ archiva-cli/src/main/java/org/apache/maven/archiva/cli/ archiva-common/ archiva-common/src/ archiva-common/src/main/ archiva-common/src/main/java/ archiva-common/src/m...

Modified: maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/RepositoryTaskScheduler.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/RepositoryTaskScheduler.java?view=diff&rev=511053&r1=511052&r2=511053
==============================================================================
--- maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/RepositoryTaskScheduler.java (original)
+++ maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/RepositoryTaskScheduler.java Fri Feb 23 11:05:21 2007
@@ -19,6 +19,8 @@
  * under the License.
  */
 
+import org.codehaus.plexus.taskqueue.execution.TaskExecutionException;
+
 /**
  * The component that takes care of scheduling in the application.
  *
@@ -31,7 +33,7 @@
      */
     String ROLE = RepositoryTaskScheduler.class.getName();
 
-    void runIndexer()
+    void runDataRefresh()
         throws TaskExecutionException;
 
-}
+} 

Modified: maven/archiva/trunk/archiva-core/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-core/src/main/resources/META-INF/plexus/components.xml?view=diff&rev=511053&r1=511052&r2=511053
==============================================================================
--- maven/archiva/trunk/archiva-core/src/main/resources/META-INF/plexus/components.xml (original)
+++ maven/archiva/trunk/archiva-core/src/main/resources/META-INF/plexus/components.xml Fri Feb 23 11:05:21 2007
@@ -21,9 +21,67 @@
 <component-set>
   <components>
 
+    <!-- TODO: Remove once CDC can handle correct cross-module descriptor creation. -->
+
+    <!-- SNIP:START -->
+
+    <component>
+      <role>org.apache.maven.archiva.common.consumers.Consumer</role>
+      <role-hint>index-artifact</role-hint>
+      <implementation>org.apache.maven.archiva.consumers.IndexArtifactConsumer</implementation>
+      <instantiation-strategy>per-lookup</instantiation-strategy>
+      <requirements>
+        <requirement>
+          <role>org.apache.maven.artifact.factory.ArtifactFactory</role>
+          <field-name>artifactFactory</field-name>
+        </requirement>
+      </requirements>
+    </component>
+
+    <component>
+      <role>org.apache.maven.archiva.common.consumers.Consumer</role>
+      <role-hint>artifact-health</role-hint>
+      <implementation>org.apache.maven.archiva.consumers.ArtifactHealthConsumer</implementation>
+      <instantiation-strategy>per-lookup</instantiation-strategy>
+      <requirements>
+        <requirement>
+          <role>org.apache.maven.artifact.factory.ArtifactFactory</role>
+          <field-name>artifactFactory</field-name>
+        </requirement>
+      </requirements>
+    </component>
+
+    <component>
+      <role>org.apache.maven.archiva.common.consumers.Consumer</role>
+      <role-hint>metadata-health</role-hint>
+      <implementation>org.apache.maven.archiva.consumers.RepositoryMetadataHealthConsumer</implementation>
+      <instantiation-strategy>per-lookup</instantiation-strategy>
+      <requirements>
+        <requirement>
+          <role>org.apache.maven.artifact.factory.ArtifactFactory</role>
+          <field-name>artifactFactory</field-name>
+        </requirement>
+      </requirements>
+    </component>
+
+    <!-- SNIP:END -->
+
+    <component>
+      <role>org.apache.maven.archiva.scheduler.executors.DataRefreshConsumers</role>
+      <implementation>org.apache.maven.archiva.scheduler.executors.DataRefreshConsumers</implementation>
+      <description>Mutable list of consumer for the Data Refresh.</description>
+      <configuration>
+        <consumer-names>
+          <consumer-name>index-artifact</consumer-name>
+          <consumer-name>artifact-health</consumer-name>
+          <consumer-name>metadata-health</consumer-name>
+        </consumer-names>
+      </configuration>
+    </component>
+
     <component>
       <role>org.codehaus.plexus.taskqueue.TaskQueue</role>
-      <role-hint>indexer</role-hint>
+      <role-hint>data-refresh</role-hint>
       <implementation>org.codehaus.plexus.taskqueue.DefaultTaskQueue</implementation>
       <lifecycle-handler>plexus-configurable</lifecycle-handler>
       <configuration>
@@ -38,20 +96,20 @@
 
     <component>
       <role>org.codehaus.plexus.taskqueue.execution.TaskQueueExecutor</role>
-      <role-hint>indexer</role-hint>
+      <role-hint>data-refresh</role-hint>
       <implementation>org.codehaus.plexus.taskqueue.execution.ThreadedTaskQueueExecutor</implementation>
       <requirements>
         <requirement>
           <role>org.codehaus.plexus.taskqueue.execution.TaskExecutor</role>
-          <role-hint>indexer</role-hint>
+          <role-hint>data-refresh</role-hint>
         </requirement>
         <requirement>
           <role>org.codehaus.plexus.taskqueue.TaskQueue</role>
-          <role-hint>indexer</role-hint>
+          <role-hint>data-refresh</role-hint>
         </requirement>
       </requirements>
       <configuration>
-        <name>indexer</name>
+        <name>data-refresh</name>
       </configuration>
     </component>
     

Modified: maven/archiva/trunk/archiva-core/src/test/java/org/apache/maven/archiva/repositories/DefaultActiveManagedRepositoriesTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-core/src/test/java/org/apache/maven/archiva/repositories/DefaultActiveManagedRepositoriesTest.java?view=diff&rev=511053&r1=511052&r2=511053
==============================================================================
--- maven/archiva/trunk/archiva-core/src/test/java/org/apache/maven/archiva/repositories/DefaultActiveManagedRepositoriesTest.java (original)
+++ maven/archiva/trunk/archiva-core/src/test/java/org/apache/maven/archiva/repositories/DefaultActiveManagedRepositoriesTest.java Fri Feb 23 11:05:21 2007
@@ -19,15 +19,15 @@
  * under the License.
  */
 
-import org.apache.maven.archiva.artifact.ManagedArtifact;
-import org.apache.maven.archiva.artifact.ManagedEjbArtifact;
-import org.apache.maven.archiva.artifact.ManagedJavaArtifact;
+import org.apache.maven.archiva.common.artifact.managed.ManagedArtifact;
+import org.apache.maven.archiva.common.artifact.managed.ManagedEjbArtifact;
+import org.apache.maven.archiva.common.artifact.managed.ManagedJavaArtifact;
 import org.codehaus.plexus.PlexusTestCase;
 
 /**
  * DefaultActiveManagedRepositoriesTest
  *
- * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
  * @version $Id$
  */
 public class DefaultActiveManagedRepositoriesTest

Propchange: maven/archiva/trunk/archiva-discoverer/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Fri Feb 23 11:05:21 2007
@@ -1,8 +1,15 @@
-cobertura.ser
 target
-*.iml
-*.iws
+*~
+.*.swp
+*.log
+*.patch
+*.diff
 *.ipr
+*.iws
+*.iml
 .classpath
 .project
+.m2eclipse
 .settings
+.wtpmodules
+cobertura.ser

Modified: maven/archiva/trunk/archiva-discoverer/pom.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-discoverer/pom.xml?view=diff&rev=511053&r1=511052&r2=511053
==============================================================================
--- maven/archiva/trunk/archiva-discoverer/pom.xml (original)
+++ maven/archiva/trunk/archiva-discoverer/pom.xml Fri Feb 23 11:05:21 2007
@@ -27,8 +27,12 @@
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>archiva-discoverer</artifactId>
-  <name>Archiva Artifact Discoverer</name>
+  <name>Archiva Discoverer</name>
   <dependencies>
+    <dependency>
+      <groupId>org.apache.maven.archiva</groupId>
+      <artifactId>archiva-common</artifactId>
+    </dependency>
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>

Modified: maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/Discoverer.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/Discoverer.java?view=diff&rev=511053&r1=511052&r2=511053
==============================================================================
--- maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/Discoverer.java (original)
+++ maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/Discoverer.java Fri Feb 23 11:05:21 2007
@@ -19,26 +19,55 @@
  * under the License.
  */
 
-import java.util.Iterator;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+
+import java.io.File;
+import java.util.List;
 
 /**
- * @author Edwin Punzalan
+ * Discoverer - generic discoverer of content in an ArtifactRepository. 
+ *
+ * @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
+ * @version $Id$
  */
 public interface Discoverer
 {
+    public static final String ROLE = Discoverer.class.getName();
+    
     /**
-     * Get the list of paths kicked out during the discovery process.
-     *
-     * @return the paths as Strings.
+     * Walk the repository, and report to the consumers the files found.
+     * 
+     * Report changes to the appropriate Consumer.
+     * 
+     * This is just a convenience method to {@link #walkRepository(ArtifactRepository, List, boolean, long, List, List)}
+     * equivalent to calling <code>walkRepository( repository, consumers, includeSnapshots, 0, null, null );</code>
+     * 
+     * @param repository the repository to change.
+     * @param consumers use the provided list of consumers.
+     * @param includeSnapshots true to include snapshots in the walking of this repository.
+     * @return the statistics for this scan.
+     * @throws DiscovererException if there was a fundamental problem with getting the discoverer started.
      */
-    Iterator getKickedOutPathsIterator();
+    public DiscovererStatistics walkRepository( ArtifactRepository repository, List consumers, boolean includeSnapshots )
+        throws DiscovererException;
 
     /**
-     * Get the list of paths excluded during the discovery process.
-     *
-     * @return the paths as Strings.
+     * Walk the repository, and report to the consumers the files found.
+     * 
+     * Report changes to the appropriate Consumer.
+     * 
+     * @param repository the repository to change.
+     * @param consumers use the provided list of consumers.
+     * @param includeSnapshots true to include snapshots in the scanning of this repository.
+     * @param onlyModifiedAfterTimestamp Only report to the consumers, files that have a {@link File#lastModified()}) 
+     *          after the provided timestamp.
+     * @param extraFileExclusions an optional list of file exclusions on the walk.
+     * @param extraFileInclusions an optional list of file inclusions on the walk.
+     * @return the statistics for this scan.
+     * @throws DiscovererException if there was a fundamental problem with getting the discoverer started. 
      */
-    Iterator getExcludedPathsIterator();
-
-    void setTrackOmittedPaths( boolean trackOmittedPaths );
+    public DiscovererStatistics walkRepository( ArtifactRepository repository, List consumers,
+                                                boolean includeSnapshots, long onlyModifiedAfterTimestamp,
+                                                List extraFileExclusions, List extraFileInclusions )
+        throws DiscovererException;
 }

Copied: maven/archiva/trunk/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/DefaultDiscovererTest.java (from r511019, maven/archiva/branches/archiva-MRM-239/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/DefaultDiscovererTest.java)
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/DefaultDiscovererTest.java?view=diff&rev=511053&p1=maven/archiva/branches/archiva-MRM-239/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/DefaultDiscovererTest.java&r1=511019&p2=maven/archiva/trunk/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/DefaultDiscovererTest.java&r2=511053
==============================================================================
--- maven/archiva/branches/archiva-MRM-239/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/DefaultDiscovererTest.java (original)
+++ maven/archiva/trunk/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/DefaultDiscovererTest.java Fri Feb 23 11:05:21 2007
@@ -68,11 +68,13 @@
         {
             stats.dump( new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
             System.out.println( "Base Dir:" + stats.getRepository().getBasedir() );
+            int num = 0;
             Iterator it = mockConsumer.getFilesProcessed().iterator();
             while ( it.hasNext() )
             {
                 BaseFile file = (BaseFile) it.next();
-                System.out.println( "  Processed File: " + file.getRelativePath() );
+                System.out.println( "  Processed File [" + num + "]: " + file.getRelativePath() );
+                num++;
             }
 
             fail( "Files Processed mismatch: expected:<" + expectedFileCount + ">, actual:<" + actualFileCount + ">" );
@@ -104,7 +106,7 @@
 
         assertNotNull( stats );
         
-        assertFilesProcessed( 43, stats, mockConsumer );
+        assertFilesProcessed( 42, stats, mockConsumer );
     }
 
     public void testDefaultLayoutRepositoryPomsOnly()

Propchange: maven/archiva/trunk/archiva-discoverer/src/test/legacy-repository/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Fri Feb 23 11:05:21 2007
@@ -0,0 +1 @@
+.stats

Propchange: maven/archiva/trunk/archiva-discoverer/src/test/repository/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Fri Feb 23 11:05:21 2007
@@ -1 +1,2 @@
 maven-metadata.xml
+.stats

Modified: maven/archiva/trunk/archiva-discoverer/src/test/repository/javax/maven-metadata.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-discoverer/src/test/repository/javax/maven-metadata.xml?view=diff&rev=511053&r1=511052&r2=511053
==============================================================================
--- maven/archiva/trunk/archiva-discoverer/src/test/repository/javax/maven-metadata.xml (original)
+++ maven/archiva/trunk/archiva-discoverer/src/test/repository/javax/maven-metadata.xml Fri Feb 23 11:05:21 2007
@@ -18,6 +18,7 @@
   ~ under the License.
   -->
 
+<!-- This metdata is intentionally wrong.  -->
 <metadata>
   <groupId>javax.sql</groupId>
   <artifactId>jdbc</artifactId>

Propchange: maven/archiva/trunk/archiva-indexer/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Fri Feb 23 11:05:21 2007
@@ -1,6 +1,15 @@
 target
+*~
+.*.swp
+*.log
+*.patch
+*.diff
+*.ipr
+*.iws
 *.iml
 .classpath
 .project
-cobertura.ser
+.m2eclipse
 .settings
+.wtpmodules
+cobertura.ser

Modified: maven/archiva/trunk/archiva-indexer/pom.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-indexer/pom.xml?view=diff&rev=511053&r1=511052&r2=511053
==============================================================================
--- maven/archiva/trunk/archiva-indexer/pom.xml (original)
+++ maven/archiva/trunk/archiva-indexer/pom.xml Fri Feb 23 11:05:21 2007
@@ -27,7 +27,7 @@
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>archiva-indexer</artifactId>
-  <name>Archiva Repository Indexer</name>
+  <name>Archiva Indexer</name>
   <dependencies>
     <dependency>
       <groupId>org.apache.maven</groupId>

Modified: maven/archiva/trunk/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/RepositoryArtifactIndex.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/RepositoryArtifactIndex.java?view=diff&rev=511053&r1=511052&r2=511053
==============================================================================
--- maven/archiva/trunk/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/RepositoryArtifactIndex.java (original)
+++ maven/archiva/trunk/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/RepositoryArtifactIndex.java Fri Feb 23 11:05:21 2007
@@ -21,6 +21,7 @@
 
 import org.apache.maven.archiva.indexer.query.Query;
 import org.apache.maven.archiva.indexer.record.RepositoryIndexRecordFactory;
+import org.apache.maven.artifact.Artifact;
 
 import java.util.Collection;
 import java.util.List;
@@ -89,6 +90,17 @@
     Collection getAllRecordKeys()
         throws RepositoryIndexException;
 
+    /**
+     * Indexes the artifact specified. If the artifact is already in the repository they it is updated. 
+     * This method should use less memory than indexRecords as the records can be created and disposed of on the fly.
+     *
+     * @param artifact  the artifact to index
+     * @param factory   the artifact to record factory
+     * @throws RepositoryIndexException if there is a problem indexing the artifacts
+     */
+    void indexArtifact( Artifact artifact, RepositoryIndexRecordFactory factory )
+        throws RepositoryIndexException;
+    
     /**
      * Indexes the artifacts found within the specified list. If the artifacts are already in the
      * repository they are updated. This method should use less memory than indexRecords as the records can be

Modified: maven/archiva/trunk/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryArtifactIndex.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryArtifactIndex.java?view=diff&rev=511053&r1=511052&r2=511053
==============================================================================
--- maven/archiva/trunk/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryArtifactIndex.java (original)
+++ maven/archiva/trunk/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryArtifactIndex.java Fri Feb 23 11:05:21 2007
@@ -351,6 +351,40 @@
             lastUpdatedTime = System.currentTimeMillis();
         }
     }
+    
+    public void indexArtifact( Artifact artifact, RepositoryIndexRecordFactory factory )
+        throws RepositoryIndexException
+    {
+        IndexModifier indexModifier = null;
+        try
+        {
+            indexModifier = new IndexModifier( indexLocation, getAnalyzer(), !exists() );
+
+            RepositoryIndexRecord record = factory.createRecord( artifact );
+
+            if ( record != null )
+            {
+                Term term = new Term( FLD_PK, record.getPrimaryKey() );
+
+                indexModifier.deleteDocuments( term );
+
+                Document document = converter.convert( record );
+                document.add( new Field( FLD_PK, record.getPrimaryKey(), Field.Store.NO, Field.Index.UN_TOKENIZED ) );
+
+                indexModifier.addDocument( document );
+            }
+            indexModifier.optimize();
+        }
+        catch ( IOException e )
+        {
+            throw new RepositoryIndexException( "Error updating index: " + e.getMessage(), e );
+        }
+        finally
+        {
+            closeQuietly( indexModifier );
+            lastUpdatedTime = System.currentTimeMillis();
+        }
+    }    
 
     public List getAllGroupIds()
         throws RepositoryIndexException

Propchange: maven/archiva/trunk/archiva-plexus-application/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Fri Feb 23 11:05:21 2007
@@ -9,6 +9,7 @@
 *.iml
 .classpath
 .project
+.m2eclipse
 .settings
 .wtpmodules
 cobertura.ser

Propchange: maven/archiva/trunk/archiva-plexus-runtime/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Fri Feb 23 11:05:21 2007
@@ -9,6 +9,7 @@
 *.iml
 .classpath
 .project
+.m2eclipse
 .settings
 .wtpmodules
 cobertura.ser

Propchange: maven/archiva/trunk/archiva-proxy/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Fri Feb 23 11:05:21 2007
@@ -1,6 +1,15 @@
 target
-cobertura.ser
+*~
+.*.swp
+*.log
+*.patch
+*.diff
+*.ipr
+*.iws
 *.iml
 .classpath
 .project
+.m2eclipse
 .settings
+.wtpmodules
+cobertura.ser

Modified: maven/archiva/trunk/archiva-proxy/pom.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-proxy/pom.xml?view=diff&rev=511053&r1=511052&r2=511053
==============================================================================
--- maven/archiva/trunk/archiva-proxy/pom.xml (original)
+++ maven/archiva/trunk/archiva-proxy/pom.xml Fri Feb 23 11:05:21 2007
@@ -31,11 +31,7 @@
   <dependencies>
     <dependency>
       <groupId>org.apache.maven.archiva</groupId>
-      <artifactId>archiva-discoverer</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-artifact</artifactId>
+      <artifactId>archiva-common</artifactId>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.wagon</groupId>

Modified: maven/archiva/trunk/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultProxyRequestHandler.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultProxyRequestHandler.java?view=diff&rev=511053&r1=511052&r2=511053
==============================================================================
--- maven/archiva/trunk/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultProxyRequestHandler.java (original)
+++ maven/archiva/trunk/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultProxyRequestHandler.java Fri Feb 23 11:05:21 2007
@@ -21,8 +21,8 @@
 
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
-import org.apache.maven.archiva.discoverer.ArtifactDiscoverer;
-import org.apache.maven.archiva.discoverer.DiscovererException;
+import org.apache.maven.archiva.common.artifact.builder.BuilderException;
+import org.apache.maven.archiva.common.artifact.builder.LayoutArtifactBuilder;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.repository.ArtifactRepository;
@@ -85,17 +85,17 @@
      * @plexus.requirement
      */
     private ArtifactFactory factory;
-
+    
     /**
      * @plexus.requirement role-hint="default"
-     * @todo use a map, and have priorities in them
+     * @todo use a map, and have priorities in them.
      */
-    private ArtifactDiscoverer defaultArtifactDiscoverer;
-
+    private LayoutArtifactBuilder defaultArtifactBuilder;
+    
     /**
      * @plexus.requirement role-hint="legacy"
      */
-    private ArtifactDiscoverer legacyArtifactDiscoverer;
+    private LayoutArtifactBuilder legacyArtifactBuilder;
 
     /**
      * @plexus.requirement role="org.apache.maven.wagon.Wagon"
@@ -159,10 +159,10 @@
             Artifact artifact = null;
             try
             {
-                artifact = defaultArtifactDiscoverer.buildArtifact( artifactPath );
+                artifact = defaultArtifactBuilder.build( artifactPath );
                 getLogger().debug( "Artifact requested is: " + artifact );
             }
-            catch ( DiscovererException e )
+            catch ( BuilderException e )
             {
                 msg = "Failed to build artifact from path:\n\tfrom default: " + e.getMessage();
             }
@@ -171,10 +171,10 @@
             {
                 try
                 {
-                    artifact = legacyArtifactDiscoverer.buildArtifact( artifactPath );
+                    artifact = legacyArtifactBuilder.build( artifactPath );
                     getLogger().debug( "Artifact requested is: " + artifact );
                 }
-                catch ( DiscovererException e )
+                catch ( BuilderException e )
                 {
                     getLogger().debug( msg + "\n\tfrom legacy: " + e.getMessage() );
                 }

Modified: maven/archiva/trunk/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/ProxyRequestHandlerTest.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/ProxyRequestHandlerTest.xml?view=diff&rev=511053&r1=511052&r2=511053
==============================================================================
--- maven/archiva/trunk/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/ProxyRequestHandlerTest.xml (original)
+++ maven/archiva/trunk/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/ProxyRequestHandlerTest.xml Fri Feb 23 11:05:21 2007
@@ -28,7 +28,6 @@
       <role>org.codehaus.plexus.logging.LoggerManager</role>
       <implementation>org.codehaus.plexus.logging.console.ConsoleLoggerManager</implementation>
       <lifecycle-handler>basic</lifecycle-handler>
-
       <configuration>
         <threshold>ERROR</threshold>
       </configuration>

Propchange: maven/archiva/trunk/archiva-reports-standard/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Fri Feb 23 11:05:21 2007
@@ -1,6 +1,15 @@
 target
-*.ser
+*~
+.*.swp
+*.log
+*.patch
+*.diff
+*.ipr
+*.iws
 *.iml
 .classpath
 .project
+.m2eclipse
 .settings
+.wtpmodules
+cobertura.ser

Modified: maven/archiva/trunk/archiva-reports-standard/pom.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-reports-standard/pom.xml?view=diff&rev=511053&r1=511052&r2=511053
==============================================================================
--- maven/archiva/trunk/archiva-reports-standard/pom.xml (original)
+++ maven/archiva/trunk/archiva-reports-standard/pom.xml Fri Feb 23 11:05:21 2007
@@ -77,6 +77,41 @@
       <groupId>commons-io</groupId>
       <artifactId>commons-io</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-jdo2</artifactId>
+      <version>1.0-alpha-8</version>
+      <exclusions>
+        <exclusion>
+          <groupId>xerces</groupId>
+          <artifactId>xercesImpl</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>xerces</groupId>
+          <artifactId>xmlParserAPIs</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>jpox</groupId>
+      <artifactId>jpox</artifactId>
+      <version>1.1.6</version>
+      <scope>compile</scope>
+      <exclusions>
+        <!-- targeting JDK 1.4 we don't need this -->
+        <exclusion>
+          <groupId>javax.sql</groupId>
+          <artifactId>jdbc-stdext</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <!--  TEST DEPS -->
+    <dependency>
+      <groupId>hsqldb</groupId>
+      <artifactId>hsqldb</artifactId>
+      <version>1.7.3.3</version>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
   <build>
     <plugins>
@@ -84,19 +119,45 @@
         <groupId>org.codehaus.modello</groupId>
         <artifactId>modello-maven-plugin</artifactId>
         <version>1.0-alpha-14-SNAPSHOT</version>
+        <configuration>
+          <version>1.0.0</version>
+          <packageWithVersion>false</packageWithVersion>
+          <model>src/main/mdo/reporting.mdo</model>
+        </configuration>
         <executions>
           <execution>
+            <id>modello-java</id>
             <goals>
-              <goal>xpp3-writer</goal>
               <goal>java</goal>
+              <goal>jpox-metadata-class</goal>
+              <!--
+              <goal>xpp3-writer</goal>
               <goal>xpp3-reader</goal>
+               -->
+            </goals>
+          </execution>
+          <execution>
+            <id>jpox-jdo-mapping</id>
+            <goals>
+              <goal>jpox-jdo-mapping</goal>
+            </goals>
+            <configuration>
+              <outputDirectory>${basedir}/target/classes/org/apache/maven/archiva/reporting/model/</outputDirectory>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+       <groupId>org.codehaus.mojo</groupId>
+        <artifactId>jpox-maven-plugin</artifactId>
+        <version>1.1.6-SNAPSHOT</version>
+        <executions>
+          <execution>
+            <goals>
+              <goal>enhance</goal>
             </goals>
           </execution>
         </executions>
-        <configuration>
-          <version>1.0.0</version>
-          <model>src/main/mdo/reporting.mdo</model>
-        </configuration>
       </plugin>
       <plugin>
         <groupId>org.codehaus.mojo</groupId>

Modified: maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/database/ReportingDatabase.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/database/ReportingDatabase.java?view=diff&rev=511053&r1=511052&r2=511053
==============================================================================
--- maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/database/ReportingDatabase.java (original)
+++ maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/database/ReportingDatabase.java Fri Feb 23 11:05:21 2007
@@ -19,618 +19,106 @@
  * under the License.
  */
 
-import org.apache.maven.archiva.reporting.group.ReportGroup;
-import org.apache.maven.archiva.reporting.model.ArtifactResults;
-import org.apache.maven.archiva.reporting.model.MetadataResults;
-import org.apache.maven.archiva.reporting.model.Reporting;
-import org.apache.maven.archiva.reporting.model.Result;
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
-
-import java.util.Date;
-import java.util.HashMap;
 import java.util.Iterator;
-import java.util.LinkedHashSet;
-import java.util.Map;
-import java.util.Set;
 
 /**
+ * The Main Reporting Database.
+ * 
  * @todo i18n, including message formatting and parameterisation
+ * @plexus.component role="org.apache.maven.archiva.reporting.database.ReportingDatabase"
  */
 public class ReportingDatabase
 {
-    private final Reporting reporting;
-
-    private Map artifactMap;
-
-    private Map metadataMap;
-
-    private int numFailures;
-
-    private int numWarnings;
-
-    private ArtifactRepository repository;
-
-    private boolean inProgress;
-
-    private long startTime;
-
-    private final ReportGroup reportGroup;
-
-    private Set metadataWithProblems;
-
-    private Map filteredDatabases = new HashMap();
-
-    private int numNotices;
-
-    public ReportingDatabase( ReportGroup reportGroup )
-    {
-        this( reportGroup, new Reporting() );
-    }
-
-    public ReportingDatabase( ReportGroup reportGroup, Reporting reporting )
-    {
-        this( reportGroup, reporting, null );
-    }
-
-    public ReportingDatabase( ReportGroup reportGroup, ArtifactRepository repository )
-    {
-        this( reportGroup, new Reporting(), repository );
-    }
-
-    public ReportingDatabase( ReportGroup reportGroup, Reporting reporting, ArtifactRepository repository )
-    {
-        this.reportGroup = reportGroup;
-
-        this.reporting = reporting;
-
-        this.repository = repository;
-
-        initArtifactMap();
-
-        initMetadataMap();
-    }
-
-    public void addFailure( Artifact artifact, String processor, String problem, String reason )
-    {
-        ArtifactResults results = getArtifactResults( artifact );
-        Result result = createResult( processor, problem, reason );
-        if ( !results.getFailures().contains( result ) )
-        {
-            results.addFailure( result );
-            numFailures++;
-        }
-        updateTimings();
-
-        if ( filteredDatabases.containsKey( problem ) )
-        {
-            ReportingDatabase reportingDatabase = (ReportingDatabase) filteredDatabases.get( problem );
-
-            reportingDatabase.addFailure( artifact, processor, problem, reason );
-        }
-    }
-
-    public void addNotice( Artifact artifact, String processor, String problem, String reason )
-    {
-        ArtifactResults results = getArtifactResults( artifact );
-        Result result = createResult( processor, problem, reason );
-        if ( !results.getNotices().contains( result ) )
-        {
-            results.addNotice( result );
-            numNotices++;
-        }
-        updateTimings();
-
-        if ( filteredDatabases.containsKey( problem ) )
-        {
-            ReportingDatabase reportingDatabase = (ReportingDatabase) filteredDatabases.get( problem );
-
-            reportingDatabase.addNotice( artifact, processor, problem, reason );
-        }
-    }
-
-    public void addWarning( Artifact artifact, String processor, String problem, String reason )
-    {
-        ArtifactResults results = getArtifactResults( artifact );
-        Result result = createResult( processor, problem, reason );
-        if ( !results.getWarnings().contains( result ) )
-        {
-            results.addWarning( result );
-            numWarnings++;
-        }
-        updateTimings();
-
-        if ( filteredDatabases.containsKey( problem ) )
-        {
-            ReportingDatabase reportingDatabase = (ReportingDatabase) filteredDatabases.get( problem );
-
-            reportingDatabase.addWarning( artifact, processor, problem, reason );
-        }
-    }
-
-    ArtifactResults getArtifactResults( Artifact artifact )
-    {
-        return getArtifactResults( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(),
-                                   artifact.getType(), artifact.getClassifier() );
-    }
-
-    private ArtifactResults getArtifactResults( String groupId, String artifactId, String version, String type,
-                                                String classifier )
-    {
-        Map artifactMap = this.artifactMap;
-
-        String key = getArtifactKey( groupId, artifactId, version, type, classifier );
-        ArtifactResults results = (ArtifactResults) artifactMap.get( key );
-        if ( results == null )
-        {
-            results = new ArtifactResults();
-            results.setArtifactId( artifactId );
-            results.setClassifier( classifier );
-            results.setGroupId( groupId );
-            results.setType( type );
-            results.setVersion( version );
-
-            artifactMap.put( key, results );
-            reporting.getArtifacts().add( results );
-        }
-
-        return results;
-    }
-
-    private void initArtifactMap()
-    {
-        Map map = new HashMap();
-        for ( Iterator i = reporting.getArtifacts().iterator(); i.hasNext(); )
-        {
-            ArtifactResults result = (ArtifactResults) i.next();
-
-            String key = getArtifactKey( result.getGroupId(), result.getArtifactId(), result.getVersion(),
-                                         result.getType(), result.getClassifier() );
-            map.put( key, result );
-
-            numFailures += result.getFailures().size();
-            numWarnings += result.getWarnings().size();
-            numNotices += result.getNotices().size();
-        }
-        artifactMap = map;
-    }
-
-    private static String getArtifactKey( String groupId, String artifactId, String version, String type,
-                                          String classifier )
-    {
-        return groupId + ":" + artifactId + ":" + version + ":" + type + ":" + classifier;
-    }
-
-    private static Result createResult( String processor, String problem, String reason )
-    {
-        Result result = new Result();
-        result.setProcessor( processor );
-        result.setProblem( problem );
-        result.setReason( reason );
-        return result;
-    }
-
-    public void addFailure( RepositoryMetadata metadata, String processor, String problem, String reason )
-    {
-        MetadataResults results = getMetadataResults( metadata, System.currentTimeMillis() );
-        if ( !metadataWithProblems.contains( results ) )
-        {
-            metadataWithProblems.add( results );
-        }
-        Result result = createResult( processor, problem, reason );
-        if ( !results.getFailures().contains( result ) )
-        {
-            results.addFailure( result );
-            numFailures++;
-        }
-        updateTimings();
-
-        if ( filteredDatabases.containsKey( problem ) )
-        {
-            ReportingDatabase reportingDatabase = (ReportingDatabase) filteredDatabases.get( problem );
-
-            reportingDatabase.addFailure( metadata, processor, problem, reason );
-        }
-    }
-
-    public void addWarning( RepositoryMetadata metadata, String processor, String problem, String reason )
-    {
-        MetadataResults results = getMetadataResults( metadata, System.currentTimeMillis() );
-        if ( !metadataWithProblems.contains( results ) )
-        {
-            metadataWithProblems.add( results );
-        }
-        Result result = createResult( processor, problem, reason );
-        if ( !results.getWarnings().contains( result ) )
-        {
-            results.addWarning( result );
-            numWarnings++;
-        }
-        updateTimings();
-
-        if ( filteredDatabases.containsKey( problem ) )
-        {
-            ReportingDatabase reportingDatabase = (ReportingDatabase) filteredDatabases.get( problem );
-
-            reportingDatabase.addWarning( metadata, processor, problem, reason );
-        }
-    }
-
-    public void addNotice( RepositoryMetadata metadata, String processor, String problem, String reason )
-    {
-        MetadataResults results = getMetadataResults( metadata, System.currentTimeMillis() );
-        if ( !metadataWithProblems.contains( results ) )
-        {
-            metadataWithProblems.add( results );
-        }
-        Result result = createResult( processor, problem, reason );
-        if ( !results.getNotices().contains( result ) )
-        {
-            results.addNotice( result );
-            numNotices++;
-        }
-        updateTimings();
-
-        if ( filteredDatabases.containsKey( problem ) )
-        {
-            ReportingDatabase reportingDatabase = (ReportingDatabase) filteredDatabases.get( problem );
-
-            reportingDatabase.addNotice( metadata, processor, problem, reason );
-        }
-    }
-
-    public Set getMetadataWithProblems()
-    {
-        return metadataWithProblems;
-    }
-
-    private void initMetadataMap()
-    {
-        Map map = new HashMap();
-        Set problems = new LinkedHashSet();
+    public static final String ROLE = ReportingDatabase.class.getName();
 
-        for ( Iterator i = reporting.getMetadata().iterator(); i.hasNext(); )
-        {
-            MetadataResults result = (MetadataResults) i.next();
-
-            String key = getMetadataKey( result.getGroupId(), result.getArtifactId(), result.getVersion() );
-
-            map.put( key, result );
-
-            numFailures += result.getFailures().size();
-            numWarnings += result.getWarnings().size();
-            numNotices += result.getNotices().size();
-
-            if ( !result.getFailures().isEmpty() || !result.getWarnings().isEmpty() || !result.getNotices().isEmpty() )
-            {
-                problems.add( result );
-            }
-        }
-        metadataMap = map;
-        metadataWithProblems = problems;
-    }
-
-    private static String getMetadataKey( String groupId, String artifactId, String version )
-    {
-        return groupId + ":" + artifactId + ":" + version;
-    }
-
-    public int getNumFailures()
-    {
-        return numFailures;
-    }
-
-    public int getNumWarnings()
-    {
-        return numWarnings;
-    }
+    /**
+     * @plexus.requirement
+     */
+    private ArtifactResultsDatabase artifactDatabase;
 
-    public Reporting getReporting()
-    {
-        return reporting;
-    }
+    /**
+     * @plexus.requirement
+     */
+    private MetadataResultsDatabase metadataDatabase;
 
     public Iterator getArtifactIterator()
     {
-        return reporting.getArtifacts().iterator();
+        return artifactDatabase.getIterator();
     }
 
     public Iterator getMetadataIterator()
     {
-        return reporting.getMetadata().iterator();
+        return metadataDatabase.getIterator();
     }
 
-    public boolean isMetadataUpToDate( RepositoryMetadata metadata, long timestamp )
+    public void clear()
     {
-        String key = getMetadataKey( metadata.getGroupId(), metadata.getArtifactId(), metadata.getBaseVersion() );
-        Map map = metadataMap;
-        MetadataResults results = (MetadataResults) map.get( key );
-        return results != null && results.getLastModified() >= timestamp;
     }
 
     /**
-     * Make sure the metadata record exists, but remove any previous reports in preparation for adding new ones.
-     *
-     * @param metadata     the metadata
-     * @param lastModified the modification time of the file being tracked
+     * <p>
+     * Get the number of failures in the database.
+     * </p>
+     * 
+     * <p>
+     * <b>WARNING:</b> This is a very resource intensive request. Use sparingly.
+     * </p>
+     * 
+     * @return the number of failures in the database.
      */
-    public void cleanMetadata( RepositoryMetadata metadata, long lastModified )
-    {
-        MetadataResults results = getMetadataResults( metadata, lastModified );
-
-        results.setLastModified( lastModified );
-
-        numFailures -= results.getFailures().size();
-        results.getFailures().clear();
-
-        numWarnings -= results.getWarnings().size();
-        results.getWarnings().clear();
-
-        numNotices -= results.getWarnings().size();
-        results.getNotices().clear();
-
-        metadataWithProblems.remove( results );
-    }
-
-    MetadataResults getMetadataResults( RepositoryMetadata metadata, long lastModified )
-    {
-        return getMetadataResults( metadata.getGroupId(), metadata.getArtifactId(), metadata.getBaseVersion(),
-                                   lastModified );
-    }
-
-    private MetadataResults getMetadataResults( String groupId, String artifactId, String baseVersion,
-                                                long lastModified )
-    {
-        String key = getMetadataKey( groupId, artifactId, baseVersion );
-        Map metadataMap = this.metadataMap;
-        MetadataResults results = (MetadataResults) metadataMap.get( key );
-        if ( results == null )
-        {
-            results = new MetadataResults();
-            results.setArtifactId( artifactId );
-            results.setGroupId( groupId );
-            results.setVersion( baseVersion );
-            results.setLastModified( lastModified );
-
-            metadataMap.put( key, results );
-            reporting.getMetadata().add( results );
-        }
-        return results;
-    }
-
-    public void removeArtifact( Artifact artifact )
-    {
-        Map map = artifactMap;
-
-        String key = getArtifactKey( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(),
-                                     artifact.getType(), artifact.getClassifier() );
-        ArtifactResults results = (ArtifactResults) map.get( key );
-        if ( results != null )
-        {
-            for ( Iterator i = reporting.getArtifacts().iterator(); i.hasNext(); )
-            {
-                if ( results.equals( i.next() ) )
-                {
-                    i.remove();
-                }
-            }
-
-            numFailures -= results.getFailures().size();
-            numWarnings -= results.getWarnings().size();
-            numNotices -= results.getNotices().size();
-
-            map.remove( key );
-        }
-    }
-
-    public ArtifactRepository getRepository()
-    {
-        return repository;
-    }
-
-    public boolean isInProgress()
-    {
-        return inProgress;
-    }
-
-    public void setInProgress( boolean inProgress )
-    {
-        this.inProgress = inProgress;
-
-        if ( inProgress )
-        {
-            startTime = System.currentTimeMillis();
-        }
-    }
-
-    public void clear()
-    {
-        // clear the values rather than destroy the instance so that the "inProgress" indicator is in tact.
-        numWarnings = 0;
-        numNotices = 0;
-        numFailures = 0;
-
-        artifactMap.clear();
-        metadataMap.clear();
-        metadataWithProblems.clear();
-        filteredDatabases.clear();
-
-        reporting.getArtifacts().clear();
-        reporting.getMetadata().clear();
-
-        updateTimings();
-    }
-
-    public void setStartTime( long startTime )
-    {
-        this.startTime = startTime;
-    }
-
-    public long getStartTime()
-    {
-        return startTime;
-    }
-
-    public void updateTimings()
-    {
-        long startTime = getStartTime();
-        Date endTime = new Date();
-        if ( startTime > 0 )
-        {
-            getReporting().setExecutionTime( endTime.getTime() - startTime );
-        }
-        getReporting().setLastModified( endTime.getTime() );
-    }
-
-    public ReportGroup getReportGroup()
+    public int getNumFailures()
     {
-        return reportGroup;
+        int count = 0;
+        count += artifactDatabase.getNumFailures();
+        count += metadataDatabase.getNumFailures();
+        return count;
     }
 
-    public ReportingDatabase getFilteredDatabase( String filter )
+    /**
+     * <p>
+     * Get the number of notices in the database.
+     * </p>
+     * 
+     * <p>
+     * <b>WARNING:</b> This is a very resource intensive request. Use sparingly.
+     * </p>
+     * 
+     * @return the number of notices in the database.
+     */
+    public int getNumNotices()
     {
-        ReportingDatabase reportingDatabase = (ReportingDatabase) filteredDatabases.get( filter );
-
-        if ( reportingDatabase == null )
-        {
-            reportingDatabase = new ReportingDatabase( reportGroup, repository );
-
-            Reporting reporting = reportingDatabase.getReporting();
-            reporting.setExecutionTime( this.reporting.getExecutionTime() );
-            reporting.setLastModified( this.reporting.getLastModified() );
-
-            for ( Iterator i = this.reporting.getArtifacts().iterator(); i.hasNext(); )
-            {
-                ArtifactResults results = (ArtifactResults) i.next();
-                ArtifactResults targetResults = null;
-                for ( Iterator j = results.getFailures().iterator(); j.hasNext(); )
-                {
-                    Result result = (Result) j.next();
-
-                    if ( filter.equals( result.getProcessor() ) )
-                    {
-                        if ( targetResults == null )
-                        {
-                            // lazily create so it is not added unless it has to be
-                            targetResults = createArtifactResults( reportingDatabase, results );
-                        }
-
-                        targetResults.addFailure( result );
-                        reportingDatabase.numFailures++;
-                    }
-                }
-                for ( Iterator j = results.getWarnings().iterator(); j.hasNext(); )
-                {
-                    Result result = (Result) j.next();
-
-                    if ( filter.equals( result.getProcessor() ) )
-                    {
-                        if ( targetResults == null )
-                        {
-                            // lazily create so it is not added unless it has to be
-                            targetResults = createArtifactResults( reportingDatabase, results );
-                        }
-
-                        targetResults.addWarning( result );
-                        reportingDatabase.numWarnings++;
-                    }
-                }
-                for ( Iterator j = results.getNotices().iterator(); j.hasNext(); )
-                {
-                    Result result = (Result) j.next();
-
-                    if ( filter.equals( result.getProcessor() ) )
-                    {
-                        if ( targetResults == null )
-                        {
-                            // lazily create so it is not added unless it has to be
-                            targetResults = createArtifactResults( reportingDatabase, results );
-                        }
-
-                        targetResults.addNotice( result );
-                        reportingDatabase.numNotices++;
-                    }
-                }
-            }
-            for ( Iterator i = this.reporting.getMetadata().iterator(); i.hasNext(); )
-            {
-                MetadataResults results = (MetadataResults) i.next();
-                MetadataResults targetResults = null;
-                for ( Iterator j = results.getFailures().iterator(); j.hasNext(); )
-                {
-                    Result result = (Result) j.next();
-
-                    if ( filter.equals( result.getProcessor() ) )
-                    {
-                        if ( targetResults == null )
-                        {
-                            // lazily create so it is not added unless it has to be
-                            targetResults = createMetadataResults( reportingDatabase, results );
-                        }
-
-                        targetResults.addFailure( result );
-                        reportingDatabase.numFailures++;
-                    }
-                }
-                for ( Iterator j = results.getWarnings().iterator(); j.hasNext(); )
-                {
-                    Result result = (Result) j.next();
-
-                    if ( filter.equals( result.getProcessor() ) )
-                    {
-                        if ( targetResults == null )
-                        {
-                            // lazily create so it is not added unless it has to be
-                            targetResults = createMetadataResults( reportingDatabase, results );
-                        }
-
-                        targetResults.addWarning( result );
-                        reportingDatabase.numWarnings++;
-                    }
-                }
-                for ( Iterator j = results.getNotices().iterator(); j.hasNext(); )
-                {
-                    Result result = (Result) j.next();
-
-                    if ( filter.equals( result.getProcessor() ) )
-                    {
-                        if ( targetResults == null )
-                        {
-                            // lazily create so it is not added unless it has to be
-                            targetResults = createMetadataResults( reportingDatabase, results );
-                        }
-
-                        targetResults.addNotice( result );
-                        reportingDatabase.numNotices++;
-                    }
-                }
-            }
-
-            filteredDatabases.put( filter, reportingDatabase );
-        }
-
-        return reportingDatabase;
+        int count = 0;
+        count += artifactDatabase.getNumNotices();
+        count += metadataDatabase.getNumNotices();
+        return count;
     }
 
-    private static MetadataResults createMetadataResults( ReportingDatabase reportingDatabase, MetadataResults results )
+    /**
+     * <p>
+     * Get the number of warnings in the database.
+     * </p>
+     * 
+     * <p>
+     * <b>WARNING:</b> This is a very resource intensive request. Use sparingly.
+     * </p>
+     * 
+     * @return the number of warnings in the database.
+     */
+    public int getNumWarnings()
     {
-        MetadataResults targetResults = reportingDatabase.getMetadataResults( results.getGroupId(),
-                                                                              results.getArtifactId(),
-                                                                              results.getVersion(),
-                                                                              results.getLastModified() );
-        reportingDatabase.metadataWithProblems.add( targetResults );
-        return targetResults;
+        int count = 0;
+        count += artifactDatabase.getNumWarnings();
+        count += metadataDatabase.getNumWarnings();
+        return count;
     }
 
-    private static ArtifactResults createArtifactResults( ReportingDatabase reportingDatabase, ArtifactResults results )
+    public ArtifactResultsDatabase getArtifactDatabase()
     {
-        return reportingDatabase.getArtifactResults( results.getGroupId(), results.getArtifactId(),
-                                                     results.getVersion(), results.getType(), results.getClassifier() );
+        return artifactDatabase;
     }
 
-    public int getNumNotices()
+    public MetadataResultsDatabase getMetadataDatabase()
     {
-        return numNotices;
+        return metadataDatabase;
     }
 }

Modified: maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/group/AbstractReportGroup.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/group/AbstractReportGroup.java?view=diff&rev=511053&r1=511052&r2=511053
==============================================================================
--- maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/group/AbstractReportGroup.java (original)
+++ maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/group/AbstractReportGroup.java Fri Feb 23 11:05:21 2007
@@ -19,7 +19,6 @@
  * under the License.
  */
 
-import org.apache.maven.archiva.reporting.database.ReportingDatabase;
 import org.apache.maven.archiva.reporting.processor.ArtifactReportProcessor;
 import org.apache.maven.archiva.reporting.processor.MetadataReportProcessor;
 import org.apache.maven.artifact.Artifact;
@@ -46,7 +45,7 @@
      */
     private Map metadataReports;
 
-    public void processArtifact( Artifact artifact, Model model, ReportingDatabase reportingDatabase )
+    public void processArtifact( Artifact artifact, Model model )
     {
         for ( Iterator i = artifactReports.entrySet().iterator(); i.hasNext(); )
         {
@@ -56,13 +55,12 @@
             {
                 ArtifactReportProcessor report = (ArtifactReportProcessor) entry.getValue();
 
-                report.processArtifact( artifact, model, reportingDatabase );
+                report.processArtifact( artifact, model );
             }
         }
     }
 
-    public void processMetadata( RepositoryMetadata repositoryMetadata, ArtifactRepository repository,
-                                 ReportingDatabase reportingDatabase )
+    public void processMetadata( RepositoryMetadata repositoryMetadata, ArtifactRepository repository )
     {
         for ( Iterator i = metadataReports.entrySet().iterator(); i.hasNext(); )
         {
@@ -72,7 +70,7 @@
             {
                 MetadataReportProcessor report = (MetadataReportProcessor) entry.getValue();
 
-                report.processMetadata( repositoryMetadata, repository, reportingDatabase );
+                report.processMetadata( repositoryMetadata, repository );
             }
         }
     }

Modified: maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/group/DefaultReportGroup.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/group/DefaultReportGroup.java?view=diff&rev=511053&r1=511052&r2=511053
==============================================================================
--- maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/group/DefaultReportGroup.java (original)
+++ maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/group/DefaultReportGroup.java Fri Feb 23 11:05:21 2007
@@ -25,7 +25,8 @@
 /**
  * The default report set, for repository health.
  *
- * @plexus.component role="org.apache.maven.archiva.reporting.group.ReportGroup" role-hint="health"
+ * @plexus.component role="org.apache.maven.archiva.reporting.group.ReportGroup" 
+ *      role-hint="health"
  * @todo could these report groups be assembled dynamically by configuration rather than as explicit components? eg, reportGroup.addReport( ARP ), reportGroup.addReport( MRP )
  */
 public class DefaultReportGroup
@@ -61,10 +62,5 @@
     public String getName()
     {
         return "Repository Health";
-    }
-
-    public String getFilename()
-    {
-        return "health-report.xml";
     }
 }

Modified: maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/group/ReportGroup.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/group/ReportGroup.java?view=diff&rev=511053&r1=511052&r2=511053
==============================================================================
--- maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/group/ReportGroup.java (original)
+++ maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/group/ReportGroup.java Fri Feb 23 11:05:21 2007
@@ -19,7 +19,6 @@
  * under the License.
  */
 
-import org.apache.maven.archiva.reporting.database.ReportingDatabase;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
@@ -43,19 +42,16 @@
      *
      * @param artifact          the artifact to process
      * @param model             the POM associated with the artifact to process
-     * @param reportingDatabase the report database to store results in
      */
-    void processArtifact( Artifact artifact, Model model, ReportingDatabase reportingDatabase );
+    void processArtifact( Artifact artifact, Model model );
 
     /**
      * Run any metadata related reports in the report set.
      *
      * @param repositoryMetadata the metadata to process
      * @param repository         the repository the metadata is located in
-     * @param reportingDatabase  the report database to store results in
      */
-    void processMetadata( RepositoryMetadata repositoryMetadata, ArtifactRepository repository,
-                          ReportingDatabase reportingDatabase );
+    void processMetadata( RepositoryMetadata repositoryMetadata, ArtifactRepository repository );
 
     /**
      * Whether a report with the given role hint is included in this report set.
@@ -79,11 +75,4 @@
      * @return the report name
      */
     String getName();
-
-    /**
-     * Get the filename of the reports within the repository's reports directory.
-     *
-     * @return the filename
-     */
-    String getFilename();
 }

Modified: maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/processor/ArtifactReportProcessor.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/processor/ArtifactReportProcessor.java?view=diff&rev=511053&r1=511052&r2=511053
==============================================================================
--- maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/processor/ArtifactReportProcessor.java (original)
+++ maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/processor/ArtifactReportProcessor.java Fri Feb 23 11:05:21 2007
@@ -19,7 +19,6 @@
  * under the License.
  */
 
-import org.apache.maven.archiva.reporting.database.ReportingDatabase;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.model.Model;
 
@@ -31,5 +30,5 @@
 {
     String ROLE = ArtifactReportProcessor.class.getName();
 
-    void processArtifact( Artifact artifact, Model model, ReportingDatabase reporter );
+    void processArtifact( Artifact artifact, Model model );
 }

Modified: maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/processor/BadMetadataReportProcessor.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/processor/BadMetadataReportProcessor.java?view=diff&rev=511053&r1=511052&r2=511053
==============================================================================
--- maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/processor/BadMetadataReportProcessor.java (original)
+++ maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/processor/BadMetadataReportProcessor.java Fri Feb 23 11:05:21 2007
@@ -22,7 +22,7 @@
 import org.apache.commons.lang.StringUtils;
 import org.apache.maven.archiva.layer.RepositoryQueryLayer;
 import org.apache.maven.archiva.layer.RepositoryQueryLayerFactory;
-import org.apache.maven.archiva.reporting.database.ReportingDatabase;
+import org.apache.maven.archiva.reporting.database.MetadataResultsDatabase;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.repository.ArtifactRepository;
@@ -61,6 +61,11 @@
      */
     private RepositoryQueryLayerFactory repositoryQueryLayerFactory;
 
+    /**
+     * @plexus.requirement
+     */
+    private MetadataResultsDatabase database;
+
     private static final String ROLE_HINT = "bad-metadata";
 
     /**
@@ -70,18 +75,17 @@
      * @param repository the repository where the metadata was encountered
      * @param reporter   the ReportingDatabase to receive processing results
      */
-    public void processMetadata( RepositoryMetadata metadata, ArtifactRepository repository,
-                                 ReportingDatabase reporter )
+    public void processMetadata( RepositoryMetadata metadata, ArtifactRepository repository )
     {
         if ( metadata.storedInGroupDirectory() )
         {
             try
             {
-                checkPluginMetadata( metadata, repository, reporter );
+                checkPluginMetadata( metadata, repository );
             }
             catch ( IOException e )
             {
-                addWarning( reporter, metadata, null, "Error getting plugin artifact directories versions: " + e );
+                addWarning( metadata, null, "Error getting plugin artifact directories versions: " + e );
             }
         }
         else
@@ -98,36 +102,34 @@
             }
             if ( !found )
             {
-                addFailure( reporter, metadata, "missing-last-updated",
-                            "Missing lastUpdated element inside the metadata." );
+                addFailure( metadata, "missing-last-updated", "Missing lastUpdated element inside the metadata." );
             }
 
             if ( metadata.storedInArtifactVersionDirectory() )
             {
-                checkSnapshotMetadata( metadata, repository, reporter );
+                checkSnapshotMetadata( metadata, repository );
             }
             else
             {
-                checkMetadataVersions( metadata, repository, reporter );
+                checkMetadataVersions( metadata, repository );
 
                 try
                 {
-                    checkRepositoryVersions( metadata, repository, reporter );
+                    checkRepositoryVersions( metadata, repository );
                 }
                 catch ( IOException e )
                 {
                     String reason = "Error getting plugin artifact directories versions: " + e;
-                    addWarning( reporter, metadata, null, reason );
+                    addWarning( metadata, null, reason );
                 }
             }
         }
     }
 
-    private static void addWarning( ReportingDatabase reporter, RepositoryMetadata metadata, String problem,
-                                    String reason )
+    private void addWarning( RepositoryMetadata metadata, String problem, String reason )
     {
         // TODO: reason could be an i18n key derived from the processor and the problem ID and the
-        reporter.addWarning( metadata, ROLE_HINT, problem, reason );
+        database.addWarning( metadata, ROLE_HINT, problem, reason );
     }
 
     /**
@@ -137,12 +139,11 @@
      * @param repository the repository where the metadata was encountered
      * @param reporter   the ReportingDatabase to receive processing results
      */
-    private void checkPluginMetadata( RepositoryMetadata metadata, ArtifactRepository repository,
-                                      ReportingDatabase reporter )
+    private void checkPluginMetadata( RepositoryMetadata metadata, ArtifactRepository repository )
         throws IOException
     {
-        File metadataDir =
-            new File( repository.getBasedir(), repository.pathOfRemoteRepositoryMetadata( metadata ) ).getParentFile();
+        File metadataDir = new File( repository.getBasedir(), repository.pathOfRemoteRepositoryMetadata( metadata ) )
+            .getParentFile();
         List pluginDirs = getArtifactIdFiles( metadataDir );
 
         Map prefixes = new HashMap();
@@ -153,22 +154,22 @@
             String artifactId = plugin.getArtifactId();
             if ( artifactId == null || artifactId.length() == 0 )
             {
-                addFailure( reporter, metadata, "missing-artifact-id:" + plugin.getPrefix(),
+                addFailure( metadata, "missing-artifact-id:" + plugin.getPrefix(),
                             "Missing or empty artifactId in group metadata for plugin " + plugin.getPrefix() );
             }
 
             String prefix = plugin.getPrefix();
             if ( prefix == null || prefix.length() == 0 )
             {
-                addFailure( reporter, metadata, "missing-plugin-prefix:" + artifactId,
+                addFailure( metadata, "missing-plugin-prefix:" + artifactId,
                             "Missing or empty plugin prefix for artifactId " + artifactId + "." );
             }
             else
             {
                 if ( prefixes.containsKey( prefix ) )
                 {
-                    addFailure( reporter, metadata, "duplicate-plugin-prefix:" + prefix,
-                                "Duplicate plugin prefix found: " + prefix + "." );
+                    addFailure( metadata, "duplicate-plugin-prefix:" + prefix, "Duplicate plugin prefix found: "
+                        + prefix + "." );
                 }
                 else
                 {
@@ -181,8 +182,8 @@
                 File pluginDir = new File( metadataDir, artifactId );
                 if ( !pluginDirs.contains( pluginDir ) )
                 {
-                    addFailure( reporter, metadata, "missing-plugin-from-repository:" + artifactId,
-                                "Metadata plugin " + artifactId + " not found in the repository" );
+                    addFailure( metadata, "missing-plugin-from-repository:" + artifactId, "Metadata plugin "
+                        + artifactId + " not found in the repository" );
                 }
                 else
                 {
@@ -196,8 +197,8 @@
             for ( Iterator plugins = pluginDirs.iterator(); plugins.hasNext(); )
             {
                 File plugin = (File) plugins.next();
-                addFailure( reporter, metadata, "missing-plugin-from-metadata:" + plugin.getName(), "Plugin " +
-                    plugin.getName() + " is present in the repository but " + "missing in the metadata." );
+                addFailure( metadata, "missing-plugin-from-metadata:" + plugin.getName(), "Plugin " + plugin.getName()
+                    + " is present in the repository but " + "missing in the metadata." );
             }
         }
     }
@@ -209,27 +210,26 @@
      * @param repository the repository where the metadata was encountered
      * @param reporter   the ReportingDatabase to receive processing results
      */
-    private void checkSnapshotMetadata( RepositoryMetadata metadata, ArtifactRepository repository,
-                                        ReportingDatabase reporter )
+    private void checkSnapshotMetadata( RepositoryMetadata metadata, ArtifactRepository repository )
     {
-        RepositoryQueryLayer repositoryQueryLayer =
-            repositoryQueryLayerFactory.createRepositoryQueryLayer( repository );
+        RepositoryQueryLayer repositoryQueryLayer = repositoryQueryLayerFactory.createRepositoryQueryLayer( repository );
 
         Versioning versioning = metadata.getMetadata().getVersioning();
         if ( versioning != null )
         {
             Snapshot snapshot = versioning.getSnapshot();
 
-            String version = StringUtils.replace( metadata.getBaseVersion(), Artifact.SNAPSHOT_VERSION,
-                                                  snapshot.getTimestamp() + "-" + snapshot.getBuildNumber() );
-            Artifact artifact =
-                artifactFactory.createProjectArtifact( metadata.getGroupId(), metadata.getArtifactId(), version );
+            String version = StringUtils.replace( metadata.getBaseVersion(), Artifact.SNAPSHOT_VERSION, snapshot
+                .getTimestamp()
+                + "-" + snapshot.getBuildNumber() );
+            Artifact artifact = artifactFactory.createProjectArtifact( metadata.getGroupId(), metadata.getArtifactId(),
+                                                                       version );
             artifact.isSnapshot(); // trigger baseVersion correction
 
             if ( !repositoryQueryLayer.containsArtifact( artifact ) )
             {
-                addFailure( reporter, metadata, "missing-snapshot-artifact-from-repository:" + version,
-                            "Snapshot artifact " + version + " does not exist." );
+                addFailure( metadata, "missing-snapshot-artifact-from-repository:" + version, "Snapshot artifact "
+                    + version + " does not exist." );
             }
         }
     }
@@ -241,11 +241,9 @@
      * @param repository the repository where the metadata was encountered
      * @param reporter   the ReportingDatabase to receive processing results
      */
-    private void checkMetadataVersions( RepositoryMetadata metadata, ArtifactRepository repository,
-                                        ReportingDatabase reporter )
+    private void checkMetadataVersions( RepositoryMetadata metadata, ArtifactRepository repository )
     {
-        RepositoryQueryLayer repositoryQueryLayer =
-            repositoryQueryLayerFactory.createRepositoryQueryLayer( repository );
+        RepositoryQueryLayer repositoryQueryLayer = repositoryQueryLayerFactory.createRepositoryQueryLayer( repository );
 
         Versioning versioning = metadata.getMetadata().getVersioning();
         if ( versioning != null )
@@ -254,13 +252,13 @@
             {
                 String version = (String) versions.next();
 
-                Artifact artifact =
-                    artifactFactory.createProjectArtifact( metadata.getGroupId(), metadata.getArtifactId(), version );
+                Artifact artifact = artifactFactory.createProjectArtifact( metadata.getGroupId(), metadata
+                    .getArtifactId(), version );
 
                 if ( !repositoryQueryLayer.containsArtifact( artifact ) )
                 {
-                    addFailure( reporter, metadata, "missing-artifact-from-repository:" + version, "Artifact version " +
-                        version + " is present in metadata but " + "missing in the repository." );
+                    addFailure( metadata, "missing-artifact-from-repository:" + version, "Artifact version " + version
+                        + " is present in metadata but " + "missing in the repository." );
                 }
             }
         }
@@ -275,14 +273,13 @@
      * @param reporter   the ReportingDatabase to receive processing results
      * @throws java.io.IOException if there is a problem reading from the file system
      */
-    private void checkRepositoryVersions( RepositoryMetadata metadata, ArtifactRepository repository,
-                                          ReportingDatabase reporter )
+    private void checkRepositoryVersions( RepositoryMetadata metadata, ArtifactRepository repository )
         throws IOException
     {
         Versioning versioning = metadata.getMetadata().getVersioning();
         List metadataVersions = versioning != null ? versioning.getVersions() : Collections.EMPTY_LIST;
-        File versionsDir =
-            new File( repository.getBasedir(), repository.pathOfRemoteRepositoryMetadata( metadata ) ).getParentFile();
+        File versionsDir = new File( repository.getBasedir(), repository.pathOfRemoteRepositoryMetadata( metadata ) )
+            .getParentFile();
 
         // TODO: I don't know how this condition can happen, but it was seen on the main repository.
         // Avoid hard failure
@@ -295,14 +292,14 @@
                 String version = path.getParentFile().getName();
                 if ( !metadataVersions.contains( version ) )
                 {
-                    addFailure( reporter, metadata, "missing-artifact-from-metadata:" + version, "Artifact version " +
-                        version + " found in the repository but " + "missing in the metadata." );
+                    addFailure( metadata, "missing-artifact-from-metadata:" + version, "Artifact version " + version
+                        + " found in the repository but " + "missing in the metadata." );
                 }
             }
         }
         else
         {
-            addFailure( reporter, metadata, null, "Metadata's directory did not exist: " + versionsDir );
+            addFailure( metadata, null, "Metadata's directory did not exist: " + versionsDir );
         }
     }
 
@@ -339,10 +336,9 @@
         return artifactIdFiles;
     }
 
-    private static void addFailure( ReportingDatabase reporter, RepositoryMetadata metadata, String problem,
-                                    String reason )
+    private void addFailure( RepositoryMetadata metadata, String problem, String reason )
     {
         // TODO: reason could be an i18n key derived from the processor and the problem ID and the
-        reporter.addFailure( metadata, ROLE_HINT, problem, reason );
+        database.addFailure( metadata, ROLE_HINT, problem, reason );
     }
 }

Modified: maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/processor/ChecksumArtifactReportProcessor.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/processor/ChecksumArtifactReportProcessor.java?view=diff&rev=511053&r1=511052&r2=511053
==============================================================================
--- maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/processor/ChecksumArtifactReportProcessor.java (original)
+++ maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/processor/ChecksumArtifactReportProcessor.java Fri Feb 23 11:05:21 2007
@@ -20,7 +20,7 @@
  */
 
 import org.apache.commons.io.FileUtils;
-import org.apache.maven.archiva.reporting.database.ReportingDatabase;
+import org.apache.maven.archiva.reporting.database.ArtifactResultsDatabase;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.model.Model;
@@ -48,10 +48,15 @@
      * @plexus.requirement role-hint="md5"
      */
     private Digester md5Digester;
+    
+    /**
+     * @plexus.requirement
+     */
+    private ArtifactResultsDatabase database;
 
     private static final String ROLE_HINT = "checksum";
 
-    public void processArtifact( Artifact artifact, Model model, ReportingDatabase reporter )
+    public void processArtifact( Artifact artifact, Model model )
     {
         ArtifactRepository repository = artifact.getRepository();
 
@@ -68,11 +73,11 @@
 
         // TODO: make md5 configurable
 //        verifyChecksum( repository, path + ".md5", file, md5Digester, reporter, artifact );
-        verifyChecksum( repository, path + ".sha1", file, sha1Digester, reporter, artifact );
+        verifyChecksum( repository, path + ".sha1", file, sha1Digester, artifact );
     }
 
     private void verifyChecksum( ArtifactRepository repository, String path, File file, Digester digester,
-                                 ReportingDatabase reporter, Artifact artifact )
+                                 Artifact artifact )
     {
         File checksumFile = new File( repository.getBasedir(), path );
         if ( checksumFile.exists() )
@@ -83,23 +88,23 @@
             }
             catch ( DigesterException e )
             {
-                addFailure( reporter, artifact, "checksum-wrong", e.getMessage() );
+                addFailure( artifact, "checksum-wrong", e.getMessage() );
             }
             catch ( IOException e )
             {
-                addFailure( reporter, artifact, "checksum-io-exception", "Read file error: " + e.getMessage() );
+                addFailure( artifact, "checksum-io-exception", "Read file error: " + e.getMessage() );
             }
         }
         else
         {
-            addFailure( reporter, artifact, "checksum-missing",
+            addFailure( artifact, "checksum-missing",
                         digester.getAlgorithm() + " checksum file does not exist." );
         }
     }
 
-    private static void addFailure( ReportingDatabase reporter, Artifact artifact, String problem, String reason )
+    private void addFailure( Artifact artifact, String problem, String reason )
     {
         // TODO: reason could be an i18n key derived from the processor and the problem ID and the
-        reporter.addFailure( artifact, ROLE_HINT, problem, reason );
+        database.addFailure( artifact, ROLE_HINT, problem, reason );
     }
 }

Modified: maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/processor/ChecksumMetadataReportProcessor.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/processor/ChecksumMetadataReportProcessor.java?view=diff&rev=511053&r1=511052&r2=511053
==============================================================================
--- maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/processor/ChecksumMetadataReportProcessor.java (original)
+++ maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/processor/ChecksumMetadataReportProcessor.java Fri Feb 23 11:05:21 2007
@@ -20,7 +20,7 @@
  */
 
 import org.apache.commons.io.FileUtils;
-import org.apache.maven.archiva.reporting.database.ReportingDatabase;
+import org.apache.maven.archiva.reporting.database.MetadataResultsDatabase;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
 import org.codehaus.plexus.digest.Digester;
@@ -48,32 +48,36 @@
      */
     private Digester md5Digester;
 
+    /**
+     * @plexus.requirement
+     */
+    private MetadataResultsDatabase database;
+
     private static final String ROLE_HINT = "checksum-metadata";
 
     /**
      * Validate the checksums of the metadata. Get the metadata file from the
      * repository then validate the checksum.
      */
-    public void processMetadata( RepositoryMetadata metadata, ArtifactRepository repository,
-                                 ReportingDatabase reporter )
+    public void processMetadata( RepositoryMetadata metadata, ArtifactRepository repository )
     {
         if ( !"file".equals( repository.getProtocol() ) )
         {
             // We can't check other types of URLs yet. Need to use Wagon, with an exists() method.
-            throw new UnsupportedOperationException(
-                "Can't process repository '" + repository.getUrl() + "'. Only file based repositories are supported" );
+            throw new UnsupportedOperationException( "Can't process repository '" + repository.getUrl()
+                + "'. Only file based repositories are supported" );
         }
 
         //check if checksum files exist
         String path = repository.pathOfRemoteRepositoryMetadata( metadata );
         File file = new File( repository.getBasedir(), path );
 
-        verifyChecksum( repository, path + ".md5", file, md5Digester, reporter, metadata );
-        verifyChecksum( repository, path + ".sha1", file, sha1Digester, reporter, metadata );
+        verifyChecksum( repository, path + ".md5", file, md5Digester, metadata );
+        verifyChecksum( repository, path + ".sha1", file, sha1Digester, metadata );
     }
 
     private void verifyChecksum( ArtifactRepository repository, String path, File file, Digester digester,
-                                 ReportingDatabase reporter, RepositoryMetadata metadata )
+                                 RepositoryMetadata metadata )
     {
         File checksumFile = new File( repository.getBasedir(), path );
         if ( checksumFile.exists() )
@@ -84,25 +88,23 @@
             }
             catch ( DigesterException e )
             {
-                addFailure( reporter, metadata, "checksum-wrong", e.getMessage() );
+                addFailure( metadata, "checksum-wrong", e.getMessage() );
             }
             catch ( IOException e )
             {
-                addFailure( reporter, metadata, "checksum-io-exception", "Read file error: " + e.getMessage() );
+                addFailure( metadata, "checksum-io-exception", "Read file error: " + e.getMessage() );
             }
         }
         else
         {
-            addFailure( reporter, metadata, "checksum-missing",
-                        digester.getAlgorithm() + " checksum file does not exist." );
+            addFailure( metadata, "checksum-missing", digester.getAlgorithm() + " checksum file does not exist." );
         }
     }
 
-    private static void addFailure( ReportingDatabase reporter, RepositoryMetadata metadata, String problem,
-                                    String reason )
+    private void addFailure( RepositoryMetadata metadata, String problem, String reason )
     {
         // TODO: reason could be an i18n key derived from the processor and the problem ID and the
-        reporter.addFailure( metadata, ROLE_HINT, problem, reason );
+        database.addFailure( metadata, ROLE_HINT, problem, reason );
     }
 
 }

Modified: maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/processor/DependencyArtifactReportProcessor.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/processor/DependencyArtifactReportProcessor.java?view=diff&rev=511053&r1=511052&r2=511053
==============================================================================
--- maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/processor/DependencyArtifactReportProcessor.java (original)
+++ maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/processor/DependencyArtifactReportProcessor.java Fri Feb 23 11:05:21 2007
@@ -21,7 +21,7 @@
 
 import org.apache.maven.archiva.layer.RepositoryQueryLayer;
 import org.apache.maven.archiva.layer.RepositoryQueryLayerFactory;
-import org.apache.maven.archiva.reporting.database.ReportingDatabase;
+import org.apache.maven.archiva.reporting.database.ArtifactResultsDatabase;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
@@ -49,34 +49,39 @@
      */
     private RepositoryQueryLayerFactory layerFactory;
 
+    /**
+     * @plexus.requirement
+     */
+    private ArtifactResultsDatabase database;
+
     private static final String POM = "pom";
 
     private static final String ROLE_HINT = "dependency";
 
-    public void processArtifact( Artifact artifact, Model model, ReportingDatabase reporter )
+    public void processArtifact( Artifact artifact, Model model )
     {
         RepositoryQueryLayer queryLayer = layerFactory.createRepositoryQueryLayer( artifact.getRepository() );
         if ( !queryLayer.containsArtifact( artifact ) )
         {
             // TODO: is this even possible?
-            addFailure( reporter, artifact, "missing-artifact", "Artifact does not exist in the repository" );
+            addFailure( artifact, "missing-artifact", "Artifact does not exist in the repository" );
         }
 
         if ( model != null && POM.equals( artifact.getType() ) )
         {
             List dependencies = model.getDependencies();
-            processDependencies( dependencies, reporter, queryLayer, artifact );
+            processDependencies( dependencies, queryLayer, artifact );
         }
     }
 
-    private static void addFailure( ReportingDatabase reporter, Artifact artifact, String problem, String reason )
+    private void addFailure( Artifact artifact, String problem, String reason )
     {
         // TODO: reason could be an i18n key derived from the processor and the problem ID and the
-        reporter.addFailure( artifact, ROLE_HINT, problem, reason );
+        database.addFailure( artifact, ROLE_HINT, problem, reason );
     }
 
-    private void processDependencies( List dependencies, ReportingDatabase reporter,
-                                      RepositoryQueryLayer repositoryQueryLayer, Artifact sourceArtifact )
+    private void processDependencies( List dependencies, RepositoryQueryLayer repositoryQueryLayer,
+                                      Artifact sourceArtifact )
     {
         if ( dependencies.size() > 0 )
         {
@@ -100,19 +105,19 @@
 
                     if ( !repositoryQueryLayer.containsArtifact( artifact ) )
                     {
-                        String reason = MessageFormat.format(
-                            "Artifact''s dependency {0} does not exist in the repository",
-                            new String[]{getDependencyString( dependency )} );
-                        addFailure( reporter, sourceArtifact, "missing-dependency:" + getDependencyKey( dependency ),
-                                    reason );
+                        String reason = MessageFormat
+                            .format( "Artifact''s dependency {0} does not exist in the repository",
+                                     new String[] { getDependencyString( dependency ) } );
+                        addFailure( sourceArtifact, "missing-dependency:" + getDependencyKey( dependency ), reason );
                     }
                 }
                 catch ( InvalidVersionSpecificationException e )
                 {
                     String reason = MessageFormat.format( "Artifact''s dependency {0} contains an invalid version {1}",
-                                                          new String[]{getDependencyString( dependency ),
-                                                              dependency.getVersion()} );
-                    addFailure( reporter, sourceArtifact, "bad-version:" + getDependencyKey( dependency ), reason );
+                                                          new String[] {
+                                                              getDependencyString( dependency ),
+                                                              dependency.getVersion() } );
+                    addFailure( sourceArtifact, "bad-version:" + getDependencyKey( dependency ), reason );
                 }
             }
         }
@@ -156,7 +161,7 @@
         }
 
         return artifactFactory.createDependencyArtifact( dependency.getGroupId(), dependency.getArtifactId(), spec,
-                                                         dependency.getType(), dependency.getClassifier(),
-                                                         dependency.getScope() );
+                                                         dependency.getType(), dependency.getClassifier(), dependency
+                                                             .getScope() );
     }
 }