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 return result;
85 }
86
87 @Override
88 public boolean isArtifactIncluded( ArtifactItem item )
89 throws ArtifactFilterException
90 {
91 Artifact artifact = item.getArtifact();
92
93 boolean overWrite = ( artifact.isSnapshot() && this.overWriteSnapshots )
94 || ( !artifact.isSnapshot() && this.overWriteReleases );
95
96 handler.setArtifact( artifact );
97
98 try
99 {
100 return overWrite || !handler.isMarkerSet() || ( overWriteIfNewer && handler.isMarkerOlder( artifact ) );
101 }
102 catch ( MojoExecutionException e )
103 {
104 throw new ArtifactFilterException( e.getMessage(), e );
105 }
106 }
107
108
109
110
111 public boolean isOverWriteReleases()
112 {
113 return this.overWriteReleases;
114 }
115
116
117
118
119 public void setOverWriteReleases( boolean overWriteReleases )
120 {
121 this.overWriteReleases = overWriteReleases;
122 }
123
124
125
126
127 public boolean isOverWriteSnapshots()
128 {
129 return this.overWriteSnapshots;
130 }
131
132
133
134
135 public void setOverWriteSnapshots( boolean overWriteSnapshots )
136 {
137 this.overWriteSnapshots = overWriteSnapshots;
138 }
139
140
141
142
143 public boolean isOverWriteIfNewer()
144 {
145 return this.overWriteIfNewer;
146 }
147
148
149
150
151 public void setOverWriteIfNewer( boolean overWriteIfNewer )
152 {
153 this.overWriteIfNewer = overWriteIfNewer;
154 }
155 }