8.72.0 release (2026-01-21)
Total recipe count: 5184
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.53.2 - Staging CLI version:
v3.55.3
New Artifacts
- rewrite-tapestry
New Recipes
- io.moderne.devcenter.BuildToolCard: Track build tool versions across repositories.
- io.moderne.devcenter.BuildToolStarter: Track and automate upgrades for Gradle, Maven, and Java versions.
- io.moderne.devcenter.VulnerabilitiesDevCenter: Recipes to analyze and manage dependency vulnerabilities using Moderne DevCenter.
- io.moderne.java.jsf.MigrateToJsf_2_3: Complete migration to JSF 2.3, including associated technologies like RichFaces. Updates dependencies, transforms XHTML views, and migrates Java APIs.
- io.moderne.java.jsf.richfaces.ConvertExtendedDataTableHeightToStyle: Converts height and width attributes to inline style attribute for RichFaces
extendedDataTablecomponents. - io.moderne.java.jsf.richfaces.MigrateRichFaces_4_5: Complete RichFaces 3.x to 4.5 migration including tag renames, attribute migrations, and Java API updates.
- io.moderne.java.jsf.richfaces.update45.UpdateXHTMLTags: Migrate RichFaces tags in
xhtmlfiles to RichFaces 4. - io.moderne.java.spring.framework.MigrateDeprecatedBeanXmlProperties: Migrate Bean XML properties that were deprecated in Spring Framework 3.0.
- io.moderne.java.spring.framework.UpgradeSpringFramework_3_0: Migrate applications to the latest Spring Framework 3 release, pulling in additional proprietary Moderne recipes.
- io.moderne.java.spring.framework.UpgradeSpringFramework_5_3: Migrate applications to the latest Spring Framework 5.3 release, pulling in additional proprietary Moderne recipes.
- io.moderne.java.spring.security7.MigrateOAuth2AccessTokenResponseClient: A new set of
OAuth2AccessTokenResponseClientimplementations were introduced based onRestClient. This recipe replaces theRestOperations-based implementations which have been deprecated. TheRestClientimplementations are drop-in replacements for the deprecated implementations. - io.quarkus.updates.camel.camel410_4.CamelQuarkusMigrationRecipe: Migrates
camel 4.10quarkus application tocamel 4.10.4. - io.quarkus.updates.camel.camel416.CamelQuarkusMigrationRecipe: Migrates
camel 4.15Quarkus application tocamel 4.16. - io.quarkus.updates.camel.camel417.CamelQuarkusMigrationRecipe: Migrates
camel 4.16Quarkus application tocamel 4.17. - io.quarkus.updates.core.quarkus331.OidcClientFilterSplitPackagesFix:
- org.apache.camel.upgrade.camel417.CamelMigrationRecipe: Migrates
camel 4.16application tocamel 4.17. - org.apache.camel.upgrade.camel417.YamlTransform417Recipe: Apache Camel YML DSL migration from version 4.16 o 4.17.
- org.openrewrite.apache.commons.lang3.MigrateSystemUtilsDeprecations: Replaces deprecated constants in org.apache.commons.lang3.SystemUtils with their recommended replacements (e.g., File.separator, System.lineSeparator()).
- org.openrewrite.codemods.migrate.angular.v20: Upgrade to Angular v20 through
ApplyAngularCLI. - org.openrewrite.codemods.migrate.angular.v21: Upgrade to Angular v21 through
ApplyAngularCLI. - org.openrewrite.java.migrate.lang.var.UseVarForTypeCast: Apply local variable type inference
varto variables that are initialized by a cast expression where the cast type matches the declared variable type. This removes the redundant type duplication. For example,String s = (String) obj;becomesvar s = (String) obj;. - org.openrewrite.java.migrate.search.FindLocaleDateTimeFormats: Finds usages of locale-based date/time formatting APIs that may be affected by JDK 20+ CLDR locale data changes, where the space before AM/PM was changed from a regular space to a narrow no-break space (NNBSP).
- org.openrewrite.java.recipes.UseDisplayNameAndDescriptionFields: Recipe classes that return a simple string literal (or concatenation of string literals) from
getDisplayName()orgetDescription()can use Lombok annotated fields instead. - org.openrewrite.java.recipes.UseEstimatedEffortPerOccurrenceField: Recipe classes that return a simple expression from
getEstimatedEffortPerOccurrence()can use a Lombok annotated field instead. - org.openrewrite.java.recipes.UseStringUtilsRecipes: Replaces common string null and empty checks with
org.openrewrite.internal.StringUtilsutility methods. - org.openrewrite.java.recipes.UseStringUtilsRecipes$StringUtilsIsBlankRecipe: Replace
str == null || str.trim().isEmpty()withStringUtils.isBlank(str). - org.openrewrite.java.recipes.UseStringUtilsRecipes$StringUtilsIsNotBlankRecipe: Replace
str != null && !str.trim().isEmpty()with!StringUtils.isBlank(str). - org.openrewrite.java.recipes.UseStringUtilsRecipes$StringUtilsIsNotEmptyRecipe: Replace
str != null && !str.isEmpty()withStringUtils.isNotEmpty(str). - org.openrewrite.java.recipes.UseStringUtilsRecipes$StringUtilsIsNullOrEmptyRecipe: Replace
str == null || str.isEmpty()withStringUtils.isNullOrEmpty(str). - org.openrewrite.java.recipes.UseTagsField: Recipe classes that return a simple expression from
getTags()can use a Lombok annotated field instead. - org.openrewrite.java.spring.boot4.AddAutoConfigureTestRestTemplate: Adds
@AutoConfigureTestRestTemplateto test classes annotated with@SpringBootTestthat useTestRestTemplatesince this bean is no longer auto-configured as described in the Spring Boot 4 migration guide. - org.openrewrite.java.spring.kafka.UpgradeSpringKafka_2_8_ErrorHandlers: Migrate error handlers deprecated in Spring Kafka
2.8.xto their replacements. - org.openrewrite.java.spring.kafka.UpgradeSpringKafka_4_0: Migrate applications to the latest Spring Kafka 4.0 release.
- org.openrewrite.java.spring.opentelemetry.MigrateBraveToOpenTelemetry: Migrate Java code using Brave (Zipkin) tracing API to OpenTelemetry API. This recipe handles the migration of Brave Tracer, Span, and related classes to OpenTelemetry equivalents.
- org.openrewrite.java.spring.opentelemetry.MigrateDatadogToOpenTelemetry: Migrate from Datadog Java tracing annotations to OpenTelemetry annotations. Replace Datadog @Trace annotations with @WithSpan annotations.
- org.openrewrite.java.spring.opentelemetry.MigrateFromZipkinToOpenTelemetry: Migrate from Zipkin tracing to OpenTelemetry OTLP. This recipe replaces Zipkin dependencies with OpenTelemetry OTLP exporter and updates the related configuration properties.
- org.openrewrite.java.spring.opentelemetry.MigrateNewRelicToOpenTelemetry: Migrate from New Relic Java Agent annotations to OpenTelemetry annotations. Replace @Trace annotations with @WithSpan annotations.
- org.openrewrite.java.spring.opentelemetry.MigrateOpenTracingToOpenTelemetry: Migrate Java code using OpenTracing API to OpenTelemetry API. OpenTracing has been superseded by OpenTelemetry and is no longer actively maintained.
- org.openrewrite.java.spring.opentelemetry.MigrateSleuthToOpenTelemetry: Migrate from Spring Cloud Sleuth to OpenTelemetry. Spring Cloud Sleuth has been deprecated and is replaced by Micrometer Tracing with OpenTelemetry as a backend. This recipe removes Sleuth dependencies and adds OpenTelemetry instrumentation.
- org.openrewrite.java.spring.opentelemetry.MigrateToOpenTelemetry: Comprehensive migration to OpenTelemetry including dependencies, configuration properties, and Java code changes. This recipe handles migration from Spring Cloud Sleuth, Brave/Zipkin, and OpenTracing to OpenTelemetry.
- org.openrewrite.java.testing.junit5.AssumeNotNullToAssumptionsRecipes: Transform
Assumemethods without a direct counterpart to equivalent assumptions inAssumptions. - org.openrewrite.java.testing.junit5.AssumeNotNullToAssumptionsRecipes$SingleArgRecipe: Transform singlar
Assume.assumeNotNull(object)toAssumptions.assumeFalse(object == null). - org.openrewrite.java.testing.junit5.AssumeNotNullToAssumptionsRecipes$VarArgsRecipe: Transform
Assume.assumeNotNull(objects...)toStream.of(object1, object2).forEach(o -> Assumptions.assumeFalse(o == null)). - org.openrewrite.maven.ChangeExclusion: Modify Maven dependency exclusions, changing the group ID, artifact Id, or both. Useful when an excluded dependency has been renamed and references to it must be updated.
- org.openrewrite.openapi.swagger.MigrateApiParamAllowableValues: Migrate
@ApiParam(allowableValues)to@Parameter(schema = @Schema(allowableValues)). - org.openrewrite.quarkus.MigrateToQuarkus_v3_29_0: Quarkus update recipes to upgrade your application to 3.29.0.
- org.openrewrite.quarkus.MigrateToQuarkus_v3_30_0: Quarkus update recipes to upgrade your application to 3.30.0.
- org.openrewrite.quarkus.MigrateToQuarkus_v3_31_0: Quarkus update recipes to upgrade your application to 3.31.0.
- org.openrewrite.tapestry.ChangeTapestryPackages: Updates package imports from org.apache.tapestry to org.apache.tapestry5. Only renames packages that have direct equivalents in Tapestry 5.
- org.openrewrite.tapestry.ChangeTapestryTypes: Renames Tapestry 4 types that have direct equivalents in Tapestry 5. This handles types from different packages that were reorganized in T5.
- org.openrewrite.tapestry.ConvertAnnotatedMethodToField: Converts abstract getter methods annotated with
sourceAnnotationto private fields annotated withtargetAnnotation. - org.openrewrite.tapestry.ConvertBeanAnnotation: Converts Tapestry 4's
@Beanannotation to@Propertyfields. Bean initialization with 'initializer' attribute requires manual migration. - org.openrewrite.tapestry.ConvertListenerInterfaces: Converts Tapestry 4 page lifecycle listener interfaces (
PageBeginRenderListener,PageEndRenderListener, etc.) to Tapestry 5 lifecycle annotations (@SetupRender,@CleanupRender, etc.) and removes the interface implementations. - org.openrewrite.tapestry.MigrateTapestry4To5: Migrates Apache Tapestry 4 applications to Tapestry 5. This includes package renames, removing base class inheritance, converting listener interfaces to annotations, and updating dependencies.
- org.openrewrite.tapestry.RemoveIRequestCycleParameter: Removes
IRequestCycleparameters from methods. In Tapestry 5, event handler methods don't receive the request cycle as a parameter. - org.openrewrite.tapestry.RemoveObsoleteFormTypes: Removes field declarations and imports for Tapestry 4 form component types (
IPropertySelectionModel,StringPropertySelectionModel, etc.) that don't exist in Tapestry 5. Code using these types will need manual refactoring to use Tapestry 5'sSelectModelpattern. - org.openrewrite.tapestry.RemoveTapestryBaseClasses: Removes Tapestry 4 base class inheritance (
BasePage,BaseComponent,AbstractComponent) and converts the class to a POJO suitable for Tapestry 5. Abstract getter/setter methods are converted to fields with@Propertyannotation. - org.openrewrite.tapestry.ReplaceReverseComparator: Replaces tapestry-contrib's
ReverseComparatorwith the standard JavaCollections.reverseOrder()method. - org.openrewrite.tapestry.UpdateTapestryDependencies: Updates dependencies from Tapestry 4 to Tapestry 5.
- org.openrewrite.xml.ChangeTagAttributeKey: Change an attributes key on XML elements using an XPath expression.
- tech.picnic.errorprone.refasterrules.AllRefasterRules: Collection of all Refaster rules from Picnic's error-prone-contrib project.
- tech.picnic.errorprone.refasterrules.AssertJStreamRulesRecipes$AssertThatHasSizeRecipe: Recipe created for the following Refaster template.
- tech.picnic.errorprone.refasterrules.AssertJStreamRulesRecipes$AssertThatIsEmptyRecipe: Recipe created for the following Refaster template.
- tech.picnic.errorprone.refasterrules.AssertJStreamRulesRecipes$AssertThatIsNotEmptyRecipe: Recipe created for the following Refaster template.
- tech.picnic.errorprone.refasterrules.DequeRulesRecipes: Refaster rules related to expressions dealing with
Dequeinstances. Source. - tech.picnic.errorprone.refasterrules.DequeRulesRecipes$DequeAddFirstRecipe: Prefer
Deque#addLast(Object)over less clear alternatives. - tech.picnic.errorprone.refasterrules.DequeRulesRecipes$DequeDescendingIteratorRecipe: Prefer
Deque#descendingIterator()over more contrived alternatives. - tech.picnic.errorprone.refasterrules.DequeRulesRecipes$DequeGetFirstRecipe: Prefer
Deque#pollFirst()over less clear alternatives. - tech.picnic.errorprone.refasterrules.DequeRulesRecipes$DequeIteratorRecipe: Prefer
Deque#iterator()over more contrived alternatives. - tech.picnic.errorprone.refasterrules.DequeRulesRecipes$DequeOfferLastRecipe: Prefer
Deque#offerLast(Object)over less clear alternatives. - tech.picnic.errorprone.refasterrules.DequeRulesRecipes$DequePeekFirstRecipe: Prefer
Deque#peekFirst()over less clear alternatives. - tech.picnic.errorprone.refasterrules.DequeRulesRecipes$DequePollFirstRecipe: Prefer
Deque#pollFirst()over less clear alternatives. - tech.picnic.errorprone.refasterrules.DequeRulesRecipes$DequeRemoveFirstOccurrenceRecipe: Prefer
Deque#removeFirstOccurrence(Object)over less clear alternatives. - tech.picnic.errorprone.refasterrules.DequeRulesRecipes$DequeRemoveFirstRecipe: Prefer
Deque#removeFirst()over less clear alternatives. - tech.picnic.errorprone.refasterrules.ImmutableListMultimapRulesRecipes$ImmutableListMultimapBuilderPutRecipe: Prefer
ImmutableListMultimap.Builder#put(Object, Object)over more contrived or less efficient alternatives. - tech.picnic.errorprone.refasterrules.ImmutableMapRulesRecipes$ImmutableMapBuilderPutRecipe: Prefer
ImmutableMap.Builder#put(Object, Object)over more contrived alternatives. - tech.picnic.errorprone.refasterrules.ImmutableSetMultimapRulesRecipes$ImmutableSetMultimapBuilderPutRecipe: Prefer
ImmutableSetMultimap.Builder#put(Object, Object)over more contrived alternatives. - tech.picnic.errorprone.refasterrules.ImmutableTableRulesRecipes$ImmutableTableBuilderPutRecipe: Prefer
ImmutableTable.Builder#put(Object, Object, Object)over more contrived alternatives.
Removed Recipes
- tech.picnic.errorprone.refasterrules.AssertJRulesRecipes$AssertThatStreamHasSizeRecipe: Recipe created for the following Refaster template.
- tech.picnic.errorprone.refasterrules.AssertJRulesRecipes$AssertThatStreamIsEmptyRecipe: Recipe created for the following Refaster template.
- tech.picnic.errorprone.refasterrules.AssertJRulesRecipes$AssertThatStreamIsNotEmptyRecipe: Recipe created for the following Refaster template.
Changed Recipes
- org.openrewrite.java.dependencies.RemoveUnusedDependencies was changed:
- Old Options:
None
- New Options:
ignoredDependencies: { type: List, required: false }
- Old Options: