Skip to content

Commit d321804

Browse files
committed
Fix clone problems caused by PatternFilterable interface in the extension.
1 parent 7c98f72 commit d321804

File tree

3 files changed

+29
-95
lines changed

3 files changed

+29
-95
lines changed

src/main/java/de/thetaphi/forbiddenapis/gradle/CheckForbiddenApis.java

+22-19
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import static de.thetaphi.forbiddenapis.Checker.Option.FAIL_ON_UNRESOLVABLE_SIGNATURES;
2121
import static de.thetaphi.forbiddenapis.Checker.Option.FAIL_ON_VIOLATION;
2222
import static de.thetaphi.forbiddenapis.Checker.Option.INTERNAL_RUNTIME_FORBIDDEN;
23-
2423
import groovy.lang.Closure;
2524

2625
import java.io.Closeable;
@@ -67,9 +66,10 @@
6766
public class CheckForbiddenApis extends DefaultTask implements PatternFilterable,VerificationTask {
6867

6968
private final CheckForbiddenApisExtension data = new CheckForbiddenApisExtension();
69+
private final PatternSet patternSet = new PatternSet().include("**/*.class");
7070
private File classesDir;
7171
private FileCollection classpath;
72-
72+
7373
/**
7474
* Directory with the class files to check.
7575
*/
@@ -126,7 +126,8 @@ public List<String> getSignatures() {
126126

127127
/** @see #getSignatures */
128128
public void setSignatures(List<String> signatures) {
129-
data.signatures = signatures;
129+
data.signatures.clear();
130+
data.signatures.addAll(signatures);
130131
}
131132

132133
/**
@@ -142,7 +143,8 @@ public List<String> getBundledSignatures() {
142143

143144
/** @see #getBundledSignatures */
144145
public void setBundledSignatures(List<String> bundledSignatures) {
145-
data.bundledSignatures = bundledSignatures;
146+
data.bundledSignatures.clear();
147+
data.bundledSignatures.addAll(bundledSignatures);
146148
}
147149

148150
/**
@@ -240,7 +242,8 @@ public List<String> getSuppressAnnotations() {
240242

241243
/** @see #getSuppressAnnotations */
242244
public void setSuppressAnnotations(List<String> suppressAnnotations) {
243-
data.suppressAnnotations = suppressAnnotations;
245+
data.suppressAnnotations.clear();
246+
data.suppressAnnotations.addAll(suppressAnnotations);
244247
}
245248

246249
// PatternFilterable implementation:
@@ -255,11 +258,11 @@ public void setSuppressAnnotations(List<String> suppressAnnotations) {
255258
*/
256259
@Input
257260
public Set<String> getIncludes() {
258-
return data.getIncludes();
261+
return getPatternSet().getIncludes();
259262
}
260263

261264
public CheckForbiddenApis setIncludes(Iterable<String> includes) {
262-
data.setIncludes(includes);
265+
getPatternSet().setIncludes(includes);
263266
return this;
264267
}
265268

@@ -271,60 +274,60 @@ public CheckForbiddenApis setIncludes(Iterable<String> includes) {
271274
*/
272275
@Input
273276
public Set<String> getExcludes() {
274-
return data.getExcludes();
277+
return getPatternSet().getExcludes();
275278
}
276279

277280
public CheckForbiddenApis setExcludes(Iterable<String> excludes) {
278-
data.setExcludes(excludes);
281+
getPatternSet().setExcludes(excludes);
279282
return this;
280283
}
281284

282285
public CheckForbiddenApis exclude(String... arg0) {
283-
data.exclude(arg0);
286+
getPatternSet().exclude(arg0);
284287
return this;
285288
}
286289

287290
public CheckForbiddenApis exclude(Iterable<String> arg0) {
288-
data.exclude(arg0);
291+
getPatternSet().exclude(arg0);
289292
return this;
290293
}
291294

292295
public CheckForbiddenApis exclude(Spec<FileTreeElement> arg0) {
293-
data.exclude(arg0);
296+
getPatternSet().exclude(arg0);
294297
return this;
295298
}
296299

297300
public CheckForbiddenApis exclude(@SuppressWarnings("rawtypes") Closure arg0) {
298-
data.exclude(arg0);
301+
getPatternSet().exclude(arg0);
299302
return this;
300303
}
301304

302305
public CheckForbiddenApis include(String... arg0) {
303-
data.include(arg0);
306+
getPatternSet().include(arg0);
304307
return this;
305308
}
306309

307310
public CheckForbiddenApis include(Iterable<String> arg0) {
308-
data.include(arg0);
311+
getPatternSet().include(arg0);
309312
return this;
310313
}
311314

312315
public CheckForbiddenApis include(Spec<FileTreeElement> arg0) {
313-
data.include(arg0);
316+
getPatternSet().include(arg0);
314317
return this;
315318
}
316319

317320
public CheckForbiddenApis include(@SuppressWarnings("rawtypes") Closure arg0) {
318-
data.include(arg0);
321+
getPatternSet().include(arg0);
319322
return this;
320323
}
321324

322325
public PatternSet getPatternSet() {
323-
return data.patternSet;
326+
return patternSet;
324327
}
325328

326329
public void setPatternSet(PatternSet patternSet) {
327-
data.patternSet = patternSet;
330+
patternSet.copyFrom(patternSet);
328331
}
329332

330333
/** Returns the classes to check. */

src/main/java/de/thetaphi/forbiddenapis/gradle/CheckForbiddenApisExtension.java

+6-75
Original file line numberDiff line numberDiff line change
@@ -16,24 +16,18 @@
1616
* limitations under the License.
1717
*/
1818

19-
import groovy.lang.Closure;
20-
19+
import java.util.ArrayList;
2120
import java.util.Arrays;
2221
import java.util.List;
23-
import java.util.Set;
2422

2523
import org.gradle.api.file.FileCollection;
26-
import org.gradle.api.file.FileTreeElement;
27-
import org.gradle.api.specs.Spec;
28-
import org.gradle.api.tasks.util.PatternFilterable;
29-
import org.gradle.api.tasks.util.PatternSet;
3024

3125
/**
3226
* Extension for the ForbiddenApis Gradle Task to store defaults.
3327
* For description of the properties refer to the {@link CheckForbiddenApis}
3428
* task documentation.
3529
*/
36-
public class CheckForbiddenApisExtension implements PatternFilterable {
30+
public class CheckForbiddenApisExtension {
3731

3832
/** Fields used for the convention mapping, keep up-to-date with class members! */
3933
static final List<String> PROPS = Arrays.asList(
@@ -45,80 +39,17 @@ public class CheckForbiddenApisExtension implements PatternFilterable {
4539
"failOnUnsupportedJava",
4640
"failOnMissingClasses",
4741
"failOnUnresolvableSignatures",
48-
"ignoreFailures",
49-
"patternSet"
42+
"ignoreFailures"
5043
);
5144

52-
public PatternSet patternSet = new PatternSet().include("**/*.class");
53-
5445
public FileCollection signaturesFiles;
55-
public List<String> signatures,
56-
bundledSignatures,
57-
suppressAnnotations;
46+
public List<String> signatures = new ArrayList<String>(),
47+
bundledSignatures = new ArrayList<String>(),
48+
suppressAnnotations = new ArrayList<String>();
5849
public boolean internalRuntimeForbidden = false,
5950
failOnUnsupportedJava = false,
6051
failOnMissingClasses = true,
6152
failOnUnresolvableSignatures = true,
6253
ignoreFailures = false;
6354

64-
// PatternFilterable implementation:
65-
66-
public Set<String> getIncludes() {
67-
return patternSet.getIncludes();
68-
}
69-
70-
public CheckForbiddenApisExtension setIncludes(Iterable<String> includes) {
71-
patternSet.setIncludes(includes);
72-
return this;
73-
}
74-
75-
public Set<String> getExcludes() {
76-
return patternSet.getExcludes();
77-
}
78-
79-
public CheckForbiddenApisExtension setExcludes(Iterable<String> excludes) {
80-
patternSet.setExcludes(excludes);
81-
return this;
82-
}
83-
84-
public CheckForbiddenApisExtension exclude(String... arg0) {
85-
patternSet.exclude(arg0);
86-
return this;
87-
}
88-
89-
public CheckForbiddenApisExtension exclude(Iterable<String> arg0) {
90-
patternSet.exclude(arg0);
91-
return this;
92-
}
93-
94-
public CheckForbiddenApisExtension exclude(Spec<FileTreeElement> arg0) {
95-
patternSet.exclude(arg0);
96-
return this;
97-
}
98-
99-
public CheckForbiddenApisExtension exclude(@SuppressWarnings("rawtypes") Closure arg0) {
100-
patternSet.exclude(arg0);
101-
return this;
102-
}
103-
104-
public CheckForbiddenApisExtension include(String... arg0) {
105-
patternSet.include(arg0);
106-
return this;
107-
}
108-
109-
public CheckForbiddenApisExtension include(Iterable<String> arg0) {
110-
patternSet.include(arg0);
111-
return this;
112-
}
113-
114-
public CheckForbiddenApisExtension include(Spec<FileTreeElement> arg0) {
115-
patternSet.include(arg0);
116-
return this;
117-
}
118-
119-
public CheckForbiddenApisExtension include(@SuppressWarnings("rawtypes") Closure arg0) {
120-
patternSet.include(arg0);
121-
return this;
122-
}
123-
12455
}

src/main/java/de/thetaphi/forbiddenapis/gradle/ForbiddenApisPlugin.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public void apply(final Project project) {
5656
}
5757
scriptText = ResourceGroovyMethods.getText(scriptUrl, "UTF-8");
5858
} catch (IOException ioe) {
59-
throw new PluginInstantiationException("Cannot execute " + PLUGIN_INIT_SCRIPT + " script.", ioe);
59+
throw new PluginInstantiationException("Cannot load " + PLUGIN_INIT_SCRIPT + " script.", ioe);
6060
}
6161
final ImportCustomizer importCustomizer = new ImportCustomizer().addStarImports(ForbiddenApisPlugin.class.getPackage().getName());
6262
final CompilerConfiguration configuration = new CompilerConfiguration().addCompilationCustomizers(importCustomizer);

0 commit comments

Comments
 (0)