From a4b79ddf74be2e9bec22a4faaab12b77174d1790 Mon Sep 17 00:00:00 2001 From: Uwe Schindler Date: Sat, 5 Sep 2015 09:31:19 +0200 Subject: [PATCH 1/6] Move Ant, Maven, Cli to separate packages --- build.xml | 6 +++--- .../de/thetaphi/forbiddenapis/{ => ant}/AntTask.java | 7 ++++++- .../forbiddenapis/{ => ant}/BundledSignaturesType.java | 2 +- .../{ => ant}/SuppressAnnotationType.java | 2 +- .../de/thetaphi/forbiddenapis/{ => cli}/CliMain.java | 10 ++++++++-- .../forbiddenapis/{ => maven}/AbstractCheckMojo.java | 8 +++++++- .../thetaphi/forbiddenapis/{ => maven}/CheckMojo.java | 2 +- .../forbiddenapis/{ => maven}/TestCheckMojo.java | 2 +- .../resources/de/thetaphi/forbiddenapis/antlib.xml | 2 +- src/test/antunit/TestFinalJAR.xml | 2 +- 10 files changed, 30 insertions(+), 13 deletions(-) rename src/main/java/de/thetaphi/forbiddenapis/{ => ant}/AntTask.java (98%) rename src/main/java/de/thetaphi/forbiddenapis/{ => ant}/BundledSignaturesType.java (95%) rename src/main/java/de/thetaphi/forbiddenapis/{ => ant}/SuppressAnnotationType.java (95%) rename src/main/java/de/thetaphi/forbiddenapis/{ => cli}/CliMain.java (97%) rename src/main/java/de/thetaphi/forbiddenapis/{ => maven}/AbstractCheckMojo.java (97%) rename src/main/java/de/thetaphi/forbiddenapis/{ => maven}/CheckMojo.java (98%) rename src/main/java/de/thetaphi/forbiddenapis/{ => maven}/TestCheckMojo.java (98%) diff --git a/build.xml b/build.xml index f09000cd..f5a111cc 100644 --- a/build.xml +++ b/build.xml @@ -97,7 +97,7 @@ - + @@ -333,7 +333,7 @@ - + @@ -424,7 +424,7 @@ description="Checks bundled signatures file corresponding to the current JVM. Run after every update!"/> - + diff --git a/src/main/java/de/thetaphi/forbiddenapis/AntTask.java b/src/main/java/de/thetaphi/forbiddenapis/ant/AntTask.java similarity index 98% rename from src/main/java/de/thetaphi/forbiddenapis/AntTask.java rename to src/main/java/de/thetaphi/forbiddenapis/ant/AntTask.java index 1cbdc891..25cd5ef8 100644 --- a/src/main/java/de/thetaphi/forbiddenapis/AntTask.java +++ b/src/main/java/de/thetaphi/forbiddenapis/ant/AntTask.java @@ -1,4 +1,4 @@ -package de.thetaphi.forbiddenapis; +package de.thetaphi.forbiddenapis.ant; /* * (C) Copyright Uwe Schindler (Generics Policeman) and others. @@ -35,6 +35,11 @@ import org.apache.tools.ant.types.resources.Resources; import org.apache.tools.ant.types.resources.StringResource; +import de.thetaphi.forbiddenapis.Checker; +import de.thetaphi.forbiddenapis.ForbiddenApiException; +import de.thetaphi.forbiddenapis.Logger; +import de.thetaphi.forbiddenapis.ParseException; + import java.io.IOException; import java.io.File; import java.util.ArrayList; diff --git a/src/main/java/de/thetaphi/forbiddenapis/BundledSignaturesType.java b/src/main/java/de/thetaphi/forbiddenapis/ant/BundledSignaturesType.java similarity index 95% rename from src/main/java/de/thetaphi/forbiddenapis/BundledSignaturesType.java rename to src/main/java/de/thetaphi/forbiddenapis/ant/BundledSignaturesType.java index a9157f36..f14e6e39 100644 --- a/src/main/java/de/thetaphi/forbiddenapis/BundledSignaturesType.java +++ b/src/main/java/de/thetaphi/forbiddenapis/ant/BundledSignaturesType.java @@ -1,4 +1,4 @@ -package de.thetaphi.forbiddenapis; +package de.thetaphi.forbiddenapis.ant; /* * (C) Copyright Uwe Schindler (Generics Policeman) and others. diff --git a/src/main/java/de/thetaphi/forbiddenapis/SuppressAnnotationType.java b/src/main/java/de/thetaphi/forbiddenapis/ant/SuppressAnnotationType.java similarity index 95% rename from src/main/java/de/thetaphi/forbiddenapis/SuppressAnnotationType.java rename to src/main/java/de/thetaphi/forbiddenapis/ant/SuppressAnnotationType.java index e3f8508e..e6f4d4fc 100644 --- a/src/main/java/de/thetaphi/forbiddenapis/SuppressAnnotationType.java +++ b/src/main/java/de/thetaphi/forbiddenapis/ant/SuppressAnnotationType.java @@ -1,4 +1,4 @@ -package de.thetaphi.forbiddenapis; +package de.thetaphi.forbiddenapis.ant; /* * (C) Copyright Uwe Schindler (Generics Policeman) and others. diff --git a/src/main/java/de/thetaphi/forbiddenapis/CliMain.java b/src/main/java/de/thetaphi/forbiddenapis/cli/CliMain.java similarity index 97% rename from src/main/java/de/thetaphi/forbiddenapis/CliMain.java rename to src/main/java/de/thetaphi/forbiddenapis/cli/CliMain.java index f985fbde..e5eea845 100644 --- a/src/main/java/de/thetaphi/forbiddenapis/CliMain.java +++ b/src/main/java/de/thetaphi/forbiddenapis/cli/CliMain.java @@ -1,4 +1,4 @@ -package de.thetaphi.forbiddenapis; +package de.thetaphi.forbiddenapis.cli; /* * (C) Copyright Uwe Schindler (Generics Policeman) and others. @@ -39,9 +39,15 @@ import org.apache.commons.cli.OptionGroup; import org.apache.commons.cli.Options; import org.apache.commons.cli.PosixParser; - import org.codehaus.plexus.util.DirectoryScanner; +import de.thetaphi.forbiddenapis.Checker; +import de.thetaphi.forbiddenapis.ForbiddenApiException; +import de.thetaphi.forbiddenapis.Logger; +import de.thetaphi.forbiddenapis.ParseException; +import de.thetaphi.forbiddenapis.StdIoLogger; +import de.thetaphi.forbiddenapis.SuppressForbidden; + /** * CLI class with a static main() method */ diff --git a/src/main/java/de/thetaphi/forbiddenapis/AbstractCheckMojo.java b/src/main/java/de/thetaphi/forbiddenapis/maven/AbstractCheckMojo.java similarity index 97% rename from src/main/java/de/thetaphi/forbiddenapis/AbstractCheckMojo.java rename to src/main/java/de/thetaphi/forbiddenapis/maven/AbstractCheckMojo.java index 3a3f2f9c..33413785 100644 --- a/src/main/java/de/thetaphi/forbiddenapis/AbstractCheckMojo.java +++ b/src/main/java/de/thetaphi/forbiddenapis/maven/AbstractCheckMojo.java @@ -1,4 +1,4 @@ -package de.thetaphi.forbiddenapis; +package de.thetaphi.forbiddenapis.maven; /* * (C) Copyright Uwe Schindler (Generics Policeman) and others. @@ -25,6 +25,12 @@ import org.apache.maven.plugins.annotations.Parameter; import org.codehaus.plexus.util.DirectoryScanner; +import de.thetaphi.forbiddenapis.Checker; +import de.thetaphi.forbiddenapis.ForbiddenApiException; +import de.thetaphi.forbiddenapis.Logger; +import de.thetaphi.forbiddenapis.ParseException; +import de.thetaphi.forbiddenapis.Checker.Option; + import java.io.Closeable; import java.io.File; import java.io.FileInputStream; diff --git a/src/main/java/de/thetaphi/forbiddenapis/CheckMojo.java b/src/main/java/de/thetaphi/forbiddenapis/maven/CheckMojo.java similarity index 98% rename from src/main/java/de/thetaphi/forbiddenapis/CheckMojo.java rename to src/main/java/de/thetaphi/forbiddenapis/maven/CheckMojo.java index 0f33b66b..53f1fd2d 100644 --- a/src/main/java/de/thetaphi/forbiddenapis/CheckMojo.java +++ b/src/main/java/de/thetaphi/forbiddenapis/maven/CheckMojo.java @@ -1,4 +1,4 @@ -package de.thetaphi.forbiddenapis; +package de.thetaphi.forbiddenapis.maven; /* * (C) Copyright Uwe Schindler (Generics Policeman) and others. diff --git a/src/main/java/de/thetaphi/forbiddenapis/TestCheckMojo.java b/src/main/java/de/thetaphi/forbiddenapis/maven/TestCheckMojo.java similarity index 98% rename from src/main/java/de/thetaphi/forbiddenapis/TestCheckMojo.java rename to src/main/java/de/thetaphi/forbiddenapis/maven/TestCheckMojo.java index 34ab464e..98da5482 100644 --- a/src/main/java/de/thetaphi/forbiddenapis/TestCheckMojo.java +++ b/src/main/java/de/thetaphi/forbiddenapis/maven/TestCheckMojo.java @@ -1,4 +1,4 @@ -package de.thetaphi.forbiddenapis; +package de.thetaphi.forbiddenapis.maven; /* * (C) Copyright Uwe Schindler (Generics Policeman) and others. diff --git a/src/main/resources/de/thetaphi/forbiddenapis/antlib.xml b/src/main/resources/de/thetaphi/forbiddenapis/antlib.xml index 8aad6cc5..1df80dc6 100644 --- a/src/main/resources/de/thetaphi/forbiddenapis/antlib.xml +++ b/src/main/resources/de/thetaphi/forbiddenapis/antlib.xml @@ -15,5 +15,5 @@ * limitations under the License. --> - + diff --git a/src/test/antunit/TestFinalJAR.xml b/src/test/antunit/TestFinalJAR.xml index 8b18d892..1ded8638 100644 --- a/src/test/antunit/TestFinalJAR.xml +++ b/src/test/antunit/TestFinalJAR.xml @@ -16,7 +16,7 @@ --> - + From dd13d909d5e16a2a23889655b627bc2347feadcc Mon Sep 17 00:00:00 2001 From: Uwe Schindler Date: Sat, 5 Sep 2015 09:40:23 +0200 Subject: [PATCH 2/6] Add transition ant task for people using absolute class name --- .../de/thetaphi/forbiddenapis/AntTask.java | 37 +++++++++++++++++++ .../thetaphi/forbiddenapis/ant/AntTask.java | 2 +- .../maven/AbstractCheckMojo.java | 1 - 3 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 src/main/java/de/thetaphi/forbiddenapis/AntTask.java diff --git a/src/main/java/de/thetaphi/forbiddenapis/AntTask.java b/src/main/java/de/thetaphi/forbiddenapis/AntTask.java new file mode 100644 index 00000000..463397e7 --- /dev/null +++ b/src/main/java/de/thetaphi/forbiddenapis/AntTask.java @@ -0,0 +1,37 @@ +package de.thetaphi.forbiddenapis; + +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.Project; + +/* + * (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. + */ + +/** + * {@inheritDoc} + * @deprecated Use {@link de.thetaphi.forbiddenapis.ant.AntTask} instead. + */ +@Deprecated +public final class AntTask extends de.thetaphi.forbiddenapis.ant.AntTask { + + @Override + public void execute() throws BuildException { + log("DEPRECATED-WARNING: Please change your build.xml to use new task class de.thetaphi.forbiddenapis.ant.AntTask", Project.MSG_WARN); + super.execute(); + } + +} diff --git a/src/main/java/de/thetaphi/forbiddenapis/ant/AntTask.java b/src/main/java/de/thetaphi/forbiddenapis/ant/AntTask.java index 25cd5ef8..8a25095c 100644 --- a/src/main/java/de/thetaphi/forbiddenapis/ant/AntTask.java +++ b/src/main/java/de/thetaphi/forbiddenapis/ant/AntTask.java @@ -54,7 +54,7 @@ * In contrast to other ANT tasks, this tool does only visit the given classpath * and the system classloader, not ANT's class loader. */ -public final class AntTask extends Task { +public class AntTask extends Task { private final Resources classFiles = new Resources(); private final Resources apiSignatures = new Resources(); diff --git a/src/main/java/de/thetaphi/forbiddenapis/maven/AbstractCheckMojo.java b/src/main/java/de/thetaphi/forbiddenapis/maven/AbstractCheckMojo.java index 33413785..c0f73788 100644 --- a/src/main/java/de/thetaphi/forbiddenapis/maven/AbstractCheckMojo.java +++ b/src/main/java/de/thetaphi/forbiddenapis/maven/AbstractCheckMojo.java @@ -29,7 +29,6 @@ import de.thetaphi.forbiddenapis.ForbiddenApiException; import de.thetaphi.forbiddenapis.Logger; import de.thetaphi.forbiddenapis.ParseException; -import de.thetaphi.forbiddenapis.Checker.Option; import java.io.Closeable; import java.io.File; From 0cbb72bf20df7088ec8f2421d9cc385209859449 Mon Sep 17 00:00:00 2001 From: Uwe Schindler Date: Sat, 5 Sep 2015 09:44:51 +0200 Subject: [PATCH 3/6] Move ExitException to separate file --- .../de/thetaphi/forbiddenapis/cli/CliMain.java | 14 -------------- .../forbiddenapis/cli/ExitException.java | 18 ++++++++++++++++++ 2 files changed, 18 insertions(+), 14 deletions(-) create mode 100644 src/main/java/de/thetaphi/forbiddenapis/cli/ExitException.java diff --git a/src/main/java/de/thetaphi/forbiddenapis/cli/CliMain.java b/src/main/java/de/thetaphi/forbiddenapis/cli/CliMain.java index e5eea845..3322036f 100644 --- a/src/main/java/de/thetaphi/forbiddenapis/cli/CliMain.java +++ b/src/main/java/de/thetaphi/forbiddenapis/cli/CliMain.java @@ -306,20 +306,6 @@ public void run() throws ExitException { } } - @SuppressWarnings("serial") - public static final class ExitException extends Exception { - public final int exitCode; - - public ExitException(int exitCode) { - this(exitCode, null); - } - - public ExitException(int exitCode, String message) { - super(message); - this.exitCode = exitCode; - } - } - @SuppressForbidden public static void main(String... args) { try { diff --git a/src/main/java/de/thetaphi/forbiddenapis/cli/ExitException.java b/src/main/java/de/thetaphi/forbiddenapis/cli/ExitException.java new file mode 100644 index 00000000..26235e4d --- /dev/null +++ b/src/main/java/de/thetaphi/forbiddenapis/cli/ExitException.java @@ -0,0 +1,18 @@ +package de.thetaphi.forbiddenapis.cli; + +/** + * Used by the CLI to signal process exit with a specific exit code + */ +@SuppressWarnings("serial") +public final class ExitException extends Exception { + public final int exitCode; + + public ExitException(int exitCode) { + this(exitCode, null); + } + + public ExitException(int exitCode, String message) { + super(message); + this.exitCode = exitCode; + } +} \ No newline at end of file From 9d2ba6788dc6873446b9df8a4c8580698c84be32 Mon Sep 17 00:00:00 2001 From: Uwe Schindler Date: Sat, 5 Sep 2015 10:43:59 +0200 Subject: [PATCH 4/6] Make replace task class name dynamic, move imports --- src/main/java/de/thetaphi/forbiddenapis/AntTask.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/de/thetaphi/forbiddenapis/AntTask.java b/src/main/java/de/thetaphi/forbiddenapis/AntTask.java index 463397e7..cf5b2617 100644 --- a/src/main/java/de/thetaphi/forbiddenapis/AntTask.java +++ b/src/main/java/de/thetaphi/forbiddenapis/AntTask.java @@ -1,8 +1,5 @@ package de.thetaphi.forbiddenapis; -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Project; - /* * (C) Copyright Uwe Schindler (Generics Policeman) and others. * Parts of this work are licensed to the Apache Software Foundation (ASF) @@ -21,6 +18,11 @@ * limitations under the License. */ +import java.util.Locale; + +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.Project; + /** * {@inheritDoc} * @deprecated Use {@link de.thetaphi.forbiddenapis.ant.AntTask} instead. @@ -30,7 +32,8 @@ public final class AntTask extends de.thetaphi.forbiddenapis.ant.AntTask { @Override public void execute() throws BuildException { - log("DEPRECATED-WARNING: Please change your build.xml to use new task class de.thetaphi.forbiddenapis.ant.AntTask", Project.MSG_WARN); + log(String.format(Locale.ENGLISH, "DEPRECATED-WARNING: Please change your build.xml to use new task class '%s'", + getClass().getSuperclass().getName()), Project.MSG_WARN); super.execute(); } From e54bee68b8c199ecb940985d48daf3d765603018 Mon Sep 17 00:00:00 2001 From: Uwe Schindler Date: Sat, 5 Sep 2015 11:25:47 +0200 Subject: [PATCH 5/6] Add a test for the deprecated task (verifies that it work & warning message is printed) --- src/test/antunit/TestDeprecatedTask.xml | 31 +++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/test/antunit/TestDeprecatedTask.xml diff --git a/src/test/antunit/TestDeprecatedTask.xml b/src/test/antunit/TestDeprecatedTask.xml new file mode 100644 index 00000000..78475a87 --- /dev/null +++ b/src/test/antunit/TestDeprecatedTask.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file From ac2c1c0b76da39cb11c8d91f10eb5fd9ba738de1 Mon Sep 17 00:00:00 2001 From: Uwe Schindler Date: Sat, 5 Sep 2015 11:33:31 +0200 Subject: [PATCH 6/6] Hide some exception classes which do not need to be public (internal only) --- .../java/de/thetaphi/forbiddenapis/WrapperRuntimeException.java | 2 +- src/main/java/de/thetaphi/forbiddenapis/cli/ExitException.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/thetaphi/forbiddenapis/WrapperRuntimeException.java b/src/main/java/de/thetaphi/forbiddenapis/WrapperRuntimeException.java index 72a404d7..4ff0751f 100644 --- a/src/main/java/de/thetaphi/forbiddenapis/WrapperRuntimeException.java +++ b/src/main/java/de/thetaphi/forbiddenapis/WrapperRuntimeException.java @@ -17,7 +17,7 @@ */ @SuppressWarnings("serial") -public final class WrapperRuntimeException extends RuntimeException { +final class WrapperRuntimeException extends RuntimeException { public WrapperRuntimeException(Exception e) { super(e); diff --git a/src/main/java/de/thetaphi/forbiddenapis/cli/ExitException.java b/src/main/java/de/thetaphi/forbiddenapis/cli/ExitException.java index 26235e4d..4b6f93c5 100644 --- a/src/main/java/de/thetaphi/forbiddenapis/cli/ExitException.java +++ b/src/main/java/de/thetaphi/forbiddenapis/cli/ExitException.java @@ -4,7 +4,7 @@ * Used by the CLI to signal process exit with a specific exit code */ @SuppressWarnings("serial") -public final class ExitException extends Exception { +final class ExitException extends Exception { public final int exitCode; public ExitException(int exitCode) {