Skip to content

Conversation

@rjayasinghe
Copy link
Contributor

No description provided.

@rjayasinghe rjayasinghe requested a review from smahati as a code owner November 7, 2025 13:17
@renejeglinsky renejeglinsky added the AI Review AI generated suggestions label Nov 11, 2025
Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Here's a supportive code review enhanced by AI assistance. These suggestions offer potential improvements and insights to consider, though they're recommendations rather than requirements. You have full control over which feedback to implement based on your project's needs and goals. The AI analysis is here to complement your expertise and help streamline your development process.
Model: claude-sonnet-4-20250514 | Prompt Tokens: 1342 | Completion Tokens: 551

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Here's a supportive code review enhanced by AI assistance. These suggestions offer potential improvements and insights to consider, though they're recommendations rather than requirements. You have full control over which feedback to implement based on your project's needs and goals. The AI analysis is here to complement your expertise and help streamline your development process.
Model: claude-sonnet-4-20250514 | Prompt Tokens: 1341 | Completion Tokens: 565

@renejeglinsky renejeglinsky removed the AI Review AI generated suggestions label Nov 12, 2025
@rjayasinghe rjayasinghe requested review from agoerler and removed request for BraunMatthias January 20, 2026 07:03
@rjayasinghe
Copy link
Contributor Author

@agoerler could you please have a look?

@agoerler
Copy link
Contributor

@agoerler could you please have a look?

@beckermarc - could you please rather have a look?


## 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.
Copy link
Contributor

Choose a reason for hiding this comment

The 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.


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.

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.

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 :)

-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.
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
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.
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.


|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|
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
|[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|
|[com.sap.cds.services.migrations.MigrateStatements](/releases/aug25#typed-query-results)|Migrates CQN statements to comply with typed Query API changes in 4.3.0.|4.3.0|


<span id="afterenablingodata" />

## Automatic Java Migrations with OpenRewrite { #open-rewrite }
Copy link
Contributor

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants