-
Notifications
You must be signed in to change notification settings - Fork 138
add section for CAP Java OpenRewrite recipes #2194
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
44bc91a
ef6e7a9
25f55ec
ebe182d
1682b7b
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -1414,3 +1414,24 @@ After rebuilding and restarting your application, your Application Services are | |||||
| <!-- TODO: Move this to "Development" section --> | ||||||
|
|
||||||
| <span id="afterenablingodata" /> | ||||||
|
|
||||||
| ## Automatic Java Migrations with OpenRewrite { #open-rewrite } | ||||||
|
|
||||||
| Whenever we introduce new versions or replacements of an API version, we try to make the transition from the old version to the new version as smooth as possible. When possible we introduce a new version in the same major version as the version where deprecate the old version. This is the foundation for having automatic code migrations with [OpenRewrite](https://docs.openrewrite.org). At CAP Java, we aim to provide OpenRewrite Recipes for our API changes. | ||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think this sentence is rather confusing. I don't think that having the replacement of a deprecated/removed API in the previous version is not a prerequisite for a OpenRewrite Recipe. The Recipe can upgrade the version and make required changes for that new version in one shot. |
||||||
|
|
||||||
| The application of these recipes is done via Maven as a one-shot operation on a developer's laptop, similar to calling Maven archetypes. Take this call as an example: | ||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Now, that we have a contract with Moderne these recipes might even be executed centrally via Modernes Infrastructure. I don't think we need to highlight the developer's laptop here :) |
||||||
|
|
||||||
| ```bash | ||||||
| mvn org.openrewrite.maven:rewrite-maven-plugin:run \ | ||||||
| -Drewrite.recipeArtifactCoordinates=com.sap.cds:cds-services-recipes:4.3.0 \ | ||||||
| -Drewrite.activeRecipes=com.sap.cds.services.migrations.MigrateStatements \ | ||||||
| -DskipMavenParsing=true | ||||||
| ``` | ||||||
|
|
||||||
| Here, the *migration* `com.sap.cds.services.migrations.MigrateStatements` in the Maven artifact `com.sap.cds:cds-services-recipes:4.3.0` is called in the given project context. The *migration* is a container for one or more recipes. A recipe is a rule that tells OpenRewrite how to transform code from version A to version B. | ||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
|
|
||||||
| This is the list of migrations we have released for CAP Java: | ||||||
|
|
||||||
| |Name |Description|Available since| | ||||||
| |--------|-----------|---------------| | ||||||
| |[com.sap.cds.services.migrations.MigrateStatements](/releases/aug25#typed-query-results)|Prepares applications by migrating CQN statements for typed Query API changes in 4.3.0.|4.3.0| | ||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd move this overall section to the top of this section. The logic in this document goes from newest to oldest. I think at the end this topic is easily missed.