]> source.dussan.org Git - archiva.git/commitdiff
[MRM-746] unable to include *.xml in artifacts list as it picks up maven-metadata.xml
authorBrett Porter <brett@apache.org>
Tue, 25 Mar 2008 14:01:23 +0000 (14:01 +0000)
committerBrett Porter <brett@apache.org>
Tue, 25 Mar 2008 14:01:23 +0000 (14:01 +0000)
- consolidate operations that checked if something was an artifact into FileTypes
- add exclusions for the metadata and supporting files to consumers
- add tests
Merged from: r640793

git-svn-id: https://svn.apache.org/repos/asf/maven/archiva/trunk@640819 13f79535-47bb-0310-9956-ffa450edef68

24 files changed:
archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/FileTypes.java
archiva-base/archiva-configuration/src/test/java/org/apache/maven/archiva/configuration/FileTypesTest.java [new file with mode: 0644]
archiva-base/archiva-consumers/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/AbstractMonitoredConsumer.java
archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/ArtifactMissingChecksumsConsumer.java
archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/MetadataUpdaterConsumer.java
archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumer.java
archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/AbstractArtifactConsumerTest.java [new file with mode: 0644]
archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/ArtifactMissingChecksumsConsumerTest.java [new file with mode: 0644]
archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/MetadataUpdateConsumerTest.java [new file with mode: 0644]
archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/DaysOldRepositoryPurgeTest.java
archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumerTest.java
archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumerTest.xml
archiva-base/archiva-consumers/archiva-database-consumers/pom.xml
archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/ArtifactUpdateDatabaseConsumer.java
archiva-base/archiva-consumers/archiva-database-consumers/src/test/java/org/apache/maven/archiva/consumers/database/ArtifactUpdateDatabaseConsumerTest.java [new file with mode: 0644]
archiva-base/archiva-consumers/archiva-database-consumers/src/test/resources/org/apache/maven/archiva/consumers/database/ArtifactUpdateDatabaseConsumerTest.xml [new file with mode: 0644]
archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/ManagedDefaultRepositoryContent.java
archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/ManagedLegacyRepositoryContent.java
archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/RepositoryRequest.java
archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/MetadataTools.java
archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/RepositoryRequestTest.java
archiva-cli/src/main/java/org/apache/maven/archiva/cli/ArtifactCountConsumer.java
archiva-reporting/archiva-artifact-reports/src/main/java/org/apache/maven/archiva/reporting/artifact/DuplicateArtifactsConsumer.java
archiva-reporting/archiva-artifact-reports/src/main/java/org/apache/maven/archiva/reporting/artifact/LocationArtifactsConsumer.java

index 486e8f4951f081ffb95164cca2ae19865d6b4c07..2f97b1db121b4c73669e5b825c4d68484d4446b5 100644 (file)
@@ -34,8 +34,11 @@ import org.apache.maven.archiva.configuration.functors.FiletypeSelectionPredicat
 import org.apache.maven.archiva.configuration.io.registry.ConfigurationRegistryReader;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
+import org.codehaus.plexus.registry.Registry;
 import org.codehaus.plexus.registry.RegistryException;
+import org.codehaus.plexus.registry.RegistryListener;
 import org.codehaus.plexus.registry.commons.CommonsConfigurationRegistry;
+import org.codehaus.plexus.util.SelectorUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -48,7 +51,7 @@ import org.slf4j.LoggerFactory;
  * @plexus.component role="org.apache.maven.archiva.configuration.FileTypes"
  */
 public class FileTypes
-    implements Initializable
+    implements Initializable, RegistryListener
 {
     private Logger log = LoggerFactory.getLogger(FileTypes.class);
     
@@ -70,11 +73,18 @@ public class FileTypes
      */
     private Map<String, List<String>> defaultTypeMap = new HashMap<String, List<String>>();
 
+    private List<String> artifactPatterns;
+
+    public void setArchivaConfiguration( ArchivaConfiguration archivaConfiguration )
+    {
+        this.archivaConfiguration = archivaConfiguration;
+    }
+
     /**
      * <p>
      * Get the list of patterns for a specified filetype.
      * </p>
-     * 
+     *
      * <p>
      * You will always get a list.  In this order.
      *   <ul>
@@ -83,7 +93,7 @@ public class FileTypes
      *     <li>A single item list of <code>"**<span>/</span>*"</code></li>
      *   </ul>
      * </p>
-     * 
+     *
      * @param id the id to lookup.
      * @return the list of patterns.
      */
@@ -109,11 +119,33 @@ public class FileTypes
         return defaultPatterns;
     }
 
+    public synchronized boolean matchesArtifactPattern( String relativePath )
+    {
+        // Correct the slash pattern.
+        relativePath = relativePath.replace( '\\', '/' );
+
+        if ( artifactPatterns == null )
+        {
+            artifactPatterns = getFileTypePatterns( ARTIFACTS );
+        }
+        
+        for ( String pattern : artifactPatterns )
+        {
+            if ( SelectorUtils.matchPath( pattern, relativePath, false ) )
+            {
+                // Found match
+                return true;
+            }
+        }
+
+        // No match.
+        return false;
+    }
+
     public void initialize()
         throws InitializationException
     {
-        /* Initialize Default Type Map */
-        defaultTypeMap.clear();
+        // TODO: why is this done by hand?
 
         String errMsg = "Unable to load default archiva configuration for FileTypes: ";
         
@@ -132,19 +164,7 @@ public class FileTypes
             ConfigurationRegistryReader configReader = new ConfigurationRegistryReader();
             Configuration defaultConfig = configReader.read( commonsRegistry );
 
-            // Store the default file type declaration.
-            List<FileType> filetypes = defaultConfig.getRepositoryScanning().getFileTypes();
-            for ( FileType filetype : filetypes )
-            {
-                List<String> patterns = defaultTypeMap.get( filetype.getId() );
-                if ( patterns == null )
-                {
-                    patterns = new ArrayList<String>();
-                }
-                patterns.addAll( filetype.getPatterns() );
-
-                defaultTypeMap.put( filetype.getId(), patterns );
-            }
+            initialiseTypeMap( defaultConfig );
         }
         catch ( RegistryException e )
         {
@@ -166,5 +186,41 @@ public class FileTypes
         {
             throw new InitializationException( errMsg + e.getMessage(), e );
         }
+
+        this.archivaConfiguration.addChangeListener( this );
+    }
+
+    private void initialiseTypeMap( Configuration configuration )
+    {
+        defaultTypeMap.clear();
+
+        // Store the default file type declaration.
+        List<FileType> filetypes = configuration.getRepositoryScanning().getFileTypes();
+        for ( FileType filetype : filetypes )
+        {
+            List<String> patterns = defaultTypeMap.get( filetype.getId() );
+            if ( patterns == null )
+            {
+                patterns = new ArrayList<String>();
+            }
+            patterns.addAll( filetype.getPatterns() );
+
+            defaultTypeMap.put( filetype.getId(), patterns );
+        }
+    }
+
+    public void afterConfigurationChange( Registry registry, String propertyName, Object propertyValue )
+    {
+        if ( propertyName.contains( "fileType" ) )
+        {
+            artifactPatterns = null;
+
+            initialiseTypeMap( archivaConfiguration.getConfiguration() );
+        }
+    }
+
+    public void beforeConfigurationChange( Registry registry, String propertyName, Object propertyValue )
+    {
+        /* nothing to do */
     }
 }
