Skip to content

Commit 1a92ff2

Browse files
authored
OpenRewrite v8.69.0 (#447)
* OpenRewrite v8.69.0 * Update latest versions * Update references * Update existing recipes that now produce search results * Add all the latest versions
1 parent 1379092 commit 1a92ff2

File tree

5,118 files changed

+145422
-3878
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

5,118 files changed

+145422
-3878
lines changed

docs/changelog/8-69-0-Release.md

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
---
2+
description: What's changed in OpenRewrite version 8.69.0.
3+
---
4+
5+
# 8.69.0 release (2025-12-16)
6+
7+
_Total recipe count: 5116_
8+
9+
:::info
10+
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](https://github.com/openrewrite/rewrite/releases).
11+
:::
12+
13+
## Corresponding CLI version
14+
15+
* Stable CLI version `v3.53.2`
16+
* Staging CLI version: `v3.54.1`
17+
18+
## New Artifacts
19+
20+
* rewrite-ai
21+
22+
## New Recipes
23+
24+
* [io.moderne.ai.FindAgentsInUse](https://docs.openrewrite.org/recipes/ai/findagentsinuse): Scans codebases to identify usage of AI agents by looking at the agent configuration files present in the repository.
25+
* [io.moderne.ai.FindLibrariesInUse](https://docs.openrewrite.org/recipes/ai/findlibrariesinuse): Scans codebases to identify usage of AI services. Detects AI libraries across Java dependencies. Useful for auditing and understanding AI integration patterns.
26+
* [io.moderne.ai.FindModelsInUse](https://docs.openrewrite.org/recipes/ai/findmodelsinuse): Scans codebases to identify usage of Large Language Models (LLMs). Detects model references and configuration patterns across Java classes, properties files, YAML configs... Useful for identifying model usage.
27+
* [io.moderne.java.spring.boot.AddSpringBootApplication](https://docs.openrewrite.org/recipes/java/spring/boot/addspringbootapplication): Adds a `@SpringBootApplication` class containing a main method to bootify your Spring Framework application.
28+
* [io.moderne.java.spring.boot4.AddAutoConfigureMockMvc](https://docs.openrewrite.org/recipes/java/spring/boot4/addautoconfiguremockmvc): Adds `@AutoConfigureMockMvc` annotation to classes annotated with `@SpringBootTest` that use `MockMvc`.
29+
* [io.moderne.java.spring.boot4.AdoptJackson3](https://docs.openrewrite.org/recipes/java/spring/boot4/adoptjackson3): Adopt Jackson 3 which is supported by Spring Boot 4 and Jackson 2 support is deprecated.
30+
* [io.moderne.java.spring.boot4.MigrateToModularStarters](https://docs.openrewrite.org/recipes/java/spring/boot4/migratetomodularstarters): Removes monolithic starters and adds the necessary Spring Boot 4.0 starter dependencies based on package usage. Spring Boot 4.0 has a modular design requiring explicit starters for each feature. This recipe detects feature usage via package imports and adds the appropriate starters.
31+
Note: Higher-level starters (like data-jpa) include lower-level ones (like jdbc) transitively, so only the highest-level detected starter is added for each technology.
32+
* [io.moderne.java.spring.boot4.ModuleStarterRelocations](https://docs.openrewrite.org/recipes/java/spring/boot4/modulestarterrelocations): Relocate types and packages for Spring Boot 4.0 modular starters.
33+
* [io.moderne.java.spring.framework.JaxRsToSpringWeb](https://docs.openrewrite.org/recipes/java/spring/framework/jaxrstospringweb): Converts JAX-RS annotations such as `@Path`, `@GET`, `@POST`, etc., to their Spring Web equivalents like `@RestController`, `@RequestMapping`, `@GetMapping`, etc.
34+
* [io.moderne.java.spring.framework.MigrateDefaultResponseErrorHandler](https://docs.openrewrite.org/recipes/java/spring/framework/migratedefaultresponseerrorhandler): Migrates overridden `handleError(ClientHttpResponse response)` methods to the new signature `handleError(URI url, HttpMethod method, ClientHttpResponse response)` in classes extending `DefaultResponseErrorHandler`. The old single-argument method was removed in Spring Framework 7.0.
35+
* [io.moderne.java.spring.framework.ModularSpringFrameworkDependencies](https://docs.openrewrite.org/recipes/java/spring/framework/modularspringframeworkdependencies): Adds Spring Framework modular dependencies based on package usage, replacing legacy monolithic `org.springframework:spring`.
36+
* [io.quarkus.updates.core.quarkus331.AddExtensionsTrueToQuarkusMavenPlugin](https://docs.openrewrite.org/recipes/io/quarkus/updates/core/quarkus331/addextensionstruetoquarkusmavenplugin): Add <extensions>true</extensions> to the quarkus-maven-plugin configuration if not already present.
37+
* [io.quarkus.updates.core.quarkus331.CoreUpdate331](https://docs.openrewrite.org/recipes/io/quarkus/updates/core/quarkus331/coreupdate331):
38+
* [org.openrewrite.hibernate.MigrateToHypersistenceUtilsHibernate60](https://docs.openrewrite.org/recipes/hibernate/migratetohypersistenceutilshibernate60-community-edition): This recipe will migrate any existing dependencies on `com.vladmihalcea:hibernate-types` to `io.hypersistence:hypersistence-utils-hibernate-60`. This migration will include the adjustment from `com.vladmihalcea` to `io.hypersistence.utils` package name.
39+
* [org.openrewrite.hibernate.MigrateToHypersistenceUtilsHibernate62](https://docs.openrewrite.org/recipes/hibernate/migratetohypersistenceutilshibernate62-community-edition): This recipe will migrate any existing dependencies on `io.hypersistence:hypersistence-utils-hibernate-60` to `io.hypersistence:hypersistence-utils-hibernate-62`.
40+
* [org.openrewrite.hibernate.MigrateToHypersistenceUtilsHibernate63](https://docs.openrewrite.org/recipes/hibernate/migratetohypersistenceutilshibernate63-community-edition): This recipe will migrate any existing dependencies on `io.hypersistence:hypersistence-utils-hibernate-62` to `io.hypersistence:hypersistence-utils-hibernate-63`.
41+
* [org.openrewrite.java.jackson.Jackson3JsonNodeFieldIterators](https://docs.openrewrite.org/recipes/java/jackson/jackson3jsonnodefielditerators): `JSONNode` fields are using `Collections` instead of `Iterator` singe Jackson 3. To mimic Jackson 2s behavior an additional call to `Collection#iterator()`is needed.
42+
* [org.openrewrite.java.jackson.SimplifyJacksonExceptionCatch](https://docs.openrewrite.org/recipes/java/jackson/simplifyjacksonexceptioncatch): In Jackson 3, `JacksonException` and its subtypes extend `RuntimeException`. This recipe simplifies multi-catch clauses by removing Jackson exception types when `RuntimeException` is also caught, since catching both is redundant. For example, `catch (JacksonException | RuntimeException e)` becomes `catch (RuntimeException e)`.
43+
* [org.openrewrite.java.jackson.UpdateSerializationInclusionConfiguration](https://docs.openrewrite.org/recipes/java/jackson/updateserializationinclusionconfiguration): In Jackson 3, `mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL)` is no longer supported and should be replaced by `changeDefaultPropertyInclusion()` for both `valueInclusion` and `contentInclusion`.
44+
* [org.openrewrite.java.jackson.UseFormatAlignedObjectMappers](https://docs.openrewrite.org/recipes/java/jackson/useformatalignedobjectmappers): Replace wrapping `ObjectMapper` calls with their format aligned implementation.
45+
* [org.openrewrite.java.recipes.RemoveImportBeforeAddImport](https://docs.openrewrite.org/recipes/java/recipes/removeimportbeforeaddimport): Reorders `maybeAddImport` and `maybeRemoveImport` calls so that imports are removed before new imports are added. This ordering prevents potential conflicts when the import being added and the import being removed resolve to the same simple class name.
46+
* [org.openrewrite.java.spring.boot4.MigrateAutoconfigurePackages](https://docs.openrewrite.org/recipes/java/spring/boot4/migrateautoconfigurepackages): Migrate to new packages used for autoconfiguration by Spring Boot 4.0 modules.
47+
* [org.openrewrite.java.testing.cleanup.KotlinTestMethodsShouldReturnUnit](https://docs.openrewrite.org/recipes/java/testing/cleanup/kotlintestmethodsshouldreturnunit): Kotlin test methods annotated with `@Test`, `@ParameterizedTest`, `@RepeatedTest`, `@TestTemplate` should have `Unit` return type. Other return types can cause test discovery issues, and warnings as of JUnit 5.13+. This recipe changes the return type to `Unit` and removes `return` statements.
48+
* [org.openrewrite.javascript.change-import](https://docs.openrewrite.org/recipes/javascript/change-import): Changes an import from one module/member to another, updating all type attributions.
49+
* [org.openrewrite.javascript.cleanup.add-parse-int-radix](https://docs.openrewrite.org/recipes/javascript/cleanup/add-parse-int-radix): Adds the radix parameter (base 10) to `parseInt()` calls that are missing it, preventing potential parsing issues.
50+
* [org.openrewrite.javascript.cleanup.async-callback-in-sync-array-method](https://docs.openrewrite.org/recipes/javascript/cleanup/async-callback-in-sync-array-method): Detects async callbacks passed to array methods like .some(), .every(), .filter() which don't await promises. This is a common bug where Promise objects are always truthy.
51+
* [org.openrewrite.javascript.cleanup.order-imports](https://docs.openrewrite.org/recipes/javascript/cleanup/order-imports): Sort imports by category and module path. Categories: side-effect, namespace, default, named, type. Within each category, imports are sorted alphabetically by module path. Named specifiers within each import are also sorted alphabetically.
52+
* [org.openrewrite.javascript.cleanup.prefer-optional-chain](https://docs.openrewrite.org/recipes/javascript/cleanup/prefer-optional-chain): Converts ternary expressions like `foo ? foo.bar : undefined` to use optional chaining syntax `foo?.bar`.
53+
* [org.openrewrite.javascript.dependencies.add-dependency](https://docs.openrewrite.org/recipes/javascript/dependencies/add-dependency): Adds a new dependency to `package.json` and updates the lock file by running the package manager.
54+
* [org.openrewrite.javascript.dependencies.upgrade-transitive-dependency-version](https://docs.openrewrite.org/recipes/javascript/dependencies/upgrade-transitive-dependency-version): Upgrades the version of a transitive dependency by adding override/resolution entries to `package.json` and updates the lock file by running the package manager.
55+
* [org.openrewrite.javascript.format.auto-format](https://docs.openrewrite.org/recipes/javascript/format/auto-format): Format JavaScript and TypeScript code using formatting rules auto-detected from the project's existing code style.
56+
* [org.openrewrite.javascript.search.DependencyInsight](https://docs.openrewrite.org/recipes/javascript/search/dependencyinsight): Find direct and transitive npm dependencies matching a package name pattern. Results include dependencies that either directly match or transitively include a matching dependency.
57+
* [org.openrewrite.maven.cleanup.ExplicitDependencyVersion](https://docs.openrewrite.org/recipes/maven/cleanup/explicitdependencyversion): Add explicit dependency versions to POMs for reproducibility, as the `LATEST` and `RELEASE` version keywords are deprecated.
58+
* [org.openrewrite.micrometer.MicrometerBestPractices](https://docs.openrewrite.org/recipes/micrometer/micrometerbestpractices): This recipe will apply a set of best practice refactorings for Micrometer, like adopting `Observations` instead of `Timers`.
59+
* [org.openrewrite.node.dependency-vulnerability-check](https://docs.openrewrite.org/recipes/node/dependency-vulnerability-check): This software composition analysis (SCA) tool detects and upgrades dependencies with publicly disclosed vulnerabilities. This recipe both generates a report of vulnerable dependencies and upgrades to newer versions with fixes. This recipe by default only upgrades to the latest **patch** version. If a minor or major upgrade is required to reach the fixed version, this can be controlled using the `maximumUpgradeDelta` option. Vulnerability information comes from the GitHub Security Advisory Database.
60+
* [org.openrewrite.node.migrate.tls.replace-internal-modules](https://docs.openrewrite.org/recipes/node/migrate/tls/replace-internal-modules): Replace deprecated internal TLS module imports `require('node:_tls_common')` and `require('node:_tls_wrap')` with the public `node:tls` module.
61+
* [org.openrewrite.okhttp.UpgradeMockWebServer3](https://docs.openrewrite.org/recipes/okhttp/upgrademockwebserver3): Migrate from the legacy `mockwebserver` artifact to `mockwebserver3` core module without JUnit dependency.
62+
* [org.openrewrite.okhttp.UpgradeMockWebServer3JUnit4](https://docs.openrewrite.org/recipes/okhttp/upgrademockwebserver3junit4): Migrate from the legacy `mockwebserver` artifact to `mockwebserver3-junit4` with JUnit 4 integration.
63+
* [org.openrewrite.okhttp.UpgradeMockWebServer3JUnit5](https://docs.openrewrite.org/recipes/okhttp/upgrademockwebserver3junit5): Migrate from the legacy `mockwebserver` artifact to `mockwebserver3-junit5` with JUnit 5 integration.
64+
65+
## Removed Recipes
66+
67+
* **io.moderne.java.spring.boot3.AddSpringBootApplication**: Adds a `@SpringBootApplication` class containing a main method to bootify your Spring Framework application.
68+
* **org.openrewrite.OrderImports**: Sort top-level imports alphabetically within groups: no qualifier, asterisk, multiple, single.
69+
* **org.openrewrite.hibernate.MigrateToHypersistenceUtilsHibernate6.0**: This recipe will migrate any existing dependencies on `com.vladmihalcea:hibernate-types` to `io.hypersistence:hypersistence-utils-hibernate-60`. This migration will include the adjustment from `com.vladmihalcea` to `io.hypersistence.utils` package name.
70+
* **org.openrewrite.hibernate.MigrateToHypersistenceUtilsHibernate6.2**: This recipe will migrate any existing dependencies on `io.hypersistence:hypersistence-utils-hibernate-60` to `io.hypersistence:hypersistence-utils-hibernate-62`.
71+
* **org.openrewrite.hibernate.MigrateToHypersistenceUtilsHibernate6.3**: This recipe will migrate any existing dependencies on `io.hypersistence:hypersistence-utils-hibernate-62` to `io.hypersistence:hypersistence-utils-hibernate-63`.
72+
* **org.openrewrite.micrometer.UpgradeMicrometer**: This recipe will apply changes commonly needed when migrating Micrometer.
73+
74+
## Changed Recipes
75+
76+
* [org.openrewrite.java.migrate.util.UseEnumSetOf](https://docs.openrewrite.org/recipes/java/migrate/util/useenumsetof) was changed:
77+
* Old Options:
78+
* `None`
79+
* New Options:
80+
* `convertEmptySet: { type: Boolean, required: false }`

docs/recipes/ai/README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,14 @@ description: Ai OpenRewrite recipes.
99
* [Research](/recipes/ai/research)
1010
* [Timefold](/recipes/ai/timefold)
1111

12+
## Composite Recipes
13+
14+
_Recipes that include further recipes, often including the individual recipes below._
15+
16+
* [Find AI agents configuration files](./findagentsinuse.md)
17+
* [Find AI libraries in use](./findlibrariesinuse.md)
18+
* [Find AI models in use](./findmodelsinuse.md)
19+
1220
## Recipes
1321

1422
* [Find comments' language distribution](./findcommentslanguage.md)

docs/recipes/ai/findagentsinuse.md

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
---
2+
sidebar_label: "Find AI agents configuration files"
3+
---
4+
5+
import Tabs from '@theme/Tabs';
6+
import TabItem from '@theme/TabItem';
7+
8+
# Find AI agents configuration files
9+
10+
**io.moderne.ai.FindAgentsInUse**
11+
12+
_Scans codebases to identify usage of AI agents by looking at the agent configuration files present in the repository._
13+
14+
## Recipe source
15+
16+
This recipe is only available to users of [Moderne](https://docs.moderne.io/).
17+
18+
19+
This recipe is available under the [Moderne Proprietary License](https://docs.moderne.io/licensing/overview).
20+
21+
22+
## Usage
23+
24+
This recipe has no required configuration options. Users of Moderne can run it via the Moderne CLI:
25+
<Tabs groupId="projectType">
26+
27+
28+
<TabItem value="moderne-cli" label="Moderne CLI">
29+
30+
You will need to have configured the [Moderne CLI](https://docs.moderne.io/user-documentation/moderne-cli/getting-started/cli-intro) on your machine before you can run the following command.
31+
32+
```shell title="shell"
33+
mod run . --recipe FindAgentsInUse
34+
```
35+
36+
If the recipe is not available locally, then you can install it using:
37+
```shell
38+
mod config recipes jar install io.moderne.recipe:rewrite-ai:{{VERSION_IO_MODERNE_RECIPE_REWRITE_AI}}
39+
```
40+
</TabItem>
41+
</Tabs>
42+
43+
## See how this recipe works across multiple open-source repositories
44+
45+
import RecipeCallout from '@site/src/components/ModerneLink';
46+
47+
<RecipeCallout link="https://app.moderne.io/recipes/io.moderne.ai.FindAgentsInUse" />
48+
49+
The community edition of the Moderne platform enables you to easily run recipes across thousands of open-source repositories.
50+
51+
Please [contact Moderne](https://moderne.io/product) for more information about safely running the recipes on your own codebase in a private SaaS.
52+
## Data Tables
53+
54+
<Tabs groupId="data-tables">
55+
<TabItem value="org.openrewrite.table.SourcesFiles" label="SourcesFiles">
56+
57+
### Source files that matched
58+
**org.openrewrite.table.SourcesFiles**
59+
60+
_Source files that matched some criteria._
61+
62+
| Column Name | Description |
63+
| ----------- | ----------- |
64+
| Source path before the run | The source path of the file before the run. |
65+
| LST type | The LST model type that the file is parsed as. |
66+
| Character encoding | The detected character encoding of the file |
67+
68+
</TabItem>
69+
70+
<TabItem value="org.openrewrite.table.SourcesFileResults" label="SourcesFileResults">
71+
72+
### Source files that had results
73+
**org.openrewrite.table.SourcesFileResults**
74+
75+
_Source files that were modified by the recipe run._
76+
77+
| Column Name | Description |
78+
| ----------- | ----------- |
79+
| Source path before the run | The source path of the file before the run. `null` when a source file was created during the run. |
80+
| Source path after the run | A recipe may modify the source path. This is the path after the run. `null` when a source file was deleted during the run. |
81+
| Parent of the recipe that made changes | In a hierarchical recipe, the parent of the recipe that made a change. Empty if this is the root of a hierarchy or if the recipe is not hierarchical at all. |
82+
| Recipe that made changes | The specific recipe that made a change. |
83+
| Estimated time saving | An estimated effort that a developer to fix manually instead of using this recipe, in unit of seconds. |
84+
| Cycle | The recipe cycle in which the change was made. |
85+
86+
</TabItem>
87+
88+
<TabItem value="org.openrewrite.table.SearchResults" label="SearchResults">
89+
90+
### Source files that had search results
91+
**org.openrewrite.table.SearchResults**
92+
93+
_Search results that were found during the recipe run._
94+
95+
| Column Name | Description |
96+
| ----------- | ----------- |
97+
| Source path of search result before the run | The source path of the file with the search result markers present. |
98+
| Source path of search result after run the run | A recipe may modify the source path. This is the path after the run. `null` when a source file was deleted during the run. |
99+
| Result | The trimmed printed tree of the LST element that the marker is attached to. |
100+
| Description | The content of the description of the marker. |
101+
| Recipe that added the search marker | The specific recipe that added the Search marker. |
102+
103+
</TabItem>
104+
105+
<TabItem value="org.openrewrite.table.SourcesFileErrors" label="SourcesFileErrors">
106+
107+
### Source files that errored on a recipe
108+
**org.openrewrite.table.SourcesFileErrors**
109+
110+
_The details of all errors produced by a recipe run._
111+
112+
| Column Name | Description |
113+
| ----------- | ----------- |
114+
| Source path | The file that failed to parse. |
115+
| Recipe that made changes | The specific recipe that made a change. |
116+
| Stack trace | The stack trace of the failure. |
117+
118+
</TabItem>
119+
120+
<TabItem value="org.openrewrite.table.RecipeRunStats" label="RecipeRunStats">
121+
122+
### Recipe performance
123+
**org.openrewrite.table.RecipeRunStats**
124+
125+
_Statistics used in analyzing the performance of recipes._
126+
127+
| Column Name | Description |
128+
| ----------- | ----------- |
129+
| The recipe | The recipe whose stats are being measured both individually and cumulatively. |
130+
| Source file count | The number of source files the recipe ran over. |
131+
| Source file changed count | The number of source files which were changed in the recipe run. Includes files created, deleted, and edited. |
132+
| Cumulative scanning time (ns) | The total time spent across the scanning phase of this recipe. |
133+
| Max scanning time (ns) | The max time scanning any one source file. |
134+
| Cumulative edit time (ns) | The total time spent across the editing phase of this recipe. |
135+
| Max edit time (ns) | The max time editing any one source file. |
136+
137+
</TabItem>
138+
139+
</Tabs>

0 commit comments

Comments
 (0)