8.74.1 release (2026-02-25)
Total recipe count: 4795
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.57.6 - Staging CLI version:
v3.57.11
New Artifacts
- rewrite-cobol
New Recipes
- io.moderne.devcenter.FindOrganizationStatistics: Counts lines of code per repository for organization-level statistics.
- io.quarkus.updates.camel.camel418.CamelQuarkusMigrationRecipe: Migrates
camel 4.17Quarkus application tocamel 4.18. - org.apache.camel.upgrade.camel418.CamelMigrationRecipe: Migrates
camel 4.17application tocamel 4.18. - org.openrewrite.apache.poi.UpgradeApachePoi_4_1: Migrates to the last Apache POI 4.x release. This recipe modifies build files and makes changes to deprecated/preferred APIs that have changed between versions.
- org.openrewrite.apache.poi.UpgradeApachePoi_5: Migrates to the latest Apache POI 5.x release. This recipe modifies build files to account for artifact renames and upgrades dependency versions. It also chains the 4.1 recipe to handle all prior API migrations.
- org.openrewrite.cobol.cleanup.RemoveWithDebuggingMode: Remove debugging mode from SOURCE-COMPUTER paragraphs.
- org.openrewrite.cobol.search.FindCopybook: Find all copy statements with the copybook name.
- org.openrewrite.cobol.search.FindIndicators: Find matching indicators. Currently, this recipe will not mark indicators on copybook code.
- org.openrewrite.cobol.search.FindReference: Finds an identifier by an exact match or regex pattern in COBOL, copybooks, and/or JCL.
- org.openrewrite.cobol.search.FindRelationships: Build a list of relationships for diagramming and exploration.
- org.openrewrite.cobol.search.FindWord: Search for COBOL words based on a search term.
- org.openrewrite.gitlab.search.FindDeprecatedExcept: Find usages of the deprecated
exceptkeyword in.gitlab-ci.yml. Theexceptkeyword is deprecated in favor ofrules. - org.openrewrite.gitlab.search.FindDeprecatedOnly: Find usages of the deprecated
onlykeyword in.gitlab-ci.yml. Theonlykeyword is deprecated in favor ofrules. - org.openrewrite.gitlab.search.FindDeprecatedSyntax: Find usages of deprecated
onlyandexceptkeywords in.gitlab-ci.yml. These keywords are deprecated in favor ofrules. - org.openrewrite.java.dropwizard.test.DropwizardRulesJUnit4ToSpringBoot: Remove Dropwizard JUnit4 rules and add Spring Boot test annotations and extensions.
- org.openrewrite.java.dropwizard.test.MethodLambdaExtractor: Extracts the body of lambda expressions and inlines them into the surrounding code.
- org.openrewrite.java.dropwizard.test.MockitoVariableToMockBean: Converts static final Mockito mock fields to Spring Boot @MockBean fields.
- org.openrewrite.java.dropwizard.test.TransformDropwizardRuleInvocations: Transforms Dropwizard AppRule testing calls to their equivalent RestTemplate calls.
- org.openrewrite.java.jackson.IOExceptionToJacksonException: In Jackson 3,
ObjectMapperand related classes no longer throwIOException. This recipe replacescatch (IOException e)withcatch (JacksonException e)when the try block contains Jackson API calls. When the try block also contains non-Jackson code that throwsIOException, the catch is changed to a multi-catchcatch (JacksonException | IOException e). - org.openrewrite.java.jackson.ReplaceJsonIgnoreWithJsonSetter: In Jackson 3,
@JsonIgnoreon fields initialized with empty collections causes the field value to becomenullinstead of maintaining the empty collection. This recipe replaces@JsonIgnorewith@JsonSetter(nulls = Nulls.AS_EMPTY)onMapandCollectionfields that have an empty collection initializer. - org.openrewrite.java.joda.time.JodaAbstractInstantToJavaTime: Migrates Joda-Time
AbstractInstantmethod calls to their Java time equivalents. - org.openrewrite.java.joda.time.JodaDateMidnightToJavaTime: Migrates
org.joda.time.DateMidnightconstructor andnow()calls tojava.time.LocalDate.now().atStartOfDay(...). - org.openrewrite.java.joda.time.JodaDateTimeToJavaTime: Migrates Joda-Time
DateTimeconstructors and instance methods to the equivalentjava.time.ZonedDateTimecalls. - org.openrewrite.java.joda.time.JodaDateTimeZoneToJavaTime: Migrates
org.joda.time.DateTimeZonemethod calls tojava.time.ZoneOffsetandjava.time.ZoneId. - org.openrewrite.java.joda.time.JodaDurationToJavaTime: Migrates
org.joda.time.Durationconstructor and method calls tojava.time.Duration. - org.openrewrite.java.joda.time.JodaFormatterToJavaTime: Migrates Joda-Time
DateTimeFormatterandDateTimeFormatmethod calls to their Java time equivalents. - org.openrewrite.java.joda.time.JodaInstantToJavaTime: Migrates
org.joda.time.Instantconstructor calls tojava.time.Instant.now(). - org.openrewrite.java.joda.time.JodaIntervalToJavaTime: Migrates
org.joda.time.Intervalconstructors and methods to their Java time equivalents using ThreeTen-Extra. - org.openrewrite.java.joda.time.JodaLocalDateToJavaTime: Migrates Joda-Time
LocalDateconstructors and instance methods to the equivalentjava.time.LocalDatecalls. - org.openrewrite.java.joda.time.JodaLocalTimeToJavaTime: Migrates Joda-Time
LocalTimeconstructors and instance methods to the equivalentjava.time.LocalTimecalls. - org.openrewrite.java.joda.time.JodaTimePeriodToJavaTime: Migrates
org.joda.time.Days,Hours,Minutes, andSecondstojava.time.temporal.ChronoUnitandjava.time.Duration. - org.openrewrite.java.logging.slf4j.JulGetLoggerToLoggerFactory: Replace calls to
Logger.getLogger(Some.class.getName())andLogger.getLogger(Some.class.getCanonicalName())withLoggerFactory.getLogger(Some.class). - org.openrewrite.java.migrate.UpgradePluginsForJava25: Updates plugins and dependencies to versions compatible with Java 25.
- org.openrewrite.java.migrate.jakarta.RetainJaxbApiForJackson: When migrating from
javax.xml.bindtojakarta.xml.bind3.0+, thejavax.xml.bind:jaxb-apidependency is normally replaced. However, ifjackson-module-jaxb-annotationsis on the classpath (and still uses thejavax.xml.bindnamespace), this recipe ensuresjavax.xml.bind:jaxb-apiremains available as a runtime dependency to preventNoClassDefFoundError. - org.openrewrite.java.search.FindSymbols: Lists all symbols (classes, methods, fields, etc.) declared in the codebase. Results are emitted into a data table with symbol kind, name, parent type, signature, and visibility.
- org.openrewrite.java.spring.data.MigrateRepositoryRestConfigurerAdapter: Since 3.1, implement RepositoryRestConfigurer directly.
- org.openrewrite.java.spring.security5.ConvertSecurityMatchersToSecurityMatcher: Converts
HttpSecurity.requestMatchers().antMatchers(...)and similar patterns toHttpSecurity.securityMatcher(...). The no-argrequestMatchers()method returns aRequestMatcherConfigurerthat is not a configurer in the lambda DSL sense, so it should be replaced with thesecurityMatcher()method introduced in Spring Security 5.8. - org.openrewrite.java.spring.ws.MigrateAxiomToSaaj: Migrate from Apache Axiom SOAP message handling to SAAJ (SOAP with Attachments API for Java). Spring WS 4.0.x removed support for Apache Axiom because Axiom did not support Jakarta EE at the time. This recipe changes Axiom types to their SAAJ equivalents.
- org.openrewrite.java.spring.ws.UpgradeSpringWs_4_0: Migrate applications to Spring WS 4.0. This recipe handles the removal of Apache Axiom support in Spring WS 4.0.x by migrating Axiom-based SOAP message handling to SAAJ (SOAP with Attachments API for Java). Note that Spring WS 4.1+ restores Axiom support if upgrading to that version is preferred.
- org.openrewrite.java.springdoc.CleanupRemainingSpringfox: Removes unused private methods left behind after SpringFoxToSpringDoc migration. When Docket beans are removed, private helper methods (e.g.,
appInfo()) become dead code but are not cleaned up, causing compilation errors. - org.openrewrite.java.testing.hamcrest.HamcrestEveryItemToAssertJ: Migrate Hamcrest
everyItemto AssertJallSatisfyorhasOnlyElementsOfType. - org.openrewrite.java.testing.hamcrest.HamcrestHasItemMatcherToAssertJ: Migrate Hamcrest
hasItem(Matcher)to AssertJhasAtLeastOneElementOfTypeoranySatisfy. - org.openrewrite.java.testing.hamcrest.HamcrestHasPropertyToAssertJ: Migrate Hamcrest
hasPropertyto AssertJhasFieldOrPropertyandhasFieldOrPropertyWithValue. - org.openrewrite.quarkus.MigrateToQuarkus_v3_32_0: Quarkus update recipes to upgrade your application to 3.32.0.
- org.openrewrite.quarkus.spring.ConfigureNativeBuild: Adds configuration and dependencies required for Quarkus native image compilation with GraalVM. Includes native profile configuration and reflection hints where needed.
- org.openrewrite.quarkus.spring.CustomizeQuarkusPluginGoals: Allows customization of Quarkus Maven plugin goals. Adds or modifies the executions and goals for the quarkus-maven-plugin.
- org.openrewrite.quarkus.spring.CustomizeQuarkusVersion: Allows customization of the Quarkus BOM version used in the migration. By default uses 3.x (latest 3.x version), but can be configured to use a specific version.
- org.openrewrite.quarkus.spring.JpaEntityToPanacheEntity: Transforms standard JPA entities to extend Quarkus PanacheEntity, enabling the Active Record pattern with built-in CRUD operations.
- org.openrewrite.quarkus.spring.MigrateConfigurationProperties: Migrates Spring Boot @ConfigurationProperties to Quarkus @ConfigMapping. This recipe converts configuration property classes to the native Quarkus pattern.
- org.openrewrite.quarkus.spring.MigrateEntitiesToPanache: Converts standard JPA entities to Quarkus Panache entities using the Active Record pattern. Entities will extend PanacheEntity and gain built-in CRUD operations.
- org.openrewrite.quarkus.spring.MigrateRequestParameterEdgeCases: Migrates additional Spring Web parameter annotations not covered by the main WebToJaxRs recipe. Includes @MatrixVariable, @CookieValue, and other edge cases.
- org.openrewrite.quarkus.spring.MigrateSpringActuator: Migrates Spring Boot Actuator to Quarkus SmallRye Health and Metrics extensions. Converts HealthIndicator implementations to Quarkus HealthCheck pattern.
- org.openrewrite.quarkus.spring.MigrateSpringBootDevTools: Removes Spring Boot DevTools dependency and configuration. Quarkus has built-in dev mode with hot reload that replaces DevTools functionality.
- org.openrewrite.quarkus.spring.MigrateSpringCloudConfig: Migrates Spring Cloud Config Client to Quarkus configuration sources. Converts bootstrap.yml/properties patterns to Quarkus config.
- org.openrewrite.quarkus.spring.MigrateSpringCloudServiceDiscovery: Migrates Spring Cloud Service Discovery annotations and configurations to Quarkus equivalents. Converts @EnableDiscoveryClient and related patterns to Quarkus Stork service discovery.
- org.openrewrite.quarkus.spring.MigrateSpringDataMongodb: Migrates Spring Data MongoDB repositories to Quarkus MongoDB with Panache. Converts MongoRepository interfaces to PanacheMongoRepository pattern.
- org.openrewrite.quarkus.spring.MigrateSpringEvents: Migrates Spring's event mechanism to CDI events. Converts ApplicationEventPublisher to CDI Event and @EventListener to @Observes.
- org.openrewrite.quarkus.spring.MigrateSpringTesting: Migrates Spring Boot test annotations and utilities to Quarkus test equivalents. Converts @SpringBootTest to @QuarkusTest, @MockBean to @InjectMock, etc.
- org.openrewrite.quarkus.spring.MigrateSpringTransactional: Migrates Spring's @Transactional annotation to Jakarta's @Transactional. Maps propagation attributes to TxType and removes Spring-specific attributes.
- org.openrewrite.quarkus.spring.MigrateSpringValidation: Migrates Spring Boot validation to Quarkus Hibernate Validator. Adds the quarkus-hibernate-validator dependency and handles validation annotation imports.
- org.openrewrite.quarkus.spring.SpringEventListenerToObserves: Transforms Spring's @EventListener method annotation to CDI's @Observes parameter annotation pattern.
- org.openrewrite.quarkus.spring.SpringHealthIndicatorToQuarkus: Transforms Spring Boot Actuator
HealthIndicatorimplementations to MicroProfile HealthHealthCheckpattern used by Quarkus. - org.openrewrite.recipe.rewrite-static-analysis.InlineDeprecatedMethods: Automatically generated recipes to inline deprecated method calls that delegate to other methods in the same class.
- org.openrewrite.staticanalysis.RemoveTrailingWhitespace: Remove trailing whitespace from the end of each line. Trailing whitespace is simply useless and should not stay in code. It may generate noise when comparing different versions of the same file.
- org.openrewrite.staticanalysis.SimplifyForLoopBoundaryComparison: Replace
<=with<in for loop conditions by adjusting the comparison operands. For example,i <= n - 1simplifies toi < n, andi <= nbecomesi < n + 1.
Removed Recipes
- io.moderne.prethink.ComprehendCode: Use an LLM to generate descriptions for classes and methods in the codebase. Descriptions are cached based on source code checksums to avoid regenerating descriptions for unchanged code.
- io.moderne.prethink.ComprehendCodeTokenCounter: Estimate the input token counts that would be sent to an LLM for method comprehension, without actually calling a model. Uses OpenAI's tokenizer locally. Outputs to the MethodDescriptions table with blank descriptions.
- io.moderne.prethink.ExtractCodingConventions: Analyze the codebase to extract coding conventions including naming patterns, import organization, and documentation patterns.
- io.moderne.prethink.ExtractDependencyUsage: Analyze the codebase to extract dependency usage patterns by examining which types from external libraries are actually used in the code.
- io.moderne.prethink.ExtractErrorPatterns: Analyze the codebase to extract error handling patterns including exception types, handling strategies, and logging frameworks used.
- io.moderne.prethink.FindTestCoverage: Map test methods to their corresponding implementation methods. Uses JavaType.Method matching to determine coverage relationships. Optionally generates AI summaries of what each test is verifying when LLM provider is configured.
- io.moderne.prethink.UpdatePrethinkContextNoAiStarter: Generate Moderne Prethink context files with architectural discovery, test coverage mapping, dependency inventory, and FINOS CALM architecture diagrams. This recipe does not require an LLM provider - use UpdatePrethinkContextStarter if you want AI-generated code comprehension and test summaries.
- io.moderne.prethink.UpdatePrethinkContextStarter: Generate Moderne Prethink context files with AI-generated code comprehension, test coverage mapping, dependency inventory, and FINOS CALM architecture diagrams. Maps tests to implementation methods and optionally generates AI summaries of what each test verifies when LLM provider is configured.
- io.moderne.prethink.calm.FindCalmRelationships: Discover method call relationships within the repository for building interaction diagrams. Captures all method-to-method calls between in-repo classes. Entity IDs are resolved by GenerateCalmArchitecture when building CALM relationships.
- io.moderne.prethink.calm.FindDataAssets: Identify data assets including JPA entities, MongoDB documents, Java records, and DTOs in the application.
- io.moderne.prethink.calm.FindDatabaseConnections: Identify database connections and data access patterns in the application. Detects JPA entities, Spring Data repositories, JDBC templates, and MyBatis mappers.
- io.moderne.prethink.calm.FindDeploymentArtifacts: Identify deployment artifacts including Dockerfiles, docker-compose files, and Kubernetes manifests.
- io.moderne.prethink.calm.FindExternalServiceCalls: Identify outbound HTTP calls to external services. Detects RestTemplate, WebClient, Feign clients, Apache HttpClient, OkHttp, and JAX-RS clients.
- io.moderne.prethink.calm.FindMessagingConnections: Identify message queue producers and consumers. Detects Kafka, RabbitMQ, JMS, Spring Cloud Stream, and AWS SQS messaging.
- io.moderne.prethink.calm.FindProjectMetadata: Extract project metadata (artifact ID, group ID, name, description) from Maven pom.xml files.
- io.moderne.prethink.calm.FindSecurityConfiguration: Identify security configurations including Spring Security, OAuth2, and CORS settings.
- io.moderne.prethink.calm.FindServerConfiguration: Extract server configuration (port, SSL, context path) from application.properties and application.yml files.
- io.moderne.prethink.calm.FindServiceComponents: Identify service layer components (@Service, @Component, @Named) in the application. Excludes controllers and repositories which are handled by dedicated recipes.
- io.moderne.prethink.calm.FindServiceEndpoints: Identify all REST/HTTP service endpoints exposed by the application. Supports Spring MVC, JAX-RS, Micronaut, and Quarkus REST endpoints.
- io.moderne.prethink.calm.GenerateCalmMermaidDiagram: Generate a markdown file with a mermaid architecture diagram from discovered service endpoints, database connections, external service calls, and messaging connections.
- org.openrewrite.java.joda.time.JodaTimeRecipe: Prefer the Java standard library over third-party usage of Joda Time.
- org.openrewrite.java.logging.slf4j.JulGetLoggerToLoggerFactoryRecipes: Replace calls to
Logger.getLoggerwithLoggerFactory.getLogger. - org.openrewrite.java.logging.slf4j.JulGetLoggerToLoggerFactoryRecipes$GetLoggerClassCanonicalNameToLoggerFactoryRecipe: Replace calls to
java.util.logging.Logger.getLogger(Some.class.getCanonicalName())withorg.slf4j.LoggerFactory.getLogger(Some.class). - org.openrewrite.java.logging.slf4j.JulGetLoggerToLoggerFactoryRecipes$GetLoggerClassNameToLoggerFactoryRecipe: Replace calls to
java.util.logging.Logger.getLogger(Some.class.getName())withorg.slf4j.LoggerFactory.getLogger(Some.class). - org.openrewrite.staticanalysis.CustomImportOrder: Updates and reorders Java import declarations according to group and order settings compatible with the Checkstyle 'CustomImportOrder' check.
Changed Recipes
- org.openrewrite.java.format.AutoFormat was changed:
- Old Options:
removeCustomLineBreaks: { type: Boolean, required: false }style: { type: String, required: false }
- New Options:
style: { type: String, required: false }
- Old Options:
- org.openrewrite.javascript.change-import was changed:
- Old Options:
None
- New Options:
newAlias: { type: String, required: false }newMember: { type: String, required: false }newModule: { type: String, required: true }oldMember: { type: String, required: true }oldModule: { type: String, required: true }
- Old Options:
- org.openrewrite.javascript.dependencies.add-dependency was changed:
- Old Options:
None
- New Options:
packageName: { type: String, required: true }scope: { type: String, required: false }version: { type: String, required: true }
- Old Options:
- org.openrewrite.javascript.dependencies.find-dependency was changed:
- Old Options:
None
- New Options:
onlyDirect: { type: String, required: false }packageName: { type: String, required: true }version: { type: String, required: false }
- Old Options:
- org.openrewrite.javascript.dependencies.upgrade-dependency-version was changed:
- Old Options:
None
- New Options:
newVersion: { type: String, required: true }packageName: { type: String, required: true }
- Old Options:
- org.openrewrite.javascript.dependencies.upgrade-transitive-dependency-version was changed:
- Old Options:
None
- New Options:
dependencyPath: { type: String, required: false }newVersion: { type: String, required: true }packageName: { type: String, required: true }
- Old Options:
- org.openrewrite.javascript.migrate.es6.modernize-octal-escape-sequences was changed:
- Old Options:
None
- New Options:
useUnicodeEscapes: { type: String, required: false }
- Old Options:
- org.openrewrite.node.dependency-vulnerability-check was changed:
- Old Options:
None
- New Options:
addOverrideComments: { type: String, required: false }cvePattern: { type: String, required: false }fixDeclaredVersions: { type: String, required: false }maximumUpgradeDelta: { type: String, required: false }minimumSeverity: { type: String, required: false }preferDirectUpgrade: { type: String, required: false }scope: { type: String, required: false }transitiveFixStrategy: { type: String, required: false }
- Old Options:
- org.openrewrite.node.security.remove-redundant-overrides was changed:
- Old Options:
None
- New Options:
dryRun: { type: String, required: false }
- Old Options:
- org.openrewrite.maven.ChangeManagedDependencyGroupIdAndArtifactId was changed:
- Old Options:
newArtifactId: { type: String, required: true }newGroupId: { type: String, required: true }newVersion: { type: String, required: false }oldArtifactId: { type: String, required: true }oldGroupId: { type: String, required: true }versionPattern: { type: String, required: false }
- New Options:
newArtifactId: { type: String, required: false }newGroupId: { type: String, required: false }newVersion: { type: String, required: false }oldArtifactId: { type: String, required: true }oldGroupId: { type: String, required: true }versionPattern: { type: String, required: false }
- Old Options:
- org.openrewrite.prethink.UpdatePrethinkContext was changed:
- Old Options:
None
- New Options:
targetConfigFile: { type: String, required: false }
- Old Options: