
META-INF.rewrite.java-version-17.yml Maven / Gradle / Ivy
Show all versions of rewrite-migrate-java Show documentation
#
# 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.
#
---
type: specs.openrewrite.org/v1beta/recipe
name: org.openrewrite.java.migrate.UpgradeToJava17
displayName: Migrate to Java 17
description: >-
This recipe will apply changes commonly needed when migrating to Java 17. Specifically, for those
applications that are built on Java 8, this recipe will update and add dependencies on J2EE libraries that are no
longer directly bundled with the JDK. 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 17 as the target/source and plugins will be
also be upgraded to versions that are compatible with Java 17.
tags:
- java17
recipeList:
- org.openrewrite.java.migrate.Java8toJava11
- org.openrewrite.java.migrate.UpgradeBuildToJava17
- org.openrewrite.java.migrate.lang.StringFormatted
- org.openrewrite.staticanalysis.InstanceOfPatternMatch
- org.openrewrite.staticanalysis.AddSerialAnnotationToSerialVersionUID
- org.openrewrite.java.migrate.RemovedRuntimeTraceMethods
- org.openrewrite.java.migrate.RemovedToolProviderConstructor
- org.openrewrite.java.migrate.RemovedModifierAndConstantBootstrapsConstructors
- org.openrewrite.java.migrate.lang.UseTextBlocks:
convertStringsWithoutNewlines: false
- org.openrewrite.java.migrate.DeprecatedJavaxSecurityCert
- org.openrewrite.java.migrate.DeprecatedLogRecordThreadID
- org.openrewrite.java.migrate.RemovedLegacySunJSSEProviderName
- org.openrewrite.java.migrate.Jre17AgentMainPreMainPublic
- org.openrewrite.java.migrate.DeprecatedCountStackFramesMethod
- org.openrewrite.java.migrate.RemovedZipFinalizeMethods
- org.openrewrite.java.migrate.RemovedSSLSessionGetPeerCertificateChainMethodImpl
- org.openrewrite.java.migrate.SunNetSslPackageUnavailable
- org.openrewrite.java.migrate.RemovedRMIConnectorServerCredentialTypesConstant
- org.openrewrite.java.migrate.RemovedFileIOFinalizeMethods
- org.openrewrite.java.migrate.UpgradePluginsForJava17
- org.openrewrite.java.dependencies.UpgradeDependencyVersion:
groupId: com.google.inject
artifactId: guice
newVersion: 5.x
---
type: specs.openrewrite.org/v1beta/recipe
name: org.openrewrite.java.migrate.UpgradeBuildToJava17
displayName: Upgrade build to Java 17
description: Updates build files to use Java 17 as the target/source.
tags:
- java17
recipeList:
- org.openrewrite.java.migrate.UpgradeJavaVersion:
version: 17
---
type: specs.openrewrite.org/v1beta/recipe
name: org.openrewrite.java.migrate.UpgradePluginsForJava17
displayName: Upgrade plugins to Java 17 compatible versions
description: Updates plugins to version compatible with Java 17.
tags:
- java17
recipeList:
- org.openrewrite.github.SetupJavaUpgradeJavaVersion:
minimumJavaMajorVersion: 17
- org.openrewrite.gradle.UpdateGradleWrapper:
version: 7.3
addIfMissing: false
- org.openrewrite.maven.UpgradePluginVersion:
groupId: org.apache.maven.plugins
artifactId: maven-checkstyle-plugin
newVersion: 3.x
- org.openrewrite.maven.UpgradePluginVersion:
groupId: org.apache.maven.plugins
artifactId: maven-compiler-plugin
newVersion: 3.x
- org.openrewrite.maven.UpgradePluginVersion:
groupId: org.apache.maven.plugins
artifactId: maven-war-plugin
newVersion: 3.x
- org.openrewrite.maven.UpgradePluginVersion:
groupId: com.sonatype.clm
artifactId: clm-maven-plugin
newVersion: 2.47.6-01
- org.openrewrite.maven.UpgradePluginVersion:
groupId: ro.isdc.wro4j
artifactId: wro4j-maven-plugin
newVersion: 2.1.x
---
type: specs.openrewrite.org/v1beta/recipe
name: org.openrewrite.java.migrate.DeprecatedJavaxSecurityCert
displayName: Use `java.security.cert` instead of `javax.security.cert`
description: The `javax.security.cert` package has been deprecated for removal.
tags:
- java17
recipeList:
- org.openrewrite.java.ChangePackage:
oldPackageName: javax.security.cert
newPackageName: java.security.cert
---
type: specs.openrewrite.org/v1beta/recipe
name: org.openrewrite.java.migrate.RemovedLegacySunJSSEProviderName
displayName: Use `SunJSSE` instead of `com.sun.net.ssl.internal.ssl.Provider`
description: The `com.sun.net.ssl.internal.ssl.Provider` provider name was removed.
tags:
- java17
recipeList:
- org.openrewrite.java.migrate.ReplaceStringLiteralValue:
oldLiteralValue: com.sun.net.ssl.internal.ssl.Provider
newLiteralValue: SunJSSE
---
type: specs.openrewrite.org/v1beta/recipe
name: org.openrewrite.java.migrate.DeprecatedLogRecordThreadID
displayName: Adopt `setLongThreadID` in `java.util.logging.LogRecord`
description: Avoid using the deprecated methods in `java.util.logging.LogRecord`.
tags:
- java17
recipeList:
- org.openrewrite.java.ChangeMethodName:
methodPattern: java.util.logging.LogRecord getThreadID()
newMethodName: getLongThreadID
- org.openrewrite.java.migrate.ChangeMethodInvocationReturnType:
methodPattern: java.util.logging.LogRecord getLongThreadID()
newReturnType: long
- org.openrewrite.java.ChangeMethodName:
methodPattern: java.util.logging.LogRecord setThreadID(int)
newMethodName: setLongThreadID
---
type: specs.openrewrite.org/v1beta/recipe
name: org.openrewrite.java.migrate.Jre17AgentMainPreMainPublic
displayName: Set visibility of `premain` and `agentmain` methods to `public`
description: Check for a behavior change in Java agents.
tags:
- java17
recipeList:
- org.openrewrite.java.ChangeMethodAccessLevel:
methodPattern: "*..* agentmain(java.lang.String)"
newAccessLevel: public
- org.openrewrite.java.ChangeMethodAccessLevel:
methodPattern: "*..* agentmain(java.lang.String, java.lang.instrument.Instrumentation)"
newAccessLevel: public
- org.openrewrite.java.ChangeMethodAccessLevel:
methodPattern: "*..* premain(java.lang.String)"
newAccessLevel: public
- org.openrewrite.java.ChangeMethodAccessLevel:
methodPattern: "*..* premain(java.lang.String, java.lang.instrument.Instrumentation)"
newAccessLevel: public
---
type: specs.openrewrite.org/v1beta/recipe
name: org.openrewrite.java.migrate.RemovedZipFinalizeMethods
displayName: Replace `finalize` method in `java.util.zip.ZipFile`, `java.util.zip.Inflater` and `java.util.zip.Deflater`
description: >-
The `finalize` method in `java.util.zip.ZipFile` is replaced with the `close` method and is replaced by the `end` method in
`java.util.zip.Inflater` and `java.util.zip.Deflater` as it is no longer available in Java SE 12 and later.
tags:
- java17
recipeList:
- org.openrewrite.java.ChangeMethodName:
methodPattern: "java.util.zip.Inflater finalize()"
newMethodName: end
ignoreDefinition: true
- org.openrewrite.java.ChangeMethodName:
methodPattern: "java.util.zip.Deflater finalize()"
newMethodName: end
ignoreDefinition: true
- org.openrewrite.java.ChangeMethodName:
methodPattern: "java.util.zip.ZipFile finalize()"
newMethodName: close
ignoreDefinition: true
---
type: specs.openrewrite.org/v1beta/recipe
name: org.openrewrite.java.migrate.RemovedSSLSessionGetPeerCertificateChainMethodImpl
displayName: Replace `SSLSession.getPeerCertificateChain()` method
description: >-
The `javax.net.ssl.SSLSession.getPeerCertificateChain()` method implementation was removed from the SunJSSE provider and HTTP client implementation in Java SE 15.
The default implementation will now throw an `UnsupportedOperationException`.
Applications using this method should be updated to use the `javax.net.ssl.SSLSession.getPeerCertificates()` method instead.
tags:
- java17
recipeList:
- org.openrewrite.java.ChangeMethodName:
methodPattern: "javax.net.ssl.SSLSession getPeerCertificateChain()"
newMethodName: getPeerCertificates
ignoreDefinition: true
---
type: specs.openrewrite.org/v1beta/recipe
name: org.openrewrite.java.migrate.SunNetSslPackageUnavailable
displayName: Replace `com.sun.net.ssl` package
description: >-
The internal API `com.sun.net.ssl` is removed. The package was intended for internal use only and replacement APIs can be found in the `javax.net.ssl` package.
tags:
- java17
recipeList:
- org.openrewrite.java.ChangePackage:
oldPackageName: com.sun.net.ssl
newPackageName: javax.net.ssl
---
type: specs.openrewrite.org/v1beta/recipe
name: org.openrewrite.java.migrate.RemovedRMIConnectorServerCredentialTypesConstant
displayName: Replace `RMIConnectorServer.CREDENTIAL_TYPES` constant
description: >-
This recipe replaces the `RMIConnectorServer.CREDENTIAL_TYPES` constant with the `RMIConnectorServer.CREDENTIALS_FILTER_PATTERN` constant.
tags:
- java17
recipeList:
- org.openrewrite.java.ReplaceConstantWithAnotherConstant:
existingFullyQualifiedConstantName: javax.management.remote.rmi.RMIConnectorServer.CREDENTIAL_TYPES
fullyQualifiedConstantName: javax.management.remote.rmi.RMIConnectorServer.CREDENTIALS_FILTER_PATTERN
---
type: specs.openrewrite.org/v1beta/recipe
name: org.openrewrite.java.migrate.DeprecatedCountStackFramesMethod
displayName: Remove `Thread.countStackFrames()` method
description: >-
`Thread.countStackFrames()` has been removed in Java SE 14 and has been changed in this release to unconditionally throw `UnsupportedOperationException`
This recipe removes the usage of this method in your application as long as the method is not assigned to a variable.
For more information on the Java SE 14 deprecation of this method, see https://bugs.java.com/bugdatabase/view_bug?bug_id=8205132.
tags:
- java17
recipeList:
- org.openrewrite.java.RemoveMethodInvocations:
methodPattern: 'java.lang.Thread countStackFrames()'
---
type: specs.openrewrite.org/v1beta/recipe
name: org.openrewrite.java.migrate.RemovedFileIOFinalizeMethods
displayName: Replace `finalize` method in `java.io.FileInputStream` and `java.io.FileOutputStream`
description: >-
The `finalize` method in `java.io.FileInputStream` and `java.io.FileOutputStream` is no longer available in Java SE 12 and later. The recipe replaces it with the `close` method.
tags:
- java17
recipeList:
- org.openrewrite.java.ChangeMethodName:
methodPattern: "java.io.FileInputStream finalize()"
newMethodName: close
ignoreDefinition: true
- org.openrewrite.java.ChangeMethodName:
methodPattern: "java.io.FileOutputStream finalize()"
newMethodName: close
ignoreDefinition: true
---
type: specs.openrewrite.org/v1beta/recipe
name: org.openrewrite.java.migrate.RemovedToolProviderConstructor
displayName: Change `javax.tools.ToolProvider` methods calls to static
description: >-
The `javax.tools.ToolProvider()` constructor has been removed in Java SE 16 since the class only contains static methods.
The recipe converts `javax.tools.ToolProvider getSystemJavaCompiler()`, `javax.tools.ToolProvider getSystemDocumentationTool()` and `javax.tools.ToolProvider getSystemToolClassLoader()` to static methods.
recipeList:
- org.openrewrite.java.ChangeMethodTargetToStatic:
methodPattern: javax.tools.ToolProvider *()
fullyQualifiedTargetTypeName: javax.tools.ToolProvider
---
type: specs.openrewrite.org/v1beta/recipe
name: org.openrewrite.java.migrate.RemovedModifierAndConstantBootstrapsConstructors
displayName: Change `java.lang.reflect.Modifier` and ` java.lang.invoke.ConstantBootstraps` method calls to static
description: >-
The `java.lang.reflect.Modifier()` and `java.lang.invoke.ConstantBootstraps()` constructors have been removed in Java SE 15 because both classes only contain static methods.
This recipe converts the usage of all methods in the two classes to be static.
See https://docs.oracle.com/en/java/javase/15/migrate/index.html#GUID-233853B8-0782-429E-BEF7-7532EE610E63 for more information on these changes.
recipeList:
- org.openrewrite.java.ChangeMethodTargetToStatic:
methodPattern: java.lang.reflect.Modifier *(..)
fullyQualifiedTargetTypeName: java.lang.reflect.Modifier
- org.openrewrite.java.ChangeMethodTargetToStatic:
methodPattern: java.lang.invoke.ConstantBootstraps *(..)
fullyQualifiedTargetTypeName: java.lang.invoke.ConstantBootstraps
---
type: specs.openrewrite.org/v1beta/recipe
name: org.openrewrite.java.migrate.RemovedRuntimeTraceMethods
displayName: Remove `Runtime.traceInstructions(boolean)` and `Runtime.traceMethodCalls` methods
description: >-
The `traceInstructions` and `traceMethodCalls` methods in `java.lang.Runtime` were deprecated in Java SE 9 and are no longer available in Java SE 13 and later.
The recipe removes the invocations of these methods since the method invocations do nothing functionally.
tags:
- java17
recipeList:
- org.openrewrite.java.RemoveMethodInvocations:
methodPattern: 'java.lang.Runtime traceInstructions(boolean)'
- org.openrewrite.java.RemoveMethodInvocations:
methodPattern: 'java.lang.Runtime traceMethodCalls(boolean)'