You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by br...@apache.org on 2006/09/04 07:34:43 UTC

svn commit: r439935 [1/2] - in /maven/archiva/trunk: archiva-core/src/main/java/org/apache/maven/archiva/ archiva-core/src/main/java/org/apache/maven/archiva/scheduler/ archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/ archiva-discove...

Author: brett
Date: Sun Sep  3 22:34:42 2006
New Revision: 439935

URL: http://svn.apache.org/viewvc?view=rev&rev=439935
Log:
[MRM-142, MRM-134] remove timestamp handling and instead simply index records that aren't previously indexed. We can add timestamp checking for updating records later, but this removes the problems associated with relying on filesystem timestamps and a single tracking timestamp.
Included in this fix is some refactoring to reduce memory usage, including a hack to flush the project cache periodically. This hack can be removed when the project cache is configurable (see MRM-142).
This now indexes the ibiblio repository from scratch in ~23 minutes, and incremental indexing takes 30-60 seconds.

Added:
    maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/
    maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/IndexRecordExistsArtifactFilter.java   (with props)
    maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/IndexerTask.java   (contents, props changed)
      - copied, changed from r439934, maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/IndexerTask.java
    maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/RepositoryTask.java   (contents, props changed)
      - copied, changed from r439934, maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/RepositoryTask.java
    maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/filter/
    maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/filter/AcceptAllArtifactFilter.java   (with props)
    maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/filter/SnapshotArtifactFilter.java   (with props)
Removed:
    maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/IndexerTask.java
    maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/RepositoryTask.java
Modified:
    maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/DefaultRepositoryManager.java
    maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/DefaultRepositoryTaskScheduler.java
    maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/RepositoryTaskJob.java
    maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/AbstractArtifactDiscoverer.java
    maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/AbstractDiscoverer.java
    maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/ArtifactDiscoverer.java
    maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/DefaultMetadataDiscoverer.java
    maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/Discoverer.java
    maven/archiva/trunk/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/AbstractArtifactDiscovererTest.java
    maven/archiva/trunk/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/DefaultArtifactDiscovererTest.java
    maven/archiva/trunk/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/DefaultMetadataDiscovererTest.java
    maven/archiva/trunk/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/LegacyArtifactDiscovererTest.java
    maven/archiva/trunk/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/RepositoryArtifactIndex.java
    maven/archiva/trunk/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryArtifactIndex.java
    maven/archiva/trunk/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryArtifactIndexFactory.java
    maven/archiva/trunk/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/record/StandardArtifactIndexRecord.java

Modified: maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/DefaultRepositoryManager.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/DefaultRepositoryManager.java?view=diff&rev=439935&r1=439934&r2=439935
==============================================================================
--- maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/DefaultRepositoryManager.java (original)
+++ maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/DefaultRepositoryManager.java Sun Sep  3 22:34:42 2006
@@ -4,10 +4,13 @@
 import org.apache.maven.archiva.converter.RepositoryConverter;
 import org.apache.maven.archiva.discoverer.ArtifactDiscoverer;
 import org.apache.maven.archiva.discoverer.DiscovererException;
+import org.apache.maven.archiva.discoverer.filter.AcceptAllArtifactFilter;
+import org.apache.maven.archiva.discoverer.filter.SnapshotArtifactFilter;
 import org.apache.maven.archiva.reporting.ArtifactReporter;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 
 import java.io.File;
 import java.net.MalformedURLException;
@@ -73,8 +76,9 @@
             throw new RepositoryConversionException( "Error convering legacy repository.", e );
         }
 
-        List legacyArtifacts =
-            artifactDiscoverer.discoverArtifacts( legacyRepository, "converter", null, includeSnapshots );
+        ArtifactFilter filter =
+            includeSnapshots ? new AcceptAllArtifactFilter() : (ArtifactFilter) new SnapshotArtifactFilter();
+        List legacyArtifacts = artifactDiscoverer.discoverArtifacts( legacyRepository, null, filter );
 
         repositoryConverter.convert( legacyArtifacts, repository, reporter );
     }

Modified: maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/DefaultRepositoryTaskScheduler.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/DefaultRepositoryTaskScheduler.java?view=diff&rev=439935&r1=439934&r2=439935
==============================================================================
--- maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/DefaultRepositoryTaskScheduler.java (original)
+++ maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/DefaultRepositoryTaskScheduler.java Sun Sep  3 22:34:42 2006
@@ -22,6 +22,7 @@
 import org.apache.maven.archiva.configuration.ConfigurationStore;
 import org.apache.maven.archiva.configuration.ConfigurationStoreException;
 import org.apache.maven.archiva.configuration.InvalidConfigurationException;
+import org.apache.maven.archiva.scheduler.task.RepositoryTask;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Startable;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.StartingException;

Modified: maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/RepositoryTaskJob.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/RepositoryTaskJob.java?view=diff&rev=439935&r1=439934&r2=439935
==============================================================================
--- maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/RepositoryTaskJob.java (original)
+++ maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/RepositoryTaskJob.java Sun Sep  3 22:34:42 2006
@@ -16,6 +16,7 @@
  * limitations under the License.
  */
 
+import org.apache.maven.archiva.scheduler.task.RepositoryTask;
 import org.codehaus.plexus.scheduler.AbstractJob;
 import org.quartz.JobDataMap;
 import org.quartz.JobExecutionContext;

Added: maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/IndexRecordExistsArtifactFilter.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/IndexRecordExistsArtifactFilter.java?view=auto&rev=439935
==============================================================================
--- maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/IndexRecordExistsArtifactFilter.java (added)
+++ maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/IndexRecordExistsArtifactFilter.java Sun Sep  3 22:34:42 2006
@@ -0,0 +1,44 @@
+package org.apache.maven.archiva.scheduler.task;
+
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+
+import java.util.Collection;
+
+/**
+ * Filter that removes artifacts already in the index.
+ * TODO: we could do timestamp comparisons here
+ */
+public class IndexRecordExistsArtifactFilter
+    implements ArtifactFilter
+{
+    private final Collection keys;
+
+    public IndexRecordExistsArtifactFilter( Collection keys )
+    {
+        this.keys = keys;
+    }
+
+    public boolean include( Artifact artifact )
+    {
+        String artifactKey = artifact.getGroupId() + ":" + artifact.getArtifactId() + ":" + artifact.getVersion() +
+            ( artifact.getClassifier() != null ? ":" + artifact.getClassifier() : "" );
+        return !keys.contains( artifactKey );
+    }
+}

