From de56e110a4f0eca49adc8337ba2fada87333cbe7 Mon Sep 17 00:00:00 2001 From: Juan Manuel Leflet Estrada Date: Mon, 24 Jul 2023 21:59:00 +0200 Subject: [PATCH 1/2] [WINDUPRULE-1012] Add rules for the future deprecation of the finalize() methods --- .../finalization-deprecation.windup.xml | 52 +++++++++++++++++++ .../tests/data/FinalizationDeprecation.java | 23 ++++++++ .../finalization-deprecation.windup.test.xml | 23 ++++++++ ...openjdk21.windup.technologytransformer.xml | 8 +++ 4 files changed, 106 insertions(+) create mode 100644 rules/rules-reviewed/openjdk21/openjdk18/finalization-deprecation.windup.xml create mode 100644 rules/rules-reviewed/openjdk21/openjdk18/tests/data/FinalizationDeprecation.java create mode 100644 rules/rules-reviewed/openjdk21/openjdk18/tests/finalization-deprecation.windup.test.xml create mode 100644 rules/rules-reviewed/openjdk21/openjdk21.windup.technologytransformer.xml diff --git a/rules/rules-reviewed/openjdk21/openjdk18/finalization-deprecation.windup.xml b/rules/rules-reviewed/openjdk21/openjdk18/finalization-deprecation.windup.xml new file mode 100644 index 000000000..25f1cd98a --- /dev/null +++ b/rules/rules-reviewed/openjdk21/openjdk18/finalization-deprecation.windup.xml @@ -0,0 +1,52 @@ + + + + + This ruleset provides analysis regarding 'finalization' deprecation in OpenJDK 18 to 21. + + + + + + + + + + + + + + + Finalization has been deprecated for removal in a future release by JDK18. It continues to work now but users should start their migration off finalizers. + Use `Cleaner` or `PhantomReference` instead (see the provided link below). + Users can test what happens with finalization disable by running with: `-finalization=disabled`. + + + + + + + + + + METHOD_CALL + + + METHOD_CALL + + + + + + + Finalization has been deprecated for removal in a future release by JDK18. It continues to work now but users should start their migration off finalizers. + Use `Cleaner` or `PhantomReference` instead (see the provided link below). + Users can test what happens with finalization disable by running with: `-finalization=disabled`. + + + + + + + diff --git a/rules/rules-reviewed/openjdk21/openjdk18/tests/data/FinalizationDeprecation.java b/rules/rules-reviewed/openjdk21/openjdk18/tests/data/FinalizationDeprecation.java new file mode 100644 index 000000000..14478a436 --- /dev/null +++ b/rules/rules-reviewed/openjdk21/openjdk18/tests/data/FinalizationDeprecation.java @@ -0,0 +1,23 @@ +import javax.imageio.stream.FileImageOutputStream; +import java.io.File; + +public class FinalizationDeprecation extends Object { + + public static void main(String[] args) { + FinalizationDeprecation o1 = new FinalizationDeprecation(); + o1.finalize(); + + Runtime runtime = Runtime.getRuntime(); + runtime.runFinalization(); + + System.runFinalization(); + + FileImageOutputStream stream = new FileImageOutputStream(new File("hey")); + stream.finalize(); + } + + @Override + protected void finalize() throws Throwable { + super.finalize(); + } +} \ No newline at end of file diff --git a/rules/rules-reviewed/openjdk21/openjdk18/tests/finalization-deprecation.windup.test.xml b/rules/rules-reviewed/openjdk21/openjdk18/tests/finalization-deprecation.windup.test.xml new file mode 100644 index 000000000..00766efc3 --- /dev/null +++ b/rules/rules-reviewed/openjdk21/openjdk18/tests/finalization-deprecation.windup.test.xml @@ -0,0 +1,23 @@ + + + data + ../finalization-deprecation.windup.xml + + + + + + + + + + + + + + + + + diff --git a/rules/rules-reviewed/openjdk21/openjdk21.windup.technologytransformer.xml b/rules/rules-reviewed/openjdk21/openjdk21.windup.technologytransformer.xml new file mode 100644 index 000000000..0477b88dd --- /dev/null +++ b/rules/rules-reviewed/openjdk21/openjdk21.windup.technologytransformer.xml @@ -0,0 +1,8 @@ + + + + + + + + From 79d0aa6d21dcd65bb9f94a9a3735cdfc192457a4 Mon Sep 17 00:00:00 2001 From: Juan Manuel Leflet Estrada Date: Tue, 25 Jul 2023 13:40:17 +0200 Subject: [PATCH 2/2] [WINDUPRULE-1012] Rename folder --- .../{openjdk18 => openjdk17}/finalization-deprecation.windup.xml | 1 + .../tests/data/FinalizationDeprecation.java | 0 .../tests/finalization-deprecation.windup.test.xml | 0 3 files changed, 1 insertion(+) rename rules/rules-reviewed/openjdk21/{openjdk18 => openjdk17}/finalization-deprecation.windup.xml (97%) rename rules/rules-reviewed/openjdk21/{openjdk18 => openjdk17}/tests/data/FinalizationDeprecation.java (100%) rename rules/rules-reviewed/openjdk21/{openjdk18 => openjdk17}/tests/finalization-deprecation.windup.test.xml (100%) diff --git a/rules/rules-reviewed/openjdk21/openjdk18/finalization-deprecation.windup.xml b/rules/rules-reviewed/openjdk21/openjdk17/finalization-deprecation.windup.xml similarity index 97% rename from rules/rules-reviewed/openjdk21/openjdk18/finalization-deprecation.windup.xml rename to rules/rules-reviewed/openjdk21/openjdk17/finalization-deprecation.windup.xml index 25f1cd98a..9d315b8d7 100644 --- a/rules/rules-reviewed/openjdk21/openjdk18/finalization-deprecation.windup.xml +++ b/rules/rules-reviewed/openjdk21/openjdk17/finalization-deprecation.windup.xml @@ -8,6 +8,7 @@ + diff --git a/rules/rules-reviewed/openjdk21/openjdk18/tests/data/FinalizationDeprecation.java b/rules/rules-reviewed/openjdk21/openjdk17/tests/data/FinalizationDeprecation.java similarity index 100% rename from rules/rules-reviewed/openjdk21/openjdk18/tests/data/FinalizationDeprecation.java rename to rules/rules-reviewed/openjdk21/openjdk17/tests/data/FinalizationDeprecation.java diff --git a/rules/rules-reviewed/openjdk21/openjdk18/tests/finalization-deprecation.windup.test.xml b/rules/rules-reviewed/openjdk21/openjdk17/tests/finalization-deprecation.windup.test.xml similarity index 100% rename from rules/rules-reviewed/openjdk21/openjdk18/tests/finalization-deprecation.windup.test.xml rename to rules/rules-reviewed/openjdk21/openjdk17/tests/finalization-deprecation.windup.test.xml