/
java-version-17.yml
208 lines (208 loc) · 9.54 KB
/
java-version-17.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
#
# Copyright 2024 the original author or authors.
# <p>
# 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
# <p>
# https://www.apache.org/licenses/LICENSE-2.0
# <p>
# 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.UpgradeJavaVersion:
version: 17
- org.openrewrite.java.migrate.lang.StringFormatted
- org.openrewrite.github.SetupJavaUpgradeJavaVersion:
minimumJavaMajorVersion: 17
- org.openrewrite.staticanalysis.InstanceOfPatternMatch
- org.openrewrite.java.migrate.RemoveMethodInvocation:
methodPattern: java.lang.Runtime traceInstructions(boolean)
- org.openrewrite.java.migrate.RemoveMethodInvocation:
methodPattern: java.lang.System traceMethodCalls(boolean)
- org.openrewrite.java.migrate.lang.UseTextBlocks
- org.openrewrite.java.migrate.DeprecatedJavaxSecurityCert
- org.openrewrite.java.migrate.DeprecatedLogRecordThreadID
- org.openrewrite.java.migrate.RemovedLegacySunJSSEProviderName
- org.openrewrite.java.migrate.Jre17AgentMainPreMainPublic
- org.openrewrite.maven.UpgradePluginVersion:
groupId: org.apache.maven.plugins
artifactId: maven-checkstyle-plugin
newVersion: 3.x
- org.openrewrite.maven.UpgradePluginVersion:
groupId: com.sonatype.clm
artifactId: clm-maven-plugin
newVersion: 2.47.6-01
- 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
---
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.migrate.RemoveMethodInvocation:
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