From 10c807e85bcb29a679c703494e0b29e2577cd793 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Merlin=20B=C3=B6gershausen?= Date: Wed, 30 Apr 2025 13:07:40 +0200 Subject: [PATCH 1/7] Add Java 25 migration recipe and removal of SecurityManager --- .../META-INF/rewrite/java-version-25.yml | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/main/resources/META-INF/rewrite/java-version-25.yml diff --git a/src/main/resources/META-INF/rewrite/java-version-25.yml b/src/main/resources/META-INF/rewrite/java-version-25.yml new file mode 100644 index 0000000000..ac9949de23 --- /dev/null +++ b/src/main/resources/META-INF/rewrite/java-version-25.yml @@ -0,0 +1,48 @@ +# +# Copyright 2024 the original author or authors. +#

+# Licensed under the Moderne Source Available License (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +#

+# https://docs.moderne.io/licensing/moderne-source-available-license +#

+# 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. +# + +--- +type: specs.openrewrite.org/v1beta/recipe +name: org.openrewrite.java.migrate.UpgradeToJava25 +displayName: Migrate to Java 25 +description: >- + This recipe will apply changes commonly needed when migrating to Java 25. This recipe will also replace deprecated API + with equivalents when there is a clear migration strategy. Build files will also be updated to use Java 25 as the + target/source and plugins will be also be upgraded to versions that are compatible with Java 25. +tags: + - java25 +recipeList: + - org.openrewrite.java.migrate.RemoveSecurityManagerAPI + +--- +type: specs.openrewrite.org/v1beta/recipe +name: org.openrewrite.java.migrate.RemoveSecurityManagerAPI +displayName: Remove Security Manager API +description: The Security Manager API is unsupported in Java 24. This recipe will remove the API and any usages of it. +tags: + - java25 +preconditions: + - org.openrewrite.java.migrate.search.FindJavaVersion: + version: 24 +recipeList: + - org.openrewrite.java.RemoveMethodInvocations: + methodPattern: java.security.AccessController#checkPermission(*) + - org.openrewrite.java.RemoveMethodInvocations: + methodPattern: import java.security.Policy#setPolicy(*) + - org.openrewrite.java.RemoveMethodInvocations: + methodPattern: import java.lang.SecurityManager#check*(*) + - org.openrewrite.staticanalysis.UnnecessaryCatch + - org.openrewrite.staticanalysis.UnnecessaryThrows From 3ea9593955f12574e3f369d9b4b19b52f314e165 Mon Sep 17 00:00:00 2001 From: Tim te Beek Date: Fri, 2 May 2025 00:58:40 +0200 Subject: [PATCH 2/7] Apply suggestions from code review --- src/main/resources/META-INF/rewrite/java-version-25.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/resources/META-INF/rewrite/java-version-25.yml b/src/main/resources/META-INF/rewrite/java-version-25.yml index ac9949de23..7817aebffd 100644 --- a/src/main/resources/META-INF/rewrite/java-version-25.yml +++ b/src/main/resources/META-INF/rewrite/java-version-25.yml @@ -39,10 +39,10 @@ preconditions: version: 24 recipeList: - org.openrewrite.java.RemoveMethodInvocations: - methodPattern: java.security.AccessController#checkPermission(*) + methodPattern: java.security.AccessController#checkPermission(..) - org.openrewrite.java.RemoveMethodInvocations: - methodPattern: import java.security.Policy#setPolicy(*) + methodPattern: import java.security.Policy#setPolicy(..) - org.openrewrite.java.RemoveMethodInvocations: - methodPattern: import java.lang.SecurityManager#check*(*) + methodPattern: import java.lang.SecurityManager#check*(..) - org.openrewrite.staticanalysis.UnnecessaryCatch - org.openrewrite.staticanalysis.UnnecessaryThrows From 30bf1265ada1ad093110487fb5bfa061336ea103 Mon Sep 17 00:00:00 2001 From: Tim te Beek Date: Fri, 2 May 2025 01:03:10 +0200 Subject: [PATCH 3/7] Apply suggestions from code review --- src/main/resources/META-INF/rewrite/java-version-25.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/META-INF/rewrite/java-version-25.yml b/src/main/resources/META-INF/rewrite/java-version-25.yml index 7817aebffd..9b7e6a3851 100644 --- a/src/main/resources/META-INF/rewrite/java-version-25.yml +++ b/src/main/resources/META-INF/rewrite/java-version-25.yml @@ -41,8 +41,8 @@ recipeList: - org.openrewrite.java.RemoveMethodInvocations: methodPattern: java.security.AccessController#checkPermission(..) - org.openrewrite.java.RemoveMethodInvocations: - methodPattern: import java.security.Policy#setPolicy(..) + methodPattern: java.security.Policy#setPolicy(..) - org.openrewrite.java.RemoveMethodInvocations: - methodPattern: import java.lang.SecurityManager#check*(..) + methodPattern: java.lang.SecurityManager#check*(..) - org.openrewrite.staticanalysis.UnnecessaryCatch - org.openrewrite.staticanalysis.UnnecessaryThrows From 58f0c634fd8c3b6cb6919b39c528e0f7322d9e4e Mon Sep 17 00:00:00 2001 From: Tim te Beek Date: Fri, 2 May 2025 01:07:24 +0200 Subject: [PATCH 4/7] Update java-version-25.yml year --- src/main/resources/META-INF/rewrite/java-version-25.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/META-INF/rewrite/java-version-25.yml b/src/main/resources/META-INF/rewrite/java-version-25.yml index 9b7e6a3851..9c3c003b15 100644 --- a/src/main/resources/META-INF/rewrite/java-version-25.yml +++ b/src/main/resources/META-INF/rewrite/java-version-25.yml @@ -1,5 +1,5 @@ # -# Copyright 2024 the original author or authors. +# Copyright 2025 the original author or authors. #

# Licensed under the Moderne Source Available License (the "License"); # you may not use this file except in compliance with the License. From a6fd61a7427140fdddf20409dc8190d35215b89e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Merlin=20B=C3=B6gershausen?= Date: Fri, 2 May 2025 10:56:00 +0200 Subject: [PATCH 5/7] split security manager API removals into separate recipes to guard with precondition --- .../META-INF/rewrite/java-version-25.yml | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/src/main/resources/META-INF/rewrite/java-version-25.yml b/src/main/resources/META-INF/rewrite/java-version-25.yml index 9c3c003b15..217a3f71d9 100644 --- a/src/main/resources/META-INF/rewrite/java-version-25.yml +++ b/src/main/resources/META-INF/rewrite/java-version-25.yml @@ -34,14 +34,71 @@ displayName: Remove Security Manager API description: The Security Manager API is unsupported in Java 24. This recipe will remove the API and any usages of it. tags: - java25 + - security + - deprecation preconditions: - org.openrewrite.java.migrate.search.FindJavaVersion: version: 24 +recipeList: + - org.openrewrite.java.migrate.RemoveSecurityPolicy + - org.openrewrite.java.migrate.RemoveSecurityAccessController + - org.openrewrite.java.migrate.RemoveSecurityManager + +--- +type: specs.openrewrite.org/v1beta/recipe +name: org.openrewrite.java.migrate.AccessController +displayName: Remove Security AccessController +description: The Security Manager API is unsupported in Java 24. This recipe will remove the usage of `java.security.AccessController`. +tags: + - java25 + - security + - deprecation +preconditions: + - org.openrewrite.java.migrate.search.FindJavaVersion: + version: 24 + - org.openrewrite.java.search.FindTypes: + fullyQualifiedTypeName: java.security.AccessController recipeList: - org.openrewrite.java.RemoveMethodInvocations: methodPattern: java.security.AccessController#checkPermission(..) + - org.openrewrite.staticanalysis.UnnecessaryCatch + - org.openrewrite.staticanalysis.UnnecessaryThrows + +--- +type: specs.openrewrite.org/v1beta/recipe +name: org.openrewrite.java.migrate.RemoveSecurityPolicy +displayName: Remove Security Policy +description: The Security Manager API is unsupported in Java 24. This recipe will remove the use of `java.security.Policy`. +tags: + - java25 + - security + - deprecation +preconditions: + - org.openrewrite.java.migrate.search.FindJavaVersion: + version: 24 + - org.openrewrite.java.search.FindTypes: + fullyQualifiedTypeName: java.security.Policy +recipeList: - org.openrewrite.java.RemoveMethodInvocations: methodPattern: java.security.Policy#setPolicy(..) + - org.openrewrite.staticanalysis.UnnecessaryCatch + - org.openrewrite.staticanalysis.UnnecessaryThrows + +--- +type: specs.openrewrite.org/v1beta/recipe +name: org.openrewrite.java.migrate.RemoveSecurityManager +displayName: Remove Security SecurityManager +description: The Security Manager API is unsupported in Java 24. This recipe will remove the usage of `java.security.SecurityManager`. +tags: + - java25 + - security + - deprecation +preconditions: + - org.openrewrite.java.migrate.search.FindJavaVersion: + version: 24 + - org.openrewrite.java.search.FindTypes: + fullyQualifiedTypeName: java.security.SecurityManager +recipeList: - org.openrewrite.java.RemoveMethodInvocations: methodPattern: java.lang.SecurityManager#check*(..) - org.openrewrite.staticanalysis.UnnecessaryCatch From 5584058ce3177a5cc108755a5584ea90a96fafb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Merlin=20B=C3=B6gershausen?= Date: Fri, 2 May 2025 12:24:09 +0200 Subject: [PATCH 6/7] Remove intermediate recipe --- .../META-INF/rewrite/java-version-25.yml | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/src/main/resources/META-INF/rewrite/java-version-25.yml b/src/main/resources/META-INF/rewrite/java-version-25.yml index 217a3f71d9..8a3ec70ab0 100644 --- a/src/main/resources/META-INF/rewrite/java-version-25.yml +++ b/src/main/resources/META-INF/rewrite/java-version-25.yml @@ -24,21 +24,6 @@ description: >- target/source and plugins will be also be upgraded to versions that are compatible with Java 25. tags: - java25 -recipeList: - - org.openrewrite.java.migrate.RemoveSecurityManagerAPI - ---- -type: specs.openrewrite.org/v1beta/recipe -name: org.openrewrite.java.migrate.RemoveSecurityManagerAPI -displayName: Remove Security Manager API -description: The Security Manager API is unsupported in Java 24. This recipe will remove the API and any usages of it. -tags: - - java25 - - security - - deprecation -preconditions: - - org.openrewrite.java.migrate.search.FindJavaVersion: - version: 24 recipeList: - org.openrewrite.java.migrate.RemoveSecurityPolicy - org.openrewrite.java.migrate.RemoveSecurityAccessController From adb8102df437c38594224313bd17eca52f06d604 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Merlin=20B=C3=B6gershausen?= Date: Fri, 2 May 2025 13:23:26 +0200 Subject: [PATCH 7/7] tighten preconditions --- .../resources/META-INF/rewrite/java-version-25.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/resources/META-INF/rewrite/java-version-25.yml b/src/main/resources/META-INF/rewrite/java-version-25.yml index 8a3ec70ab0..5e9a95f31e 100644 --- a/src/main/resources/META-INF/rewrite/java-version-25.yml +++ b/src/main/resources/META-INF/rewrite/java-version-25.yml @@ -41,8 +41,8 @@ tags: preconditions: - org.openrewrite.java.migrate.search.FindJavaVersion: version: 24 - - org.openrewrite.java.search.FindTypes: - fullyQualifiedTypeName: java.security.AccessController + - org.openrewrite.java.search.FindMethods: + methodPattern: java.security.AccessController#checkPermission(..) recipeList: - org.openrewrite.java.RemoveMethodInvocations: methodPattern: java.security.AccessController#checkPermission(..) @@ -61,8 +61,8 @@ tags: preconditions: - org.openrewrite.java.migrate.search.FindJavaVersion: version: 24 - - org.openrewrite.java.search.FindTypes: - fullyQualifiedTypeName: java.security.Policy + - org.openrewrite.java.search.FindMethods: + methodPattern: java.security.Policy#setPolicy(..) recipeList: - org.openrewrite.java.RemoveMethodInvocations: methodPattern: java.security.Policy#setPolicy(..) @@ -81,8 +81,8 @@ tags: preconditions: - org.openrewrite.java.migrate.search.FindJavaVersion: version: 24 - - org.openrewrite.java.search.FindTypes: - fullyQualifiedTypeName: java.security.SecurityManager + - org.openrewrite.java.search.FindMethods: + methodPattern: java.lang.SecurityManager#check*(..) recipeList: - org.openrewrite.java.RemoveMethodInvocations: methodPattern: java.lang.SecurityManager#check*(..)