From 3837513f47faa38a7dd954586ca28ea9892dbf8d Mon Sep 17 00:00:00 2001 From: Uwe Schindler Date: Mon, 6 Apr 2020 13:21:45 +0200 Subject: [PATCH 01/11] Update to minimum Java 7 --- build.xml | 41 ++++++------------ src/main/docs/bundled-signatures.html | 6 +-- .../antunit/Java6DeprecatedAnnotation.class | Bin 369 -> 0 bytes ...ences.class => Java7ClassReferences.class} | Bin 1020 -> 1020 bytes ...erences.java => Java7ClassReferences.java} | 2 +- .../antunit/Java7DeprecatedAnnotation.class | Bin 0 -> 369 bytes ...on.java => Java7DeprecatedAnnotation.java} | 4 +- ...Reflection.class => Java7Reflection.class} | Bin 1085 -> 1085 bytes ...a6Reflection.java => Java7Reflection.java} | 6 +-- src/test/antunit/OracleInternalRuntime.class | Bin 433 -> 433 bytes src/test/antunit/TestAnnotations.xml | 6 +-- src/test/antunit/TestClassReferences.xml | 2 +- src/test/antunit/TestCli.xml | 4 +- src/test/antunit/TestJava6Reflection.xml | 2 +- 14 files changed, 30 insertions(+), 43 deletions(-) delete mode 100644 src/test/antunit/Java6DeprecatedAnnotation.class rename src/test/antunit/{Java6ClassReferences.class => Java7ClassReferences.class} (80%) rename src/test/antunit/{Java6ClassReferences.java => Java7ClassReferences.java} (97%) create mode 100644 src/test/antunit/Java7DeprecatedAnnotation.class rename src/test/antunit/{Java6DeprecatedAnnotation.java => Java7DeprecatedAnnotation.java} (91%) rename src/test/antunit/{Java6Reflection.class => Java7Reflection.class} (87%) rename src/test/antunit/{Java6Reflection.java => Java7Reflection.java} (91%) diff --git a/build.xml b/build.xml index d0f0eca4..95159193 100644 --- a/build.xml +++ b/build.xml @@ -26,9 +26,9 @@ - + - + @@ -54,7 +54,6 @@ --> - @@ -68,9 +67,8 @@ - + - @@ -79,7 +77,7 @@ - + @@ -88,19 +86,19 @@ - + - + - + - + @@ -126,7 +124,7 @@ - + @@ -148,7 +146,6 @@ - @@ -195,10 +192,10 @@ - + @@ -687,9 +684,6 @@ - - - @@ -699,20 +693,13 @@ + nowarn="true" source="1.7" target="1.7" debug="true" deprecation="false" encoding="${build.encoding}"> - - - - - - - + - diff --git a/src/main/docs/bundled-signatures.html b/src/main/docs/bundled-signatures.html index a93b59d4..73580e63 100644 --- a/src/main/docs/bundled-signatures.html +++ b/src/main/docs/bundled-signatures.html @@ -29,14 +29,14 @@

