From e8e3adeeac2dcd5df23d661effe40ee21caf964a Mon Sep 17 00:00:00 2001 From: Rajesh Gudikoti Date: Wed, 3 Jul 2024 18:01:45 +0530 Subject: [PATCH] Delete deprecated finalize (#506) * Add DeleteDeprecatedFinalize recipe for removing Empty finalize() Methods in java.desktop Module * remove dummy foo method * Apply suggestions from code review * Apply suggestions from code review Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update DeleteDeprecatedFinalizeTest.java * Update DeleteDeprecatedFinalizeTest.java --------- Co-authored-by: Tim te Beek Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Tim te Beek --- .../META-INF/rewrite/java-version-21.yml | 15 +++ .../migrate/DeleteDeprecatedFinalizeTest.java | 93 +++++++++++++++++++ 2 files changed, 108 insertions(+) create mode 100644 src/test/java/org/openrewrite/java/migrate/DeleteDeprecatedFinalizeTest.java diff --git a/src/main/resources/META-INF/rewrite/java-version-21.yml b/src/main/resources/META-INF/rewrite/java-version-21.yml index 7ffd9105e9..e060e4c312 100644 --- a/src/main/resources/META-INF/rewrite/java-version-21.yml +++ b/src/main/resources/META-INF/rewrite/java-version-21.yml @@ -34,6 +34,7 @@ recipeList: - org.openrewrite.staticanalysis.ReplaceDeprecatedRuntimeExecMethods - org.openrewrite.github.SetupJavaUpgradeJavaVersion - org.openrewrite.java.migrate.UpgradePluginsForJava21 + - org.openrewrite.java.migrate.DeleteDeprecatedFinalize --- type: specs.openrewrite.org/v1beta/recipe @@ -110,3 +111,17 @@ recipeList: - org.openrewrite.java.ChangeMethodName: methodPattern: javax.security.auth.Subject callAs() newMethodName: doAs +--- +type: specs.openrewrite.org/v1beta/recipe +name: org.openrewrite.java.migrate.DeleteDeprecatedFinalize +displayName: Avoid using the deprecated empty `finalize()` method in `java.desktop` +description: The java.desktop module had a few implementations of finalize() that did nothing and have been removed. This recipe will remove these methods. +tags: + - java21 +recipeList: + - org.openrewrite.java.migrate.RemoveMethodInvocation: + methodPattern: java.awt.color.ICC_Profile finalize() + - org.openrewrite.java.migrate.RemoveMethodInvocation: + methodPattern: java.awt.image.ColorModel finalize() + - org.openrewrite.java.migrate.RemoveMethodInvocation: + methodPattern: java.awt.image.IndexColorModel finalize() \ No newline at end of file diff --git a/src/test/java/org/openrewrite/java/migrate/DeleteDeprecatedFinalizeTest.java b/src/test/java/org/openrewrite/java/migrate/DeleteDeprecatedFinalizeTest.java new file mode 100644 index 0000000000..39ab5b8812 --- /dev/null +++ b/src/test/java/org/openrewrite/java/migrate/DeleteDeprecatedFinalizeTest.java @@ -0,0 +1,93 @@ +/* + * Copyright 2024 the original author or authors. + *

+ * 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 + *

+ * https://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. + */ +package org.openrewrite.java.migrate; + +import org.junit.jupiter.api.Test; +import org.openrewrite.DocumentExample; +import org.openrewrite.test.RecipeSpec; +import org.openrewrite.test.RewriteTest; + +import static org.openrewrite.java.Assertions.java; + +public class DeleteDeprecatedFinalizeTest implements RewriteTest { + + @Override + public void defaults(RecipeSpec spec) { + spec.recipeFromResource("/META-INF/rewrite/java-version-21.yml", + "org.openrewrite.java.migrate.DeleteDeprecatedFinalize"); + } + + @DocumentExample + @Test + void deleteDeprecatedFinalize() { + rewriteRun( + //language=java + java( + """ + package java.awt.color; + + import java.awt.color.ICC_Profile; + import java.awt.image.ColorModel; + import java.awt.image.IndexColorModel; + + public class Test { + public static void main(String[] args) { + byte ff = (byte) 0xff; + byte[] r = { ff, 0, 0, ff, 0 }; + byte[] g = { 0, ff, 0, ff, 0 }; + byte[] b = { 0, 0, ff, ff, 0 }; + + ICC_Profile profile = ICC_Profile.getInstance(ICC_Profile.CLASS_COLORSPACECONVERSION); + // flag + profile.finalize(); + + ColorModel cm = new IndexColorModel(3, 5, r, g, b); + + // flag + cm.finalize(); + + IndexColorModel icm = new IndexColorModel(3, 5, r, g, b); + // flag + icm.finalize(); + + } + } + """, + """ + package java.awt.color; + + import java.awt.color.ICC_Profile; + import java.awt.image.ColorModel; + import java.awt.image.IndexColorModel; + + public class Test { + public static void main(String[] args) { + byte ff = (byte) 0xff; + byte[] r = { ff, 0, 0, ff, 0 }; + byte[] g = { 0, ff, 0, ff, 0 }; + byte[] b = { 0, 0, ff, ff, 0 }; + + ICC_Profile profile = ICC_Profile.getInstance(ICC_Profile.CLASS_COLORSPACECONVERSION); + + ColorModel cm = new IndexColorModel(3, 5, r, g, b); + + IndexColorModel icm = new IndexColorModel(3, 5, r, g, b); + + } + } + """)); + } +}