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