Propchange: maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/IndexRecordExistsArtifactFilter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Copied: maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/IndexerTask.java (from r439934, maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/IndexerTask.java)
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/IndexerTask.java?view=diff&rev=439935&p1=maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/IndexerTask.java&r1=439934&p2=maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/IndexerTask.java&r2=439935
==============================================================================
--- maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/IndexerTask.java (original)
+++ maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/IndexerTask.java Sun Sep  3 22:34:42 2006
@@ -1,4 +1,4 @@
-package org.apache.maven.archiva.scheduler;
+package org.apache.maven.archiva.scheduler.task;
 
 /*
  * Copyright 2005-2006 The Apache Software Foundation.
@@ -23,16 +23,20 @@
 import org.apache.maven.archiva.configuration.RepositoryConfiguration;
 import org.apache.maven.archiva.discoverer.ArtifactDiscoverer;
 import org.apache.maven.archiva.discoverer.DiscovererException;
+import org.apache.maven.archiva.discoverer.filter.SnapshotArtifactFilter;
 import org.apache.maven.archiva.indexer.RepositoryArtifactIndex;
 import org.apache.maven.archiva.indexer.RepositoryArtifactIndexFactory;
 import org.apache.maven.archiva.indexer.RepositoryIndexException;
 import org.apache.maven.archiva.indexer.record.RepositoryIndexRecordFactory;
-import org.apache.maven.artifact.Artifact;
+import org.apache.maven.archiva.scheduler.TaskExecutionException;
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.filter.AndArtifactFilter;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 
 import java.io.File;
 import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -41,7 +45,7 @@
  * Task for discovering changes in the repository.
  *
  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
- * @plexus.component role="org.apache.maven.archiva.scheduler.RepositoryTask" role-hint="indexer"
+ * @plexus.component role=org.apache.maven.archiva.scheduler.task.RepositoryTaskk" role-hint="indexer"
  */
 public class IndexerTask
     extends AbstractLogEnabled
@@ -98,8 +102,20 @@
         long time = System.currentTimeMillis();
         getLogger().info( "Starting repository discovery process" );
 
+        RepositoryArtifactIndex index = indexFactory.createStandardIndex( indexPath );
+
         try
         {
+            Collection keys;
+            if ( index.exists() )
+            {
+                keys = index.getAllRecordKeys();
+            }
+            else
+            {
+                keys = Collections.EMPTY_LIST;
+            }
+
             for ( Iterator i = configuration.getRepositories().iterator(); i.hasNext(); )
             {
                 RepositoryConfiguration repositoryConfiguration = (RepositoryConfiguration) i.next();
@@ -121,12 +137,23 @@
 
                     String layoutProperty = repositoryConfiguration.getLayout();
                     ArtifactDiscoverer discoverer = (ArtifactDiscoverer) artifactDiscoverers.get( layoutProperty );
-                    List artifacts =
-                        discoverer.discoverArtifacts( repository, "indexer", blacklistedPatterns, includeSnapshots );
+                    AndArtifactFilter filter = new AndArtifactFilter();
+                    filter.add( new IndexRecordExistsArtifactFilter( keys ) );
+                    if ( !includeSnapshots )
+                    {
+                        filter.add( new SnapshotArtifactFilter() );
+                    }
+
+                    // Save some memory by not tracking paths we won't use
+                    // TODO: Plexus CDC should be able to inject this configuration
+                    discoverer.setTrackOmittedPaths( false );
+
+                    getLogger().info( "Searching repository " + repositoryConfiguration.getName() );
+                    List artifacts = discoverer.discoverArtifacts( repository, blacklistedPatterns, filter );
                     if ( !artifacts.isEmpty() )
                     {
                         getLogger().info( "Indexing " + artifacts.size() + " new artifacts" );
-                        indexArtifacts( artifacts, indexPath );
+                        index.indexArtifacts( artifacts, recordFactory );
                     }
                 }
             }
@@ -171,19 +198,5 @@
         {
             throw new TaskExecutionException( e.getMessage(), e );
         }
-    }
-
-    private void indexArtifacts( List artifacts, File indexPath )
-        throws RepositoryIndexException
-    {
-        List records = new ArrayList();
-        for ( Iterator i = artifacts.iterator(); i.hasNext(); )
-        {
-            Artifact a = (Artifact) i.next();
-            records.add( recordFactory.createRecord( a ) );
-        }
-
-        RepositoryArtifactIndex artifactIndex = indexFactory.createStandardIndex( indexPath );
-        artifactIndex.indexRecords( records );
     }
 }

Propchange: maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/IndexerTask.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/IndexerTask.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Copied: maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/RepositoryTask.java (from r439934, maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/RepositoryTask.java)
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/RepositoryTask.java?view=diff&rev=439935&p1=maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/RepositoryTask.java&r1=439934&p2=maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/RepositoryTask.java&r2=439935
==============================================================================
--- maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/RepositoryTask.java (original)
+++ maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/RepositoryTask.java Sun Sep  3 22:34:42 2006
@@ -1,4 +1,6 @@
-package org.apache.maven.archiva.scheduler;
+package org.apache.maven.archiva.scheduler.task;
+
+import org.apache.maven.archiva.scheduler.TaskExecutionException;
 
 /*
  * Copyright 2005-2006 The Apache Software Foundation.

Propchange: maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/RepositoryTask.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/RepositoryTask.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/AbstractArtifactDiscoverer.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/AbstractArtifactDiscoverer.java?view=diff&rev=439935&r1=439934&r2=439935
==============================================================================
--- maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/AbstractArtifactDiscoverer.java (original)
+++ maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/AbstractArtifactDiscoverer.java Sun Sep  3 22:34:42 2006
@@ -18,16 +18,12 @@
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.codehaus.plexus.util.xml.Xpp3Dom;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 
 import java.io.File;
-import java.io.IOException;
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Locale;
 
 /**
  * Base class for artifact discoverers.
@@ -46,14 +42,12 @@
         "**/*.MD5", "**/*.sha1", "**/*.SHA1", "**/*snapshot-version", "*/website/**", "*/licenses/**", "*/licences/**",
         "**/.htaccess", "**/*.html", "**/*.asc", "**/*.txt", "**/*.xml", "**/README*", "**/CHANGELOG*", "**/KEYS*"};
 
-    private List scanForArtifactPaths( File repositoryBase, List blacklistedPatterns, long comparisonTimestamp )
+    private List scanForArtifactPaths( File repositoryBase, List blacklistedPatterns )
     {
-        return scanForArtifactPaths( repositoryBase, blacklistedPatterns, null, STANDARD_DISCOVERY_EXCLUDES,
-                                     comparisonTimestamp );
+        return scanForArtifactPaths( repositoryBase, blacklistedPatterns, null, STANDARD_DISCOVERY_EXCLUDES );
     }
 
-    public List discoverArtifacts( ArtifactRepository repository, String operation, List blacklistedPatterns,
-                                   boolean includeSnapshots )
+    public List discoverArtifacts( ArtifactRepository repository, List blacklistedPatterns, ArtifactFilter filter )
         throws DiscovererException
     {
         if ( !"file".equals( repository.getProtocol() ) )
@@ -61,31 +55,11 @@
             throw new UnsupportedOperationException( "Only filesystem repositories are supported" );
         }
 
-        Xpp3Dom dom = getLastArtifactDiscoveryDom( readRepositoryMetadataDom( repository ) );
-        long comparisonTimestamp = readComparisonTimestamp( repository, operation, dom );
-
-        // Note that last checked time is deliberately set to the start of the process so that anything added
-        // mid-discoverer and missed by the scanner will get checked next time.
-        // Due to this, there must be no negative side-effects of discovering something twice.
-        Date newLastCheckedTime = new Date();
-
         File repositoryBase = new File( repository.getBasedir() );
 
         List artifacts = new ArrayList();
 
-        List artifactPaths = scanForArtifactPaths( repositoryBase, blacklistedPatterns, comparisonTimestamp );
-
-        // Also note that the last check time, while set at the start, is saved at the end, so that if any exceptions
-        // occur, then the timestamp is not updated so that the discoverer is attempted again
-        // TODO: under the list-return behaviour we have now, exceptions might occur later and the timestamp will not be reset - see MRM-83
-        try
-        {
-            setLastCheckedTime( repository, operation, newLastCheckedTime );
-        }
-        catch ( IOException e )
-        {
-            throw new DiscovererException( "Error writing metadata: " + e.getMessage(), e );
-        }
+        List artifactPaths = scanForArtifactPaths( repositoryBase, blacklistedPatterns );
 
         for ( Iterator i = artifactPaths.iterator(); i.hasNext(); )
         {
@@ -95,10 +69,12 @@
             {
                 Artifact artifact = buildArtifactFromPath( path, repository );
 
-                if ( includeSnapshots || !artifact.isSnapshot() )
+                if ( filter.include( artifact ) )
                 {
                     artifacts.add( artifact );
                 }
+                // TODO: else add to excluded? [!]
+                // TODO! excluded/kickout tracking should be optional
             }
             catch ( DiscovererException e )
             {
@@ -129,21 +105,5 @@
         }
 
         return artifact;
-    }
-
-    public void setLastCheckedTime( ArtifactRepository repository, String operation, Date date )
-        throws IOException
-    {
-        // see notes in resetLastCheckedTime
-
-        File file = new File( repository.getBasedir(), "maven-metadata.xml" );
-
-        Xpp3Dom dom = readDom( file );
-
-        String dateString = new SimpleDateFormat( DATE_FMT, Locale.US ).format( date );
-
-        setEntry( getLastArtifactDiscoveryDom( dom ), operation, dateString );
-
-        saveDom( file, dom );
     }
 }

Modified: maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/AbstractDiscoverer.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/AbstractDiscoverer.java?view=diff&rev=439935&r1=439934&r2=439935
==============================================================================
--- maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/AbstractDiscoverer.java (original)
+++ maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/AbstractDiscoverer.java Sun Sep  3 22:34:42 2006
@@ -17,28 +17,15 @@
  */
 
 import org.apache.maven.artifact.factory.ArtifactFactory;
-import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.util.DirectoryScanner;
 import org.codehaus.plexus.util.FileUtils;
-import org.codehaus.plexus.util.IOUtil;
-import org.codehaus.plexus.util.xml.Xpp3Dom;
-import org.codehaus.plexus.util.xml.Xpp3DomBuilder;
-import org.codehaus.plexus.util.xml.Xpp3DomWriter;
-import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
 import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Locale;
 
 /**
  * Base class for the artifact and metadata discoverers.
@@ -61,11 +48,16 @@
     private List excludedPaths = new ArrayList();
 
     /**
-     * @plexus.configuration default-value="60000"
+     * @plexus.configuration default-value="true"
      */
-    private int blackoutPeriod;
+    private boolean trackOmittedPaths;
+
+    /** TODO!
+     * @plexus.configuration default-value="60000"
+    protected int blackoutPeriod;
 
     protected static final String DATE_FMT = "yyyyMMddHHmmss";
+     */
 
     /**
      * Add a path to the list of files that were kicked out due to being invalid.
@@ -75,7 +67,10 @@
      */
     protected void addKickedOutPath( String path, String reason )
     {
-        kickedOutPaths.add( new DiscovererPath( path, reason ) );
+        if ( trackOmittedPaths )
+        {
+            kickedOutPaths.add( new DiscovererPath( path, reason ) );
+        }
     }
 
     /**
@@ -85,11 +80,12 @@
      */
     public Iterator getKickedOutPathsIterator()
     {
+        assert trackOmittedPaths;
         return kickedOutPaths.iterator();
     }
 
     protected List scanForArtifactPaths( File repositoryBase, List blacklistedPatterns, String[] includes,
-                                         String[] excludes, long comparisonTimestamp )
+                                         String[] excludes )
     {
         List allExcludes = new ArrayList();
         allExcludes.addAll( FileUtils.getDefaultExcludesAsList() );
@@ -113,11 +109,14 @@
         // TODO: Correct for extremely large repositories (artifact counts over 200,000 entries)
         scanner.scan();
 
-        for ( Iterator files = Arrays.asList( scanner.getExcludedFiles() ).iterator(); files.hasNext(); )
+        if ( trackOmittedPaths )
         {
-            String path = files.next().toString();
+            for ( Iterator files = Arrays.asList( scanner.getExcludedFiles() ).iterator(); files.hasNext(); )
+            {
+                String path = files.next().toString();
 
-            excludedPaths.add( new DiscovererPath( path, "Artifact was in the specified list of exclusions" ) );
+                excludedPaths.add( new DiscovererPath( path, "Artifact was in the specified list of exclusions" ) );
+            }
         }
 
         // TODO: this could be a part of the scanner
@@ -126,14 +125,7 @@
         {
             String path = files.next().toString();
 
-            long modTime = new File( repositoryBase, path ).lastModified();
-            if ( modTime < System.currentTimeMillis() - blackoutPeriod )
-            {
-                if ( modTime > comparisonTimestamp )
-                {
-                    includedPaths.add( path );
-                }
-            }
+            includedPaths.add( path );
         }
 
         return includedPaths;
@@ -146,157 +138,12 @@
      */
     public Iterator getExcludedPathsIterator()
     {
+        assert trackOmittedPaths;
         return excludedPaths.iterator();
     }
 
-    protected long readComparisonTimestamp( ArtifactRepository repository, String operation, Xpp3Dom dom )
-    {
-        Xpp3Dom entry = dom.getChild( operation );
-        long comparisonTimestamp = 0;
-        if ( entry != null )
-        {
-            try
-            {
-                comparisonTimestamp = new SimpleDateFormat( DATE_FMT, Locale.US ).parse( entry.getValue() ).getTime();
-            }
-            catch ( ParseException e )
-            {
-                getLogger().error( "Timestamp was invalid: " + entry.getValue() + "; ignoring" );
-            }
-        }
-        return comparisonTimestamp;
-    }
-
-    protected Xpp3Dom readDom( File file )
-    {
-        Xpp3Dom dom;
-        FileReader fileReader = null;
-        try
-        {
-            fileReader = new FileReader( file );
-            dom = Xpp3DomBuilder.build( fileReader );
-        }
-        catch ( FileNotFoundException e )
-        {
-            // Safe to ignore
-            dom = new Xpp3Dom( "metadata" );
-        }
-        catch ( XmlPullParserException e )
-        {
-            getLogger().error( "Error reading metadata (ignoring and recreating): " + e.getMessage() );
-            dom = new Xpp3Dom( "metadata" );
-        }
-        catch ( IOException e )
-        {
-            getLogger().error( "Error reading metadata (ignoring and recreating): " + e.getMessage() );
-            dom = new Xpp3Dom( "metadata" );
-        }
-        finally
-        {
-            IOUtil.close( fileReader );
-        }
-        return dom;
-    }
-
-    protected Xpp3Dom getLastArtifactDiscoveryDom( Xpp3Dom dom )
-    {
-        Xpp3Dom lastDiscoveryDom = dom.getChild( "lastArtifactDiscovery" );
-        if ( lastDiscoveryDom == null )
-        {
-            dom.addChild( new Xpp3Dom( "lastArtifactDiscovery" ) );
-            lastDiscoveryDom = dom.getChild( "lastArtifactDiscovery" );
-        }
-        return lastDiscoveryDom;
-    }
-
-    protected Xpp3Dom getLastMetadataDiscoveryDom( Xpp3Dom dom )
-    {
-        Xpp3Dom lastDiscoveryDom = dom.getChild( "lastMetadataDiscovery" );
-        if ( lastDiscoveryDom == null )
-        {
-            dom.addChild( new Xpp3Dom( "lastMetadataDiscovery" ) );
-            lastDiscoveryDom = dom.getChild( "lastMetadataDiscovery" );
-        }
-        return lastDiscoveryDom;
-    }
-
-    public void resetLastCheckedTime( ArtifactRepository repository, String operation )
-        throws IOException
-    {
-        // TODO: get these changes into maven-metadata.xml and migrate towards that. The model is further diverging to a different layout at each level so submodels might be a good idea.
-        // TODO: maven-artifact probably needs an improved pathOfMetadata to cope with top level metadata
-        // TODO: might we need to write this as maven-metadata-local in some circumstances? merge others? Probably best to keep it simple and just use this format at the root. No need to merge anything that I can see
-        // TODO: since this metadata isn't meant to be shared, perhaps another file is called for after all.
-        // Format is: <repository><lastDiscovery><KEY>yyyyMMddHHmmss</KEY></lastDiscovery></repository> (ie, flat properties)
-
-        File file = new File( repository.getBasedir(), "maven-metadata.xml" );
-
-        Xpp3Dom dom = readDom( file );
-
-        boolean changed = false;
-
-        if ( removeEntry( getLastArtifactDiscoveryDom( dom ), operation ) )
-        {
-            changed = true;
-        }
-
-        if ( removeEntry( getLastMetadataDiscoveryDom( dom ), operation ) )
-        {
-            changed = true;
-        }
-
-        if ( changed )
-        {
-            saveDom( file, dom );
-        }
-    }
-
-    private boolean removeEntry( Xpp3Dom lastDiscoveryDom, String operation )
-    {
-        boolean changed = false;
-
-        // do this in reverse so that removing doesn't affect counter
-        Xpp3Dom[] children = lastDiscoveryDom.getChildren();
-        for ( int i = lastDiscoveryDom.getChildCount() - 1; i >= 0; i-- )
-        {
-            if ( children[i].getName().equals( operation ) )
-            {
-                changed = true;
-                lastDiscoveryDom.removeChild( i );
-            }
-        }
-        return changed;
-    }
-
-    protected void saveDom( File file, Xpp3Dom dom )
-        throws IOException
-    {
-        FileWriter writer = new FileWriter( file );
-
-        // save metadata
-        try
-        {
-            Xpp3DomWriter.write( writer, dom );
-        }
-        finally
-        {
-            IOUtil.close( writer );
-        }
-    }
-
-    protected void setEntry( Xpp3Dom lastDiscoveryDom, String operation, String dateString )
-    {
-        Xpp3Dom entry = lastDiscoveryDom.getChild( operation );
-        if ( entry == null )
-        {
-            entry = new Xpp3Dom( operation );
-            lastDiscoveryDom.addChild( entry );
-        }
-        entry.setValue( dateString );
-    }
-
-    protected Xpp3Dom readRepositoryMetadataDom( ArtifactRepository repository )
+    public void setTrackOmittedPaths( boolean trackOmittedPaths )
     {
-        return readDom( new File( repository.getBasedir(), "maven-metadata.xml" ) );
+        this.trackOmittedPaths = trackOmittedPaths;
     }
 }

