-
Notifications
You must be signed in to change notification settings - Fork 119
Expand file tree
/
Copy pathjava-version-17.yml
More file actions
387 lines (385 loc) · 16.8 KB
/
java-version-17.yml
File metadata and controls
387 lines (385 loc) · 16.8 KB
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
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
#
# Copyright 2024 the original author or authors.
# <p>
# 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
# <p>
# https://docs.moderne.io/licensing/moderne-source-available-license
# <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
preconditions:
- org.openrewrite.Singleton
recipeList:
- org.openrewrite.java.migrate.Java8toJava11
- org.openrewrite.java.migrate.UpgradeBuildToJava17
- 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.ExplicitRecordImport
- org.openrewrite.java.migrate.lang.UseTextBlocks:
convertStringsWithoutNewlines: false
- org.openrewrite.java.migrate.lang.StringFormatted:
addParentheses: 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
- org.openrewrite.java.dependencies.UpgradeDependencyVersion:
groupId: commons-codec
artifactId: commons-codec
newVersion: 1.17.x
# As it's a Maven plugin, we should only need Maven versions of these upgrades
- org.openrewrite.maven.UpgradeDependencyVersion:
groupId: com.github.spotbugs
artifactId: spotbugs-maven-plugin
newVersion: 4.9.x
- org.openrewrite.maven.UpgradePluginVersion:
groupId: com.github.spotbugs
artifactId: spotbugs-maven-plugin
newVersion: 4.9.x
- org.openrewrite.java.dependencies.UpgradeDependencyVersion:
groupId: org.mapstruct
artifactId: mapstruct*
newVersion: 1.6.x
- org.openrewrite.java.migrate.AddLombokMapstructBinding
- org.openrewrite.java.migrate.EnableLombokAnnotationProcessor
---
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
preconditions:
- org.openrewrite.Singleton
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
preconditions:
- org.openrewrite.Singleton
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
addVersionIfMissing: true
- 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
preconditions:
- org.openrewrite.Singleton
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
preconditions:
- org.openrewrite.Singleton
recipeList:
- org.openrewrite.java.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
preconditions:
- org.openrewrite.Singleton
recipeList:
- org.openrewrite.java.ChangeMethodName:
methodPattern: java.util.logging.LogRecord getThreadID()
newMethodName: getLongThreadID
- org.openrewrite.java.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
preconditions:
- org.openrewrite.Singleton
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
preconditions:
- org.openrewrite.Singleton
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
preconditions:
- org.openrewrite.Singleton
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
preconditions:
- org.openrewrite.Singleton
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
preconditions:
- org.openrewrite.Singleton
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
preconditions:
- org.openrewrite.Singleton
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
preconditions:
- org.openrewrite.Singleton
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.
preconditions:
- org.openrewrite.Singleton
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.
preconditions:
- org.openrewrite.Singleton
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
preconditions:
- org.openrewrite.Singleton
recipeList:
- org.openrewrite.java.RemoveMethodInvocations:
methodPattern: 'java.lang.Runtime traceInstructions(boolean)'
- org.openrewrite.java.RemoveMethodInvocations:
methodPattern: 'java.lang.Runtime traceMethodCalls(boolean)'
---
type: specs.openrewrite.org/v1beta/recipe
name: org.openrewrite.java.migrate.AddLombokMapstructBinding
displayName: Add `lombok-mapstruct-binding` when both MapStruct and Lombok are used
description: Add the `lombok-mapstruct-binding` annotation processor as needed when both MapStruct and Lombok are used.
tags:
- java17
preconditions:
- org.openrewrite.java.dependencies.DependencyInsight:
groupIdPattern: org.projectlombok
artifactIdPattern: lombok
- org.openrewrite.java.dependencies.DependencyInsight:
groupIdPattern: org.mapstruct
artifactIdPattern: mapstruct
- org.openrewrite.Singleton
recipeList:
- org.openrewrite.gradle.AddDependency:
groupId: org.projectlombok
artifactId: lombok-mapstruct-binding
version: 0.2.0
configuration: annotationProcessor
acceptTransitive: false
- org.openrewrite.java.migrate.AddLombokMapstructBindingMavenDependencyOnly
- org.openrewrite.maven.AddAnnotationProcessor:
groupId: org.projectlombok
artifactId: lombok-mapstruct-binding
version: 0.2.0
---
type: specs.openrewrite.org/v1beta/recipe
name: org.openrewrite.java.migrate.AddLombokMapstructBindingMavenDependencyOnly
displayName: Add `lombok-mapstruct-binding` dependency for Maven when both MapStruct and Lombok are used
description: >-
Add the `lombok-mapstruct-binding` when both MapStruct and Lombok are used, and the dependency does not already exist.
Only to be called from `org.openrewrite.java.migrate.AddLombokMapstructBinding` to reduce redundant checks.
preconditions:
- org.openrewrite.java.dependencies.search.DoesNotIncludeDependency:
groupId: org.projectlombok
artifactId: lombok-mapstruct-binding
- org.openrewrite.Singleton
recipeList:
- org.openrewrite.maven.AddDependency:
groupId: org.projectlombok
artifactId: lombok-mapstruct-binding
version: 0.2.0
acceptTransitive: false