]> source.dussan.org Git - archiva.git/blob
65db8a50d6c9168a9f5726cfc8ff562e9b9b1f0d
[archiva.git] /
1 package org.apache.maven.repository.discovery;
2
3 /*
4  * Copyright 2005-2006 The Apache Software Foundation.
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *      http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18
19 import org.apache.maven.artifact.factory.ArtifactFactory;
20 import org.codehaus.plexus.logging.AbstractLogEnabled;
21 import org.codehaus.plexus.util.DirectoryScanner;
22 import org.codehaus.plexus.util.FileUtils;
23
24 import java.io.File;
25 import java.util.ArrayList;
26 import java.util.Arrays;
27 import java.util.Iterator;
28 import java.util.List;
29
30 /**
31  * Base class for the artifact and metadata discoverers.
32  *
33  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
34  */
35 public abstract class AbstractDiscoverer
36     extends AbstractLogEnabled
37 {
38     private List kickedOutPaths = new ArrayList();
39
40     /**
41      * @plexus.requirement
42      */
43     protected ArtifactFactory artifactFactory;
44
45     private static final String[] EMPTY_STRING_ARRAY = new String[0];
46
47     private List excludedPaths = new ArrayList();
48
49     /**
50      * Add a path to the list of files that were kicked out due to being invalid.
51      *
52      * @param path the path to add
53      * @todo add a reason
54      */
55     protected void addKickedOutPath( String path )
56     {
57         kickedOutPaths.add( path );
58     }
59
60     public Iterator getKickedOutPathsIterator()
61     {
62         return kickedOutPaths.iterator();
63     }
64
65     /**
66      * Scan the repository for artifact paths.
67      */
68     protected String[] scanForArtifactPaths( File repositoryBase, String blacklistedPatterns, String[] includes,
69                                              String[] excludes )
70     {
71         List allExcludes = new ArrayList();
72         allExcludes.addAll( FileUtils.getDefaultExcludesAsList() );
73         if ( excludes != null )
74         {
75             allExcludes.addAll( Arrays.asList( excludes ) );
76         }
77
78         if ( blacklistedPatterns != null && blacklistedPatterns.length() > 0 )
79         {
80             allExcludes.addAll( Arrays.asList( blacklistedPatterns.split( "," ) ) );
81         }
82
83         DirectoryScanner scanner = new DirectoryScanner();
84         scanner.setBasedir( repositoryBase );
85         if ( includes != null )
86         {
87             scanner.setIncludes( includes );
88         }
89         scanner.setExcludes( (String[]) allExcludes.toArray( EMPTY_STRING_ARRAY ) );
90
91         scanner.scan();
92
93         excludedPaths.addAll( Arrays.asList( scanner.getExcludedFiles() ) );
94
95         return scanner.getIncludedFiles();
96     }
97
98     public Iterator getExcludedPathsIterator()
99     {
100         return excludedPaths.iterator();
101     }
102 }