diff --git a/archiva-base/archiva-configuration/src/test/java/org/apache/maven/archiva/configuration/FileTypesTest.java b/archiva-base/archiva-configuration/src/test/java/org/apache/maven/archiva/configuration/FileTypesTest.java
new file mode 100644 (file)
index 0000000..6c5df3b
--- /dev/null
@@ -0,0 +1,55 @@
+package org.apache.maven.archiva.configuration;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.codehaus.plexus.spring.PlexusInSpringTestCase;
+
+public class FileTypesTest
+    extends PlexusInSpringTestCase
+{
+    private FileTypes filetypes;
+
+    protected void setUp()
+        throws Exception
+    {
+        super.setUp();
+
+        filetypes = (FileTypes) lookup( FileTypes.class );
+    }
+
+    public void testIsArtifact()
+    {
+        assertTrue( filetypes.matchesArtifactPattern( "test.maven-arch/poms/test-arch-2.0.3-SNAPSHOT.pom" ) );
+        assertTrue( filetypes.matchesArtifactPattern(
+            "test/maven-arch/test-arch/2.0.3-SNAPSHOT/test-arch-2.0.3-SNAPSHOT.jar" ) );
+        assertTrue( filetypes.matchesArtifactPattern( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0-bin.tar.gz" ) );
+
+        assertFalse(
+            filetypes.matchesArtifactPattern( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0-bin.tar.gz.sha1" ) );
+        assertFalse(
+            filetypes.matchesArtifactPattern( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0-bin.tar.gz.md5" ) );
+        assertFalse(
+            filetypes.matchesArtifactPattern( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0-bin.tar.gz.asc" ) );
+        assertFalse(
+            filetypes.matchesArtifactPattern( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0-bin.tar.gz.pgp" ) );
+        assertFalse( filetypes.matchesArtifactPattern( "org/apache/derby/derby/10.2.2.0/maven-metadata.xml" ) );
+        assertFalse( filetypes.matchesArtifactPattern( "org/apache/derby/derby/maven-metadata.xml" ) );
+    }
+}
index b264b8982a512d348a689231a31e4b7f5e5792b7..5301e8191bcfa21ce9fafe1ec2aa092486302a87 100644 (file)
@@ -19,8 +19,10 @@ package org.apache.maven.archiva.consumers;
  * under the License.
  */
 
+import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Set;
 
 /**
@@ -34,6 +36,15 @@ public abstract class AbstractMonitoredConsumer
 {
     private Set<ConsumerMonitor> monitors = new HashSet<ConsumerMonitor>();
 
+    /**
+     * Default exclusions from artifact consumers that are using the file types. Note that this is simplistic in the
+     * case of the support files (based on extension) as it is elsewhere - it may be better to match these to actual
+     * artifacts and exclude later during scanning.
+     */
+    private static final List<String> DEFAULT_EXCLUSIONS = Arrays.asList( "**/maven-metadata.xml",
+                                                                          "**/maven-metadata-*.xml", "**/*.sha1",
+                                                                          "**/*.asc", "**/*.md5", "**/*.pgp" );
+
     public void addConsumerMonitor( ConsumerMonitor monitor )
     {
         monitors.add( monitor );
@@ -96,4 +107,9 @@ public abstract class AbstractMonitoredConsumer
     {
         return false;
     }
+
+    protected List<String> getDefaultArtifactExclusions()
+    {
+        return DEFAULT_EXCLUSIONS;
+    }
 }
index 6b56549005b4add0f53e34695b0b3c4bd86d77da..93f1c63be60196babb317a3cc3b552f4477347b5 100644 (file)
@@ -126,7 +126,7 @@ public class ArtifactMissingChecksumsConsumer
 
     public List<String> getExcludes()
     {
-        return null;
+        return getDefaultArtifactExclusions();
     }
 
     public List<String> getIncludes()
index 30722feeb60eceefa3c0fc9fddb366ca775dd787..43698fa9c552e81c57a1d59fba6c595f9e6cf253 100644 (file)
@@ -149,7 +149,7 @@ public class MetadataUpdaterConsumer
 
     public List<String> getExcludes()
     {
-        return null;
+        return getDefaultArtifactExclusions();
     }
 
     public List<String> getIncludes()
diff --git a/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/AbstractArtifactConsumerTest.java b/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/AbstractArtifactConsumerTest.java
new file mode 100644 (file)
index 0000000..59cffad
--- /dev/null
@@ -0,0 +1,76 @@
+package org.apache.maven.archiva.consumers.core;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.archiva.common.utils.BaseFile;
+import org.apache.maven.archiva.configuration.ArchivaConfiguration;
+import org.apache.maven.archiva.configuration.FileType;
+import org.apache.maven.archiva.configuration.FileTypes;
+import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer;
+import org.apache.maven.archiva.repository.scanner.functors.ConsumerWantsFilePredicate;
+import org.codehaus.plexus.spring.PlexusInSpringTestCase;
+
+import java.io.File;
+
+public abstract class AbstractArtifactConsumerTest
+    extends PlexusInSpringTestCase
+{
+    private File repoLocation;
+
+    protected KnownRepositoryContentConsumer consumer;
+
+    protected void setUp()
+        throws Exception
+    {
+        super.setUp();
+
+        ArchivaConfiguration archivaConfiguration = (ArchivaConfiguration) lookup( ArchivaConfiguration.ROLE );
+        FileType fileType =
+            (FileType) archivaConfiguration.getConfiguration().getRepositoryScanning().getFileTypes().get( 0 );
+        assertEquals( FileTypes.ARTIFACTS, fileType.getId() );
+        fileType.addPattern( "**/*.xml" );
+
+        repoLocation = getTestFile( "target/test-" + getName() + "/test-repo" );
+    }
+
+    public void testConsumption()
+    {
+        File localFile =
+            new File( repoLocation, "org/apache/maven/plugins/maven-plugin-plugin/2.4.1/maven-metadata.xml" );
+
+        ConsumerWantsFilePredicate predicate = new ConsumerWantsFilePredicate();
+        BaseFile baseFile = new BaseFile( repoLocation, localFile );
+        predicate.setBasefile( baseFile );
+
+        assertFalse( predicate.evaluate( consumer ) );
+    }
+
+    public void testConsumptionOfOtherMetadata()
+    {
+        File localFile =
+            new File( repoLocation, "org/apache/maven/plugins/maven-plugin-plugin/2.4.1/maven-metadata-central.xml" );
+
+        ConsumerWantsFilePredicate predicate = new ConsumerWantsFilePredicate();
+        BaseFile baseFile = new BaseFile( repoLocation, localFile );
+        predicate.setBasefile( baseFile );
+
+        assertFalse( predicate.evaluate( consumer ) );
+    }
+}
diff --git a/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/ArtifactMissingChecksumsConsumerTest.java b/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/ArtifactMissingChecksumsConsumerTest.java
new file mode 100644 (file)
index 0000000..42f84d3
--- /dev/null
@@ -0,0 +1,35 @@
+package org.apache.maven.archiva.consumers.core;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.archiva.consumers.KnownRepositoryContentConsumer;
+
+public class ArtifactMissingChecksumsConsumerTest
+    extends AbstractArtifactConsumerTest
+{
+    protected void setUp()
+        throws Exception
+    {
+        super.setUp();
+
+        consumer = (ArtifactMissingChecksumsConsumer) lookup( KnownRepositoryContentConsumer.class.getName(),
+                                                              "create-missing-checksums" );
+    }
+}
diff --git a/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/MetadataUpdateConsumerTest.java b/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/MetadataUpdateConsumerTest.java
new file mode 100644 (file)
index 0000000..b97025f
--- /dev/null
@@ -0,0 +1,35 @@
+package org.apache.maven.archiva.consumers.core;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.archiva.consumers.KnownRepositoryContentConsumer;
+
+public class MetadataUpdateConsumerTest
+    extends AbstractArtifactConsumerTest
+{
+    protected void setUp()
+        throws Exception
+    {
+        super.setUp();
+
+        consumer = (KnownRepositoryContentConsumer) lookup( KnownRepositoryContentConsumer.class.getName(),
+                                                            "metadata-updater" );
+    }
+}
\ No newline at end of file
index 9ed788f9f9558164a03fee4c347c86438fc5181b..b887b1f11480c3fe6cd385b1ac45d7d703a94e0e 100644 (file)
@@ -19,6 +19,10 @@ package org.apache.maven.archiva.consumers.core.repository;
  * under the License.
  */
 
+import org.apache.commons.lang.time.DateUtils;
+import org.apache.maven.archiva.consumers.core.repository.stubs.LuceneRepositoryContentIndexStub;
+import org.apache.maven.archiva.indexer.RepositoryContentIndex;
+
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
@@ -27,10 +31,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.commons.lang.time.DateUtils;
-import org.apache.maven.archiva.consumers.core.repository.stubs.LuceneRepositoryContentIndexStub;
-import org.apache.maven.archiva.indexer.RepositoryContentIndex;
-
 /**
  * @author <a href="mailto:oching@apache.org">Maria Odea Ching</a>
  */
@@ -270,5 +270,5 @@ public class DaysOldRepositoryPurgeTest
         versions.add( "2.2-SNAPSHOT" );
 
         populateDb( "org.apache.maven.plugins", "maven-install-plugin", versions );
-    }    
+    }
 }
index 5073b74e314e5c10335d74c0b1240c46e48f4328..46b290e2dda27b46b8d04613b4bfb655bf23e91c 100644 (file)
@@ -20,12 +20,16 @@ package org.apache.maven.archiva.consumers.core.repository;
  */
 
 import org.apache.commons.io.FileUtils;
+import org.apache.maven.archiva.common.utils.BaseFile;
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
 import org.apache.maven.archiva.configuration.Configuration;
+import org.apache.maven.archiva.configuration.FileType;
+import org.apache.maven.archiva.configuration.FileTypes;
 import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
 import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer;
 import org.apache.maven.archiva.consumers.core.repository.stubs.LuceneRepositoryContentIndexFactoryStub;
 import org.apache.maven.archiva.database.ArchivaDatabaseException;
+import org.apache.maven.archiva.repository.scanner.functors.ConsumerWantsFilePredicate;
 import org.custommonkey.xmlunit.XMLAssert;
 
 import java.io.File;
@@ -38,6 +42,46 @@ import java.util.List;
 public class RepositoryPurgeConsumerTest
     extends AbstractRepositoryPurgeTest
 {
+    public void testConsumption()
+        throws Exception
+    {
+        assertNotConsumed( "org/apache/maven/plugins/maven-plugin-plugin/2.4.1/maven-metadata.xml" );
+    }
+
+    public void testConsumptionOfOtherMetadata()
+        throws Exception
+    {
+        assertNotConsumed( "org/apache/maven/plugins/maven-plugin-plugin/2.4.1/maven-metadata-central.xml" );
+    }
+
+    private void assertNotConsumed( String path )
+        throws Exception
+    {
+        ArchivaConfiguration archivaConfiguration = (ArchivaConfiguration) lookup( ArchivaConfiguration.ROLE );
+        FileType fileType =
+            (FileType) archivaConfiguration.getConfiguration().getRepositoryScanning().getFileTypes().get( 0 );
+        assertEquals( FileTypes.ARTIFACTS, fileType.getId() );
+        fileType.addPattern( "**/*.xml" );
+
+        // trigger reload
+        FileTypes fileTypes = (FileTypes) lookup( FileTypes.class );
+        fileTypes.afterConfigurationChange( null, "repositoryScanning.fileTypes", null );
+
+        KnownRepositoryContentConsumer repoPurgeConsumer =
+            (KnownRepositoryContentConsumer) lookup( KnownRepositoryContentConsumer.class, "repository-purge" );
+
+        File repoLocation = getTestFile( "target/test-" + getName() + "/test-repo" );
+
+        File localFile =
+            new File( repoLocation, path );
+
+        ConsumerWantsFilePredicate predicate = new ConsumerWantsFilePredicate();
+        BaseFile baseFile = new BaseFile( repoLocation, localFile );
+        predicate.setBasefile( baseFile );
+
+        assertFalse( predicate.evaluate( repoPurgeConsumer ) );
+    }
+
     private void setLastModified( String path )
     {
         File dir = new File( path );
@@ -168,7 +212,7 @@ public class RepositoryPurgeConsumerTest
 
     /**
      * Test the snapshot clean consumer on a repository set to NOT clean/delete snapshots based on released versions.
-     * 
+     *
      * @throws Exception
      */
     public void testReleasedSnapshotsWereNotCleaned()
index 8ccdc3b44488c93dbff47e8ddf882b0ffa5bee05..52e286e66a8231f670d897d54feced057e38043a 100644 (file)
@@ -44,6 +44,7 @@
         </requirement>
         <requirement>
           <role>org.apache.maven.archiva.configuration.FileTypes</role>
+          <role-hint>retention-count</role-hint>
         </requirement>
         <requirement>
           <role>org.apache.maven.archiva.indexer.RepositoryContentIndexFactory</role>
     </component>
     <component>
       <role>org.apache.maven.archiva.configuration.FileTypes</role>
+      <role-hint>retention-count</role-hint>
       <implementation>org.apache.maven.archiva.configuration.FileTypes</implementation>
       <requirements>
         <requirement>
         </requirement>
         <requirement>
           <role>org.apache.maven.archiva.configuration.FileTypes</role>
+          <role-hint>days-old</role-hint>
         </requirement>
         <requirement>
           <role>org.apache.maven.archiva.indexer.RepositoryContentIndexFactory</role>
     </component>
     <component>
       <role>org.apache.maven.archiva.configuration.FileTypes</role>
+      <role-hint>days-old</role-hint>
       <implementation>org.apache.maven.archiva.configuration.FileTypes</implementation>
       <requirements>
         <requirement>
index efc4dc5e1eb3a585f42cbae28040164e3404c7c5..643910a54521ebad145b1c19a20fe508e994ea4f 100644 (file)
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-digest</artifactId>
     </dependency>
+    <dependency>
+      <groupId>hsqldb</groupId>
+      <artifactId>hsqldb</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 </project>
diff --git a/archiva-base/archiva-consumers/archiva-database-consumers/src/test/java/org/apache/maven/archiva/consumers/database/ArtifactUpdateDatabaseConsumerTest.java b/archiva-base/archiva-consumers/archiva-database-consumers/src/test/java/org/apache/maven/archiva/consumers/database/ArtifactUpdateDatabaseConsumerTest.java
new file mode 100644 (file)
index 0000000..19b07ac
--- /dev/null
@@ -0,0 +1,79 @@
+package org.apache.maven.archiva.consumers.database;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.archiva.common.utils.BaseFile;
+import org.apache.maven.archiva.configuration.ArchivaConfiguration;
+import org.apache.maven.archiva.configuration.FileType;
+import org.apache.maven.archiva.configuration.FileTypes;
+import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer;
+import org.apache.maven.archiva.repository.scanner.functors.ConsumerWantsFilePredicate;
+import org.codehaus.plexus.spring.PlexusInSpringTestCase;
+
+import java.io.File;
+
+public class ArtifactUpdateDatabaseConsumerTest
+    extends PlexusInSpringTestCase
+{
+    private File repoLocation;
+
+    protected KnownRepositoryContentConsumer consumer;
+
+    protected void setUp()
+        throws Exception
+    {
+        super.setUp();
+
+        ArchivaConfiguration archivaConfiguration = (ArchivaConfiguration) lookup( ArchivaConfiguration.ROLE );
+        FileType fileType =
+            (FileType) archivaConfiguration.getConfiguration().getRepositoryScanning().getFileTypes().get( 0 );
+        assertEquals( FileTypes.ARTIFACTS, fileType.getId() );
+        fileType.addPattern( "**/*.xml" );
+
+        repoLocation = getTestFile( "target/test-" + getName() + "/test-repo" );
+
+        consumer =
+            (KnownRepositoryContentConsumer) lookup( KnownRepositoryContentConsumer.class, "update-db-artifact" );
+    }
+
+    public void testConsumption()
+    {
+        File localFile =
+            new File( repoLocation, "org/apache/maven/plugins/maven-plugin-plugin/2.4.1/maven-metadata.xml" );
+
+        ConsumerWantsFilePredicate predicate = new ConsumerWantsFilePredicate();
+        BaseFile baseFile = new BaseFile( repoLocation, localFile );
+        predicate.setBasefile( baseFile );
+
+        assertFalse( predicate.evaluate( consumer ) );
+    }
+
+    public void testConsumptionOfOtherMetadata()
+    {
+        File localFile =
+            new File( repoLocation, "org/apache/maven/plugins/maven-plugin-plugin/2.4.1/maven-metadata-central.xml" );
+
+        ConsumerWantsFilePredicate predicate = new ConsumerWantsFilePredicate();
+        BaseFile baseFile = new BaseFile( repoLocation, localFile );
+        predicate.setBasefile( baseFile );
+
+        assertFalse( predicate.evaluate( consumer ) );
+    }
+}
diff --git a/archiva-base/archiva-consumers/archiva-database-consumers/src/test/resources/org/apache/maven/archiva/consumers/database/ArtifactUpdateDatabaseConsumerTest.xml b/archiva-base/archiva-consumers/archiva-database-consumers/src/test/resources/org/apache/maven/archiva/consumers/database/ArtifactUpdateDatabaseConsumerTest.xml
new file mode 100644 (file)
index 0000000..801d957
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you 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.
+  -->
+
+<component-set>
+  <components>
+    <!-- JdoAccess -->
+    <component>
+      <role>org.apache.maven.archiva.database.jdo.JdoAccess</role>
+      <role-hint>archiva</role-hint>
+      <implementation>org.apache.maven.archiva.database.jdo.JdoAccess</implementation>
+      <requirements>
+        <requirement>
+          <role>org.codehaus.plexus.jdo.JdoFactory</role>
+          <role-hint>archiva</role-hint>
+        </requirement>
+      </requirements>
+    </component>
+
+    <!-- JDO Factory -->
+    <component>
+      <role>org.codehaus.plexus.jdo.JdoFactory</role>
+      <role-hint>archiva</role-hint>
+      <implementation>org.codehaus.plexus.jdo.DefaultConfigurableJdoFactory</implementation>
+      <configuration>
+        <persistenceManagerFactoryClass>org.jpox.PersistenceManagerFactoryImpl</persistenceManagerFactoryClass>
+        <driverName>org.hsqldb.jdbcDriver</driverName>
+        <userName>sa</userName>
+        <password></password>
+        <url>jdbc:hsqldb:mem:testdb</url>
+        <otherProperties>
+          <property>
+            <name>javax.jdo.PersistenceManagerFactoryClass</name>
+            <value>org.jpox.PersistenceManagerFactoryImpl</value>
+          </property>
+        </otherProperties>
+      </configuration>
+    </component>
+  </components>
+</component-set>
index 9de5064e13abdab85e56e46d7b3b381b35d07e08..dcaafd1147ac68289d32d4b715011810058be5b4 100644 (file)
@@ -30,16 +30,10 @@ import org.apache.maven.archiva.model.VersionedReference;
 import org.apache.maven.archiva.repository.ContentNotFoundException;
 import org.apache.maven.archiva.repository.ManagedRepositoryContent;
 import org.apache.maven.archiva.repository.layout.LayoutException;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
-import org.codehaus.plexus.util.SelectorUtils;
 
 import java.io.File;
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
 import java.util.Set;
 
 /**
@@ -55,7 +49,7 @@ import java.util.Set;
  */
 public class ManagedDefaultRepositoryContent
     extends AbstractDefaultRepositoryContent
-    implements ManagedRepositoryContent, Initializable
+    implements ManagedRepositoryContent
 {
     /**
      * @plexus.requirement
@@ -64,8 +58,6 @@ public class ManagedDefaultRepositoryContent
 
     private ManagedRepositoryConfiguration repository;
 
-    private List<String> artifactPatterns;
-
     public void deleteVersion( VersionedReference reference )
         throws ContentNotFoundException
     {
@@ -123,7 +115,7 @@ public class ManagedDefaultRepositoryContent
 
             String relativePath = PathUtil.getRelative( repository.getLocation(), repoFiles[i] );
 
-            if ( matchesArtifactPattern( relativePath ) )
+            if ( filetypes.matchesArtifactPattern( relativePath ) )
             {
                 ArtifactReference artifact = toArtifactReference( relativePath );
                 
@@ -250,7 +242,7 @@ public class ManagedDefaultRepositoryContent
 
             String relativePath = PathUtil.getRelative( repository.getLocation(), repoFiles[i] );
 
-            if ( matchesArtifactPattern( relativePath ) )
+            if ( filetypes.matchesArtifactPattern( relativePath ) )
             {
                 ArtifactReference artifact = toArtifactReference( relativePath );
 
@@ -300,13 +292,6 @@ public class ManagedDefaultRepositoryContent
         }
     }
 
-    public void initialize()
-        throws InitializationException
-    {
-        this.artifactPatterns = new ArrayList<String>();
-        initVariables();
-    }
-
     public void setRepository( ManagedRepositoryConfiguration repository )
     {
         this.repository = repository;
@@ -386,7 +371,7 @@ public class ManagedDefaultRepositoryContent
 
             String relativePath = PathUtil.getRelative( repository.getLocation(), repoFiles[i] );
 
-            if ( matchesArtifactPattern( relativePath ) )
+            if ( filetypes.matchesArtifactPattern( relativePath ) )
             {
                 ArtifactReference artifact = toArtifactReference( relativePath );
 
@@ -410,35 +395,4 @@ public class ManagedDefaultRepositoryContent
             return false;
         }
     }
-
-    private void initVariables()
-    {
-        synchronized ( this.artifactPatterns )
-        {
-            this.artifactPatterns.clear();
-
-            this.artifactPatterns.addAll( filetypes.getFileTypePatterns( FileTypes.ARTIFACTS ) );
-        }
-    }
-
-    private boolean matchesArtifactPattern( String relativePath )
-    {
-        // Correct the slash pattern.
-        relativePath = relativePath.replace( '\\', '/' );
-
-        Iterator<String> it = this.artifactPatterns.iterator();
-        while ( it.hasNext() )
-        {
-            String pattern = it.next();
-
-            if ( SelectorUtils.matchPath( pattern, relativePath, false ) )
-            {
-                // Found match
-                return true;
-            }
-        }
-
-        // No match.
-        return false;
-    }
 }
index c1817af4c34cc61ee91e86bd4b29fede769633c5..40d3ff117d4f8d2e0d545ecadc88522bfbe3d499 100644 (file)
@@ -31,15 +31,9 @@ import org.apache.maven.archiva.model.VersionedReference;
 import org.apache.maven.archiva.repository.ContentNotFoundException;
 import org.apache.maven.archiva.repository.ManagedRepositoryContent;
 import org.apache.maven.archiva.repository.layout.LayoutException;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
-import org.codehaus.plexus.util.SelectorUtils;
 
 import java.io.File;
-import java.util.ArrayList;
 import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
 import java.util.Set;
 
 /**
@@ -55,7 +49,7 @@ import java.util.Set;
  */
 public class ManagedLegacyRepositoryContent
     extends AbstractLegacyRepositoryContent
-    implements ManagedRepositoryContent, Initializable
+    implements ManagedRepositoryContent
 {
     /**
      * @plexus.requirement
@@ -64,8 +58,6 @@ public class ManagedLegacyRepositoryContent
 
     private ManagedRepositoryConfiguration repository;
 
-    private List<String> artifactPatterns;
-
     public void deleteVersion( VersionedReference reference )
         throws ContentNotFoundException
     {
@@ -115,7 +107,7 @@ public class ManagedLegacyRepositoryContent
 
             String relativePath = PathUtil.getRelative( repository.getLocation(), repoFile );
 
-            if ( matchesArtifactPattern( relativePath ) )
+            if ( filetypes.matchesArtifactPattern( relativePath ) )
             {
                 try
                 {
@@ -321,13 +313,6 @@ public class ManagedLegacyRepositoryContent
         }
     }
 
-    public void initialize()
-        throws InitializationException
-    {
-        this.artifactPatterns = new ArrayList<String>();
-        initVariables();
-    }
-
     public void setRepository( ManagedRepositoryConfiguration repository )
     {
         this.repository = repository;
@@ -386,7 +371,7 @@ public class ManagedLegacyRepositoryContent
 
             String relativePath = PathUtil.getRelative( repository.getLocation(), repoFile );
 
-            if ( matchesArtifactPattern( relativePath ) )
+            if ( filetypes.matchesArtifactPattern( relativePath ) )
             {
                 try
                 {
@@ -417,7 +402,7 @@ public class ManagedLegacyRepositoryContent
 
             String relativePath = PathUtil.getRelative( repository.getLocation(), repoFiles[i] );
 
-            if ( matchesArtifactPattern( relativePath ) )
+            if ( filetypes.matchesArtifactPattern( relativePath ) )
             {
                 try
                 {
@@ -449,7 +434,7 @@ public class ManagedLegacyRepositoryContent
 
             String relativePath = PathUtil.getRelative( repository.getLocation(), repoFiles[i] );
 
-            if ( matchesArtifactPattern( relativePath ) )
+            if ( filetypes.matchesArtifactPattern( relativePath ) )
             {
                 try
                 {
@@ -467,35 +452,4 @@ public class ManagedLegacyRepositoryContent
             }
         }
     }
-
-    private void initVariables()
-    {
-        synchronized ( this.artifactPatterns )
-        {
-            this.artifactPatterns.clear();
-
-            this.artifactPatterns.addAll( filetypes.getFileTypePatterns( FileTypes.ARTIFACTS ) );
-        }
-    }
-
-    private boolean matchesArtifactPattern( String relativePath )
-    {
-        // Correct the slash pattern.
-        relativePath = relativePath.replace( '\\', '/' );
-
-        Iterator<String> it = this.artifactPatterns.iterator();
-        while ( it.hasNext() )
-        {
-            String pattern = it.next();
-
-            if ( SelectorUtils.matchPath( pattern, relativePath, false ) )
-            {
-                // Found match
-                return true;
-            }
-        }
-
-        // No match.
-        return false;
-    }
 }
index d473c16d0347508f42f64d7770af4dd019227b8a..6d28d12f24c30423c782288d342e7166363cbdaf 100644 (file)
@@ -26,15 +26,6 @@ import org.apache.maven.archiva.model.ArtifactReference;
 import org.apache.maven.archiva.repository.ManagedRepositoryContent;
 import org.apache.maven.archiva.repository.layout.LayoutException;
 import org.apache.maven.archiva.repository.metadata.MetadataTools;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
-import org.codehaus.plexus.registry.Registry;
-import org.codehaus.plexus.registry.RegistryListener;
-import org.codehaus.plexus.util.SelectorUtils;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
 
 /**
  * RepositoryRequest is used to determine the type of request that is incoming, and convert it to an appropriate
@@ -47,7 +38,6 @@ import java.util.List;
  *      role="org.apache.maven.archiva.repository.content.RepositoryRequest"
  */
 public class RepositoryRequest
-    implements RegistryListener, Initializable
 {
     /**
      * @plexus.requirement
@@ -69,35 +59,6 @@ public class RepositoryRequest
      */
     private PathParser legacyPathParser;
 
-    private List<String> artifactPatterns;
-
-    /**
-     * Test path to see if it is an artifact being requested (or not).
-     *
-     * @param requestedPath the path to test.
-     * @return true if it is an artifact being requested.
-     */
-    public boolean isArtifact( String requestedPath )
-    {
-        // Correct the slash pattern.
-        String relativePath = requestedPath.replace( '\\', '/' );
-
-        Iterator<String> it = this.artifactPatterns.iterator();
-        while ( it.hasNext() )
-        {
-            String pattern = it.next();
-
-            if ( SelectorUtils.matchPath( pattern, relativePath, false ) )
-            {
-                // Found match
-                return true;
-            }
-        }
-
-        // No match.
-        return false;
-    }
-
     /**
      * Takes an incoming requested path (in "/" format) and gleans the layout
      * and ArtifactReference appropriate for that content.
@@ -282,35 +243,4 @@ public class RepositoryRequest
         String adjustedPath = repository.toPath( ref );
         return adjustedPath + supportfile;
     }
-
-    public void initialize()
-        throws InitializationException
-    {
-        this.artifactPatterns = new ArrayList<String>();
-        initVariables();
-        this.archivaConfiguration.addChangeListener( this );
-    }
-
-    private void initVariables()
-    {
-        synchronized ( this.artifactPatterns )
-        {
-            this.artifactPatterns.clear();
-            this.artifactPatterns.addAll( filetypes.getFileTypePatterns( FileTypes.ARTIFACTS ) );
-        }
-    }
-
-    public void afterConfigurationChange( Registry registry, String propertyName, Object propertyValue )
-    {
-        if ( propertyName.contains( "fileType" ) )
-        {
-            initVariables();
-        }
-    }
-
-    public void beforeConfigurationChange( Registry registry, String propertyName, Object propertyValue )
-    {
-        /* nothing to do */
-
-    }
 }
index 14fbf76ede55ff081f062241096677daf657f9d0..88c25fc9fa3455962f6446fda93e19d273fa4ccb 100644 (file)
@@ -45,7 +45,6 @@ import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
 import org.codehaus.plexus.registry.Registry;
 import org.codehaus.plexus.registry.RegistryListener;
-import org.codehaus.plexus.util.SelectorUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -799,7 +798,7 @@ public class MetadataTools
 
             String relativePath = PathUtil.getRelative( managedRepository.getRepoRoot(), repoFiles[i] );
 
-            if ( matchesArtifactPattern( relativePath ) )
+            if ( filetypes.matchesArtifactPattern( relativePath ) )
             {
                 ArtifactReference artifact = managedRepository.toArtifactReference( relativePath );
 
@@ -810,25 +809,4 @@ public class MetadataTools
         // No artifact was found.
         return null;
     }
-
-    private boolean matchesArtifactPattern( String relativePath )
-    {
-        // Correct the slash pattern.
-        relativePath = relativePath.replace( '\\', '/' );
-
-        Iterator<String> it = this.artifactPatterns.iterator();
-        while ( it.hasNext() )
-        {
-            String pattern = it.next();
-
-            if ( SelectorUtils.matchPath( pattern, relativePath, false ) )
-            {
-                // Found match
-                return true;
-            }
-        }
-
-        // No match.
-        return false;
-    }
 }
index 6ee6f874a7f72d88e63d2a5a5edf111eab060fbc..1ab8c807a976e9a22fc011d22baa986c7d295840 100644 (file)
@@ -209,20 +209,6 @@ public class RepositoryRequestTest
                      "org.apache.archiva.test", "redonkulous", "3.1-beta-1-20050831.101112-42", null, "jar" );
     }
 
-    public void testIsArtifact()
-    {
-        assertTrue( repoRequest.isArtifact( "test.maven-arch/poms/test-arch-2.0.3-SNAPSHOT.pom" ) );
-        assertTrue( repoRequest.isArtifact( "test/maven-arch/test-arch/2.0.3-SNAPSHOT/test-arch-2.0.3-SNAPSHOT.jar" ) );
-        assertTrue( repoRequest.isArtifact( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0-bin.tar.gz" ) );
-
-        assertFalse( repoRequest.isArtifact( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0-bin.tar.gz.sha1" ) );
-        assertFalse( repoRequest.isArtifact( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0-bin.tar.gz.md5" ) );
-        assertFalse( repoRequest.isArtifact( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0-bin.tar.gz.asc" ) );
-        assertFalse( repoRequest.isArtifact( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0-bin.tar.gz.pgp" ) );
-        assertFalse( repoRequest.isArtifact( "org/apache/derby/derby/10.2.2.0/maven-metadata.xml" ) );
-        assertFalse( repoRequest.isArtifact( "org/apache/derby/derby/maven-metadata.xml" ) );
-    }
-
     public void testIsSupportFile()
     {
         assertTrue( repoRequest.isSupportFile( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0-bin.tar.gz.sha1" ) );
index ccb862c4aa88d321cb8e0a8de08c0dd7cab41b4b..7c9aa368f70dec7c481ee4b7d062bd4ad4280b58 100644 (file)
@@ -52,6 +52,7 @@ public class ArtifactCountConsumer
 
     public ArtifactCountConsumer()
     {
+        // TODO: shouldn't this use filetypes?
         includes = new ArrayList();
         includes.add( "**/*.pom" );
         includes.add( "**/*.jar" );
index a513b44e293393183e996c5d5e5b2df0198e8455..63ff6e7d12e70e4346bde008f697a756c3f744a1 100644 (file)
@@ -90,6 +90,7 @@ public class DuplicateArtifactsConsumer
      */
     private RepositoryContentFactory repositoryFactory;
 
+    // TODO: why is this not used? If it should be, what about excludes?
     private List<String> includes = new ArrayList<String>();
 
     public String getId()
index 445643ee8f6f7f72bd4882490663947c728d2c7a..23355f81815650b530cc1c0c2d52e22a87b77439 100644 (file)
@@ -101,6 +101,7 @@ public class LocationArtifactsConsumer
 
     private Map repositoryMap = new HashMap();
 
+    // TODO: why is this not used? If it should be, what about excludes?
     private List<String> includes = new ArrayList<String>();
 
     public String getId()