1 package org.apache.maven.shared.artifact.filter.resolve.transform;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.ArrayList;
23 import java.util.Collection;
24
25 import org.apache.maven.artifact.resolver.filter.AndArtifactFilter;
26 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
27 import org.apache.maven.artifact.resolver.filter.ExcludesArtifactFilter;
28 import org.apache.maven.shared.artifact.filter.PatternExcludesArtifactFilter;
29 import org.apache.maven.shared.artifact.filter.PatternIncludesArtifactFilter;
30 import org.apache.maven.shared.artifact.filter.resolve.AbstractFilter;
31 import org.apache.maven.shared.artifact.filter.resolve.AndFilter;
32 import org.apache.maven.shared.artifact.filter.resolve.ExclusionsFilter;
33 import org.apache.maven.shared.artifact.filter.resolve.FilterTransformer;
34 import org.apache.maven.shared.artifact.filter.resolve.OrFilter;
35 import org.apache.maven.shared.artifact.filter.resolve.PatternExclusionsFilter;
36 import org.apache.maven.shared.artifact.filter.resolve.PatternInclusionsFilter;
37 import org.apache.maven.shared.artifact.filter.resolve.ScopeFilter;
38 import org.apache.maven.shared.artifact.filter.resolve.TransformableFilter;
39
40
41
42
43
44
45
46
47
48
49 public class ArtifactIncludeFilterTransformer implements FilterTransformer<ArtifactFilter>
50 {
51
52 private boolean includeNullScope = true;
53
54 private boolean actTransitivelyPattern = false;
55
56
57
58
59
60
61
62
63
64 public void setIncludeNullScope( boolean includeNullScope )
65 {
66 this.includeNullScope = includeNullScope;
67 }
68
69
70
71
72
73
74
75
76
77
78
79 public void setActTransitivelyPattern( boolean actTransitivelyPattern )
80 {
81 this.actTransitivelyPattern = actTransitivelyPattern;
82 }
83
84
85 @Override
86 public ArtifactFilter transform( final ScopeFilter scopeFilter )
87 {
88 return artifact ->
89 {
90 if ( artifact.getScope() == null )
91 {
92 return includeNullScope;
93 }
94
95 boolean isIncluded;
96
97 if ( scopeFilter.getIncluded() != null )
98 {
99 isIncluded = scopeFilter.getIncluded().contains( artifact.getScope() );
100 }
101 else
102 {
103 isIncluded = true;
104 }
105
106 boolean isExcluded;
107
108 if ( scopeFilter.getExcluded() != null )
109 {
110 isExcluded = scopeFilter.getExcluded().contains( artifact.getScope() );
111 }
112 else
113 {
114 isExcluded = false;
115 }
116
117 return isIncluded && !isExcluded;
118 };
119 }
120
121
122 @Override
123 public AndArtifactFilter transform( AndFilter andFilter )
124 {
125 AndArtifactFilter filter = new AndArtifactFilter();
126
127 for ( TransformableFilter subFilter : andFilter.getFilters() )
128 {
129 filter.add( subFilter.transform( this ) );
130 }
131
132 return filter;
133 }
134
135
136 @Override
137 public ArtifactFilter transform( final ExclusionsFilter exclusionsFilter )
138 {
139 return new ExcludesArtifactFilter( new ArrayList<>( exclusionsFilter.getExcludes() ) );
140 }
141
142
143 @Override
144 public ArtifactFilter transform( OrFilter orFilter )
145 {
146 final Collection<ArtifactFilter> filters = new ArrayList<>( orFilter.getFilters().size() );
147
148 for ( TransformableFilter subFilter : orFilter.getFilters() )
149 {
150 filters.add( subFilter.transform( this ) );
151 }
152
153 return artifact ->
154 {
155 for ( ArtifactFilter filter : filters )
156 {
157 if ( filter.include( artifact ) )
158 {
159 return true;
160 }
161 }
162 return false;
163 };
164 }
165
166
167 @Override
168 public ArtifactFilter transform( PatternExclusionsFilter patternExclusionsFilter )
169 {
170 return new PatternExcludesArtifactFilter( patternExclusionsFilter.getExcludes(), actTransitivelyPattern );
171 }
172
173
174 @Override
175 public ArtifactFilter transform( PatternInclusionsFilter patternInclusionsFilter )
176 {
177 return new PatternIncludesArtifactFilter( patternInclusionsFilter.getIncludes(), actTransitivelyPattern );
178 }
179
180
181 @Override
182 public ArtifactFilter transform( final AbstractFilter filter )
183 {
184 return artifact -> filter.accept( new ArtifactIncludeNode( artifact ), null );
185 }
186 }