Modified: maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/ArtifactDiscoverer.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/ArtifactDiscoverer.java?view=diff&rev=439935&r1=439934&r2=439935
==============================================================================
--- maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/ArtifactDiscoverer.java (original)
+++ maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/ArtifactDiscoverer.java Sun Sep  3 22:34:42 2006
@@ -18,6 +18,7 @@
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 
 import java.util.List;
 
@@ -41,14 +42,12 @@
      * consecutively even if unchanged, so any users of this list must handle such a situation gracefully.
      *
      * @param repository          the location of the repository
-     * @param operation           the operation being used to discover for timestamp checking
      * @param blacklistedPatterns pattern that lists any files to prevent from being included when scanning
-     * @param includeSnapshots    whether to discover snapshots
+     * @param filter              filter for artifacts to include in the discovered list
      * @return the list of artifacts discovered
      * @throws DiscovererException if there was an unrecoverable problem discovering artifacts or recording progress
      */
-    List discoverArtifacts( ArtifactRepository repository, String operation, List blacklistedPatterns,
-                            boolean includeSnapshots )
+    List discoverArtifacts( ArtifactRepository repository, List blacklistedPatterns, ArtifactFilter filter )
         throws DiscovererException;
 
     /**

Modified: maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/DefaultMetadataDiscoverer.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/DefaultMetadataDiscoverer.java?view=diff&rev=439935&r1=439934&r2=439935
==============================================================================
--- maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/DefaultMetadataDiscoverer.java (original)
+++ maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/DefaultMetadataDiscoverer.java Sun Sep  3 22:34:42 2006
@@ -25,7 +25,6 @@
 import org.apache.maven.artifact.repository.metadata.SnapshotArtifactRepositoryMetadata;
 import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader;
 import org.codehaus.plexus.util.StringUtils;
-import org.codehaus.plexus.util.xml.Xpp3Dom;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
 import java.io.File;
@@ -35,13 +34,10 @@
 import java.io.Reader;
 import java.net.MalformedURLException;
 import java.net.URL;
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Locale;
 import java.util.StringTokenizer;
 
 /**
@@ -70,29 +66,9 @@
             throw new UnsupportedOperationException( "Only filesystem repositories are supported" );
         }
 
-        Xpp3Dom dom = getLastMetadataDiscoveryDom( readRepositoryMetadataDom( repository ) );
-        long comparisonTimestamp = readComparisonTimestamp( repository, operation, dom );
-
-        // Note that last checked time is deliberately set to the start of the process so that anything added
-        // mid-discoverer and missed by the scanner will get checked next time.
-        // Due to this, there must be no negative side-effects of discovering something twice.
-        Date newLastCheckedTime = new Date();
-
         List metadataFiles = new ArrayList();
         List metadataPaths = scanForArtifactPaths( new File( repository.getBasedir() ), blacklistedPatterns,
-                                                   STANDARD_DISCOVERY_INCLUDES, null, comparisonTimestamp );
-
-        // Also note that the last check time, while set at the start, is saved at the end, so that if any exceptions
-        // occur, then the timestamp is not updated so that the discoverer is attempted again
-        // TODO: under the list-return behaviour we have now, exceptions might occur later and the timestamp will not be reset - see MRM-83
-        try
-        {
-            setLastCheckedTime( repository, operation, newLastCheckedTime );
-        }
-        catch ( IOException e )
-        {
-            throw new DiscovererException( "Error writing metadata: " + e.getMessage(), e );
-        }
+                                                   STANDARD_DISCOVERY_INCLUDES, null );
 
         for ( Iterator i = metadataPaths.iterator(); i.hasNext(); )
         {
@@ -234,21 +210,5 @@
         }
 
         return metadata;
-    }
-
-    public void setLastCheckedTime( ArtifactRepository repository, String operation, Date date )
-        throws IOException
-    {
-        // see notes in resetLastCheckedTime
-
-        File file = new File( repository.getBasedir(), "maven-metadata.xml" );
-
-        Xpp3Dom dom = readDom( file );
-
-        String dateString = new SimpleDateFormat( DATE_FMT, Locale.US ).format( date );
-
-        setEntry( getLastMetadataDiscoveryDom( dom ), operation, dateString );
-
-        saveDom( file, dom );
     }
 }

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=439935&r1=439934&r2=439935
==============================================================================
--- 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 Sun Sep  3 22:34:42 2006
@@ -1,9 +1,5 @@
 package org.apache.maven.archiva.discoverer;
 
-import org.apache.maven.artifact.repository.ArtifactRepository;
-
-import java.io.IOException;
-import java.util.Date;
 import java.util.Iterator;
 
 /*
@@ -41,24 +37,5 @@
      */
     Iterator getExcludedPathsIterator();
 
-    /**
-     * Reset the time in the repository that indicates the last time a check was performed.
-     *
-     * @param repository the location of the repository
-     * @param operation  the operation to record the timestamp for
-     * @throws java.io.IOException if there is a non-recoverable problem reading or writing the metadata
-     */
-    void resetLastCheckedTime( ArtifactRepository repository, String operation )
-        throws IOException;
-
-    /**
-     * Set the time in the repository that indicates the last time a check was performed.
-     *
-     * @param repository the location of the repository
-     * @param operation  the operation to record the timestamp for
-     * @param date       the date to set the last check to
-     * @throws java.io.IOException if there is a non-recoverable problem reading or writing the metadata
-     */
-    void setLastCheckedTime( ArtifactRepository repository, String operation, Date date )
-        throws IOException;
+    void setTrackOmittedPaths( boolean trackOmittedPaths );
 }

Added: maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/filter/AcceptAllArtifactFilter.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/filter/AcceptAllArtifactFilter.java?view=auto&rev=439935
==============================================================================
--- maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/filter/AcceptAllArtifactFilter.java (added)
+++ maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/filter/AcceptAllArtifactFilter.java Sun Sep  3 22:34:42 2006
@@ -0,0 +1,32 @@
+package org.apache.maven.archiva.discoverer.filter;
+
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+
+/**
+ * Filter that accepts all.
+ */
+public class AcceptAllArtifactFilter
+    implements ArtifactFilter
+{
+    public boolean include( Artifact artifact )
+    {
+        return true;
+    }
+}

Propchange: maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/filter/AcceptAllArtifactFilter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/filter/SnapshotArtifactFilter.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/filter/SnapshotArtifactFilter.java?view=auto&rev=439935
==============================================================================
--- maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/filter/SnapshotArtifactFilter.java (added)
+++ maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/filter/SnapshotArtifactFilter.java Sun Sep  3 22:34:42 2006
@@ -0,0 +1,32 @@
+package org.apache.maven.archiva.discoverer.filter;
+
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+
+/**
+ * A filter to remove snapshot artifacts during discovery.
+ */
+public class SnapshotArtifactFilter
+    implements ArtifactFilter
+{
+    public boolean include( Artifact artifact )
+    {
+        return !artifact.isSnapshot();
+    }
+}

Propchange: maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/filter/SnapshotArtifactFilter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: maven/archiva/trunk/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/AbstractArtifactDiscovererTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/AbstractArtifactDiscovererTest.java?view=diff&rev=439935&r1=439934&r2=439935
==============================================================================
--- maven/archiva/trunk/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/AbstractArtifactDiscovererTest.java (original)
+++ maven/archiva/trunk/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/AbstractArtifactDiscovererTest.java Sun Sep  3 22:34:42 2006
@@ -22,15 +22,8 @@
 import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
 import org.codehaus.plexus.PlexusTestCase;
-import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 
 import java.io.File;
-import java.io.IOException;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.List;
-import java.util.Locale;
 
 /**
  * @author Edwin Punzalan
@@ -44,8 +37,6 @@
 
     protected ArtifactRepository repository;
 
-    protected static final String TEST_OPERATION = "test";
-
     protected abstract String getLayout();
 
     protected abstract File getRepositoryFile();
@@ -61,7 +52,8 @@
 
         repository = getRepository();
 
-        removeTimestampMetadata();
+        // TODO!
+//        removeTimestampMetadata();
     }
 
     protected ArtifactRepository getRepository()
@@ -96,21 +88,22 @@
         return factory.createArtifactWithClassifier( groupId, artifactId, version, type, classifier );
     }
 
+/*                                   TODO!
     public void testUpdatedInRepository()
         throws ComponentLookupException, DiscovererException, ParseException, IOException
     {
         // Set repository time to 1-1-2000, a time in the distant past so definitely updated
-        discoverer.setLastCheckedTime( repository, "update",
+        discoverer.setLastCheckedTime( repository, UPDATE_OPERATION,
                                        new SimpleDateFormat( "yyyy-MM-dd", Locale.US ).parse( "2000-01-01" ) );
 
-        List artifacts = discoverer.discoverArtifacts( repository, "update", null, true );
+        List artifacts = discoverUpdateArtifactsWithSnapshots();
         assertNotNull( "Check artifacts not null", artifacts );
 
         assertTrue( "Check included",
                     artifacts.contains( createArtifact( "org.apache.maven.update", "test-updated", "1.0" ) ) );
 
         // try again with the updated timestamp
-        artifacts = discoverer.discoverArtifacts( repository, "update", null, true );
+        artifacts = discoverUpdateArtifactsWithSnapshots();
         assertNotNull( "Check artifacts not null", artifacts );
 
         assertFalse( "Check not included",
@@ -121,9 +114,9 @@
         throws ComponentLookupException, DiscovererException, IOException
     {
         // Set repository time to now, which is after any artifacts, so definitely not updated
-        discoverer.setLastCheckedTime( repository, "update", new Date() );
+        discoverer.setLastCheckedTime( repository, UPDATE_OPERATION, new Date() );
 
-        List artifacts = discoverer.discoverArtifacts( repository, "update", null, true );
+        List artifacts = discoverUpdateArtifactsWithSnapshots();
         assertNotNull( "Check artifacts not null", artifacts );
 
         assertFalse( "Check not included",
@@ -133,16 +126,16 @@
     public void testNotUpdatedInRepositoryForcedDiscovery()
         throws ComponentLookupException, DiscovererException, IOException
     {
-        discoverer.resetLastCheckedTime( repository, "update" );
+        discoverer.resetLastCheckedTime( repository, UPDATE_OPERATION );
 
-        List artifacts = discoverer.discoverArtifacts( repository, "update", null, true );
+        List artifacts = discoverUpdateArtifactsWithSnapshots();
         assertNotNull( "Check artifacts not null", artifacts );
 
         assertTrue( "Check included",
                     artifacts.contains( createArtifact( "org.apache.maven.update", "test-not-updated", "1.0" ) ) );
 
         // try again with the updated timestamp
-        artifacts = discoverer.discoverArtifacts( repository, "update", null, true );
+        artifacts = discoverUpdateArtifactsWithSnapshots();
         assertNotNull( "Check artifacts not null", artifacts );
 
         assertFalse( "Check not included",
@@ -152,18 +145,18 @@
     public void testUpdatedInRepositoryBlackout()
         throws ComponentLookupException, DiscovererException, IOException
     {
-        discoverer.resetLastCheckedTime( repository, "update" );
+        discoverer.resetLastCheckedTime( repository, UPDATE_OPERATION );
 
         Artifact artifact = createArtifact( "org.apache.maven.update", "test-not-updated", "1.0" );
         artifact.getFile().setLastModified( System.currentTimeMillis() );
 
-        List artifacts = discoverer.discoverArtifacts( repository, "update", null, true );
+        List artifacts = discoverUpdateArtifactsWithSnapshots();
         assertNotNull( "Check artifacts not null", artifacts );
 
         assertFalse( "Check not included", artifacts.contains( artifact ) );
 
         // try again with the updated timestamp
-        artifacts = discoverer.discoverArtifacts( repository, "update", null, true );
+        artifacts = discoverUpdateArtifactsWithSnapshots();
         assertNotNull( "Check artifacts not null", artifacts );
 
         assertFalse( "Check not included", artifacts.contains( artifact ) );
@@ -172,18 +165,18 @@
     public void testUpdatedInRepositoryNotBlackout()
         throws ComponentLookupException, DiscovererException, IOException
     {
-        discoverer.resetLastCheckedTime( repository, "update" );
+        discoverer.resetLastCheckedTime( repository, UPDATE_OPERATION );
 
         Artifact artifact = createArtifact( "org.apache.maven.update", "test-not-updated", "1.0" );
         artifact.getFile().setLastModified( System.currentTimeMillis() - 61000 );
 
-        List artifacts = discoverer.discoverArtifacts( repository, "update", null, true );
+        List artifacts = discoverUpdateArtifactsWithSnapshots();
         assertNotNull( "Check artifacts not null", artifacts );
 
         assertTrue( "Check included", artifacts.contains( artifact ) );
 
         // try again with the updated timestamp
-        artifacts = discoverer.discoverArtifacts( repository, "update", null, true );
+        artifacts = discoverUpdateArtifactsWithSnapshots();
         assertNotNull( "Check artifacts not null", artifacts );
 
         assertFalse( "Check not included", artifacts.contains( artifact ) );
@@ -192,18 +185,18 @@
     public void testNotUpdatedInRepositoryForcedDiscoveryMetadataAlreadyExists()
         throws ComponentLookupException, DiscovererException, IOException
     {
-        discoverer.setLastCheckedTime( repository, "update", new Date() );
+        discoverer.setLastCheckedTime( repository, UPDATE_OPERATION, new Date() );
 
-        discoverer.resetLastCheckedTime( repository, "update" );
+        discoverer.resetLastCheckedTime( repository, UPDATE_OPERATION );
 
-        List artifacts = discoverer.discoverArtifacts( repository, "update", null, true );
+        List artifacts = discoverUpdateArtifactsWithSnapshots();
         assertNotNull( "Check artifacts not null", artifacts );
 
         assertTrue( "Check included",
                     artifacts.contains( createArtifact( "org.apache.maven.update", "test-not-updated", "1.0" ) ) );
 
         // try again with the updated timestamp
-        artifacts = discoverer.discoverArtifacts( repository, "update", null, true );
+        artifacts = discoverUpdateArtifactsWithSnapshots();
         assertNotNull( "Check artifacts not null", artifacts );
 
         assertFalse( "Check not included",
@@ -215,16 +208,16 @@
     {
         discoverer.setLastCheckedTime( repository, "test", new Date() );
 
-        discoverer.resetLastCheckedTime( repository, "update" );
+        discoverer.resetLastCheckedTime( repository, UPDATE_OPERATION );
 
-        List artifacts = discoverer.discoverArtifacts( repository, "update", null, true );
+        List artifacts = discoverUpdateArtifactsWithSnapshots();
         assertNotNull( "Check artifacts not null", artifacts );
 
         assertTrue( "Check included",
                     artifacts.contains( createArtifact( "org.apache.maven.update", "test-not-updated", "1.0" ) ) );
 
         // try again with the updated timestamp
-        artifacts = discoverer.discoverArtifacts( repository, "update", null, true );
+        artifacts = discoverUpdateArtifactsWithSnapshots();
         assertNotNull( "Check artifacts not null", artifacts );
 
         assertFalse( "Check not included",
@@ -237,13 +230,25 @@
         removeTimestampMetadata();
 
         // should find all
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, true );
+        List artifacts = discoverArtifactsWithSnapshots();
         assertNotNull( "Check artifacts not null", artifacts );
 
         assertTrue( "Check included",
                     artifacts.contains( createArtifact( "org.apache.maven.update", "test-updated", "1.0" ) ) );
     }
 
+    private List discoverUpdateArtifactsWithSnapshots()
+        throws DiscovererException
+    {
+        return discoverer.discoverArtifacts( repository, UPDATE_OPERATION, null, new AcceptAllArtifactFilter() );
+    }
+
+    private List discoverArtifactsWithSnapshots()
+        throws DiscovererException
+    {
+        return discoverer.discoverArtifacts( repository, TEST_OPERATION, null, new AcceptAllArtifactFilter() );
+    }
+
     private void removeTimestampMetadata()
     {
         // remove the metadata that tracks time
@@ -251,4 +256,5 @@
         file.delete();
         assertFalse( file.exists() );
     }
+*/
 }

