8.61.1 release (2025-08-27)
Total recipe count: 4677
info
This changelog only shows what recipes have been added, removed, or changed. OpenRewrite may do releases that do not include these types of changes. To see these changes, please go to the releases page.
Corresponding CLI version
- Stable CLI version
v3.43.6 - Staging CLI version:
v3.45.3
New Artifacts
- rewrite-joda
New Recipes
- io.moderne.devcenter.ApacheDevCenter: A DevCenter that tracks the latest Apache Maven parent POM versions and applies best practices.
- io.moderne.devcenter.ApacheMavenBestPractices: A collection of recipes that apply best practices to Maven POMs. Some of these recipes affect build stability, so they are reported as security issues in the DevCenter card.
- io.moderne.devcenter.ApacheMavenDevCenter: A DevCenter that tracks the latest Apache Maven parent POM versions and applies best practices. This DevCenter includes recipes to upgrade the parent POMs of Apache Maven, as well as a collection of best practices for Maven POMs.
- io.moderne.devcenter.UpgradeApacheParent: Upgrades the Apache parent POM to the latest version.
- io.moderne.devcenter.UpgradeMavenParent: Upgrades the Apache Maven parent POM to the latest version.
- io.moderne.devcenter.UpgradeMavenPluginsParent: Upgrades the Apache Maven parent POM to the latest version.
- io.moderne.devcenter.UpgradeMavenSharedParent: Upgrades the Apache Maven parent POM to the latest version.
- io.moderne.hibernate.update66.MigrateCascadeTypes: Moving away from deprecated Hibernate CascadeType constants. CascadeType.SAVE_UPDATE -> CascadeType.PERSIST and/or CascadeType.MERGE, CascadeType.DELETE -> CascadeType.REMOVE.
- io.moderne.hibernate.update70.MigrateLockOptionsToDirectParameters: Migrates deprecated
LockOptionsusage to direct parameters in method calls. As of JPA 3.2 and Hibernate 7,LockMode,Timeout, andPessimisticLockScopeare passed directly tofind(),refresh(), andlock()methods instead of being wrapped in aLockOptionsobject. - io.moderne.hibernate.update70.MigrateNaturalIdLoadAccess: Migrates NaturalIdLoadAccess#using(Object...) to using(Map.of(...)) variants for Hibernate 7.0.
- io.moderne.hibernate.update70.MigrateNaturalIdMultiLoadAccess: Migrates NaturalIdMultiLoadAccess#compoundValue(Object...) to Map.of(...) variants for Hibernate 7.0.
- io.moderne.hibernate.update70.MigrateSessionToDeferToJPA: Migrates code using deprecated Session load/get/refresh/save/update/delete methods to their Hibernate 7.0 replacements.
- io.moderne.hibernate.update70.RemoveUnnecessaryCastToSession: In Hibernate 7.0,
SessionFactory.createEntityManager()explicitly returns Session, making casts to Session unnecessary. - io.moderne.hibernate.update70.ReplaceHibernateWithJakartaAnnotations: Tries to replaces annotations that have been removed in Hibernate 7.0 with its Jakarta equivalent, such as Table, @Where, @OrderBy, etc. If a annotation is used with arguments that do not have a direct replacement, the annotation is not replaced at all.
- io.moderne.hibernate.update70.ReplaceSessionLockRequest: Migrates Session.buildLockRequest(LockOptions.X) calls to use session.lock(entity, new LockOptions(LockMode.X)) in Hibernate 7.0.
- io.moderne.java.spring.boot3.RemoveDeprecatedConditions: Replace Spring Boot 3.5 deprecated condition classes with their corresponding conditional annotations.
- io.moderne.java.spring.boot3.ReplaceConditionalOutcomeInverse: Replace deprecated
ConditionOutcome.inverse(ConditionOutcome outcome)calls withnew ConditionOutcome(!outcome.isMatch(), outcome.getConditionMessage()). - io.moderne.java.spring.boot3.ReplaceDeprecatedKafkaConnectionDetailsBootstrapServerGetters: Replace deprecated
KafkaConnectionDetailsbootstrap server methods with chained calls. For example,getProducerBootstrapServers()becomesgetProducer().getBootstrapServers(). - io.moderne.java.spring.boot3.ReplaceDeprecatedThreadPoolTaskSchedulerConstructor: The 5-parameter constructor of
ThreadPoolTaskSchedulerBuilderhas been deprecated in Spring Boot 3.5. This recipe transforms it to use the builder pattern instead, omitting null values and defaults. - io.moderne.java.spring.boot3.SpringBoot35Deprecations: Migrate deprecated classes and methods that have been marked for removal in Spring Boot 3.5.
- io.moderne.java.spring.boot3.UpdateOpenTelemetryResourceAttributes: The
service.groupresource attribute has been deprecated for OpenTelemetry in Spring Boot 3.5. Consider using alternative attributes or remove the deprecated attribute. - io.moderne.java.spring.boot4.SpringBootProperties_4_0: Migrate properties found in
application.propertiesandapplication.yml. - org.openrewrite.apache.httpclient5.InputBufferReadAddOffsetAndLengthArguments: In Apache Http Client 5.x migration, the shortened form of the
read(byte[])has been removed. - org.openrewrite.apache.httpclient5.MigrateSSLConnectionSocketFactory: Migrates usage of the deprecated
org.apache.http.conn.ssl.SSLConnectionSocketFactorytoorg.apache.hc.client5.http.ssl.DefaultClientTlsStrategywith proper connection manager setup. - org.openrewrite.apache.httpclient5.OutputBufferWriteAddOffsetAndLengthArguments: In Apache Http Client 5.x migration, the shortened form of the
write(byte[])has been removed. - org.openrewrite.apache.httpclient5.RemoveByteBufferAllocators: In Apache Http Client 5.x migration, both implementations of
ByteBufferAllocatorhave been removed. This recipe will remove usage of said classes in favour of direct static calls toByteBuffer. - org.openrewrite.apache.httpclient5.UpgradeApacheHttpCore_5_NioInputBuffers: Mapping of specifically
*InputBufferclasses of Apache HttpCore 5.x from Apache HttpCore Nio 4.4.x - org.openrewrite.apache.httpclient5.UpgradeApacheHttpCore_5_NioOutputBuffers: Mapping of specifically
*OutputBufferclasses of Apache HttpCore 5.x from Apache HttpCore Nio 4.4.x - org.openrewrite.apache.httpclient5.UpgradeApacheHttpCore_5_NioUtilMapping: Mapping of all the compatible utility classes of Apache HttpCore 5.x from Apache HttpCore Nio 4.4.x
- org.openrewrite.java.InlineMethodCalls: Apply inlinings as defined by Error Prone's
@InlineMeannotation, or compatible annotations. Uses the template and method arguments to replace method calls. Supports both methods invocations and constructor calls, with optional new imports. - org.openrewrite.java.joda.time.JodaTimeRecipe: Prefer the Java standard library over third-party usage of Joda Time.
- org.openrewrite.java.joda.time.NoJodaTime: Before Java 8, Java lacked a robust date and time library, leading to the widespread use of Joda-Time to fill this gap. With the release of Java 8, the
java.timepackage was introduced, incorporating most of Joda-Time's concepts. Features deemed too specialized or bulky forjava.timewere included in the ThreeTen-Extra library. This recipe migrates Joda-Time types tojava.timeandthreeten-extratypes. - org.openrewrite.java.migrate.UpgradeBuildToJava25: Updates build files to use Java 25 as the target/source.
- org.openrewrite.java.migrate.guava.NoGuavaInlineMeMethods: Inline Guava method calls that are annotated with
@InlineMeto their replacement method. - org.openrewrite.java.migrate.jakarta.FileuploadToFileUpload2: Migrate deprecated
org.apache.commons.fileloadpackages toorg.apache.commons.fileload.core - org.openrewrite.java.migrate.jakarta.JavaxJspToJakartaJsp: Java EE has been rebranded to Jakarta EE, necessitating a package relocation.
- org.openrewrite.java.migrate.jakarta.JettyUpgradeEE9: Update Jetty dependencies from version 9 to version 12.
- org.openrewrite.java.migrate.jakarta.UpdateFileupload2Dependencies: Update Apache Commons FileUpload2 package for EE10.
- org.openrewrite.java.migrate.jakarta.UpdateRestLet2_6: Update RestLet to 2.6.0
- org.openrewrite.java.recipes.UpgradeTestsToJava21: Use Java 21 features in tests.
- org.openrewrite.java.spring.boot2.DatabaseComponentAndBeanInitializationOrderingUnconditionally: Beans of certain well-known types, such as
JdbcTemplate, will be ordered so that they are initialized after the database has been initialized. If you have a bean that works with theDataSourcedirectly, annotate its class or@Beanmethod with@DependsOnDatabaseInitializationto ensure that it too is initialized after the database has been initialized. See the release notes for more. This recipe will not check if the@DependsOnDatabaseInitializationannotation is on the classpath. This recipe is best combined with a precondition, as seen inDatabaseComponentAndBeanInitializationOrdering. - org.openrewrite.java.spring.boot3.SpringBootProperties_3_4: Migrate properties found in
application.propertiesandapplication.yml. - org.openrewrite.java.spring.boot3.SpringBootProperties_3_4_EnabledToAccess: Migrate properties found in
application.propertiesandapplication.yml, specifically converting 'enabled' to 'access' - org.openrewrite.java.testing.assertj.JUnitTryFailToAssertThatThrownBy: Replace try-catch blocks where the try block ends with a
fail()statement and the catch block optionally contains assertions, with AssertJ'sassertThatThrownBy(). - org.openrewrite.java.testing.cleanup.TestMethodsShouldBeVoid: Test methods annotated with
@Test,@ParameterizedTest,@RepeatedTest,@TestTemplateshould havevoidreturn type. Non-void return types can cause test discovery issues, and warnings as of JUnit 5.13+. This recipe changes the return type tovoidand removesreturnstatements. - org.openrewrite.java.testing.junit5.CsvSourceToValueSource: Replaces JUnit 5's
@CsvSourceannotation with@ValueSourcewhen the parameterized test has only a single method argument. - org.openrewrite.java.testing.junit6.JUnit5to6Migration: Migrates JUnit 5.x tests to JUnit 6.x.
- org.openrewrite.java.testing.junit6.MinimumJreConditions: This recipe will:
- Remove tests that are only active on JREs that are below the specified version.
- Adjust ranges to use minimum the specified version.
- org.openrewrite.staticanalysis.PreferSystemGetPropertyOverGetenv: Replaces
System.getenv("HOME")withSystem.getProperty("user.home")for better portability. - org.openrewrite.terraform.search.FindRequiredProvider: Find
required_providersblocks in Terraform configuration files. Produces a data table of the provider names and their versions. - org.openrewrite.text.RemoveHardcodedIPAddressesFromComments: Removes hard-coded IPv4 addresses from comments when they match private IP ranges or loopback addresses. This targets IP addresses that are commented out in various comment formats:
Private IP ranges:
192.168.0.0to192.168.255.25510.0.0.0to10.255.255.255172.16.0.0to172.31.255.255
Loopback IP range:
127.0.0.0to127.255.255.255
Supported comment formats:
- C-style line comments (
//) - C-style block comments (
/* */) - Shell/Python style comments (
#) - XML comments (
<!-- -->) - YAML comments (
#) - Properties file comments (
#or!)
For line comments, the entire line is removed. For block comments, only the IP address is removed.
Removed Recipes
- io.moderne.hibernate.update70.MigrateSessionSaveUpdateDelete: Migrates code using deprecated Session save/update/delete methods to their Hibernate 7.0 replacements. Session#save -> Session#persist, Session#update -> Session#merge, Session#saveOrUpdate -> Session#persist or Session#merge, Session#delete -> Session#remove.
- io.moderne.java.spring.boot3.MigrateEndpointAccessValueSpring34: Migrate manage endpoint access value from
falsetononeandtruetoread-only. - io.moderne.java.spring.boot3.SpringBootManagementEndpointProperties_3_4: Migrate the settings for Management Endpoint Security from
true|falsetoread-only|none. - org.openrewrite.java.migrate.joda.JodaTimeRecipe: Prefer the Java standard library over third-party usage of Joda Time.
- org.openrewrite.java.migrate.joda.NoJodaTime: Before Java 8, Java lacked a robust date and time library, leading to the widespread use of Joda-Time to fill this gap. With the release of Java 8, the
java.timepackage was introduced, incorporating most of Joda-Time's concepts. Features deemed too specialized or bulky forjava.timewere included in the ThreeTen-Extra library. This recipe migrates Joda-Time types tojava.timeandthreeten-extratypes.
Changed Recipes
- org.openrewrite.java.recipes.ExecutionContextParameterName was changed:
- Old Options:
None
- New Options:
parameterName: { type: String, required: false }
- Old Options:
- org.openrewrite.yaml.CoalesceProperties was changed:
- Old Options:
applyTo: { type: List, required: true }exclusions: { type: List, required: true }
- New Options:
applyTo: { type: List, required: false }exclusions: { type: List, required: false }
- Old Options: