-
Notifications
You must be signed in to change notification settings - Fork 74
SRU2025 #162
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?
Conversation
Warning Rate limit exceeded@zubri has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 0 minutes and 10 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. 📒 Files selected for processing (3)
📝 WalkthroughWalkthroughThis update removes deprecated XML serialization and file parsing methods from several ISO 20022 core classes, eliminates the deprecated Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant BusinessAppHdr as BusinessAppHdrV0[1-4]/LegacyAppHdr
participant AppHdr
participant MxWriteImpl
User->>BusinessAppHdr: xml(MxWriteParams)
BusinessAppHdr->>AppHdr: xml(MxWriteParams)
AppHdr-->>BusinessAppHdr: XML String
BusinessAppHdr-->>User: XML String
User->>MxWriteImpl: write(AbstractMX, MxWriteParams)
MxWriteImpl-->>User: XML String
%% Deprecated methods removed:
%% User->>BusinessAppHdr: xml(String prefix, boolean includeXMLDeclaration)
%% User->>BusinessAppHdr: xml(String prefix, boolean includeXMLDeclaration, EscapeHandler)
Possibly related PRs
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
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.
Actionable comments posted: 3
📜 Review details
Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro
📒 Files selected for processing (17)
CHANGELOG.md
(1 hunks)build.gradle
(6 hunks)gradle/wrapper/gradle-wrapper.properties
(1 hunks)iso20022-core/src/main/java/com/prowidesoftware/swift/model/MxBusinessProcess.java
(0 hunks)iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/AbstractMX.java
(2 hunks)iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/AppHdr.java
(1 hunks)iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/AppHdrParser.java
(1 hunks)iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/BusinessAppHdrV01.java
(0 hunks)iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/BusinessAppHdrV02.java
(0 hunks)iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/BusinessAppHdrV03.java
(0 hunks)iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/BusinessAppHdrV04.java
(0 hunks)iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/LegacyAppHdr.java
(0 hunks)iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/MxParseUtils.java
(3 hunks)iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/MxWrite.java
(0 hunks)iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/MxWriteConfiguration.java
(1 hunks)iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/MxWriteImpl.java
(1 hunks)iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/NamespaceReader.java
(2 hunks)
💤 Files with no reviewable changes (7)
- iso20022-core/src/main/java/com/prowidesoftware/swift/model/MxBusinessProcess.java
- iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/BusinessAppHdrV03.java
- iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/MxWrite.java
- iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/BusinessAppHdrV04.java
- iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/LegacyAppHdr.java
- iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/BusinessAppHdrV02.java
- iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/BusinessAppHdrV01.java
🧰 Additional context used
🧬 Code Graph Analysis (1)
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/AppHdrParser.java (1)
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/MxParseUtils.java (1)
MxParseUtils
(56-733)
🪛 markdownlint-cli2 (0.17.2)
CHANGELOG.md
3-3: Heading levels should only increment by one level at a time
Expected: h2; Actual: h4
(MD001, heading-increment)
3-3: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
4-4: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
4-4: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
5-5: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
5-5: Bare URL used
null
(MD034, no-bare-urls)
6-6: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
7-7: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
⏰ Context from checks skipped due to timeout of 90000ms (2)
- GitHub Check: Analyze (java-kotlin)
- GitHub Check: Analyze (actions)
🔇 Additional comments (23)
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/MxWriteImpl.java (1)
33-38
: Clean removal of deprecated interface implementation.The class no longer implements the
MxWrite
interface, which has been removed as part of the deprecation cleanup, while maintaining all functional aspects. This change successfully eliminates a layer of indirection and associated deprecation warnings.iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/AppHdr.java (1)
122-122
: Appropriate interface enhancement requiring explicit implementation.The
xml(MxWriteParams params)
method is now declared abstract, requiring implementing classes to provide their own implementation. This change enforces the use of the newer parameterized approach for XML serialization, while the no-argsxml()
method maintains backward compatibility.iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/AppHdrParser.java (1)
61-61
: Good replacement of deprecated method with recommended alternative.The code correctly replaces the deprecated
NamespaceReader.elementExists()
method with the recommendedMxParseUtils.elementExists()
method, maintaining the same functionality while aligning with the library's deprecation management strategy.gradle/wrapper/gradle-wrapper.properties (1)
3-3
: Appropriate Gradle wrapper updates.The changes include:
- Upgrading Gradle from 8.12 to 8.14, which brings the latest improvements and bug fixes
- Adding
validateDistributionUrl=true
for enhanced security by validating the distribution URLThese are good practice updates that improve build system reliability and security.
Also applies to: 5-5
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/NamespaceReader.java (1)
117-121
: LGTM: Appropriate deprecation phase advancementThe postponement of deprecation from phase2 (SRU2025) to phase3 (SRU2026) is properly implemented with both the annotation update and runtime deprecation warning.
build.gradle (5)
7-10
: LGTM: Updated plugin versionsThe plugin versions have been updated to more recent releases, which is good practice for security and feature improvements.
25-31
: LGTM: Centralized dependency versionsGood practice to extract dependency versions into variables for consistent management across the build file.
41-41
: Review hardcoded version overrideLine 41 sets a hardcoded version that overrides the version from scmVersion. Ensure this is intentional and only meant for local development.
This explicit version override will take precedence over the SCM-derived version. Is this intentional or should this be conditionally applied only for development?
108-114
: LGTM: Updated dependency referencesDependencies now reference the centralized version variables, improving maintainability.
161-162
: LGTM: Migration to Jakarta EE APIsProperly updating from javax.persistence to jakarta.persistence, supporting the Jakarta EE migration path.
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/MxParseUtils.java (5)
18-20
: LGTM: Added necessary importsAdded import for DeprecationUtils to support runtime deprecation warnings.
479-482
: LGTM: Improved JavaDoc explaining deprecation rationaleThe enhanced JavaDoc clearly explains why these methods are deprecated, providing guidance to users on the recommended approach.
487-490
: LGTM: Appropriate deprecation phase advancement with runtime warningThe postponement of deprecation from phase2 (SRU2025) to phase3 (SRU2026) is properly implemented with both the annotation update and the runtime deprecation warning.
620-623
: LGTM: Consistent JavaDoc for deprecated methodsGood to see the same detailed explanation applied consistently to both deprecated methods.
626-629
: LGTM: Consistent deprecation implementationConsistently implemented the same deprecation approach as with other methods, using both annotation and runtime warning.
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/AbstractMX.java (8)
31-31
: Import changes align with method removals described in the summaryThe retention of
StringReader
import while removing other IO-related imports suggests it's still needed for remaining functionality (like thexmlSource()
method), while imports for deprecated file-handling utilities were removed.
73-73
: Deprecation phase updated to SRU2026The deprecation annotation for
DEFAULT_ROOT_ELEMENT
has been updated to target SRU2026 instead of a previous target. This aligns with the gradual deprecation strategy mentioned in the PR summary.
105-107
: Parsing methods refactored to use MxReadParamsThe remaining parse methods all use the MxReadParams and MxReadImpl approach, maintaining a consistent API while the deprecated file-based parsing methods have been removed.
Also applies to: 125-127, 137-162, 179-181
336-342
: Header serialization methods properly maintainedThe header serialization methods now consistently use MxWriteParams, which aligns with the removal of deprecated XML serialization methods mentioned in the summary.
Also applies to: 380-383
350-353
: Document serialization methods properly maintainedThe document serialization methods also consistently use MxWriteParams, supporting the standardized approach to XML serialization after removal of deprecated methods.
Also applies to: 394-399
255-329
: Message serialization methods properly maintainedThe message serialization methods that combine header and document elements continue to function properly after the removal of deprecated XML serialization methods.
Also applies to: 417-432
408-415
: XML source method correctly uses StringReaderThe
xmlSource()
method correctly usesStringReader
to convert the XML string to aSource
object, explaining why this import was retained while other IO-related imports were removed.
1-588
:❓ Verification inconclusive
Verify impact of removed parsing methods
The PR summary indicates that several deprecated parsing methods (like
parse(File, MxId)
) were removed. Ensure all client code has migrated to using the remaining parsing methods.
🏁 Script executed:
#!/bin/bash # Search for any references to removed parsing methods in the codebase rg -A 3 "AbstractMX\.parse\(.*File" --glob "*.java"Length of output: 53
🏁 Script executed:
#!/bin/bash # Search for any calls to parse methods expecting File parameters in the codebase rg -nE "(AbstractMX|MxReadImpl)\.parse\([^)]*File" --glob '*.java'Length of output: 465
Verify migration of deprecated parse methods
I ran searches for any in-repo invocations ofparse(…, File)
on bothAbstractMX
andMxReadImpl
and found no hits. However, absence in this codebase doesn’t guarantee that downstream or client code isn’t still calling the removed overloads.Please manually confirm that all consumers of this library have been updated to use the remaining
parse
signatures.
@Deprecated | ||
@ProwideDeprecated(phase2 = TargetYear.SRU2025) | ||
@ProwideDeprecated(phase3 = TargetYear.SRU2026) | ||
public EnvelopeType envelopeTyoe = EnvelopeType.CUSTOM; | ||
|
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.
💡 Verification agent
🧩 Analysis chain
Deprecation phase update aligned with SRU2026
The @ProwideDeprecated
annotation on envelopeTyoe
has been correctly advanced to phase3 = TargetYear.SRU2026
. Please make sure that all related documentation—changelogs, migration guides, release notes—and any code examples are updated to reflect this new deprecation timeline.
You can verify that no remaining deprecated annotations still target SRU2025 by running:
🏁 Script executed:
#!/bin/bash
# Verify any @ProwideDeprecated annotations still reference SRU2025
rg -n "@ProwideDeprecated\\(phase[[:digit:]] = TargetYear\\.SRU2025\\)" -C 2 iso20022-core/
Length of output: 90
🏁 Script executed:
#!/bin/bash
# Verify any @ProwideDeprecated annotations still reference SRU2025 across the entire repository
rg -n "@ProwideDeprecated.*TargetYear\\.SRU2025" -C 2 .
# Additionally, search for any raw mentions of SRU2025 that might have been missed
rg -n "SRU2025" -C 2 .
Length of output: 528
Build configuration version bump to SRU2026
The @ProwideDeprecated
annotations have been updated to TargetYear.SRU2026
, but the Gradle build still references SRU2025. Please update these version settings to align with the new deprecation timeline and upcoming release:
• build.gradle:26
- SRU = 'SRU2025'
+ SRU = 'SRU2026'
• build.gradle:27
- prowideCoreVersion = 'SRU2025-10.3.0-SNAPSHOT'
+ prowideCoreVersion = 'SRU2026-10.3.0-SNAPSHOT'
• build.gradle:41
- project.version = "SRU2025-10.3.0-SNAPSHOT"
+ project.version = "SRU2026-10.3.0-SNAPSHOT"
Also review and update any related documentation—changelogs, migration guides, release notes, and code examples—to reflect SRU2026.
🤖 Prompt for AI Agents (early access)
In iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/MxWriteConfiguration.java around lines 89 to 92, the @ProwideDeprecated annotation for envelopeTyoe has been updated to phase3 = TargetYear.SRU2026, but the Gradle build files at lines 26, 27, and 41 still reference SRU2025. Update these build.gradle version settings from SRU2025 to SRU2026 to maintain consistency. Additionally, review and update all related documentation such as changelogs, migration guides, release notes, and code examples to reflect the new SRU2026 deprecation timeline.
CHANGELOG.md
Outdated
#### 10.3.0 - SNAPSHOT | ||
* SWIFT Standard release update 2025 (live 22 November 2025) | ||
* Yearly revision of deprecation phase (see https://dev.prowidesoftware.com/SRU2024/getting-started/deprecation/) | ||
* Dependency update: commons-lang3 -> 3.17.0 | ||
* Dependency update: gson -> 2.13.1 |
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.
🧹 Nitpick (assertive)
Fix markdown formatting issues for better consistency
The changelog entry has several formatting issues according to markdown best practices:
- Heading level should be h2 instead of h4 (use ## instead of ####)
- Missing blank lines around the heading and list
- List items should be at indentation level 0
- Bare URL should be enclosed in angle brackets
-#### 10.3.0 - SNAPSHOT
- * SWIFT Standard release update 2025 (live 22 November 2025)
- * Yearly revision of deprecation phase (see https://dev.prowidesoftware.com/SRU2024/getting-started/deprecation/)
- * Dependency update: commons-lang3 -> 3.17.0
- * Dependency update: gson -> 2.13.1
+## 10.3.0 - SNAPSHOT
+
+* SWIFT Standard release update 2025 (live 22 November 2025)
+* Yearly revision of deprecation phase (see <https://dev.prowidesoftware.com/SRU2024/getting-started/deprecation/>)
+* Dependency update: commons-lang3 -> 3.17.0
+* Dependency update: gson -> 2.13.1
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
#### 10.3.0 - SNAPSHOT | |
* SWIFT Standard release update 2025 (live 22 November 2025) | |
* Yearly revision of deprecation phase (see https://dev.prowidesoftware.com/SRU2024/getting-started/deprecation/) | |
* Dependency update: commons-lang3 -> 3.17.0 | |
* Dependency update: gson -> 2.13.1 | |
## 10.3.0 - SNAPSHOT | |
* SWIFT Standard release update 2025 (live 22 November 2025) | |
* Yearly revision of deprecation phase (see <https://dev.prowidesoftware.com/SRU2024/getting-started/deprecation/>) | |
* Dependency update: commons-lang3 -> 3.17.0 | |
* Dependency update: gson -> 2.13.1 |
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
3-3: Heading levels should only increment by one level at a time
Expected: h2; Actual: h4
(MD001, heading-increment)
3-3: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
4-4: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
4-4: Lists should be surrounded by blank lines
null
(MD032, blanks-around-lists)
5-5: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
5-5: Bare URL used
null
(MD034, no-bare-urls)
6-6: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
7-7: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
🤖 Prompt for AI Agents (early access)
In CHANGELOG.md around lines 3 to 7, fix markdown formatting by changing the heading from h4 (####) to h2 (##), add blank lines before and after the heading and the list, ensure list items have no indentation, and enclose the bare URL in angle brackets to follow markdown best practices.
@@ -1,5 +1,11 @@ | |||
# Prowide ISO 20022 - CHANGELOG | |||
|
|||
#### 10.3.0 - SNAPSHOT | |||
* SWIFT Standard release update 2025 (live 22 November 2025) | |||
* Yearly revision of deprecation phase (see https://dev.prowidesoftware.com/SRU2024/getting-started/deprecation/) |
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.
💡 Verification agent
🧩 Analysis chain
Update deprecation documentation URL
The URL for the deprecation documentation still references SRU2024, but this PR is for SRU2025.
Check if an updated URL for SRU2025 deprecation documentation exists, and update the reference accordingly if available.
🌐 Web query:
Does Prowide have an SRU2025 deprecation documentation page?
💡 Result:
Based on the search results, there is no explicit mention of an SRU2025 deprecation documentation page for Prowide. The search results contain information about Prowide's deprecation policy in general and references to documentation pages for previous SRU (SWIFT Release Update) versions such as SRU2024, SRU2023, and earlier releases.
The deprecation policy is documented at "https://dev.prowidesoftware.com/latest/getting-started/deprecation/" which explains Prowide's approach to API deprecation in phases[6]. This general policy document dates back to April 2016 and outlines a four-phase deprecation process that spans at least 4 years from the initial deprecation mark to deletion.
When discussing specific SRU versions, the search results show that Prowide typically includes a "yearly revision of deprecation phase" in their release notes, with references to the deprecation policy page. For example, in the changelog for SRU2024 (version 10.2.0), they mention "Yearly revision of deprecation phase (see https://dev.prowidesoftware.com/SRU2024/getting-started/deprecation/)"[7][9].
While there is mention of SRU2025 in the context of hybrid addresses support (starting by the end of November 2025)[4], there is no specific mention of an SRU2025 deprecation documentation page in the provided search results.
Citations:
- 1: https://www.prowidesoftware.com/resources
- 2: https://dev.prowidesoftware.com/latest/release-notes/changelog-sdk/
- 3: https://javadoc.io/doc/com.prowidesoftware/pw-swift-core/latest/index.html
- 4: https://dev.prowidesoftware.com/latest/open-source/iso20022/iso20022-model/
- 5: https://github.com/prowide/prowide-iso20022/releases
- 6: https://dev.prowidesoftware.com/latest/getting-started/deprecation/
- 7: https://dev.prowidesoftware.com/latest/release-notes/changelog-score/
- 8: https://dev.prowidesoftware.com/latest/release-notes/changelog-core/
- 9: https://dev.prowidesoftware.com/latest/release-notes/changelog-iso20022/
- 10: https://javadoc.io/doc/com.prowidesoftware/pw-swift-core/SRU2020-9.1.5/deprecated-list.html
Update deprecation documentation URL to use the generic “latest” page
Please update the SRU2024‐specific link in CHANGELOG.md to point at the general deprecation policy, as there is no SRU2025‐specific page:
- File: CHANGELOG.md (around line 5)
- * Yearly revision of deprecation phase (see https://dev.prowidesoftware.com/SRU2024/getting-started/deprecation/)
+ * Yearly revision of deprecation phase (see https://dev.prowidesoftware.com/latest/getting-started/deprecation/)
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
* Yearly revision of deprecation phase (see https://dev.prowidesoftware.com/SRU2024/getting-started/deprecation/) | |
* Yearly revision of deprecation phase (see https://dev.prowidesoftware.com/latest/getting-started/deprecation/) |
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
5-5: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
5-5: Bare URL used
null
(MD034, no-bare-urls)
🤖 Prompt for AI Agents (early access)
In CHANGELOG.md at line 5, the URL for the deprecation documentation currently points to the SRU2024-specific page. Since there is no SRU2025-specific page, update the URL to the generic deprecation policy page at https://dev.prowidesoftware.com/latest/getting-started/deprecation/ to ensure the link remains accurate and relevant.
Hi can you release this PR changes please |
New standard releases are made publicly available via Maven Central by October each year. Prowide issues pre-releases by May (six- months in advance) only to subscribed customers, via a private repository. manager. There is an early release offering at https://www.prowidesoftware.com/development-tools/iso20022 |
Summary by CodeRabbit
Deprecations & Removals
Upgrades & Dependency Updates
General Improvements