Skip to content

Commit

Permalink
Merge pull request #77 from policeman-tools/features/signatureURLs
Browse files Browse the repository at this point in the history
Add support for signature file URLs
  • Loading branch information
uschindler committed Sep 24, 2015
2 parents 575d789 + 30173d5 commit 8ab3d31
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/main/java/de/thetaphi/forbiddenapis/Checker.java
Original file line number Diff line number Diff line change
Expand Up @@ -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));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -163,6 +164,26 @@ 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()}.
* <p>
* 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
@Incubating
public List<URL> getSignaturesURLs() {
return data.signaturesURLs;
}

/** @see #getSignaturesURLs */
public void setSignaturesURLs(List<URL> signaturesURLs) {
data.signaturesURLs = signaturesURLs;
}

/**
* Gives multiple API signatures that are joined with newlines and
* parsed like a single {@link #getSignaturesFiles()}.
Expand Down Expand Up @@ -505,6 +526,11 @@ public void info(String msg) {
log.info("Reading API signatures: " + f);
checker.parseSignaturesFile(f);
}
final List<URL> 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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
* limitations under the License.
*/

import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
Expand All @@ -33,6 +34,7 @@ public class CheckForbiddenApisExtension {
/** Fields used for the convention mapping, keep up-to-date with class members! */
static final List<String> PROPS = Arrays.asList(
"signaturesFiles",
"signaturesURLs",
"signatures",
"bundledSignatures",
"suppressAnnotations",
Expand All @@ -44,6 +46,7 @@ public class CheckForbiddenApisExtension {
);

public FileCollection signaturesFiles;
public List<URL> signaturesURLs = new ArrayList<URL>();
public List<String> signatures = new ArrayList<String>(),
bundledSignatures = new ArrayList<String>(),
suppressAnnotations = new ArrayList<String>();
Expand Down

0 comments on commit 8ab3d31

Please sign in to comment.