Modified: maven/archiva/trunk/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/DefaultArtifactDiscovererTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/DefaultArtifactDiscovererTest.java?view=diff&rev=439935&r1=439934&r2=439935
==============================================================================
--- maven/archiva/trunk/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/DefaultArtifactDiscovererTest.java (original)
+++ maven/archiva/trunk/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/DefaultArtifactDiscovererTest.java Sun Sep  3 22:34:42 2006
@@ -16,6 +16,8 @@
  * limitations under the License.
  */
 
+import org.apache.maven.archiva.discoverer.filter.AcceptAllArtifactFilter;
+import org.apache.maven.archiva.discoverer.filter.SnapshotArtifactFilter;
 import org.apache.maven.artifact.Artifact;
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 
@@ -52,7 +54,7 @@
     public void testDefaultExcludes()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, false );
+        List artifacts = discoverArtifacts();
         assertNotNull( "Check artifacts not null", artifacts );
         boolean found = false;
         for ( Iterator i = discoverer.getExcludedPathsIterator(); i.hasNext() && !found; )
@@ -80,7 +82,7 @@
     public void testStandardExcludes()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, false );
+        List artifacts = discoverArtifacts();
         assertNotNull( "Check artifacts not null", artifacts );
         boolean found = false;
         for ( Iterator i = discoverer.getExcludedPathsIterator(); i.hasNext() && !found; )
@@ -107,7 +109,7 @@
     public void testBlacklistedExclude()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, JAVAX_BLACKLIST, false );
+        List artifacts = discoverArtifactsWithBlacklist( JAVAX_BLACKLIST );
         assertNotNull( "Check artifacts not null", artifacts );
         boolean found = false;
         for ( Iterator i = discoverer.getExcludedPathsIterator(); i.hasNext() && !found; )
@@ -131,7 +133,7 @@
     public void testKickoutWithShortPath()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, false );
+        List artifacts = discoverArtifacts();
         assertNotNull( "Check artifacts not null", artifacts );
         boolean found = false;
         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
@@ -160,7 +162,7 @@
     public void testKickoutWithWrongArtifactId()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, false );
+        List artifacts = discoverArtifacts();
         assertNotNull( "Check artifacts not null", artifacts );
         boolean found = false;
         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
@@ -190,7 +192,7 @@
     public void testKickoutWithNoType()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, false );
+        List artifacts = discoverArtifacts();
         assertNotNull( "Check artifacts not null", artifacts );
         boolean found = false;
         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
@@ -218,7 +220,7 @@
     public void testKickoutWithWrongVersion()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, false );
+        List artifacts = discoverArtifacts();
         assertNotNull( "Check artifacts not null", artifacts );
         boolean found = false;
         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
@@ -246,7 +248,7 @@
     public void testKickoutWithLongerVersion()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, false );
+        List artifacts = discoverArtifacts();
         assertNotNull( "Check artifacts not null", artifacts );
         boolean found = false;
         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
@@ -274,7 +276,7 @@
     public void testKickoutWithWrongSnapshotVersion()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, false );
+        List artifacts = discoverArtifacts();
         assertNotNull( "Check artifacts not null", artifacts );
         boolean found = false;
         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
@@ -303,7 +305,7 @@
     public void testKickoutWithSnapshotBaseVersion()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, false );
