1 package org.apache.maven.plugins.dependency.utils.filters;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.LinkedHashSet;
23 import java.util.Set;
24
25 import org.apache.maven.artifact.Artifact;
26 import org.apache.maven.plugin.MojoExecutionException;
27 import org.apache.maven.plugins.dependency.fromConfiguration.ArtifactItem;
28 import org.apache.maven.plugins.dependency.utils.markers.MarkerHandler;
29 import org.apache.maven.shared.artifact.filter.collection.AbstractArtifactsFilter;
30 import org.apache.maven.shared.artifact.filter.collection.ArtifactFilterException;
31
32
33
34
35 public class MarkerFileFilter
36 extends AbstractArtifactsFilter
37 implements ArtifactItemFilter
38 {
39
40 private boolean overWriteReleases;
41
42 private boolean overWriteSnapshots;
43
44 private boolean overWriteIfNewer;
45
46
47
48
49 protected final MarkerHandler handler;
50
51
52
53
54
55
56
57 public MarkerFileFilter( boolean overWriteReleases, boolean overWriteSnapshots, boolean overWriteIfNewer,
58 MarkerHandler handler )
59 {
60 this.overWriteReleases = overWriteReleases;
61 this.overWriteSnapshots = overWriteSnapshots;
62 this.overWriteIfNewer = overWriteIfNewer;
63 this.handler = handler;
64 }
65
66
67
68
69
70
71 @Override
72 public Set<Artifact> filter( Set<Artifact> artifacts )
73 throws ArtifactFilterException
74 {
75 Set<Artifact> result = new LinkedHashSet<>();
76
77 for ( Artifact artifact : artifacts )
78 {
79 if ( isArtifactIncluded( new ArtifactItem( artifact ) ) )
80 {
81 result.add( artifact );
82 }
83 }
84
85 return result;
86 }
87
88 @Override
89 public boolean isArtifactIncluded( ArtifactItem item )
90 throws ArtifactFilterException
91 {
92 Artifact artifact = item.getArtifact();
93
94 boolean overWrite = ( artifact.isSnapshot() && this.overWriteSnapshots )
95 || ( !artifact.isSnapshot() && this.overWriteReleases );
96
97 handler.setArtifact( artifact );
98
99 try
100 {
101 return overWrite || !handler.isMarkerSet() || ( overWriteIfNewer && handler.isMarkerOlder( artifact ) );
102 }
103 catch ( MojoExecutionException e )
104 {
105 throw new ArtifactFilterException( e.getMessage(), e );
106 }
107 }
108
109
110
111
112 public boolean isOverWriteReleases()
113 {
114 return this.overWriteReleases;
115 }
116
117
118
119
120 public void setOverWriteReleases( boolean overWriteReleases )
121 {
122 this.overWriteReleases = overWriteReleases;
123 }
124
125
126
127
128 public boolean isOverWriteSnapshots()
129 {
130 return this.overWriteSnapshots;
131 }
132
133
134
135
136 public void setOverWriteSnapshots( boolean overWriteSnapshots )
137 {
138 this.overWriteSnapshots = overWriteSnapshots;
139 }
140
141
142
143
144 public boolean isOverWriteIfNewer()
145 {
146 return this.overWriteIfNewer;
147 }
148
149
150
151
152 public void setOverWriteIfNewer( boolean overWriteIfNewer )
153 {
154 this.overWriteIfNewer = overWriteIfNewer;
155 }
156 }