Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions java/migration.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 Open Rewrite { #open-rewrite }

Whenever we introduce new versions or replacements of an API version we try 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 Open Rewrite Recipes for our API changes.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Grammar error: 'try make' should be 'try to make'. Also, consider rephrasing for clarity:

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.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Grammar error: 'where deprecate' should be 'where we deprecate'. The sentence also needs restructuring for clarity:

When possible, we introduce a new version in the same major version where we deprecate the old version.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Grammar error: 'try make' should be 'try to make'. Also, consider rephrasing for clarity:

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.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Grammar and clarity issues: Missing article 'the' before 'version where' and awkward phrasing. Consider revising:

When possible, we introduce a new version in the same major version where we deprecate the old version.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inconsistent terminology: 'Open Rewrite' should be consistently written as 'OpenRewrite' (one word) throughout the document, as shown in the link reference.


The application of these recipes is done via Maven similarly to calling Maven archetypes these recipes are called as a one-shot operation on a developers laptop. Take this call as an example:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The sentence structure is unclear and contains redundant information. Consider simplifying:

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:

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unclear sentence structure and missing punctuation. Consider revising for clarity:

The application of these recipes is done via Maven. Similarly to calling Maven archetypes, these recipes are called as a one-shot operation on a developer's laptop.

Note: 'developers' should be 'developer's' (possessive) and the sentence needs better structure.


```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 telling Open Rewrite how to come from code A to code B.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inconsistent terminology: 'Open Rewrite' should be consistently written as 'OpenRewrite' (one word) throughout the document to match the official product name.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The sentence structure is awkward. Consider rephrasing for better clarity:

A recipe is a rule that tells OpenRewrite how to transform code from version A to version B.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inconsistent terminology: 'Open Rewrite' should be 'OpenRewrite' to match the established naming convention used in the link reference.


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|
Loading