+        List artifacts = discoverArtifacts();
         assertNotNull( "Check artifacts not null", artifacts );
         boolean found = false;
         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
@@ -334,7 +336,7 @@
     public void testInclusion()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, true );
+        List artifacts = discoverArtifactsWithSnapshots();
         assertNotNull( "Check artifacts not null", artifacts );
 
         assertTrue( "Check normal included",
@@ -344,7 +346,7 @@
     public void testArtifactWithClassifier()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, true );
+        List artifacts = discoverArtifactsWithSnapshots();
         assertNotNull( "Check artifacts not null", artifacts );
 
         assertTrue( "Check normal included",
@@ -354,7 +356,7 @@
     public void testJavaSourcesInclusion()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, true );
+        List artifacts = discoverArtifactsWithSnapshots();
         assertNotNull( "Check artifacts not null", artifacts );
 
         assertTrue( "Check normal included", artifacts.contains(
@@ -364,7 +366,7 @@
     public void testDistributionInclusion()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, true );
+        List artifacts = discoverArtifactsWithSnapshots();
         assertNotNull( "Check artifacts not null", artifacts );
 
         assertTrue( "Check zip included",
@@ -377,7 +379,7 @@
     public void testSnapshotInclusion()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, true );
+        List artifacts = discoverArtifactsWithSnapshots();
         assertNotNull( "Check artifacts not null", artifacts );
 
         assertTrue( "Check normal included", artifacts.contains( createArtifact( "javax.sql", "jdbc", "2.0" ) ) );
@@ -388,7 +390,7 @@
     public void testSnapshotInclusionWithClassifier()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, true );
+        List artifacts = discoverArtifactsWithSnapshots();
         assertNotNull( "Check artifacts not null", artifacts );
 
         assertTrue( "Check snapshot included", artifacts.contains(
@@ -398,7 +400,7 @@
     public void testSnapshotExclusion()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, false );
+        List artifacts = discoverArtifacts();
         assertNotNull( "Check artifacts not null", artifacts );
 
         assertTrue( "Check normal included", artifacts.contains( createArtifact( "javax.sql", "jdbc", "2.0" ) ) );
@@ -409,7 +411,7 @@
     public void testFileSet()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, true );
+        List artifacts = discoverArtifactsWithSnapshots();
         assertNotNull( "Check artifacts not null", artifacts );
 
         for ( Iterator i = artifacts.iterator(); i.hasNext(); )
@@ -422,7 +424,7 @@
     public void testRepositorySet()
         throws MalformedURLException, DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, true );
+        List artifacts = discoverArtifactsWithSnapshots();
         assertNotNull( "Check artifacts not null", artifacts );
 
         String url = repository.getUrl();
@@ -437,7 +439,7 @@
     public void testStandalonePoms()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, false );
+        List artifacts = discoverArtifacts();
 
         // cull down to actual artifacts (only standalone poms will have type = pom)
         Map keyedArtifacts = new HashMap();
@@ -664,5 +666,23 @@
 
         assertEquals( createArtifact( "org.apache.maven", "test", "1.0-20050611.112233-1", "jar", "javadoc" ),
                       artifact );
+    }
+
+    private List discoverArtifactsWithSnapshots()
+        throws DiscovererException
+    {
+        return discoverer.discoverArtifacts( repository, null, new AcceptAllArtifactFilter() );
+    }
+
+    private List discoverArtifactsWithBlacklist( List list )
+        throws DiscovererException
+    {
+        return discoverer.discoverArtifacts( repository, list, new SnapshotArtifactFilter() );
+    }
+
+    private List discoverArtifacts()
+        throws DiscovererException
+    {
+        return discoverer.discoverArtifacts( repository, null, new SnapshotArtifactFilter() );
     }
 }

Modified: maven/archiva/trunk/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/DefaultMetadataDiscovererTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/DefaultMetadataDiscovererTest.java?view=diff&rev=439935&r1=439934&r2=439935
==============================================================================
--- maven/archiva/trunk/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/DefaultMetadataDiscovererTest.java (original)
+++ maven/archiva/trunk/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/DefaultMetadataDiscovererTest.java Sun Sep  3 22:34:42 2006
@@ -26,16 +26,11 @@
 import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
 import org.apache.maven.artifact.repository.metadata.SnapshotArtifactRepositoryMetadata;
 import org.codehaus.plexus.PlexusTestCase;
-import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 
 import java.io.File;
 import java.io.IOException;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Locale;
 
 /**
  * This class tests the DefaultMetadataDiscoverer class.
@@ -168,6 +163,7 @@
         assertTrue( "Check included", containsMetadata( metadataPaths, metadata ) );
     }
 
+/*          TODO!
     public void testUpdatedInRepository()
         throws ComponentLookupException, DiscovererException, ParseException, IOException
     {
@@ -189,27 +185,6 @@
         assertFalse( "Check not included", containsMetadata( metadataPaths, metadata ) );
     }
 
-    private boolean containsMetadata( List metadataPaths, RepositoryMetadata metadata )
-    {
-        for ( Iterator i = metadataPaths.iterator(); i.hasNext(); )
-        {
-            RepositoryMetadata m = (RepositoryMetadata) i.next();
-
-            if ( m.getGroupId().equals( metadata.getGroupId() ) )
-            {
-                if ( m.getArtifactId() == null && metadata.getArtifactId() == null )
-                {
-                    return true;
-                }
-                else if ( m.getArtifactId() != null && m.getArtifactId().equals( metadata.getArtifactId() ) )
-                {
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-
     public void testNotUpdatedInRepository()
         throws ComponentLookupException, DiscovererException, IOException
     {
@@ -298,6 +273,7 @@
             new ArtifactRepositoryMetadata( createArtifact( "org.apache.maven.update", "test-updated" ) );
         assertTrue( "Check included", containsMetadata( metadataPaths, metadata ) );
     }
+*/
 
     protected Artifact createArtifact( String groupId, String artifactId )
     {
@@ -307,5 +283,26 @@
     private Artifact createArtifact( String groupId, String artifactId, String version )
     {
         return factory.createArtifact( groupId, artifactId, version, null, "jar" );
+    }
+
+    private boolean containsMetadata( List metadataPaths, RepositoryMetadata metadata )
+    {
+        for ( Iterator i = metadataPaths.iterator(); i.hasNext(); )
+        {
+            RepositoryMetadata m = (RepositoryMetadata) i.next();
+
+            if ( m.getGroupId().equals( metadata.getGroupId() ) )
+            {
+                if ( m.getArtifactId() == null && metadata.getArtifactId() == null )
+                {
+                    return true;
+                }
+                else if ( m.getArtifactId() != null && m.getArtifactId().equals( metadata.getArtifactId() ) )
+                {
+                    return true;
+                }
+            }
+        }
+        return false;
     }
 }

Modified: maven/archiva/trunk/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/LegacyArtifactDiscovererTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/LegacyArtifactDiscovererTest.java?view=diff&rev=439935&r1=439934&r2=439935
==============================================================================
--- maven/archiva/trunk/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/LegacyArtifactDiscovererTest.java (original)
+++ maven/archiva/trunk/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/LegacyArtifactDiscovererTest.java Sun Sep  3 22:34:42 2006
@@ -16,6 +16,8 @@
  * limitations under the License.
  */
 
+import org.apache.maven.archiva.discoverer.filter.AcceptAllArtifactFilter;
+import org.apache.maven.archiva.discoverer.filter.SnapshotArtifactFilter;
 import org.apache.maven.artifact.Artifact;
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 
@@ -49,7 +51,7 @@
     public void testDefaultExcludes()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, false );
