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 import java.util.List;
25
26 import org.apache.maven.shared.artifact.filter.resolve.AbstractFilter;
27 import org.apache.maven.shared.artifact.filter.resolve.AndFilter;
28 import org.apache.maven.shared.artifact.filter.resolve.ExclusionsFilter;
29 import org.apache.maven.shared.artifact.filter.resolve.FilterTransformer;
30 import org.apache.maven.shared.artifact.filter.resolve.OrFilter;
31 import org.apache.maven.shared.artifact.filter.resolve.PatternExclusionsFilter;
32 import org.apache.maven.shared.artifact.filter.resolve.PatternInclusionsFilter;
33 import org.apache.maven.shared.artifact.filter.resolve.ScopeFilter;
34 import org.apache.maven.shared.artifact.filter.resolve.TransformableFilter;
35 import org.sonatype.aether.graph.DependencyFilter;
36 import org.sonatype.aether.graph.DependencyNode;
37 import org.sonatype.aether.util.filter.AndDependencyFilter;
38 import org.sonatype.aether.util.filter.ExclusionsDependencyFilter;
39 import org.sonatype.aether.util.filter.OrDependencyFilter;
40 import org.sonatype.aether.util.filter.PatternExclusionsDependencyFilter;
41 import org.sonatype.aether.util.filter.PatternInclusionsDependencyFilter;
42 import org.sonatype.aether.util.filter.ScopeDependencyFilter;
43
44
45
46
47
48
49
50 public class SonatypeAetherFilterTransformer
51 implements FilterTransformer<DependencyFilter>
52 {
53 @Override
54 public AndDependencyFilter transform( AndFilter filter )
55 {
56 Collection<DependencyFilter> filters = new ArrayList<DependencyFilter>( filter.getFilters().size() );
57 for ( TransformableFilter dependencyFilter : filter.getFilters() )
58 {
59 filters.add( dependencyFilter.transform( this ) );
60 }
61 return new AndDependencyFilter( filters );
62 }
63
64 @Override
65 public ExclusionsDependencyFilter transform( ExclusionsFilter filter )
66 {
67 return new ExclusionsDependencyFilter( filter.getExcludes() );
68 }
69
70 @Override
71 public OrDependencyFilter transform( OrFilter filter )
72 {
73 Collection<DependencyFilter> filters = new ArrayList<DependencyFilter>( filter.getFilters().size() );
74 for ( TransformableFilter dependencyFilter : filter.getFilters() )
75 {
76 filters.add( dependencyFilter.transform( this ) );
77 }
78 return new OrDependencyFilter( filters );
79 }
80
81 @Override
82 public ScopeDependencyFilter transform( ScopeFilter filter )
83 {
84 return new ScopeDependencyFilter( filter.getIncluded(), filter.getExcluded() );
85 }
86
87 @Override
88 public DependencyFilter transform( PatternExclusionsFilter filter )
89 {
90 return new PatternExclusionsDependencyFilter( filter.getExcludes() );
91 }
92
93 @Override
94 public DependencyFilter transform( PatternInclusionsFilter filter )
95 {
96 return new PatternInclusionsDependencyFilter( filter.getIncludes() );
97 }
98
99 @Override
100 public DependencyFilter transform( final AbstractFilter filter )
101 {
102 return new DependencyFilter()
103 {
104 @Override
105 public boolean accept( DependencyNode node, List<DependencyNode> parents )
106 {
107 return filter.accept( new SonatypeAetherNode( node ), null );
108 }
109 };
110 }
111 }