8.68.1 release (2025-12-05)
Total recipe count: 5083
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.51.2 - Staging CLI version:
v3.51.4
New Artifacts
- rewrite-jasperreports
New Recipes
- io.moderne.hibernate.MigrateToHibernate71: This recipe will apply changes commonly needed when migrating to Hibernate 7.0.x.
- io.moderne.jasperreports.MigrateExporterConfigToJasper6: Updates deprecated exporter parameter imports to the new configuration classes introduced in JasperReports 6. This includes migrating from parameter classes to configuration classes for PDF, HTML, CSV, and other exporters.
- io.moderne.jasperreports.MigrateXlsToXlsxExporter: Migrates the deprecated
JRXlsExporterto the newJRXlsxExporterclass in JasperReports 6. Also updates related configuration classes from XLS to XLSX variants. - io.moderne.jasperreports.UpgradeToJasperReports5: Migrates JasperReports from 4.6.0 to 5.6.x. This recipe includes minimal breaking changes, allowing teams to test and validate the migration before proceeding to version 6.
- io.moderne.jasperreports.UpgradeToJasperReports6: Migrates JasperReports from 5.x to 6.x with the new exporter API, XLS to XLSX move, and removal of Spring JasperReports views.
- io.moderne.jasperreports.v5.MigrateExporterSetParameter: Migrates deprecated
setParametercalls on JasperReports exporters to the new API usingsetExporterInputandsetExporterOutput. - io.moderne.java.spring.boot2.UpgradeSpringBoot_2_0: Migrate applications to the latest Spring Boot 2.0 release. This recipe will modify an application's build files, make changes to deprecated/preferred APIs, and migrate configuration settings that have changes between versions. This recipe will also chain additional framework migrations (Spring Framework, Spring Data, etc) that are required as part of the migration to Spring Boot 2.0.
- io.moderne.java.spring.boot3.AddSpringBootApplication: Adds a
@SpringBootApplicationclass containing a main method to bootify your Spring Framework application. - io.moderne.java.spring.boot4.AddJackson2ForJerseyJson: Check whether a module uses Jersey on combination with JSON and adds the needed
spring-boot-jacksondependency and conditionallyspring-boot-jackson2dependency. - io.moderne.java.spring.boot4.AddMongoDbRepresentationProperties: Adds the 'spring.mongodb.representation.uuid' property with value 'standard' and the 'spring.data.mongodb.representation.big-decimal' property with the value 'decimal128' to Spring configuration files when a MongoDB dependency is detected.
- io.moderne.java.spring.boot4.MigrateSpringRetry: Handle spring-retry not longer managed by Spring Boot and the possible migration to Spring Core Resilience.
- io.moderne.java.spring.boot4.MigrateSpringRetryToSpringFramework7: Migrate
spring-retrys@Retryableand@Backoffannotation to Spring Framework 7 Resilience annotations. - io.moderne.java.spring.boot4.RemoveGradleUberJarLoaderImplementationConfig: Removes the Spring Boot Uber-Jar
loaderImplementationconfiguration from Gradle build files. - io.moderne.java.spring.boot4.ReplaceDeprecatedAutoconfigureMongoApi: Replace deprecated
org.springframework.boot.autoconfigure.mongoAPI. - io.moderne.java.spring.boot4.ReplaceDeprecatedDockerApi: Replaces deprecated
DockerApiconstructors and configuration methods with their modern equivalents. - io.moderne.java.spring.boot4.ReplaceDeprecatedThreadPoolTaskSchedulerBuilderApi: Replaces the deprecated 5-argument constructor of
ThreadPoolTaskSchedulerBuilderwith the builder pattern. - io.moderne.java.spring.hibernate.MigrateDaoSupportGetSession: Migrate
HibernateDaoSupport#getSession()usage toHibernateDaoSupport#getSessionFactory()#getCurrentSession()and annotate the methods with@Transactional. - io.moderne.java.spring.hibernate.MigrateSaveOrUpdateAll: Migrate removed
HibernateDaoSupport#getHibernateTemplate#.saveOrUpdateAllto an iterativeHibernateDaoSupport#getHibernateTemplate#.saveOrUpdate. - io.moderne.java.spring.orm.SpringORM5: Migrate applications using Spring ORM Hibernate Support to Hibernate 5 compatible version. This will enable a further migration by the Spring Framework migration past 5.
- org.apache.camel.upgrade.camel416.Camel416MiloLambdaRecipe: Milo: The monitored item data value listener API has changed.
- org.apache.camel.upgrade.camel416.CamelMigrationRecipe: Migrates
camel 4.15application tocamel 4.16. - org.apache.camel.upgrade.camel416.camelMiloCertificate: Different java type for ServerCertificateValidator in camel-milo.
- org.openrewrite.github.AddDependabotCooldown: Adds a
cooldownsection to each update configuration in Dependabot files. Supportsdefault-days,semver-major-days,semver-minor-days,semver-patch-days,include, andexcludeoptions. This implements a security best practice where dependencies are not immediately adopted upon release, allowing time for security vendors to identify potential supply chain compromises. Cooldown applies only to version updates, not security updates. Read more about dependency cooldowns. The available configuration options for dependabot are listed on GitHub. - org.openrewrite.hibernate.MigrateToHibernate66: This recipe will apply changes commonly needed when migrating to Hibernate 6.6.x.
- org.openrewrite.hibernate.MigrateToHibernate70: This recipe will apply changes commonly needed when migrating to Hibernate 7.0.x.
- org.openrewrite.hibernate.MigrateToHibernate71: This recipe will apply changes commonly needed when migrating to Hibernate 7.1.x.
- org.openrewrite.java.RemoveMethodThrows: Remove specific, or all exceptions from a method declaration
throwsclause. - org.openrewrite.java.jspecify.MigrateFromMicronautAnnotations: Migrate from Micronaut Framework annotations to JSpecify.
- org.openrewrite.java.spring.boot3.UpdatePrometheusPushgateway: Update the Prometheus Pushgateway artifact ID for Spring Boot 3.5 compatibility.
- org.openrewrite.java.spring.security7.SecurityConfigurerRemoveThrowsException: Remove throws exception in
SecurityConfigurermethodsinitandconfigure. - org.openrewrite.java.testing.assertj.SimplifyStreamMapToExtracting: Simplifies AssertJ assertions that use
stream().map()to extract values from a collection by using the dedicatedextracting()method instead. This makes the assertion more readable and leverages AssertJ's built-in extraction capabilities. - org.openrewrite.java.testing.mockito.AddMockitoExtensionIfAnnotationsUsed: Adds
@ExtendWith(MockitoExtension.class)to tests using@Mockor@Captor. - org.openrewrite.javascript.cleanup.use-object-property-shorthand: Simplifies object properties where the property name and value/variable name are the same (e.g.,
{ x: x }becomes{ x }). Applies to both destructuring patterns and object literals. - org.openrewrite.javascript.dependencies.find-dependency: Finds dependencies in a project's
package.json. Can find both direct dependencies and dependencies that transitively include the target package. This recipe is commonly used as a precondition for other recipes. - org.openrewrite.javascript.dependencies.upgrade-dependency-version: Upgrades the version of a dependency in
package.jsonand updates the lock file by running the package manager. - org.openrewrite.node.migrate.buffer.replace-slow-buffer: Replace deprecated
new SlowBuffer(size)calls withBuffer.allocUnsafeSlow(size). SlowBuffer was used to create un-pooled Buffer instances, but has been removed in favor of the explicit Buffer.allocUnsafeSlow() method. - org.openrewrite.node.migrate.crypto.replace-crypto-fips: Replace deprecated
crypto.fipsproperty access withcrypto.getFips()for reads andcrypto.setFips(value)for writes. - org.openrewrite.node.migrate.fs.replace-dirent-path: Replaces deprecated
dirent.pathproperty access withdirent.parentPathonfs.Direntinstances to address DEP0178 deprecation. - org.openrewrite.node.migrate.fs.replace-fs-access-constants: Replace deprecated file access constants (
fs.F_OK,fs.R_OK,fs.W_OK,fs.X_OK) with their equivalents fromfs.constants. These constants were removed in Node.js v24+ and should be accessed through the constants namespace. - org.openrewrite.node.migrate.fs.replace-fs-truncate-fd: Replace deprecated
fs.truncate(fd, ...)andfs.truncateSync(fd, ...)calls withfs.ftruncate(fd, ...)andfs.ftruncateSync(fd, ...)when the first argument is a file descriptor (number). - org.openrewrite.node.migrate.fs.replace-stats-constructor: Replace deprecated
new fs.Stats()constructor calls with an object literal containing Stats properties initialized to undefined. - org.openrewrite.node.migrate.http.replace-outgoing-message-headers: Replace deprecated
OutgoingMessage.prototype._headerswithgetHeaders(),setHeader(),removeHeader()andOutgoingMessage.prototype._headerNameswithgetHeaderNames()to address DEP0066 deprecation. - org.openrewrite.node.migrate.process.coerce-process-exit-code: Wraps non-integer values passed to
process.exit()or assigned toprocess.exitCodewithMath.trunc()to avoid the DEP0164 deprecation warning about implicit coercion to integer. - org.openrewrite.node.migrate.upgrade-node-22: Migrate deprecated APIs for Node.js 22 compatibility. Addresses Node 22 runtime deprecations and deprecations from earlier versions.
- org.openrewrite.node.migrate.upgrade-node-24: Migrate deprecated APIs for Node.js 24 compatibility. Includes all migrations from Node.js 22, plus Node 23 and Node 24 deprecations.
- org.openrewrite.node.migrate.util.remove-promisify-on-promise: Removes
util.promisify()calls on functions that already return a Promise. Since Node.js v17.0.0, calling promisify on a function that returns a Promise emits a runtime deprecation warning (DEP0174). - org.openrewrite.node.migrate.util.replace-is-webassembly-compiled-module: Replace
util.types.isWebAssemblyCompiledModule(value)withvalue instanceof WebAssembly.Module. - org.openrewrite.node.migrate.zlib.replace-bytes-read: Replace deprecated
bytesReadproperty on zlib streams withbytesWritten. - tech.picnic.errorprone.refasterrules.BigDecimalRulesRecipes$BigDecimalTwoRecipe: Prefer using the constant
BigDecimal#TWOwhen possible. - tech.picnic.errorprone.refasterrules.BugCheckerRulesRecipes$ASTHelpersGetStartPositionRecipe: Prefer
ASTHelpers#getStartPosition(Tree)over alternatives that require casting. - tech.picnic.errorprone.refasterrules.CollectionRulesRecipes$CollectionIteratorNextRecipe: Prefer
collection.iterator().next()over more contrived alternatives. - tech.picnic.errorprone.refasterrules.CollectionRulesRecipes$ListAddFirstRecipe: Prefer
List#addFirst(Object)over less idiomatic alternatives. - tech.picnic.errorprone.refasterrules.CollectionRulesRecipes$ListAddRecipe: Prefer
List#add(Object)over less idiomatic alternatives. - tech.picnic.errorprone.refasterrules.CollectionRulesRecipes$ListRemoveFirstRecipe: Prefer
List#removeFirst()} over less idiomatic alternatives. - tech.picnic.errorprone.refasterrules.CollectionRulesRecipes$ListRemoveLastRecipe: Prefer
List#removeLast()} over less idiomatic alternatives. - tech.picnic.errorprone.refasterrules.CollectionRulesRecipes$SequencedCollectionGetFirstRecipe: Prefer
SequencedCollection#getFirst()over less idiomatic alternatives. - tech.picnic.errorprone.refasterrules.CollectionRulesRecipes$SequencedCollectionGetLastRecipe: Prefer
SequencedCollection#getLast()over less idiomatic alternatives. - tech.picnic.errorprone.refasterrules.CollectionRulesRecipes$SortedSetFirstRecipe: Prefer
SortedSet#first()over more verbose alternatives. - tech.picnic.errorprone.refasterrules.CollectionRulesRecipes$SortedSetLastRecipe: Prefer
SortedSet#last()over more verbose alternatives. - tech.picnic.errorprone.refasterrules.Jackson2RulesRecipes: Refaster rules related to Jackson 2.x expressions and statements. Source.
- tech.picnic.errorprone.refasterrules.Jackson2RulesRecipes$JsonNodeOptionalIntRecipe: Prefer
JsonNode#optional(int)over more contrived alternatives. - tech.picnic.errorprone.refasterrules.Jackson2RulesRecipes$JsonNodeOptionalStringRecipe: Prefer
JsonNode#optional(String)over more contrived alternatives. - tech.picnic.errorprone.refasterrules.Jackson2RulesRecipes$ObjectMapperConvertValueWithClassRecipe: Prefer
ObjectMapper#convertValue(Object, Class)over more contrived and less efficient alternatives. - tech.picnic.errorprone.refasterrules.Jackson2RulesRecipes$ObjectMapperConvertValueWithJavaTypeRecipe: Prefer
ObjectMapper#convertValue(Object, JavaType)over more contrived and less efficient alternatives. - tech.picnic.errorprone.refasterrules.Jackson2RulesRecipes$ObjectMapperConvertValueWithTypeReferenceRecipe: Prefer
ObjectMapper#convertValue(Object, TypeReference)over more contrived and less efficient alternatives. - tech.picnic.errorprone.refasterrules.Jackson2RulesRecipes$ObjectMapperValueToTreeRecipe: Prefer
ObjectMapper#valueToTree(Object)over more contrived and less efficient alternatives. - tech.picnic.errorprone.refasterrules.Jackson3RulesRecipes: Refaster rules related to Jackson 3.x expressions and statements. Source.
- tech.picnic.errorprone.refasterrules.Jackson3RulesRecipes$JsonNodeOptionalIntRecipe: Prefer
JsonNode#optional(int)over more contrived alternatives. - tech.picnic.errorprone.refasterrules.Jackson3RulesRecipes$JsonNodeOptionalStringRecipe: Prefer
JsonNode#optional(String)over more contrived alternatives. - tech.picnic.errorprone.refasterrules.Jackson3RulesRecipes$ObjectMapperConvertValueWithClassRecipe: Prefer
ObjectMapper#convertValue(Object, Class)over more contrived and less efficient alternatives. - tech.picnic.errorprone.refasterrules.Jackson3RulesRecipes$ObjectMapperConvertValueWithJavaTypeRecipe: Prefer
ObjectMapper#convertValue(Object, JavaType)over more contrived and less efficient alternatives. - tech.picnic.errorprone.refasterrules.Jackson3RulesRecipes$ObjectMapperConvertValueWithTypeReferenceRecipe: Prefer
ObjectMapper#convertValue(Object, TypeReference)over more contrived and less efficient alternatives. - tech.picnic.errorprone.refasterrules.Jackson3RulesRecipes$ObjectMapperValueToTreeRecipe: Prefer
ObjectMapper#valueToTree(Object)over more contrived and less efficient alternatives. - tech.picnic.errorprone.refasterrules.ReactorRulesRecipes$FluxDistinctSortRecipe: Apply
Flux#distinct()beforeFlux#sort()to reduce the number of elements to sort. - tech.picnic.errorprone.refasterrules.ReactorRulesRecipes$FluxDistinctSortWithComparatorRecipe: Apply
Flux#distinct()beforeFlux#sort(Comparator)to reduce the number of elements to sort. - tech.picnic.errorprone.refasterrules.SpringTestRulesRecipes: Refaster rules related to Spring Test expressions and statements. Source.
- tech.picnic.errorprone.refasterrules.SpringTestRulesRecipes$BodyContentSpecJsonLenientRecipe: Prefer
BodyContentSpec#json(String, JsonCompareMode)over alternatives that implicitly perform aJsonCompareMode#LENIENT lenientcomparison or are deprecated. - tech.picnic.errorprone.refasterrules.SpringTestRulesRecipes$BodyContentSpecJsonStrictRecipe: Prefer
BodyContentSpec#json(String, JsonCompareMode)over the deprecated alternative. - tech.picnic.errorprone.refasterrules.StreamRulesRecipes$StreamDistinctSortedRecipe: Apply
Stream#distinct()beforeStream#sorted()to reduce the number of elements to sort. - tech.picnic.errorprone.refasterrules.StreamRulesRecipes$StreamDistinctSortedWithComparatorRecipe: Apply
Stream#distinct()beforeStream#sorted(Comparator)to reduce the number of elements to sort. - tech.picnic.errorprone.refasterrules.StringRulesRecipes$StringIndexOfCharBetweenIndicesRecipe: Prefer
String#indexOf(int, int, int)over less efficient alternatives. - tech.picnic.errorprone.refasterrules.StringRulesRecipes$StringIndexOfCharFromIndexRecipe: Prefer
String#indexOf(int, int)over less efficient alternatives. - tech.picnic.errorprone.refasterrules.StringRulesRecipes$StringIndexOfStringBetweenIndicesRecipe: Prefer
String#indexOf(String, int)over less efficient alternatives. - tech.picnic.errorprone.refasterrules.StringRulesRecipes$StringIndexOfStringFromIndexRecipe: Prefer
String#indexOf(String, int)over less efficient alternatives.
Removed Recipes
- tech.picnic.errorprone.refasterrules.JacksonRulesRecipes: Refaster rules related to Jackson expressions and statements. Source.
- tech.picnic.errorprone.refasterrules.JacksonRulesRecipes$JsonNodeOptionalIntRecipe: Prefer
JsonNode#optional(int)over more contrived alternatives. - tech.picnic.errorprone.refasterrules.JacksonRulesRecipes$JsonNodeOptionalStringRecipe: Prefer
JsonNode#optional(String)over more contrived alternatives. - tech.picnic.errorprone.refasterrules.ReactorRulesRecipes$FluxOnErrorCompleteRecipe: Prefer
Flux#onErrorComplete()over more contrived alternatives. - tech.picnic.errorprone.refasterrules.StringRulesRecipes$StringIndexOfCharRecipe: Prefer
String#indexOf(int, int)over less efficient alternatives. - tech.picnic.errorprone.refasterrules.StringRulesRecipes$StringIndexOfStringRecipe: Prefer
String#indexOf(String, int)over less efficient alternatives.
Changed Recipes
- org.openrewrite.gradle.search.DoesNotIncludeDependency was changed:
- Old Options:
artifactId: { type: String, required: true }configuration: { type: String, required: false }groupId: { type: String, required: true }
- New Options:
artifactId: { type: String, required: true }configuration: { type: String, required: false }groupId: { type: String, required: true }version: { type: String, required: false }
- Old Options:
- org.openrewrite.java.format.AutoFormat was changed:
- Old Options:
style: { type: String, required: false }
- New Options:
removeCustomLineBreaks: { type: Boolean, required: false }style: { type: String, required: false }
- Old Options:
- org.openrewrite.java.dependencies.search.DoesNotIncludeDependency was changed:
- Old Options:
artifactId: { type: String, required: true }configuration: { type: String, required: false }groupId: { type: String, required: true }onlyDirect: { type: Boolean, required: false }scope: { type: String, required: false }
- New Options:
artifactId: { type: String, required: true }configuration: { type: String, required: false }groupId: { type: String, required: true }onlyDirect: { type: Boolean, required: false }scope: { type: String, required: false }version: { type: String, required: false }
- Old Options:
- org.openrewrite.maven.search.DoesNotIncludeDependency was changed:
- Old Options:
artifactId: { type: String, required: true }groupId: { type: String, required: true }onlyDirect: { type: Boolean, required: false }scope: { type: String, required: false }
- New Options:
artifactId: { type: String, required: true }groupId: { type: String, required: true }onlyDirect: { type: Boolean, required: false }scope: { type: String, required: false }version: { type: String, required: false }
- Old Options: