1 package org.apache.maven.plugins.shade.mojo;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.Collection;
23 import java.util.HashSet;
24 import java.util.Iterator;
25
26 import org.apache.maven.artifact.Artifact;
27
28
29
30
31 class ArtifactSelector
32 {
33
34 private Collection includes;
35
36 private Collection excludes;
37
38 public ArtifactSelector( Artifact projectArtifact, ArtifactSet artifactSet, String groupPrefix )
39 {
40 this( ( artifactSet != null ) ? artifactSet.getIncludes() : null,
41 ( artifactSet != null ) ? artifactSet.getExcludes() : null, groupPrefix );
42
43 if ( projectArtifact != null && !this.includes.isEmpty() )
44 {
45 this.includes.add( new ArtifactId( projectArtifact ) );
46 }
47 }
48
49 public ArtifactSelector( Collection includes, Collection excludes, String groupPrefix )
50 {
51 this.includes = toIds( includes );
52 this.excludes = toIds( excludes );
53
54 if ( groupPrefix != null && groupPrefix.length() > 0 )
55 {
56 this.includes.add( new ArtifactId( groupPrefix + "*", "*", "*", "*" ) );
57 }
58 }
59
60 private static Collection toIds( Collection patterns )
61 {
62 Collection result = new HashSet();
63
64 if ( patterns != null )
65 {
66 for ( Iterator it = patterns.iterator(); it.hasNext(); )
67 {
68 String pattern = (String) it.next();
69 result.add( new ArtifactId( pattern ) );
70 }
71 }
72
73 return result;
74 }
75
76 public boolean isSelected( Artifact artifact )
77 {
78 return ( artifact != null ) ? isSelected( new ArtifactId( artifact ) ) : false;
79 }
80
81 boolean isSelected( ArtifactId id )
82 {
83 return ( includes.isEmpty() || matches( includes, id ) ) && !matches( excludes, id );
84 }
85
86 private boolean matches( Collection patterns, ArtifactId id )
87 {
88 for ( Iterator it = patterns.iterator(); it.hasNext(); )
89 {
90 ArtifactId pattern = (ArtifactId) it.next();
91 if ( id.matches( pattern ) )
92 {
93 return true;
94 }
95 }
96 return false;
97 }
98
99 }