Bundled Signatures Documentation

  • jdk-unsafe-*: Signatures of "unsafe" methods that use default charset, default locale, or default timezone. For server applications it is very stupid to call those methods, as the results will definitely not what the user wants -(for Java * = 1.6, 1.7, 1.8, 9, 10, 11, 12, 13, 14; Ant / Maven / Gradle automatically add the compile Java version).
  • +(for Java * = 1.7, 1.8, 9, 10, 11, 12, 13, 14; Ant / Maven / Gradle automatically add the compile Java version).
  • jdk-deprecated-*: This disallows all deprecated -methods from the JDK (for Java * = 1.6, 1.7, 1.8, 9, 10, 11, 12, 13, 14; Ant / Maven / Gradle automatically add the compile Java version).
  • +methods from the JDK (for Java * = 1.7, 1.8, 9, 10, 11, 12, 13, 14; Ant / Maven / Gradle automatically add the compile Java version).
  • jdk-internal-*: Lists all internal packages of the JDK as of Security.getProperty("package.access"). Calling those methods will always trigger security manager and is completely forbidden from Java 9 on -(for Java * = 1.6, 1.7, 1.8, 9, 10, 11, 12, 13, 14; Ant / Maven / Gradle automatically add the compile Java version, since forbiddenapis v2.1).
  • +(for Java * = 1.7, 1.8, 9, 10, 11, 12, 13, 14; Ant / Maven / Gradle automatically add the compile Java version, since forbiddenapis v2.1).
  • jdk-non-portable: Signatures of all non-portable (like com.sun.management.HotSpotDiagnosticMXBean) or internal runtime APIs (like sun.misc.Unsafe). This is a superset of jdk-internal.
    diff --git a/src/test/antunit/Java6DeprecatedAnnotation.class b/src/test/antunit/Java6DeprecatedAnnotation.class deleted file mode 100644 index 3c95f6244beff03f35303d1695223455e66b2872..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 369 zcmZ`#O-sW-6r7jDMq_Mi6>1U0qk6F5!HcEh2OcEop;Ga7{tX>Jb*{ygJr`K|3Wg(m_FSIsJIA!!1AzAn=My9rf zyivY$Z)xm!%7rN!hzVW4_bZ_%{gJauPcCa!mC_P=OY?;GB6XinW#O=oh!5Z&@o+Vt yVU^W6Gcj)*%|V|Cp5_Q2-`NPT#@Iy2*yZpJQuL6pO8){_=Z%B>eQA?1K%{S{XU0?(N`Pd8% delta 36 rcmeyv{)e68)W2Q(7#J9gHgaSzGMY^;Wb_7-dl~Z>%{J>WU0?(N`J4<1 diff --git a/src/test/antunit/Java6ClassReferences.java b/src/test/antunit/Java7ClassReferences.java similarity index 97% rename from src/test/antunit/Java6ClassReferences.java rename to src/test/antunit/Java7ClassReferences.java index 84d45f56..45391084 100644 --- a/src/test/antunit/Java6ClassReferences.java +++ b/src/test/antunit/Java7ClassReferences.java @@ -19,7 +19,7 @@ import java.util.*; -class Java6ClassReferences { +class Java7ClassReferences { static Integer[][] test() { Integer.class.getName(); System.out.println(Integer[].class); diff --git a/src/test/antunit/Java7DeprecatedAnnotation.class b/src/test/antunit/Java7DeprecatedAnnotation.class new file mode 100644 index 0000000000000000000000000000000000000000..ebb7a744ea4d09fb28fb20035f3f33158d74510c GIT binary patch literal 369 zcmZ`#O-sW-6r7jDMq_Mi6>1U0qk6Ch4<0NPKky(y50#3?O|sN2aks1+|CgtNf13u5)mT{N^}iXpXZ1?h&2Gh;IK7rLD+}Rdd7-s&!YQNA2+6`{F*3C+ z5rUMdU9E-s+5+{Tbd`d7pePvDhr2wM0^1Mh=;5B y46CfpnTdJhXb$>B@H9vG_|8UvHO3}F#x93o?cdBSt1VuKZ5`x1HTuL LZN9mlaUT-^Ke7^k delta 56 zcmdnXv6qA6)W2Q(7#J9gCUVSYG@H0$m#kS(YFbWea!F=>o?cdBSt1VuKZ5`x1HTuL LZMM0daUT-^KQ|J4 diff --git a/src/test/antunit/Java6Reflection.java b/src/test/antunit/Java7Reflection.java similarity index 91% rename from src/test/antunit/Java6Reflection.java rename to src/test/antunit/Java7Reflection.java index c55c8926..3a6f41e3 100644 --- a/src/test/antunit/Java6Reflection.java +++ b/src/test/antunit/Java7Reflection.java @@ -21,15 +21,15 @@ import java.lang.reflect.Method; import java.util.*; -class Java6Reflection { +class Java7Reflection { static Field test() throws Exception { - Class c = Java6Reflection.class; + Class c = Java7Reflection.class; Field f = c.getDeclaredField("field1"); f.setAccessible(true); Method m = c.getDeclaredMethod("testMethod"); m.setAccessible(true); - m.invoke(new Java6Reflection()); + m.invoke(new Java7Reflection()); return f; } diff --git a/src/test/antunit/OracleInternalRuntime.class b/src/test/antunit/OracleInternalRuntime.class index 2403f3924b5357a9c2531b513456e0ab08528550..211108b1260f04c581c28133d1f4857bcd7c4b17 100644 GIT binary patch delta 17 ZcmdnUypfsX)W2Q(7#J9gH*&0G1OPsD21ft@ delta 17 ZcmdnUypfsX)W2Q(7#J9gHgc?F1OPs821Wn? diff --git a/src/test/antunit/TestAnnotations.xml b/src/test/antunit/TestAnnotations.xml index c58d8adf..d6c7f5ba 100644 --- a/src/test/antunit/TestAnnotations.xml +++ b/src/test/antunit/TestAnnotations.xml @@ -34,7 +34,7 @@ - + java.lang.Deprecated @ Deprecated annotation @@ -44,7 +44,7 @@ - + java.lang.StringBuilder @@ -53,7 +53,7 @@ - + java.lang.StringBuilder diff --git a/src/test/antunit/TestClassReferences.xml b/src/test/antunit/TestClassReferences.xml index eedbdf77..2583af8c 100644 --- a/src/test/antunit/TestClassReferences.xml +++ b/src/test/antunit/TestClassReferences.xml @@ -19,7 +19,7 @@ - + java.lang.Integer @ Forbidden class reference! java.util.List @ Forbidden class reference! java.util.AbstractCollection @ Forbidden class reference! diff --git a/src/test/antunit/TestCli.xml b/src/test/antunit/TestCli.xml index 51b23f20..15c8763a 100644 --- a/src/test/antunit/TestCli.xml +++ b/src/test/antunit/TestCli.xml @@ -44,9 +44,9 @@ - + - + diff --git a/src/test/antunit/TestJava6Reflection.xml b/src/test/antunit/TestJava6Reflection.xml index cd4fb87b..7dcd2eeb 100644 --- a/src/test/antunit/TestJava6Reflection.xml +++ b/src/test/antunit/TestJava6Reflection.xml @@ -20,7 +20,7 @@ - + From 02df2e09d12b1b39dafd595b6c2be8642a74f66e Mon Sep 17 00:00:00 2001 From: Uwe Schindler Date: Mon, 6 Apr 2020 15:36:14 +0200 Subject: [PATCH 02/11] Upgrade some APIs to Java 7 --- .../java/de/thetaphi/forbiddenapis/Checker.java | 11 +++-------- .../java/de/thetaphi/forbiddenapis/Signatures.java | 5 +---- .../java/de/thetaphi/forbiddenapis/cli/CliMain.java | 13 +++---------- .../forbiddenapis/gradle/CheckForbiddenApis.java | 7 +++---- .../forbiddenapis/gradle/ForbiddenApisPlugin.java | 4 +++- .../forbiddenapis/maven/AbstractCheckMojo.java | 7 +++---- .../de/thetaphi/forbiddenapis/DeprecatedGen.java | 5 +---- .../de/thetaphi/forbiddenapis/InternalApiGen.java | 5 +---- 8 files changed, 18 insertions(+), 39 deletions(-) diff --git a/src/main/java/de/thetaphi/forbiddenapis/Checker.java b/src/main/java/de/thetaphi/forbiddenapis/Checker.java index 4b97ffeb..5bec244f 100644 --- a/src/main/java/de/thetaphi/forbiddenapis/Checker.java +++ b/src/main/java/de/thetaphi/forbiddenapis/Checker.java @@ -247,9 +247,8 @@ public ClassSignature getClassFromClassLoader(final String clazz) throws ClassNo if (!isRuntimeClass && options.contains(Option.DISABLE_CLASSLOADING_CACHE)) { conn.setUseCaches(false); } - final InputStream in = conn.getInputStream(); final ClassReader cr; - try { + try (final InputStream in = conn.getInputStream()) { cr = AsmUtils.readAndPatchClass(in); } catch (IllegalArgumentException iae) { // if class is too new for this JVM, we try to load it as Class via Jigsaw @@ -265,8 +264,6 @@ public ClassSignature getClassFromClassLoader(final String clazz) throws ClassNo throw new IllegalArgumentException(String.format(Locale.ENGLISH, "The class file format of '%s' (loaded from location '%s') is too recent to be parsed by ASM.", clazz, url.toExternalForm())); - } finally { - in.close(); } final ClassSignature c = new ClassSignature(cr, isRuntimeClass, false); classpathClassCache.put(clazz, c); @@ -348,14 +345,12 @@ public boolean hasNoSignatures() { /** Parses and adds a class from the given stream to the list of classes to check. Closes the stream when parsed (on Exception, too)! Does not log anything. */ public void addClassToCheck(final InputStream in, String name) throws IOException { final ClassReader reader; - try { - reader = AsmUtils.readAndPatchClass(in); + try (final InputStream in_ = in) { + reader = AsmUtils.readAndPatchClass(in_); } catch (IllegalArgumentException iae) { // unfortunately the ASM IAE has no message, so add good info! throw new IllegalArgumentException(String.format(Locale.ENGLISH, "The class file format of '%s' is too recent to be parsed by ASM.", name)); - } finally { - in.close(); } final String binaryName = Type.getObjectType(reader.getClassName()).getClassName(); classesToCheck.put(binaryName, new ClassSignature(reader, false, true)); diff --git a/src/main/java/de/thetaphi/forbiddenapis/Signatures.java b/src/main/java/de/thetaphi/forbiddenapis/Signatures.java index 195e599c..d17c98a5 100644 --- a/src/main/java/de/thetaphi/forbiddenapis/Signatures.java +++ b/src/main/java/de/thetaphi/forbiddenapis/Signatures.java @@ -261,8 +261,7 @@ private void parseSignaturesStream(InputStream in, boolean allowBundled, Set missingClasses) throws IOException,ParseException { - final BufferedReader r = new BufferedReader(reader); - try { + try (final BufferedReader r = new BufferedReader(reader)) { String line, defaultMessage = null; UnresolvableReporting reporter = failOnUnresolvableSignatures ? UnresolvableReporting.FAIL : UnresolvableReporting.WARNING; while ((line = r.readLine()) != null) { @@ -285,8 +284,6 @@ private void parseSignaturesFile(Reader reader, boolean isBundled, Set m addSignature(line, defaultMessage, reporter, missingClasses); } } - } finally { - r.close(); } } diff --git a/src/main/java/de/thetaphi/forbiddenapis/cli/CliMain.java b/src/main/java/de/thetaphi/forbiddenapis/cli/CliMain.java index b4c94f89..28f4310c 100644 --- a/src/main/java/de/thetaphi/forbiddenapis/cli/CliMain.java +++ b/src/main/java/de/thetaphi/forbiddenapis/cli/CliMain.java @@ -18,7 +18,6 @@ import static de.thetaphi.forbiddenapis.Checker.Option.*; -import java.io.Closeable; import java.io.File; import java.io.IOException; import java.util.Arrays; @@ -214,8 +213,7 @@ public void run() throws ExitException { } // System.err.println("Classpath: " + Arrays.toString(urls)); - final URLClassLoader loader = URLClassLoader.newInstance(urls, ClassLoader.getSystemClassLoader()); - try { + try (final URLClassLoader loader = URLClassLoader.newInstance(urls, ClassLoader.getSystemClassLoader())) { final EnumSet options = EnumSet.of(FAIL_ON_VIOLATION); if (!cmd.hasOption(allowmissingclassesOpt.getLongOpt())) options.add(FAIL_ON_MISSING_CLASSES); if (!cmd.hasOption(allowunresolvablesignaturesOpt.getLongOpt())) options.add(FAIL_ON_UNRESOLVABLE_SIGNATURES); @@ -294,13 +292,8 @@ public void run() throws ExitException { } catch (ForbiddenApiException fae) { throw new ExitException(EXIT_VIOLATION, fae.getMessage()); } - } finally { - // Java 7 supports closing URLClassLoader, so check for Closeable interface: - if (loader instanceof Closeable) try { - ((Closeable) loader).close(); - } catch (IOException ioe) { - // ignore - } + } catch (IOException ioe) { + throw new ExitException(EXIT_ERR_OTHER, "General IO problem: " + ioe); } } diff --git a/src/main/java/de/thetaphi/forbiddenapis/gradle/CheckForbiddenApis.java b/src/main/java/de/thetaphi/forbiddenapis/gradle/CheckForbiddenApis.java index 94880a39..7e6b9a06 100644 --- a/src/main/java/de/thetaphi/forbiddenapis/gradle/CheckForbiddenApis.java +++ b/src/main/java/de/thetaphi/forbiddenapis/gradle/CheckForbiddenApis.java @@ -19,7 +19,6 @@ import static de.thetaphi.forbiddenapis.Checker.Option.*; import groovy.lang.Closure; -import java.io.Closeable; import java.io.File; import java.io.IOException; import java.lang.annotation.RetentionPolicy; @@ -618,9 +617,9 @@ public void info(String msg) { checker.run(); } finally { - // Java 7 supports closing URLClassLoader, so check for Closeable interface: - if (urlLoader instanceof Closeable) try { - ((Closeable) urlLoader).close(); + // Close the classloader to free resources: + try { + if (urlLoader != null) urlLoader.close(); } catch (IOException ioe) { // ignore } diff --git a/src/main/java/de/thetaphi/forbiddenapis/gradle/ForbiddenApisPlugin.java b/src/main/java/de/thetaphi/forbiddenapis/gradle/ForbiddenApisPlugin.java index 1b064a9e..70811047 100644 --- a/src/main/java/de/thetaphi/forbiddenapis/gradle/ForbiddenApisPlugin.java +++ b/src/main/java/de/thetaphi/forbiddenapis/gradle/ForbiddenApisPlugin.java @@ -70,7 +70,9 @@ public class ForbiddenApisPlugin implements Plugin { @Override public Class run() { try { - final GroovyClassLoader loader = new GroovyClassLoader(ForbiddenApisPlugin.class.getClassLoader(), configuration); + // We don't close the classloader, as we may need it later when loading other classes from inside script: + @SuppressWarnings("resource") final GroovyClassLoader loader = + new GroovyClassLoader(ForbiddenApisPlugin.class.getClassLoader(), configuration); final GroovyCodeSource csrc = new GroovyCodeSource(scriptUrl); @SuppressWarnings("unchecked") final Class clazz = loader.parseClass(csrc, false).asSubclass(DelegatingScript.class); diff --git a/src/main/java/de/thetaphi/forbiddenapis/maven/AbstractCheckMojo.java b/src/main/java/de/thetaphi/forbiddenapis/maven/AbstractCheckMojo.java index 9a8f5d55..3d27e8c4 100644 --- a/src/main/java/de/thetaphi/forbiddenapis/maven/AbstractCheckMojo.java +++ b/src/main/java/de/thetaphi/forbiddenapis/maven/AbstractCheckMojo.java @@ -36,7 +36,6 @@ import de.thetaphi.forbiddenapis.Logger; import de.thetaphi.forbiddenapis.ParseException; -import java.io.Closeable; import java.io.File; import java.io.IOException; import java.lang.annotation.RetentionPolicy; @@ -446,9 +445,9 @@ public void info(String msg) { throw new MojoExecutionException(fae.getMessage(), fae.getCause()); } } finally { - // Java 7 supports closing URLClassLoader, so check for Closeable interface: - if (urlLoader instanceof Closeable) try { - ((Closeable) urlLoader).close(); + // Close the classloader to free resources: + try { + if (urlLoader != null) urlLoader.close(); } catch (IOException ioe) { // ignore } diff --git a/src/tools/java/de/thetaphi/forbiddenapis/DeprecatedGen.java b/src/tools/java/de/thetaphi/forbiddenapis/DeprecatedGen.java index e21ab9eb..bba85368 100644 --- a/src/tools/java/de/thetaphi/forbiddenapis/DeprecatedGen.java +++ b/src/tools/java/de/thetaphi/forbiddenapis/DeprecatedGen.java @@ -135,11 +135,8 @@ protected void writeOutput(OutputStream out) throws IOException { public void run() throws IOException { System.err.println(String.format(Locale.ENGLISH, "Reading '%s' and extracting deprecated APIs to signatures file '%s'...", source, output)); collectClasses(source); - final FileOutputStream out = new FileOutputStream(output); - try { + try (final FileOutputStream out = new FileOutputStream(output)) { writeOutput(out); - } finally { - out.close(); } System.err.println("Deprecated API signatures for Java version " + javaVersion + " written successfully."); } diff --git a/src/tools/java/de/thetaphi/forbiddenapis/InternalApiGen.java b/src/tools/java/de/thetaphi/forbiddenapis/InternalApiGen.java index e9dbca6c..96251754 100644 --- a/src/tools/java/de/thetaphi/forbiddenapis/InternalApiGen.java +++ b/src/tools/java/de/thetaphi/forbiddenapis/InternalApiGen.java @@ -75,15 +75,12 @@ void run() throws IOException { parsePackages(Security.getProperty("package.access"), packages); // TODO: add this, too??: parsePackages(Security.getProperty("package.definition"), packages); - final BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(output), "UTF-8")); - try { + try (final BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(output), "UTF-8"))) { writer.write(header); for (final String s : packages) { writer.write(s); writer.newLine(); } - } finally { - writer.close(); } System.err.println("Internal API signatures for Java version " + javaVersion + " written successfully."); From b69f3b2f38a132517667042ff1c726f404b3ebaf Mon Sep 17 00:00:00 2001 From: Uwe Schindler Date: Mon, 6 Apr 2020 15:52:41 +0200 Subject: [PATCH 03/11] Remove signatures file of Java 6 --- .../signatures/jdk-deprecated-1.6.txt | 424 ------------------ .../signatures/jdk-internal-1.6.txt | 14 - .../signatures/jdk-unsafe-1.6.txt | 116 ----- .../signatures/jdk-unsafe-1.7.txt | 99 +++- src/test/antunit/TestMavenMojo.xml | 6 +- 5 files changed, 100 insertions(+), 559 deletions(-) delete mode 100644 src/main/resources/de/thetaphi/forbiddenapis/signatures/jdk-deprecated-1.6.txt delete mode 100644 src/main/resources/de/thetaphi/forbiddenapis/signatures/jdk-internal-1.6.txt delete mode 100644 src/main/resources/de/thetaphi/forbiddenapis/signatures/jdk-unsafe-1.6.txt diff --git a/src/main/resources/de/thetaphi/forbiddenapis/signatures/jdk-deprecated-1.6.txt b/src/main/resources/de/thetaphi/forbiddenapis/signatures/jdk-deprecated-1.6.txt deleted file mode 100644 index 7e46e6d3..00000000 --- a/src/main/resources/de/thetaphi/forbiddenapis/signatures/jdk-deprecated-1.6.txt +++ /dev/null @@ -1,424 +0,0 @@ -# This file contains API signatures extracted from the rt.jar / jimage file shipped with the class library of Oracle's Java Runtime Environment. -# It is provided here for reference, but can easily regenerated by executing from the source folder of forbidden-apis: -# $ ant generate-deprecated - -# This file contains all public, deprecated API signatures in Java version 1.6 (extracted from build 1.6.0_32). - -@ignoreUnresolvable -@defaultMessage Deprecated in Java 1.6 - -java.awt.BorderLayout#addLayoutComponent(java.lang.String,java.awt.Component) -java.awt.CardLayout#addLayoutComponent(java.lang.String,java.awt.Component) -java.awt.CheckboxGroup#getCurrent() -java.awt.CheckboxGroup#setCurrent(java.awt.Checkbox) -java.awt.Choice#countItems() -java.awt.Component#action(java.awt.Event,java.lang.Object) -java.awt.Component#bounds() -java.awt.Component#deliverEvent(java.awt.Event) -java.awt.Component#disable() -java.awt.Component#enable() -java.awt.Component#enable(boolean) -java.awt.Component#getPeer() -java.awt.Component#gotFocus(java.awt.Event,java.lang.Object) -java.awt.Component#handleEvent(java.awt.Event) -java.awt.Component#hide() -java.awt.Component#inside(int,int) -java.awt.Component#isFocusTraversable() -java.awt.Component#keyDown(java.awt.Event,int) -java.awt.Component#keyUp(java.awt.Event,int) -java.awt.Component#layout() -java.awt.Component#locate(int,int) -java.awt.Component#location() -java.awt.Component#lostFocus(java.awt.Event,java.lang.Object) -java.awt.Component#minimumSize() -java.awt.Component#mouseDown(java.awt.Event,int,int) -java.awt.Component#mouseDrag(java.awt.Event,int,int) -java.awt.Component#mouseEnter(java.awt.Event,int,int) -java.awt.Component#mouseExit(java.awt.Event,int,int) -java.awt.Component#mouseMove(java.awt.Event,int,int) -java.awt.Component#mouseUp(java.awt.Event,int,int) -java.awt.Component#move(int,int) -java.awt.Component#nextFocus() -java.awt.Component#postEvent(java.awt.Event) -java.awt.Component#preferredSize() -java.awt.Component#reshape(int,int,int,int) -java.awt.Component#resize(int,int) -java.awt.Component#resize(java.awt.Dimension) -java.awt.Component#show() -java.awt.Component#show(boolean) -java.awt.Component#size() -java.awt.ComponentOrientation#getOrientation(java.util.ResourceBundle) -java.awt.Container#countComponents() -java.awt.Container#deliverEvent(java.awt.Event) -java.awt.Container#insets() -java.awt.Container#layout() -java.awt.Container#locate(int,int) -java.awt.Container#minimumSize() -java.awt.Container#preferredSize() -java.awt.Dialog#hide() -java.awt.Dialog#show() -java.awt.Font#getPeer() -java.awt.FontMetrics#getMaxDecent() -java.awt.Frame#CROSSHAIR_CURSOR -java.awt.Frame#DEFAULT_CURSOR -java.awt.Frame#E_RESIZE_CURSOR -java.awt.Frame#HAND_CURSOR -java.awt.Frame#MOVE_CURSOR -java.awt.Frame#NE_RESIZE_CURSOR -java.awt.Frame#NW_RESIZE_CURSOR -java.awt.Frame#N_RESIZE_CURSOR -java.awt.Frame#SE_RESIZE_CURSOR -java.awt.Frame#SW_RESIZE_CURSOR -java.awt.Frame#S_RESIZE_CURSOR -java.awt.Frame#TEXT_CURSOR -java.awt.Frame#WAIT_CURSOR -java.awt.Frame#W_RESIZE_CURSOR -java.awt.Frame#getCursorType() -java.awt.Frame#setCursor(int) -java.awt.Graphics#getClipRect() -java.awt.List#addItem(java.lang.String) -java.awt.List#addItem(java.lang.String,int) -java.awt.List#allowsMultipleSelections() -java.awt.List#clear() -java.awt.List#countItems() -java.awt.List#delItem(int) -java.awt.List#delItems(int,int) -java.awt.List#isSelected(int) -java.awt.List#minimumSize() -java.awt.List#minimumSize(int) -java.awt.List#preferredSize() -java.awt.List#preferredSize(int) -java.awt.List#setMultipleSelections(boolean) -java.awt.Menu#countItems() -java.awt.MenuBar#countMenus() -java.awt.MenuComponent#getPeer() -java.awt.MenuComponent#postEvent(java.awt.Event) -java.awt.MenuContainer#postEvent(java.awt.Event) -java.awt.MenuItem#disable() -java.awt.MenuItem#enable() -java.awt.MenuItem#enable(boolean) -java.awt.Polygon#getBoundingBox() -java.awt.Polygon#inside(int,int) -java.awt.Rectangle#inside(int,int) -java.awt.Rectangle#move(int,int) -java.awt.Rectangle#reshape(int,int,int,int) -java.awt.Rectangle#resize(int,int) -java.awt.ScrollPane#layout() -java.awt.Scrollbar#getLineIncrement() -java.awt.Scrollbar#getPageIncrement() -java.awt.Scrollbar#getVisible() -java.awt.Scrollbar#setLineIncrement(int) -java.awt.Scrollbar#setPageIncrement(int) -java.awt.TextArea#appendText(java.lang.String) -java.awt.TextArea#insertText(java.lang.String,int) -java.awt.TextArea#minimumSize() -java.awt.TextArea#minimumSize(int,int) -java.awt.TextArea#preferredSize() -java.awt.TextArea#preferredSize(int,int) -java.awt.TextArea#replaceText(java.lang.String,int,int) -java.awt.TextField#minimumSize() -java.awt.TextField#minimumSize(int) -java.awt.TextField#preferredSize() -java.awt.TextField#preferredSize(int) -java.awt.TextField#setEchoCharacter(char) -java.awt.Toolkit#getFontList() -java.awt.Toolkit#getFontMetrics(java.awt.Font) -java.awt.Toolkit#getFontPeer(java.lang.String,int) -java.awt.Window#applyResourceBundle(java.lang.String) -java.awt.Window#applyResourceBundle(java.util.ResourceBundle) -java.awt.Window#hide() -java.awt.Window#postEvent(java.awt.Event) -java.awt.Window#reshape(int,int,int,int) -java.awt.Window#show() -java.awt.datatransfer.DataFlavor#equals(java.lang.String) -java.awt.datatransfer.DataFlavor#normalizeMimeType(java.lang.String) -java.awt.datatransfer.DataFlavor#normalizeMimeTypeParameter(java.lang.String,java.lang.String) -java.awt.datatransfer.DataFlavor#plainTextFlavor -java.awt.event.KeyEvent#(java.awt.Component,int,long,int,int) -java.awt.event.KeyEvent#setModifiers(int) -java.awt.image.renderable.RenderContext#concetenateTransform(java.awt.geom.AffineTransform) -java.awt.image.renderable.RenderContext#preConcetenateTransform(java.awt.geom.AffineTransform) -java.io.ByteArrayOutputStream#toString(int) -java.io.DataInputStream#readLine() -java.io.File#toURL() -java.io.LineNumberInputStream -java.io.ObjectInputStream#readLine() -java.io.ObjectOutputStream$PutField#write(java.io.ObjectOutput) -java.io.StreamTokenizer#(java.io.InputStream) -java.io.StringBufferInputStream -java.lang.Character#isJavaLetter(char) -java.lang.Character#isJavaLetterOrDigit(char) -java.lang.Character#isSpace(char) -java.lang.Character$UnicodeBlock#SURROGATES_AREA -java.lang.ClassLoader#defineClass(byte[],int,int) -java.lang.Runtime#getLocalizedInputStream(java.io.InputStream) -java.lang.Runtime#getLocalizedOutputStream(java.io.OutputStream) -java.lang.Runtime#runFinalizersOnExit(boolean) -java.lang.SecurityManager#checkMulticast(java.net.InetAddress,byte) -java.lang.SecurityManager#classDepth(java.lang.String) -java.lang.SecurityManager#classLoaderDepth() -java.lang.SecurityManager#currentClassLoader() -java.lang.SecurityManager#currentLoadedClass() -java.lang.SecurityManager#getInCheck() -java.lang.SecurityManager#inCheck -java.lang.SecurityManager#inClass(java.lang.String) -java.lang.SecurityManager#inClassLoader() -java.lang.String#(byte[],int) -java.lang.String#(byte[],int,int,int) -java.lang.String#getBytes(int,int,byte[],int) -java.lang.System#runFinalizersOnExit(boolean) -java.lang.Thread#countStackFrames() -java.lang.Thread#destroy() -java.lang.Thread#resume() -java.lang.Thread#stop() -java.lang.Thread#stop(java.lang.Throwable) -java.lang.Thread#suspend() -java.lang.ThreadGroup#allowThreadSuspension(boolean) -java.lang.ThreadGroup#resume() -java.lang.ThreadGroup#stop() -java.lang.ThreadGroup#suspend() -java.net.DatagramSocketImpl#getTTL() -java.net.DatagramSocketImpl#setTTL(byte) -java.net.HttpURLConnection#HTTP_SERVER_ERROR -java.net.MulticastSocket#getTTL() -java.net.MulticastSocket#send(java.net.DatagramPacket,byte) -java.net.MulticastSocket#setTTL(byte) -java.net.Socket#(java.lang.String,int,boolean) -java.net.Socket#(java.net.InetAddress,int,boolean) -java.net.URLConnection#getDefaultRequestProperty(java.lang.String) -java.net.URLConnection#setDefaultRequestProperty(java.lang.String,java.lang.String) -java.net.URLDecoder#decode(java.lang.String) -java.net.URLEncoder#encode(java.lang.String) -java.net.URLStreamHandler#setURL(java.net.URL,java.lang.String,java.lang.String,int,java.lang.String,java.lang.String) -java.rmi.RMISecurityException -java.rmi.ServerRuntimeException -java.rmi.dgc.VMID#isUnique() -java.rmi.registry.RegistryHandler -java.rmi.server.LoaderHandler -java.rmi.server.LogStream -java.rmi.server.Operation -java.rmi.server.RMIClassLoader#getSecurityContext(java.lang.ClassLoader) -java.rmi.server.RMIClassLoader#loadClass(java.lang.String) -java.rmi.server.RemoteCall -java.rmi.server.RemoteRef#done(java.rmi.server.RemoteCall) -java.rmi.server.RemoteRef#invoke(java.rmi.server.RemoteCall) -java.rmi.server.RemoteRef#newCall(java.rmi.server.RemoteObject,java.rmi.server.Operation[],int,long) -java.rmi.server.RemoteStub#setRef(java.rmi.server.RemoteStub,java.rmi.server.RemoteRef) -java.rmi.server.Skeleton -java.rmi.server.SkeletonMismatchException -java.rmi.server.SkeletonNotFoundException -java.security.Certificate -java.security.Identity -java.security.IdentityScope -java.security.Security#getAlgorithmProperty(java.lang.String,java.lang.String) -java.security.Signature#getParameter(java.lang.String) -java.security.Signature#setParameter(java.lang.String,java.lang.Object) -java.security.SignatureSpi#engineGetParameter(java.lang.String) -java.security.SignatureSpi#engineSetParameter(java.lang.String,java.lang.Object) -java.security.Signer -java.sql.CallableStatement#getBigDecimal(int,int) -java.sql.Date#(int,int,int) -java.sql.Date#getHours() -java.sql.Date#getMinutes() -java.sql.Date#getSeconds() -java.sql.Date#setHours(int) -java.sql.Date#setMinutes(int) -java.sql.Date#setSeconds(int) -java.sql.DriverManager#getLogStream() -java.sql.DriverManager#setLogStream(java.io.PrintStream) -java.sql.PreparedStatement#setUnicodeStream(int,java.io.InputStream,int) -java.sql.ResultSet#getBigDecimal(int,int) -java.sql.ResultSet#getBigDecimal(java.lang.String,int) -java.sql.ResultSet#getUnicodeStream(int) -java.sql.ResultSet#getUnicodeStream(java.lang.String) -java.sql.Time#(int,int,int) -java.sql.Time#getDate() -java.sql.Time#getDay() -java.sql.Time#getMonth() -java.sql.Time#getYear() -java.sql.Time#setDate(int) -java.sql.Time#setMonth(int) -java.sql.Time#setYear(int) -java.sql.Timestamp#(int,int,int,int,int,int,int) -java.util.Date#(int,int,int) -java.util.Date#(int,int,int,int,int) -java.util.Date#(int,int,int,int,int,int) -java.util.Date#(java.lang.String) -java.util.Date#UTC(int,int,int,int,int,int) -java.util.Date#getDate() -java.util.Date#getDay() -java.util.Date#getHours() -java.util.Date#getMinutes() -java.util.Date#getMonth() -java.util.Date#getSeconds() -java.util.Date#getTimezoneOffset() -java.util.Date#getYear() -java.util.Date#parse(java.lang.String) -java.util.Date#setDate(int) -java.util.Date#setHours(int) -java.util.Date#setMinutes(int) -java.util.Date#setMonth(int) -java.util.Date#setSeconds(int) -java.util.Date#setYear(int) -java.util.Date#toGMTString() -java.util.Date#toLocaleString() -java.util.Properties#save(java.io.OutputStream,java.lang.String) -java.util.logging.Logger#global -javax.accessibility.AccessibleResourceBundle -javax.activation.ActivationDataFlavor#normalizeMimeType(java.lang.String) -javax.activation.ActivationDataFlavor#normalizeMimeTypeParameter(java.lang.String,java.lang.String) -javax.jws.HandlerChain#name() -javax.jws.soap.InitParam -javax.jws.soap.SOAPMessageHandler -javax.jws.soap.SOAPMessageHandlers -javax.management.AttributeValueExp#() -javax.management.DefaultLoaderRepository -javax.management.MBeanServer#deserialize(java.lang.String,byte[]) -javax.management.MBeanServer#deserialize(java.lang.String,javax.management.ObjectName,byte[]) -javax.management.MBeanServer#deserialize(javax.management.ObjectName,byte[]) -javax.management.ValueExp#setMBeanServer(javax.management.MBeanServer) -javax.management.loading.DefaultLoaderRepository -javax.management.monitor.CounterMonitor#getDerivedGauge() -javax.management.monitor.CounterMonitor#getDerivedGaugeTimeStamp() -javax.management.monitor.CounterMonitor#getThreshold() -javax.management.monitor.CounterMonitor#setThreshold(java.lang.Number) -javax.management.monitor.CounterMonitorMBean#getDerivedGauge() -javax.management.monitor.CounterMonitorMBean#getDerivedGaugeTimeStamp() -javax.management.monitor.CounterMonitorMBean#getThreshold() -javax.management.monitor.CounterMonitorMBean#setThreshold(java.lang.Number) -javax.management.monitor.GaugeMonitor#getDerivedGauge() -javax.management.monitor.GaugeMonitor#getDerivedGaugeTimeStamp() -javax.management.monitor.GaugeMonitorMBean#getDerivedGauge() -javax.management.monitor.GaugeMonitorMBean#getDerivedGaugeTimeStamp() -javax.management.monitor.Monitor#alreadyNotified -javax.management.monitor.Monitor#dbgTag -javax.management.monitor.Monitor#getObservedObject() -javax.management.monitor.Monitor#setObservedObject(javax.management.ObjectName) -javax.management.monitor.MonitorMBean#getObservedObject() -javax.management.monitor.MonitorMBean#setObservedObject(javax.management.ObjectName) -javax.management.monitor.StringMonitor#getDerivedGauge() -javax.management.monitor.StringMonitor#getDerivedGaugeTimeStamp() -javax.management.monitor.StringMonitorMBean#getDerivedGauge() -javax.management.monitor.StringMonitorMBean#getDerivedGaugeTimeStamp() -javax.management.openmbean.OpenType#ALLOWED_CLASSNAMES -javax.security.auth.Policy -javax.sql.rowset.BaseRowSet#setUnicodeStream(int,java.io.InputStream,int) -javax.swing.AbstractButton#getLabel() -javax.swing.AbstractButton#setLabel(java.lang.String) -javax.swing.FocusManager#disableSwingFocusManager() -javax.swing.FocusManager#isFocusManagerEnabled() -javax.swing.JComponent#disable() -javax.swing.JComponent#enable() -javax.swing.JComponent#getNextFocusableComponent() -javax.swing.JComponent#isManagingFocus() -javax.swing.JComponent#requestDefaultFocus() -javax.swing.JComponent#reshape(int,int,int,int) -javax.swing.JComponent#setNextFocusableComponent(java.awt.Component) -javax.swing.JInternalFrame#getMenuBar() -javax.swing.JInternalFrame#setMenuBar(javax.swing.JMenuBar) -javax.swing.JMenuBar#getComponentAtIndex(int) -javax.swing.JPasswordField#getText() -javax.swing.JPasswordField#getText(int,int) -javax.swing.JPopupMenu#getComponentAtIndex(int) -javax.swing.JRootPane#defaultPressAction -javax.swing.JRootPane#defaultReleaseAction -javax.swing.JRootPane#getMenuBar() -javax.swing.JRootPane#setMenuBar(javax.swing.JMenuBar) -javax.swing.JTable#createScrollPaneForTable(javax.swing.JTable) -javax.swing.JTable#sizeColumnsToFit(boolean) -javax.swing.JViewport#backingStore -javax.swing.JViewport#isBackingStoreEnabled() -javax.swing.JViewport#setBackingStoreEnabled(boolean) -javax.swing.KeyStroke#getKeyStroke(char,boolean) -javax.swing.ScrollPaneLayout#getViewportBorderBounds(javax.swing.JScrollPane) -javax.swing.SwingUtilities#findFocusOwner(java.awt.Component) -javax.swing.plaf.basic.BasicDesktopPaneUI#closeKey -javax.swing.plaf.basic.BasicDesktopPaneUI#maximizeKey -javax.swing.plaf.basic.BasicDesktopPaneUI#minimizeKey -javax.swing.plaf.basic.BasicDesktopPaneUI#navigateKey -javax.swing.plaf.basic.BasicDesktopPaneUI#navigateKey2 -javax.swing.plaf.basic.BasicInternalFrameUI#openMenuKey -javax.swing.plaf.basic.BasicSplitPaneUI#createKeyboardDownRightListener() -javax.swing.plaf.basic.BasicSplitPaneUI#createKeyboardEndListener() -javax.swing.plaf.basic.BasicSplitPaneUI#createKeyboardHomeListener() -javax.swing.plaf.basic.BasicSplitPaneUI#createKeyboardResizeToggleListener() -javax.swing.plaf.basic.BasicSplitPaneUI#createKeyboardUpLeftListener() -javax.swing.plaf.basic.BasicSplitPaneUI#dividerResizeToggleKey -javax.swing.plaf.basic.BasicSplitPaneUI#downKey -javax.swing.plaf.basic.BasicSplitPaneUI#endKey -javax.swing.plaf.basic.BasicSplitPaneUI#getDividerBorderSize() -javax.swing.plaf.basic.BasicSplitPaneUI#homeKey -javax.swing.plaf.basic.BasicSplitPaneUI#keyboardDownRightListener -javax.swing.plaf.basic.BasicSplitPaneUI#keyboardEndListener -javax.swing.plaf.basic.BasicSplitPaneUI#keyboardHomeListener -javax.swing.plaf.basic.BasicSplitPaneUI#keyboardResizeToggleListener -javax.swing.plaf.basic.BasicSplitPaneUI#keyboardUpLeftListener -javax.swing.plaf.basic.BasicSplitPaneUI#leftKey -javax.swing.plaf.basic.BasicSplitPaneUI#rightKey -javax.swing.plaf.basic.BasicSplitPaneUI#upKey -javax.swing.plaf.basic.BasicTabbedPaneUI#downKey -javax.swing.plaf.basic.BasicTabbedPaneUI#leftKey -javax.swing.plaf.basic.BasicTabbedPaneUI#rightKey -javax.swing.plaf.basic.BasicTabbedPaneUI#upKey -javax.swing.plaf.basic.BasicToolBarUI#downKey -javax.swing.plaf.basic.BasicToolBarUI#leftKey -javax.swing.plaf.basic.BasicToolBarUI#rightKey -javax.swing.plaf.basic.BasicToolBarUI#upKey -javax.swing.plaf.metal.MetalComboBoxUI#editablePropertyChanged(java.beans.PropertyChangeEvent) -javax.swing.plaf.metal.MetalComboBoxUI#removeListeners() -javax.swing.plaf.metal.MetalComboBoxUI$MetalComboPopup -javax.swing.table.TableColumn#disableResizedPosting() -javax.swing.table.TableColumn#enableResizedPosting() -javax.swing.table.TableColumn#resizedPostingDisableCount -javax.swing.text.DefaultTextUI -javax.swing.text.LabelView#getFontMetrics() -javax.swing.text.TableView#createTableCell(javax.swing.text.Element) -javax.swing.text.TableView$TableCell -javax.swing.text.View#modelToView(int,java.awt.Shape) -javax.swing.text.View#viewToModel(float,float,java.awt.Shape) -javax.swing.text.html.FormView#RESET -javax.swing.text.html.FormView#SUBMIT -javax.swing.text.html.HTMLEditorKit$InsertHTMLTextAction#insertAtBoundry(javax.swing.JEditorPane,javax.swing.text.html.HTMLDocument,int,javax.swing.text.Element,java.lang.String,javax.swing.text.html.HTML$Tag,javax.swing.text.html.HTML$Tag) -javax.xml.bind.JAXBContext#createValidator() -javax.xml.bind.Unmarshaller#isValidating() -javax.xml.bind.Unmarshaller#setValidating(boolean) -javax.xml.bind.Validator -javax.xml.soap.SOAPElementFactory -javax.xml.stream.XMLEventFactory#newInstance(java.lang.String,java.lang.ClassLoader) -javax.xml.stream.XMLInputFactory#newInstance(java.lang.String,java.lang.ClassLoader) -javax.xml.stream.XMLOutputFactory#newInstance(java.lang.String,java.lang.ClassLoader) -org.omg.CORBA.Any#extract_Principal() -org.omg.CORBA.Any#insert_Principal(org.omg.CORBA.Principal) -org.omg.CORBA.DynAny -org.omg.CORBA.DynArray -org.omg.CORBA.DynEnum -org.omg.CORBA.DynFixed -org.omg.CORBA.DynSequence -org.omg.CORBA.DynStruct -org.omg.CORBA.DynUnion -org.omg.CORBA.DynValue -org.omg.CORBA.DynamicImplementation -org.omg.CORBA.ORB#create_basic_dyn_any(org.omg.CORBA.TypeCode) -org.omg.CORBA.ORB#create_dyn_any(org.omg.CORBA.Any) -org.omg.CORBA.ORB#create_dyn_array(org.omg.CORBA.TypeCode) -org.omg.CORBA.ORB#create_dyn_enum(org.omg.CORBA.TypeCode) -org.omg.CORBA.ORB#create_dyn_sequence(org.omg.CORBA.TypeCode) -org.omg.CORBA.ORB#create_dyn_struct(org.omg.CORBA.TypeCode) -org.omg.CORBA.ORB#create_dyn_union(org.omg.CORBA.TypeCode) -org.omg.CORBA.ORB#create_recursive_sequence_tc(int,int) -org.omg.CORBA.ORB#get_current() -org.omg.CORBA.Principal -org.omg.CORBA.PrincipalHolder -org.omg.CORBA.ServerRequest#except(org.omg.CORBA.Any) -org.omg.CORBA.ServerRequest#op_name() -org.omg.CORBA.ServerRequest#params(org.omg.CORBA.NVList) -org.omg.CORBA.ServerRequest#result(org.omg.CORBA.Any) -org.omg.CORBA.TCKind#(int) -org.omg.CORBA.portable.InputStream#read_Principal() -org.omg.CORBA.portable.OutputStream#write_Principal(org.omg.CORBA.Principal) -org.xml.sax.AttributeList -org.xml.sax.DocumentHandler -org.xml.sax.HandlerBase -org.xml.sax.Parser -org.xml.sax.helpers.AttributeListImpl -org.xml.sax.helpers.ParserFactory diff --git a/src/main/resources/de/thetaphi/forbiddenapis/signatures/jdk-internal-1.6.txt b/src/main/resources/de/thetaphi/forbiddenapis/signatures/jdk-internal-1.6.txt deleted file mode 100644 index 5e202018..00000000 --- a/src/main/resources/de/thetaphi/forbiddenapis/signatures/jdk-internal-1.6.txt +++ /dev/null @@ -1,14 +0,0 @@ -# This file contains API signatures that are marked as internal in Java. -# It is provided here for reference, but can easily regenerated by executing from the source folder of forbidden-apis: -# $ ant generate-internal - -# This file contains all internal packages listed in Security.getProperty("package.access") of Java version 1.6 (extracted from build 1.6.0_32). - -@defaultMessage non-public internal runtime class in Java 1.6 - -com.sun.imageio.** -com.sun.org.apache.xalan.internal.utils.** -com.sun.org.apache.xerces.internal.utils.** -com.sun.xml.internal.bind.** -com.sun.xml.internal.ws.** -sun.** diff --git a/src/main/resources/de/thetaphi/forbiddenapis/signatures/jdk-unsafe-1.6.txt b/src/main/resources/de/thetaphi/forbiddenapis/signatures/jdk-unsafe-1.6.txt deleted file mode 100644 index c15a817c..00000000 --- a/src/main/resources/de/thetaphi/forbiddenapis/signatures/jdk-unsafe-1.6.txt +++ /dev/null @@ -1,116 +0,0 @@ -# (C) Copyright Uwe Schindler (Generics Policeman) and others. -# Parts of this work are licensed to the Apache Software Foundation (ASF) -# under one or more contributor license agreements. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# These methods and classes should not be used by server classes (unsafe, no charset, no locale,...): - -@defaultMessage Uses default charset -java.lang.String#(byte[]) -java.lang.String#(byte[],int) -java.lang.String#(byte[],int,int) -java.lang.String#(byte[],int,int,int) -java.lang.String#getBytes() -java.lang.String#getBytes(int,int,byte[],int) -java.io.FileReader#(java.lang.String) -java.io.FileReader#(java.io.File) -java.io.FileReader#(java.io.FileDescriptor) -java.io.FileWriter#(java.lang.String) -java.io.FileWriter#(java.lang.String,boolean) -java.io.FileWriter#(java.io.File) -java.io.FileWriter#(java.io.File,boolean) -java.io.FileWriter#(java.io.FileDescriptor) -java.io.ByteArrayOutputStream#toString() -java.io.InputStreamReader#(java.io.InputStream) -java.io.OutputStreamWriter#(java.io.OutputStream) -java.io.PrintStream#(java.io.File) -java.io.PrintStream#(java.io.OutputStream) -java.io.PrintStream#(java.io.OutputStream,boolean) -java.io.PrintStream#(java.lang.String) -java.io.PrintWriter#(java.io.File) -java.io.PrintWriter#(java.io.OutputStream) -java.io.PrintWriter#(java.io.OutputStream,boolean) -java.io.PrintWriter#(java.lang.String) -java.util.Scanner#(java.io.InputStream) -java.util.Scanner#(java.io.File) -java.util.Scanner#(java.nio.channels.ReadableByteChannel) -java.net.URLDecoder#decode(java.lang.String) -java.net.URLEncoder#encode(java.lang.String) - -@defaultMessage Uses default locale -java.lang.String#toLowerCase() -java.lang.String#toUpperCase() -java.lang.String#format(java.lang.String,java.lang.Object[]) -java.io.PrintStream#format(java.lang.String,java.lang.Object[]) -java.io.PrintStream#printf(java.lang.String,java.lang.Object[]) -java.io.PrintWriter#format(java.lang.String,java.lang.Object[]) -java.io.PrintWriter#printf(java.lang.String,java.lang.Object[]) -java.nio.charset.Charset#displayName() -java.text.BreakIterator#getCharacterInstance() -java.text.BreakIterator#getLineInstance() -java.text.BreakIterator#getSentenceInstance() -java.text.BreakIterator#getWordInstance() -java.text.Collator#getInstance() -java.text.DateFormat#getTimeInstance() -java.text.DateFormat#getTimeInstance(int) -java.text.DateFormat#getDateInstance() -java.text.DateFormat#getDateInstance(int) -java.text.DateFormat#getDateTimeInstance() -java.text.DateFormat#getDateTimeInstance(int,int) -java.text.DateFormat#getInstance() -java.text.DateFormatSymbols#() -java.text.DateFormatSymbols#getInstance() -java.text.DecimalFormat#() -java.text.DecimalFormat#(java.lang.String) -java.text.DecimalFormatSymbols#() -java.text.DecimalFormatSymbols#getInstance() -java.text.MessageFormat#(java.lang.String) -java.text.MessageFormat#format(java.lang.String,java.lang.Object[]) -java.text.NumberFormat#getInstance() -java.text.NumberFormat#getNumberInstance() -java.text.NumberFormat#getIntegerInstance() -java.text.NumberFormat#getCurrencyInstance() -java.text.NumberFormat#getPercentInstance() -java.text.SimpleDateFormat#() -java.text.SimpleDateFormat#(java.lang.String) -java.util.Formatter#() -java.util.Formatter#(java.lang.Appendable) -java.util.Formatter#(java.io.File) -java.util.Formatter#(java.io.File,java.lang.String) -java.util.Formatter#(java.io.OutputStream) -java.util.Formatter#(java.io.OutputStream,java.lang.String) -java.util.Formatter#(java.io.PrintStream) -java.util.Formatter#(java.lang.String) -java.util.Formatter#(java.lang.String,java.lang.String) -java.util.Locale#getDisplayCountry() -java.util.Locale#getDisplayLanguage() -java.util.Locale#getDisplayName() -java.util.Locale#getDisplayVariant() -java.util.ResourceBundle#getBundle(java.lang.String) -java.util.ResourceBundle#getBundle(java.lang.String,java.util.ResourceBundle$Control) -java.util.TimeZone#getDisplayName() -java.util.TimeZone#getDisplayName(boolean,int) - -@defaultMessage Uses default locale or time zone -java.util.Calendar#() -java.util.Calendar#getInstance() -java.util.Calendar#getInstance(java.util.Locale) -java.util.Calendar#getInstance(java.util.TimeZone) -java.util.Currency#getSymbol() -java.util.GregorianCalendar#() -java.util.GregorianCalendar#(int,int,int) -java.util.GregorianCalendar#(int,int,int,int,int) -java.util.GregorianCalendar#(int,int,int,int,int,int) -java.util.GregorianCalendar#(java.util.Locale) -java.util.GregorianCalendar#(java.util.TimeZone) diff --git a/src/main/resources/de/thetaphi/forbiddenapis/signatures/jdk-unsafe-1.7.txt b/src/main/resources/de/thetaphi/forbiddenapis/signatures/jdk-unsafe-1.7.txt index ea867c02..b3fc5413 100644 --- a/src/main/resources/de/thetaphi/forbiddenapis/signatures/jdk-unsafe-1.7.txt +++ b/src/main/resources/de/thetaphi/forbiddenapis/signatures/jdk-unsafe-1.7.txt @@ -14,7 +14,102 @@ # These methods and classes should not be used by server classes (unsafe, no charset, no locale,...): -@includeBundled jdk-unsafe-1.6 - @defaultMessage Uses default charset +java.lang.String#(byte[]) +java.lang.String#(byte[],int) +java.lang.String#(byte[],int,int) +java.lang.String#(byte[],int,int,int) +java.lang.String#getBytes() +java.lang.String#getBytes(int,int,byte[],int) +java.io.FileReader#(java.lang.String) +java.io.FileReader#(java.io.File) +java.io.FileReader#(java.io.FileDescriptor) +java.io.FileWriter#(java.lang.String) +java.io.FileWriter#(java.lang.String,boolean) +java.io.FileWriter#(java.io.File) +java.io.FileWriter#(java.io.File,boolean) +java.io.FileWriter#(java.io.FileDescriptor) +java.io.ByteArrayOutputStream#toString() +java.io.InputStreamReader#(java.io.InputStream) +java.io.OutputStreamWriter#(java.io.OutputStream) +java.io.PrintStream#(java.io.File) +java.io.PrintStream#(java.io.OutputStream) +java.io.PrintStream#(java.io.OutputStream,boolean) +java.io.PrintStream#(java.lang.String) +java.io.PrintWriter#(java.io.File) +java.io.PrintWriter#(java.io.OutputStream) +java.io.PrintWriter#(java.io.OutputStream,boolean) +java.io.PrintWriter#(java.lang.String) +java.util.Scanner#(java.io.InputStream) +java.util.Scanner#(java.io.File) java.util.Scanner#(java.nio.file.Path) +java.util.Scanner#(java.nio.channels.ReadableByteChannel) +java.net.URLDecoder#decode(java.lang.String) +java.net.URLEncoder#encode(java.lang.String) + +@defaultMessage Uses default locale +java.lang.String#toLowerCase() +java.lang.String#toUpperCase() +java.lang.String#format(java.lang.String,java.lang.Object[]) +java.io.PrintStream#format(java.lang.String,java.lang.Object[]) +java.io.PrintStream#printf(java.lang.String,java.lang.Object[]) +java.io.PrintWriter#format(java.lang.String,java.lang.Object[]) +java.io.PrintWriter#printf(java.lang.String,java.lang.Object[]) +java.nio.charset.Charset#displayName() +java.text.BreakIterator#getCharacterInstance() +java.text.BreakIterator#getLineInstance() +java.text.BreakIterator#getSentenceInstance() +java.text.BreakIterator#getWordInstance() +java.text.Collator#getInstance() +java.text.DateFormat#getTimeInstance() +java.text.DateFormat#getTimeInstance(int) +java.text.DateFormat#getDateInstance() +java.text.DateFormat#getDateInstance(int) +java.text.DateFormat#getDateTimeInstance() +java.text.DateFormat#getDateTimeInstance(int,int) +java.text.DateFormat#getInstance() +java.text.DateFormatSymbols#() +java.text.DateFormatSymbols#getInstance() +java.text.DecimalFormat#() +java.text.DecimalFormat#(java.lang.String) +java.text.DecimalFormatSymbols#() +java.text.DecimalFormatSymbols#getInstance() +java.text.MessageFormat#(java.lang.String) +java.text.MessageFormat#format(java.lang.String,java.lang.Object[]) +java.text.NumberFormat#getInstance() +java.text.NumberFormat#getNumberInstance() +java.text.NumberFormat#getIntegerInstance() +java.text.NumberFormat#getCurrencyInstance() +java.text.NumberFormat#getPercentInstance() +java.text.SimpleDateFormat#() +java.text.SimpleDateFormat#(java.lang.String) +java.util.Formatter#() +java.util.Formatter#(java.lang.Appendable) +java.util.Formatter#(java.io.File) +java.util.Formatter#(java.io.File,java.lang.String) +java.util.Formatter#(java.io.OutputStream) +java.util.Formatter#(java.io.OutputStream,java.lang.String) +java.util.Formatter#(java.io.PrintStream) +java.util.Formatter#(java.lang.String) +java.util.Formatter#(java.lang.String,java.lang.String) +java.util.Locale#getDisplayCountry() +java.util.Locale#getDisplayLanguage() +java.util.Locale#getDisplayName() +java.util.Locale#getDisplayVariant() +java.util.ResourceBundle#getBundle(java.lang.String) +java.util.ResourceBundle#getBundle(java.lang.String,java.util.ResourceBundle$Control) +java.util.TimeZone#getDisplayName() +java.util.TimeZone#getDisplayName(boolean,int) + +@defaultMessage Uses default locale or time zone +java.util.Calendar#() +java.util.Calendar#getInstance() +java.util.Calendar#getInstance(java.util.Locale) +java.util.Calendar#getInstance(java.util.TimeZone) +java.util.Currency#getSymbol() +java.util.GregorianCalendar#() +java.util.GregorianCalendar#(int,int,int) +java.util.GregorianCalendar#(int,int,int,int,int) +java.util.GregorianCalendar#(int,int,int,int,int,int) +java.util.GregorianCalendar#(java.util.Locale) +java.util.GregorianCalendar#(java.util.TimeZone) diff --git a/src/test/antunit/TestMavenMojo.xml b/src/test/antunit/TestMavenMojo.xml index 2fe97ad8..f572bbf4 100644 --- a/src/test/antunit/TestMavenMojo.xml +++ b/src/test/antunit/TestMavenMojo.xml @@ -39,11 +39,11 @@ - + - - + + From 6af49f44e8736c2294ef830c26c78882683598c9 Mon Sep 17 00:00:00 2001 From: Uwe Schindler Date: Mon, 6 Apr 2020 15:53:08 +0200 Subject: [PATCH 04/11] Remove test assumption --- .../thetaphi/forbiddenapis/CheckerSetupTest.java | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/test/java/de/thetaphi/forbiddenapis/CheckerSetupTest.java b/src/test/java/de/thetaphi/forbiddenapis/CheckerSetupTest.java index 8dc33f91..7b031ca5 100644 --- a/src/test/java/de/thetaphi/forbiddenapis/CheckerSetupTest.java +++ b/src/test/java/de/thetaphi/forbiddenapis/CheckerSetupTest.java @@ -95,16 +95,11 @@ public void testRuntimeClassSignatures() throws Exception { @Test public void testSignaturePolymorphic() throws Exception { - try { - String internalName = "java/lang/invoke/MethodHandle"; - ClassSignature cs = checker.lookupRelatedClass(internalName, internalName); - assertTrue(cs.signaturePolymorphicMethods.contains("invoke")); - assertTrue(cs.signaturePolymorphicMethods.contains("invokeExact")); - // System.out.println(cs.signaturePolymorphicMethods); - } catch (RelatedClassLoadingException we) { - assertTrue(we.getCause() instanceof ClassNotFoundException); - assumeNoException("This test only works with Java 7+", we); - } + String internalName = "java/lang/invoke/MethodHandle"; + ClassSignature cs = checker.lookupRelatedClass(internalName, internalName); + assertTrue(cs.signaturePolymorphicMethods.contains("invoke")); + assertTrue(cs.signaturePolymorphicMethods.contains("invokeExact")); + // System.out.println(cs.signaturePolymorphicMethods); } @Test From 96fc39539c8457a9096a5df989cbc960bd013280 Mon Sep 17 00:00:00 2001 From: Uwe Schindler Date: Mon, 6 Apr 2020 16:03:49 +0200 Subject: [PATCH 05/11] Enable tests with Java 14 --- build.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/build.xml b/build.xml index 95159193..22ce04e2 100644 --- a/build.xml +++ b/build.xml @@ -153,6 +153,7 @@ + From 27f7da43bb81e1ed3d5f9e7d2cd0ea5a63a402be Mon Sep 17 00:00:00 2001 From: Uwe Schindler Date: Mon, 6 Apr 2020 16:06:29 +0200 Subject: [PATCH 06/11] Fix typo --- build.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.xml b/build.xml index 22ce04e2..65495124 100644 --- a/build.xml +++ b/build.xml @@ -193,7 +193,7 @@ From e0319fbf541a50eac223f6c8f01cfb730d55b83e Mon Sep 17 00:00:00 2001 From: Uwe Schindler Date: Mon, 6 Apr 2020 16:21:14 +0200 Subject: [PATCH 07/11] Sort signatures file --- .../signatures/jdk-unsafe-1.7.txt | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/main/resources/de/thetaphi/forbiddenapis/signatures/jdk-unsafe-1.7.txt b/src/main/resources/de/thetaphi/forbiddenapis/signatures/jdk-unsafe-1.7.txt index b3fc5413..aa795690 100644 --- a/src/main/resources/de/thetaphi/forbiddenapis/signatures/jdk-unsafe-1.7.txt +++ b/src/main/resources/de/thetaphi/forbiddenapis/signatures/jdk-unsafe-1.7.txt @@ -15,21 +15,15 @@ # These methods and classes should not be used by server classes (unsafe, no charset, no locale,...): @defaultMessage Uses default charset -java.lang.String#(byte[]) -java.lang.String#(byte[],int) -java.lang.String#(byte[],int,int) -java.lang.String#(byte[],int,int,int) -java.lang.String#getBytes() -java.lang.String#getBytes(int,int,byte[],int) -java.io.FileReader#(java.lang.String) +java.io.ByteArrayOutputStream#toString() java.io.FileReader#(java.io.File) java.io.FileReader#(java.io.FileDescriptor) -java.io.FileWriter#(java.lang.String) -java.io.FileWriter#(java.lang.String,boolean) +java.io.FileReader#(java.lang.String) java.io.FileWriter#(java.io.File) java.io.FileWriter#(java.io.File,boolean) java.io.FileWriter#(java.io.FileDescriptor) -java.io.ByteArrayOutputStream#toString() +java.io.FileWriter#(java.lang.String) +java.io.FileWriter#(java.lang.String,boolean) java.io.InputStreamReader#(java.io.InputStream) java.io.OutputStreamWriter#(java.io.OutputStream) java.io.PrintStream#(java.io.File) @@ -40,34 +34,40 @@ java.io.PrintWriter#(java.io.File) java.io.PrintWriter#(java.io.OutputStream) java.io.PrintWriter#(java.io.OutputStream,boolean) java.io.PrintWriter#(java.lang.String) -java.util.Scanner#(java.io.InputStream) -java.util.Scanner#(java.io.File) -java.util.Scanner#(java.nio.file.Path) -java.util.Scanner#(java.nio.channels.ReadableByteChannel) +java.lang.String#(byte[]) +java.lang.String#(byte[],int) +java.lang.String#(byte[],int,int) +java.lang.String#(byte[],int,int,int) +java.lang.String#getBytes() +java.lang.String#getBytes(int,int,byte[],int) java.net.URLDecoder#decode(java.lang.String) java.net.URLEncoder#encode(java.lang.String) +java.util.Scanner#(java.io.File) +java.util.Scanner#(java.io.InputStream) +java.util.Scanner#(java.nio.channels.ReadableByteChannel) +java.util.Scanner#(java.nio.file.Path) @defaultMessage Uses default locale -java.lang.String#toLowerCase() -java.lang.String#toUpperCase() -java.lang.String#format(java.lang.String,java.lang.Object[]) java.io.PrintStream#format(java.lang.String,java.lang.Object[]) java.io.PrintStream#printf(java.lang.String,java.lang.Object[]) java.io.PrintWriter#format(java.lang.String,java.lang.Object[]) java.io.PrintWriter#printf(java.lang.String,java.lang.Object[]) +java.lang.String#format(java.lang.String,java.lang.Object[]) +java.lang.String#toLowerCase() +java.lang.String#toUpperCase() java.nio.charset.Charset#displayName() java.text.BreakIterator#getCharacterInstance() java.text.BreakIterator#getLineInstance() java.text.BreakIterator#getSentenceInstance() java.text.BreakIterator#getWordInstance() java.text.Collator#getInstance() -java.text.DateFormat#getTimeInstance() -java.text.DateFormat#getTimeInstance(int) java.text.DateFormat#getDateInstance() java.text.DateFormat#getDateInstance(int) java.text.DateFormat#getDateTimeInstance() java.text.DateFormat#getDateTimeInstance(int,int) java.text.DateFormat#getInstance() +java.text.DateFormat#getTimeInstance() +java.text.DateFormat#getTimeInstance(int) java.text.DateFormatSymbols#() java.text.DateFormatSymbols#getInstance() java.text.DecimalFormat#() @@ -76,20 +76,20 @@ java.text.DecimalFormatSymbols#() java.text.DecimalFormatSymbols#getInstance() java.text.MessageFormat#(java.lang.String) java.text.MessageFormat#format(java.lang.String,java.lang.Object[]) +java.text.NumberFormat#getCurrencyInstance() java.text.NumberFormat#getInstance() -java.text.NumberFormat#getNumberInstance() java.text.NumberFormat#getIntegerInstance() -java.text.NumberFormat#getCurrencyInstance() +java.text.NumberFormat#getNumberInstance() java.text.NumberFormat#getPercentInstance() java.text.SimpleDateFormat#() java.text.SimpleDateFormat#(java.lang.String) java.util.Formatter#() -java.util.Formatter#(java.lang.Appendable) java.util.Formatter#(java.io.File) java.util.Formatter#(java.io.File,java.lang.String) java.util.Formatter#(java.io.OutputStream) java.util.Formatter#(java.io.OutputStream,java.lang.String) java.util.Formatter#(java.io.PrintStream) +java.util.Formatter#(java.lang.Appendable) java.util.Formatter#(java.lang.String) java.util.Formatter#(java.lang.String,java.lang.String) java.util.Locale#getDisplayCountry() From e9b7041f3496b2dad66923892fd9a01c03289d96 Mon Sep 17 00:00:00 2001 From: Uwe Schindler Date: Mon, 6 Apr 2020 16:27:16 +0200 Subject: [PATCH 08/11] Use diamond operator where applicable --- src/main/java/de/thetaphi/forbiddenapis/Checker.java | 8 ++++---- .../java/de/thetaphi/forbiddenapis/ClassScanner.java | 6 +++--- .../de/thetaphi/forbiddenapis/ClassSignature.java | 12 ++++++------ .../java/de/thetaphi/forbiddenapis/Signatures.java | 10 +++++----- .../java/de/thetaphi/forbiddenapis/ant/AntTask.java | 4 ++-- .../java/de/thetaphi/forbiddenapis/cli/CliMain.java | 4 ++-- .../forbiddenapis/gradle/CheckForbiddenApis.java | 2 +- .../gradle/CheckForbiddenApisExtension.java | 8 ++++---- .../forbiddenapis/maven/AbstractCheckMojo.java | 6 +++--- .../de/thetaphi/forbiddenapis/DeprecatedGen.java | 2 +- .../de/thetaphi/forbiddenapis/InternalApiGen.java | 2 +- 11 files changed, 32 insertions(+), 32 deletions(-) diff --git a/src/main/java/de/thetaphi/forbiddenapis/Checker.java b/src/main/java/de/thetaphi/forbiddenapis/Checker.java index 5bec244f..dedd31e8 100644 --- a/src/main/java/de/thetaphi/forbiddenapis/Checker.java +++ b/src/main/java/de/thetaphi/forbiddenapis/Checker.java @@ -69,14 +69,14 @@ public static enum Option { final EnumSet
  • classes: key is the internal name (slashed) * */ - final Map signatures = new HashMap(); + final Map signatures = new HashMap<>(); /** set of patterns of forbidden classes */ - final Set classPatterns = new LinkedHashSet(); + final Set classPatterns = new LinkedHashSet<>(); /** if enabled, the bundled signature to enable heuristics for detection of non-portable runtime calls is used */ private boolean forbidNonPortableRuntime = false; @@ -289,7 +289,7 @@ private void parseSignaturesFile(Reader reader, boolean isBundled, Set m /** Reads a list of bundled API signatures from classpath. */ public void addBundledSignatures(String name, String jdkTargetVersion) throws IOException,ParseException { - final Set missingClasses = new TreeSet(); + final Set missingClasses = new TreeSet<>(); addBundledSignatures(name, jdkTargetVersion, true, missingClasses); reportMissingSignatureClasses(missingClasses); } @@ -297,7 +297,7 @@ public void addBundledSignatures(String name, String jdkTargetVersion) throws IO /** Reads a list of API signatures. Closes the Reader when done (on Exception, too)! */ public void parseSignaturesStream(InputStream in, String name) throws IOException,ParseException { logger.info("Reading API signatures: " + name); - final Set missingClasses = new TreeSet(); + final Set missingClasses = new TreeSet<>(); parseSignaturesStream(in, false, missingClasses); reportMissingSignatureClasses(missingClasses); } @@ -305,7 +305,7 @@ public void parseSignaturesStream(InputStream in, String name) throws IOExceptio /** Reads a list of API signatures from a String. */ public void parseSignaturesString(String signatures) throws IOException,ParseException { logger.info("Reading inline API signatures..."); - final Set missingClasses = new TreeSet(); + final Set missingClasses = new TreeSet<>(); parseSignaturesFile(new StringReader(signatures), false, missingClasses); reportMissingSignatureClasses(missingClasses); } diff --git a/src/main/java/de/thetaphi/forbiddenapis/ant/AntTask.java b/src/main/java/de/thetaphi/forbiddenapis/ant/AntTask.java index a415c356..9b160768 100644 --- a/src/main/java/de/thetaphi/forbiddenapis/ant/AntTask.java +++ b/src/main/java/de/thetaphi/forbiddenapis/ant/AntTask.java @@ -59,8 +59,8 @@ public class AntTask extends Task implements Constants { private final Union classFiles = new Union(); private final Union apiSignatures = new Union(); - private final Collection bundledSignatures = new LinkedHashSet(); - private final Collection suppressAnnotations = new LinkedHashSet(); + private final Collection bundledSignatures = new LinkedHashSet<>(); + private final Collection suppressAnnotations = new LinkedHashSet<>(); private Path classpath = null; private boolean failOnUnsupportedJava = false; diff --git a/src/main/java/de/thetaphi/forbiddenapis/cli/CliMain.java b/src/main/java/de/thetaphi/forbiddenapis/cli/CliMain.java index 28f4310c..27bb7c1b 100644 --- a/src/main/java/de/thetaphi/forbiddenapis/cli/CliMain.java +++ b/src/main/java/de/thetaphi/forbiddenapis/cli/CliMain.java @@ -255,7 +255,7 @@ public void run() throws ExitException { try { final String[] bundledSignatures = cmd.getOptionValues(bundledsignaturesOpt.getLongOpt()); - if (bundledSignatures != null) for (String bs : new LinkedHashSet(Arrays.asList(bundledSignatures))) { + if (bundledSignatures != null) for (String bs : new LinkedHashSet<>(Arrays.asList(bundledSignatures))) { checker.addBundledSignatures(bs, null); } if (cmd.hasOption(internalruntimeforbiddenOpt.getLongOpt())) { @@ -264,7 +264,7 @@ public void run() throws ExitException { } final String[] signaturesFiles = cmd.getOptionValues(signaturesfileOpt.getLongOpt()); - if (signaturesFiles != null) for (String sf : new LinkedHashSet(Arrays.asList(signaturesFiles))) { + if (signaturesFiles != null) for (String sf : new LinkedHashSet<>(Arrays.asList(signaturesFiles))) { final File f = new File(sf).getAbsoluteFile(); checker.parseSignaturesFile(f); } diff --git a/src/main/java/de/thetaphi/forbiddenapis/gradle/CheckForbiddenApis.java b/src/main/java/de/thetaphi/forbiddenapis/gradle/CheckForbiddenApis.java index 7e6b9a06..e1629f34 100644 --- a/src/main/java/de/thetaphi/forbiddenapis/gradle/CheckForbiddenApis.java +++ b/src/main/java/de/thetaphi/forbiddenapis/gradle/CheckForbiddenApis.java @@ -514,7 +514,7 @@ public void info(String msg) { } }; - final Set cpElements = new LinkedHashSet(); + final Set cpElements = new LinkedHashSet<>(); cpElements.addAll(classpath.getFiles()); cpElements.addAll(classesDirs.getFiles()); final URL[] urls = new URL[cpElements.size()]; diff --git a/src/main/java/de/thetaphi/forbiddenapis/gradle/CheckForbiddenApisExtension.java b/src/main/java/de/thetaphi/forbiddenapis/gradle/CheckForbiddenApisExtension.java index 9cf3c0d8..ddc944d7 100644 --- a/src/main/java/de/thetaphi/forbiddenapis/gradle/CheckForbiddenApisExtension.java +++ b/src/main/java/de/thetaphi/forbiddenapis/gradle/CheckForbiddenApisExtension.java @@ -33,10 +33,10 @@ public class CheckForbiddenApisExtension { public FileCollection signaturesFiles; // initialized by plugin-init.groovy - public Set signaturesURLs = new LinkedHashSet(); - public List signatures = new ArrayList(); - public Set bundledSignatures = new LinkedHashSet(), - suppressAnnotations = new LinkedHashSet(); + public Set signaturesURLs = new LinkedHashSet<>(); + public List signatures = new ArrayList<>(); + public Set bundledSignatures = new LinkedHashSet<>(), + suppressAnnotations = new LinkedHashSet<>(); @Deprecated public boolean internalRuntimeForbidden = false; public boolean failOnUnsupportedJava = false, failOnMissingClasses = true, diff --git a/src/main/java/de/thetaphi/forbiddenapis/maven/AbstractCheckMojo.java b/src/main/java/de/thetaphi/forbiddenapis/maven/AbstractCheckMojo.java index 3d27e8c4..a93e9b26 100644 --- a/src/main/java/de/thetaphi/forbiddenapis/maven/AbstractCheckMojo.java +++ b/src/main/java/de/thetaphi/forbiddenapis/maven/AbstractCheckMojo.java @@ -373,7 +373,7 @@ public void info(String msg) { "Trying to read bundled JDK signatures without compiler target. " + "You have to explicitly specify the version in the resource name."); } - for (String bs : new LinkedHashSet(Arrays.asList(bundledSignatures))) { + for (String bs : new LinkedHashSet<>(Arrays.asList(bundledSignatures))) { checker.addBundledSignatures(bs, targetVersion); } } @@ -382,8 +382,8 @@ public void info(String msg) { checker.addBundledSignatures(BS_JDK_NONPORTABLE, null); } - final Set sigFiles = new LinkedHashSet(); - final Set sigUrls = new LinkedHashSet(); + final Set sigFiles = new LinkedHashSet<>(); + final Set sigUrls = new LinkedHashSet<>(); if (signaturesFiles != null) { sigFiles.addAll(Arrays.asList(signaturesFiles)); } diff --git a/src/tools/java/de/thetaphi/forbiddenapis/DeprecatedGen.java b/src/tools/java/de/thetaphi/forbiddenapis/DeprecatedGen.java index bba85368..5a431243 100644 --- a/src/tools/java/de/thetaphi/forbiddenapis/DeprecatedGen.java +++ b/src/tools/java/de/thetaphi/forbiddenapis/DeprecatedGen.java @@ -38,7 +38,7 @@ public abstract class DeprecatedGen implements Opcodes { final static String NL = System.getProperty("line.separator", "\n"); - final SortedSet deprecated = new TreeSet(); + final SortedSet deprecated = new TreeSet<>(); final String javaVersion, header; private final Input source; diff --git a/src/tools/java/de/thetaphi/forbiddenapis/InternalApiGen.java b/src/tools/java/de/thetaphi/forbiddenapis/InternalApiGen.java index 96251754..8c81ecc8 100644 --- a/src/tools/java/de/thetaphi/forbiddenapis/InternalApiGen.java +++ b/src/tools/java/de/thetaphi/forbiddenapis/InternalApiGen.java @@ -71,7 +71,7 @@ private void parsePackages(String packagesStr, Set packages) { void run() throws IOException { System.err.println(String.format(Locale.ENGLISH, "Writing internal APIs to signatures file '%s'...", output)); - final Set packages = new TreeSet(); + final Set packages = new TreeSet<>(); parsePackages(Security.getProperty("package.access"), packages); // TODO: add this, too??: parsePackages(Security.getProperty("package.definition"), packages); From fb68c343d35c440d66595b4083cc5332f8bffb94 Mon Sep 17 00:00:00 2001 From: Uwe Schindler Date: Mon, 6 Apr 2020 19:02:38 +0200 Subject: [PATCH 09/11] Fix comment, but leave bootclasspath scanning as-is --- src/main/java/de/thetaphi/forbiddenapis/Checker.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/thetaphi/forbiddenapis/Checker.java b/src/main/java/de/thetaphi/forbiddenapis/Checker.java index dedd31e8..77fb2aa2 100644 --- a/src/main/java/de/thetaphi/forbiddenapis/Checker.java +++ b/src/main/java/de/thetaphi/forbiddenapis/Checker.java @@ -124,8 +124,8 @@ public Checker(Logger logger, ClassLoader loader, EnumSet