From 7e78bcbc6638b7e2426343f56123bdec8c157f88 Mon Sep 17 00:00:00 2001 From: Uwe Schindler Date: Thu, 24 Sep 2015 16:14:45 +0200 Subject: [PATCH 1/3] Add support for signatures in URLs (Gradle only) --- .../de/thetaphi/forbiddenapis/Checker.java | 5 ++++ .../gradle/CheckForbiddenApis.java | 24 +++++++++++++++++++ .../gradle/CheckForbiddenApisExtension.java | 3 +++ 3 files changed, 32 insertions(+) diff --git a/src/main/java/de/thetaphi/forbiddenapis/Checker.java b/src/main/java/de/thetaphi/forbiddenapis/Checker.java index aac8dbb0..a88d1c4b 100644 --- a/src/main/java/de/thetaphi/forbiddenapis/Checker.java +++ b/src/main/java/de/thetaphi/forbiddenapis/Checker.java @@ -405,6 +405,11 @@ public final void parseSignaturesFile(InputStream in) throws IOException,ParseEx parseSignaturesFile(in, false); } + /** Reads a list of API signatures from the given URL. */ + public final void parseSignaturesFile(URL url) throws IOException,ParseException { + parseSignaturesFile(url.openStream()); + } + /** Reads a list of API signatures from the given file. */ public final void parseSignaturesFile(File f) throws IOException,ParseException { parseSignaturesFile(new FileInputStream(f)); diff --git a/src/main/java/de/thetaphi/forbiddenapis/gradle/CheckForbiddenApis.java b/src/main/java/de/thetaphi/forbiddenapis/gradle/CheckForbiddenApis.java index 4f0cff4d..8f882d8f 100644 --- a/src/main/java/de/thetaphi/forbiddenapis/gradle/CheckForbiddenApis.java +++ b/src/main/java/de/thetaphi/forbiddenapis/gradle/CheckForbiddenApis.java @@ -163,6 +163,25 @@ public void setSignaturesFiles(FileCollection signaturesFiles) { data.signaturesFiles = signaturesFiles; } + /** + * A list of references to URLs, which contain signatures and comments for forbidden API calls. + * The signatures are resolved against {@link #getClasspath()}. + *

+ * This property is useful to refer to resources in plugin classpath, e.g., using + * {@link Class#getResource(String)}. It is not useful for general gradle builds. Especially, + * don't use it to refer to resources on foreign servers! + */ + @Input + @Optional + public List getSignaturesURLs() { + return data.signaturesURLs; + } + + /** @see #getSignaturesFiles */ + public void setSignaturesURLs(List signaturesURLs) { + data.signaturesURLs = signaturesURLs; + } + /** * Gives multiple API signatures that are joined with newlines and * parsed like a single {@link #getSignaturesFiles()}. @@ -505,6 +524,11 @@ public void info(String msg) { log.info("Reading API signatures: " + f); checker.parseSignaturesFile(f); } + final List signaturesURLs = getSignaturesURLs(); + if (signaturesURLs != null) for (final URL url : signaturesURLs) { + log.info("Reading API signatures: " + url); + checker.parseSignaturesFile(url); + } } catch (IOException ioe) { throw new ResourceException("IO problem while reading files with API signatures.", ioe); } catch (ParseException pe) { diff --git a/src/main/java/de/thetaphi/forbiddenapis/gradle/CheckForbiddenApisExtension.java b/src/main/java/de/thetaphi/forbiddenapis/gradle/CheckForbiddenApisExtension.java index 1049f5ad..a08d79ed 100644 --- a/src/main/java/de/thetaphi/forbiddenapis/gradle/CheckForbiddenApisExtension.java +++ b/src/main/java/de/thetaphi/forbiddenapis/gradle/CheckForbiddenApisExtension.java @@ -16,6 +16,7 @@ * limitations under the License. */ +import java.net.URL; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -33,6 +34,7 @@ public class CheckForbiddenApisExtension { /** Fields used for the convention mapping, keep up-to-date with class members! */ static final List PROPS = Arrays.asList( "signaturesFiles", + "signaturesURLs", "signatures", "bundledSignatures", "suppressAnnotations", @@ -44,6 +46,7 @@ public class CheckForbiddenApisExtension { ); public FileCollection signaturesFiles; + public List signaturesURLs = new ArrayList(); public List signatures = new ArrayList(), bundledSignatures = new ArrayList(), suppressAnnotations = new ArrayList(); From ab7bd99bb5e68585ce94298ab0d661e596acf7ef Mon Sep 17 00:00:00 2001 From: Uwe Schindler Date: Thu, 24 Sep 2015 16:16:01 +0200 Subject: [PATCH 2/3] Javadocs typo --- .../de/thetaphi/forbiddenapis/gradle/CheckForbiddenApis.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/de/thetaphi/forbiddenapis/gradle/CheckForbiddenApis.java b/src/main/java/de/thetaphi/forbiddenapis/gradle/CheckForbiddenApis.java index 8f882d8f..4e11ccb3 100644 --- a/src/main/java/de/thetaphi/forbiddenapis/gradle/CheckForbiddenApis.java +++ b/src/main/java/de/thetaphi/forbiddenapis/gradle/CheckForbiddenApis.java @@ -177,7 +177,7 @@ public List getSignaturesURLs() { return data.signaturesURLs; } - /** @see #getSignaturesFiles */ + /** @see #getSignaturesURLs */ public void setSignaturesURLs(List signaturesURLs) { data.signaturesURLs = signaturesURLs; } From 30173d5c234b632bc275ac09c28a9705270d141a Mon Sep 17 00:00:00 2001 From: Uwe Schindler Date: Thu, 24 Sep 2015 16:19:16 +0200 Subject: [PATCH 3/3] Add @Incubating flag --- .../de/thetaphi/forbiddenapis/gradle/CheckForbiddenApis.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/de/thetaphi/forbiddenapis/gradle/CheckForbiddenApis.java b/src/main/java/de/thetaphi/forbiddenapis/gradle/CheckForbiddenApis.java index 4e11ccb3..0c4cb5ca 100644 --- a/src/main/java/de/thetaphi/forbiddenapis/gradle/CheckForbiddenApis.java +++ b/src/main/java/de/thetaphi/forbiddenapis/gradle/CheckForbiddenApis.java @@ -34,6 +34,7 @@ import org.gradle.api.DefaultTask; import org.gradle.api.GradleException; +import org.gradle.api.Incubating; import org.gradle.api.InvalidUserDataException; import org.gradle.api.file.FileCollection; import org.gradle.api.file.FileTree; @@ -173,6 +174,7 @@ public void setSignaturesFiles(FileCollection signaturesFiles) { */ @Input @Optional + @Incubating public List getSignaturesURLs() { return data.signaturesURLs; }