+        List artifacts = discoverArtifacts();
         assertNotNull( "Check artifacts not null", artifacts );
         boolean found = false;
         for ( Iterator i = discoverer.getExcludedPathsIterator(); i.hasNext() && !found; )
@@ -76,7 +78,7 @@
     public void testStandardExcludes()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, false );
+        List artifacts = discoverArtifacts();
         assertNotNull( "Check artifacts not null", artifacts );
         boolean found = false;
         for ( Iterator i = discoverer.getExcludedPathsIterator(); i.hasNext() && !found; )
@@ -103,7 +105,7 @@
     public void testBlacklistedExclude()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, JAVAX_SQL_BLACKLIST, false );
+        List artifacts = discoverArtifactsWithBlacklist();
         assertNotNull( "Check artifacts not null", artifacts );
         boolean found = false;
         for ( Iterator i = discoverer.getExcludedPathsIterator(); i.hasNext() && !found; )
@@ -127,7 +129,7 @@
     public void testKickoutWithShortPath()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, false );
+        List artifacts = discoverArtifacts();
         assertNotNull( "Check artifacts not null", artifacts );
         boolean found = false;
         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
@@ -155,7 +157,7 @@
     public void testKickoutWithLongPath()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, false );
+        List artifacts = discoverArtifacts();
         assertNotNull( "Check artifacts not null", artifacts );
         boolean found = false;
         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
@@ -183,7 +185,7 @@
     public void testKickoutWithInvalidType()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, false );
+        List artifacts = discoverArtifacts();
         assertNotNull( "Check artifacts not null", artifacts );
         boolean found = false;
         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
@@ -211,7 +213,7 @@
     public void testKickoutWithNoExtension()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, false );
+        List artifacts = discoverArtifacts();
         assertNotNull( "Check artifacts not null", artifacts );
         boolean found = false;
         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
@@ -239,7 +241,7 @@
     public void testKickoutWithWrongExtension()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, false );
+        List artifacts = discoverArtifacts();
         assertNotNull( "Check artifacts not null", artifacts );
         boolean found = false;
         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
@@ -267,7 +269,7 @@
     public void testKickoutWithNoVersion()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, false );
+        List artifacts = discoverArtifacts();
         assertNotNull( "Check artifacts not null", artifacts );
         boolean found = false;
         for ( Iterator i = discoverer.getKickedOutPathsIterator(); i.hasNext() && !found; )
@@ -294,7 +296,7 @@
     public void testInclusion()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, true );
+        List artifacts = discoverArtifactsWithSnapshots();
         assertNotNull( "Check artifacts not null", artifacts );
 
         assertTrue( "Check normal included",
@@ -304,7 +306,7 @@
     public void testTextualVersion()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, true );
+        List artifacts = discoverArtifactsWithSnapshots();
         assertNotNull( "Check artifacts not null", artifacts );
 
         assertTrue( "Check normal included",
@@ -314,7 +316,7 @@
     public void testArtifactWithClassifier()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, true );
+        List artifacts = discoverArtifactsWithSnapshots();
         assertNotNull( "Check artifacts not null", artifacts );
 
         assertTrue( "Check normal included",
@@ -324,7 +326,7 @@
     public void testJavaSourcesInclusion()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, true );
+        List artifacts = discoverArtifactsWithSnapshots();
         assertNotNull( "Check artifacts not null", artifacts );
 
         assertTrue( "Check normal included", artifacts.contains(
@@ -334,7 +336,7 @@
     public void testDistributionInclusion()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, true );
+        List artifacts = discoverArtifactsWithSnapshots();
         assertNotNull( "Check artifacts not null", artifacts );
 
         assertTrue( "Check zip included",
@@ -347,7 +349,7 @@
     public void testSnapshotInclusion()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, true );
+        List artifacts = discoverArtifactsWithSnapshots();
         assertNotNull( "Check artifacts not null", artifacts );
 
         assertTrue( "Check normal included", artifacts.contains( createArtifact( "javax.sql", "jdbc", "2.0" ) ) );
@@ -358,7 +360,7 @@
     public void testSnapshotExclusion()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, false );
+        List artifacts = discoverArtifacts();
         assertNotNull( "Check artifacts not null", artifacts );
 
         assertTrue( "Check normal included", artifacts.contains( createArtifact( "javax.sql", "jdbc", "2.0" ) ) );
@@ -369,7 +371,7 @@
     public void testFileSet()
         throws DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, true );
+        List artifacts = discoverArtifactsWithSnapshots();
         assertNotNull( "Check artifacts not null", artifacts );
 
         for ( Iterator i = artifacts.iterator(); i.hasNext(); )
@@ -382,7 +384,7 @@
     public void testRepositorySet()
         throws MalformedURLException, DiscovererException
     {
-        List artifacts = discoverer.discoverArtifacts( repository, TEST_OPERATION, null, true );
+        List artifacts = discoverArtifactsWithSnapshots();
         assertNotNull( "Check artifacts not null", artifacts );
 
         String url = repository.getUrl();
@@ -478,5 +480,23 @@
         Artifact artifact = discoverer.buildArtifact( testPath );
 
         assertEquals( createArtifact( "javax.sql", "jdbc", "2.0" ), artifact );
+    }
+
+    private List discoverArtifacts()
+        throws DiscovererException
+    {
+        return discoverer.discoverArtifacts( repository, null, new SnapshotArtifactFilter() );
+    }
+
+    private List discoverArtifactsWithBlacklist()
+        throws DiscovererException
+    {
+        return discoverer.discoverArtifacts( repository, JAVAX_SQL_BLACKLIST, new SnapshotArtifactFilter() );
+    }
+
+    private List discoverArtifactsWithSnapshots()
+        throws DiscovererException
+    {
+        return discoverer.discoverArtifacts( repository, null, new AcceptAllArtifactFilter() );
     }
 }

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=439935&r1=439934&r2=439935
==============================================================================
--- 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 Sun Sep  3 22:34:42 2006
@@ -17,6 +17,7 @@
  */
 
 import org.apache.maven.archiva.indexer.query.Query;
+import org.apache.maven.archiva.indexer.record.RepositoryIndexRecordFactory;
 
 import java.util.Collection;
 import java.util.List;
@@ -32,7 +33,7 @@
      * Indexes the artifacts found within the specified list of index records. If the artifacts are already in the
      * repository they are updated.
      *
-     * @param records the artifacts to index
+     * @param records the records to index
      * @throws RepositoryIndexException if there is a problem indexing the records
      */
     void indexRecords( Collection records )
@@ -65,5 +66,35 @@
      * @throws RepositoryIndexException if there is a problem removing the record
      */
     void deleteRecords( Collection records )
+        throws RepositoryIndexException;
+
+    /**
+     * Retrieve all records in the index.
+     *
+     * @return the records
+     * @throws RepositoryIndexSearchException if there was an error searching the index
+     */
+    Collection getAllRecords()
+        throws RepositoryIndexSearchException;
+
+    /**
+     * Retrieve all primary keys of records in the index.
+     *
+     * @return the keys
+     * @throws RepositoryIndexSearchException if there was an error searching the index
+     */
+    Collection getAllRecordKeys()
+        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
+     * created and disposed of on the fly.
+     *
+     * @param artifacts the artifacts to index
+     * @param factory   the artifact to record factory
+     * @throws RepositoryIndexException if there is a problem indexing the artifacts
+     */
+    void indexArtifacts( List artifacts, RepositoryIndexRecordFactory factory )
         throws RepositoryIndexException;
 }