Skip to content

Java 8 maintenance #159

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

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open

Java 8 maintenance #159

wants to merge 3 commits into from

Conversation

zubri
Copy link
Member

@zubri zubri commented Apr 10, 2025

Back-port to:

  • Java 8
  • Legacy jaxb code instead of Jakarta
  • XMLGregorianCalendar instead of java.time

Summary by CodeRabbit

  • New Features
    • Enhanced date/time handling for financial messages with improved XML and JSON conversions, including new adapters for XMLGregorianCalendar.
  • Bug Fixes
    • Resolved a null pointer exception affecting metadata processing.
  • Chores
    • Downgraded versioning from 10.x.x to 9.x.x.
    • Updated dependency configurations for Java compatibility (migrated from Java 11 to Java 8) and switched XML binding from Jakarta EE to Java EE.
    • Simplified build and packaging configurations.
    • Removed deprecated adapters and tests; added new comprehensive tests for adapters and serialization.

These improvements streamline message processing and boost overall reliability and maintainability.

Copy link
Contributor

coderabbitai bot commented Apr 10, 2025

📝 Walkthrough

Walkthrough

This pull request implements a version downgrade in the changelog and updates several project configurations (e.g., dependency versions and Java toolchain settings). Numerous import statements have been updated from Jakarta to Javax namespaces. The JSON serialization logic in the core MX model has been consolidated by removing deprecated methods and unifying Gson configurations. Date handling throughout the API has been refactored by replacing OffsetDateTime with XMLGregorianCalendar, with corresponding changes in header classes and utility methods. New adapter and utility classes have been added to facilitate ISO 8601-compliant XML date and time conversions while several outdated test files have been removed or replaced.

Changes

Files / Groups Change Summary
CHANGELOG.md, build.gradle Version numbers downgraded (10.x.x → 9.x.x) in the changelog; dependency versions, Java toolchain settings, and project properties updated (e.g., axion-release-plugin, spotless-plugin-gradle, prowideCoreVersion, Java 11 → Java 8) in the Gradle build file.
Core import updates (e.g., **/MxSwiftMessage.java, **/JaxbContextCache*.java, **/MxParseUtils.java, **/MxRead*/MxWrite*.java, package-info.java) Import statements switched from Jakarta packages to Javax packages for persistence, JAXB, and XML binding.
AbstractMX.java, AbstractMXAdapter.java Consolidated JSON serialization/deserialization by removing multiple adapter methods (e.g., fromJsonV9/toJsonV9) and unifying Gson configuration; minor comment additions and variable initialization clarifications.
AppHdr.java, AppHdrFactory.java Modified creationDate method return types from OffsetDateTime to XMLGregorianCalendar and replaced OffsetDateTime.now() with XMLGregorianCalendarUtils.now() in header factory methods.
BusinessAppHdrV01.java, BusinessAppHdrV02.java, BusinessAppHdrV03.java, BusinessAppHdrV04.java, LegacyAppHdr.java Updated date handling: changed creationDate return type from OffsetDateTime to XMLGregorianCalendar; updated setCreationDate logic to use XMLGregorianCalendarUtils.now(); added transient modifier to constants and internal fields.
New adapters and utilities (e.g., XMLGregorianCalendarAdapter.java, XMLGregorianCalendarUtils.java, AdapterUtils.java, SimpleDateAdapter.java, TypeAdaptersConfiguration.java, ZonedDateTimeAdapter.java, ZonedTimeAdapter.java, ZuluDateTimeAdapter.java) Introduced new adapter and utility classes to support ISO 8601-compliant XMLGregorianCalendar conversions, replace the removed ZuluOffsetDateTimeAdapter, and update type adapter configurations to use Zoned/ Simple date/time adapters.
Test files (e.g., Issue11.java, AppHdrParserTest.java, MxReadImplTest.java, plus additions like AbstractMxJsonTest.java, DefaultXMLGregorianCalendarAdapterTest.java, MxWriteWithAdaptersTest.java, ZonedDateTimeAdapterTest.java, ZonedTimeAdapterTest.java, ZuluDateTimeAdapterTest.java, TestCustomAdapter.java) Several obsolete test files have been removed (e.g., Jira1567.java, AbstractMxJsonTestAdapters.java, OffsetTime/DateTime adapter tests) and new test classes added to validate the updated JSON serialization, XML date/time marshalling/unmarshalling, and the functionality of new adapters.

Sequence Diagram(s)

sequenceDiagram
    participant Client
    participant AbstractMX
    participant GsonBuilder
    participant XMLGregorianCalendarAdapter
    Client->>AbstractMX: toJson() method call
    AbstractMX->>GsonBuilder: Build Gson with registered adapters
    GsonBuilder->>XMLGregorianCalendarAdapter: Invoke serialize() for XMLGregorianCalendar
    XMLGregorianCalendarAdapter-->>GsonBuilder: Return JSON element
    GsonBuilder-->>AbstractMX: Return complete JSON string
    AbstractMX-->>Client: JSON serialization output
Loading

Possibly related PRs


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2b05eaf and ec2a628.

📒 Files selected for processing (3)
  • .idea/compiler.xml (1 hunks)
  • CHANGELOG.md (2 hunks)
  • build.gradle (9 hunks)
🧰 Additional context used
🪛 LanguageTool
CHANGELOG.md

[uncategorized] ~5-~5: This verb may not be in the correct form. Consider using a different form for this context.
Context: ...ontent * Added new logic to MxNode to removing all leaves with empty attributes and em...

(AI_EN_LECTOR_REPLACEMENT_VERB_FORM)

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


7-7: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


8-8: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


8-8: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


10-10: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


11-11: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


11-11: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


12-12: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


13-13: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


14-14: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


14-14: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)


15-15: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


16-16: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


17-17: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)


18-18: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


19-19: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


19-19: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


21-21: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


22-22: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


22-22: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


23-23: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


25-25: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


26-26: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


26-26: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


28-28: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


29-29: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


29-29: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


30-30: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


32-32: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


42-42: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


43-43: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


43-43: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


44-44: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)


45-45: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


46-46: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


46-46: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


47-47: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


48-48: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


49-49: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


50-50: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


52-52: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


53-53: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


53-53: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


54-54: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


56-56: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


57-57: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


57-57: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


59-59: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)

⏰ Context from checks skipped due to timeout of 90000ms (2)
  • GitHub Check: Analyze (java-kotlin)
  • GitHub Check: Analyze (actions)
🔇 Additional comments (10)
.idea/compiler.xml (1)

4-7: Ensure IDE bytecode target matches project settings
The bytecode target level has been downgraded from Java 11 to 1.8, aligning the IDE configuration with the Gradle toolchain settings. Confirm that all IntelliJ modules pick up this 1.8 target.

build.gradle (9)

7-11: Downgrade plugins for Java 8 compatibility
The Axion Release plugin and Spotless plugin have been reverted to versions that support Java 8. This change ensures the build scripts remain compatible with the downgraded toolchain.


25-28: Align prowideCoreVersion with rollback version
The prowideCoreVersion property has been updated to SRU2024-9.5.6, matching the version rollback documented in the changelog. Please verify that all dependent modules are consistent with this version.


40-47: Set Java toolchain to Java 8
Configuring the JavaCompile tasks to use Java 8 via the toolchain ensures consistency with sourceCompatibility and targetCompatibility. This avoids compilation mismatches across environments.


75-75: Include generated Java sources
Adding src/generated/java to sourceSets.main.java.srcDirs ensures that generated code is compiled alongside handwritten sources. Confirm that generated sources are produced before compilation.


86-87: Use project properties in JAR manifest
Switching Source-Compatibility and Target-Compatibility to use project.sourceCompatibility and project.targetCompatibility improves maintainability by avoiding hardcoded Java version strings.


143-152: Add Java EE and JAXB dependencies for Java 8 testing
The compileOnly and testImplementation scopes now include javax.persistence, javax.validation, javax.xml.bind, and javax.activation artifacts. This guarantees that legacy Java EE APIs and the correct JAXB implementation are available during testing on Java 8.


204-204: Unconditionally include subproject artifacts in fat JAR
Using zipTree(it) on all subproject artifacts aggregates them into the root JAR. The duplicatesStrategy = EXCLUDE setting prevents file collisions.


323-326: Declare POM dependencies for publishing
The root dependencies block now lists api and implementation artifacts (pw-swift-core, Commons Lang3, and Gson) to ensure the generated POM aligns with the module-classpath.


471-486: Add multi-version testing tasks
The testOn11, testOn17, and testOn21 tasks leverage Java toolchains to run tests against Java 11, 17, and 21, respectively. This validates both backward and forward compatibility across supported Java versions.


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.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

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)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 13

🔭 Outside diff range comments (1)
CHANGELOG.md (1)

1-160: 🧹 Nitpick (assertive)

Address markdown linting issues.

The static analysis tool has flagged numerous formatting issues in the markdown file. While these don't affect functionality, improving the formatting would enhance readability.

Consider fixing the following markdown issues:

  1. Ensure consistent heading levels (h2 for sections, h4 for versions)
  2. Add blank lines around headings
  3. Use consistent indentation for list items (0 spaces instead of 2)
  4. Add blank lines around lists
  5. Remove trailing spaces

For example:

# Prowide ISO 20022 - CHANGELOG

-#### 9.5.7 - SNAPSHOT
+## 9.5.7 - SNAPSHOT
+
- * Enhanced the MX parser log verbosity when parsing malformed content
- * Added new logic to MxNode to removing all leaves with empty attributes and empty content
+* Enhanced the MX parser log verbosity when parsing malformed content
+* Added new logic to MxNode to removing all leaves with empty attributes and empty content
🧰 Tools
🪛 LanguageTool

[typographical] ~74-~74: Do not use a colon (:) before a series that is introduced by a preposition (‘for’). Remove the colon or add a noun or a noun phrase after the preposition.
Context: ...Added new business process and messages for: caad, cafc, cain, casp * Removed obso...

(RP_COLON)


[uncategorized] ~156-~156: This expression is usually spelled with a hyphen.
Context: ...1 - May 2021 * Added a new extensible interface based model for the application headers: AppH...

(BASED_HYPHEN)

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


7-7: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


8-8: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


8-8: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


10-10: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


11-11: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


11-11: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


12-12: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


13-13: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


14-14: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


14-14: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)


15-15: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


16-16: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


17-17: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)


18-18: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


19-19: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


19-19: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


21-21: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


22-22: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


22-22: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


23-23: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


25-25: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


26-26: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


26-26: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


28-28: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


29-29: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


29-29: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


30-30: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


32-32: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


33-33: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


33-33: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


34-34: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


34-34: Bare URL used
null

(MD034, no-bare-urls)


35-35: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


36-36: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


37-37: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


38-38: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


39-39: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


40-40: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


42-42: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


43-43: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


43-43: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


44-44: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)


45-45: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


46-46: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


46-46: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


47-47: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


48-48: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


49-49: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


50-50: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


52-52: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


53-53: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


53-53: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


54-54: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


56-56: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


57-57: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


57-57: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


59-59: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


60-60: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


60-60: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


62-62: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


63-63: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


63-63: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


64-64: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


64-64: Bare URL used
null

(MD034, no-bare-urls)


66-66: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


67-67: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


67-67: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


69-69: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


70-70: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


70-70: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


72-72: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


73-73: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


73-73: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


74-74: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


75-75: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


76-76: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


78-78: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


79-79: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


79-79: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


81-81: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


82-82: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


82-82: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


84-84: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


85-85: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


85-85: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


87-87: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


88-88: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


88-88: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


89-89: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


89-89: Bare URL used
null

(MD034, no-bare-urls)


90-90: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


91-91: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


93-93: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


94-94: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


94-94: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


95-95: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


96-96: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


97-97: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


98-98: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


100-100: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


101-101: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


101-101: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


103-103: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


104-104: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


104-104: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


106-106: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


107-107: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


107-107: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


108-108: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


109-109: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


111-111: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


112-112: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


112-112: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


114-114: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


115-115: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


115-115: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


116-116: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


117-117: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


118-118: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


120-120: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


121-121: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


121-121: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


122-122: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


122-122: Bare URL used
null

(MD034, no-bare-urls)


124-124: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


125-125: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


125-125: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


126-126: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


127-127: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


129-129: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


130-130: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


130-130: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


132-132: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


133-133: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


133-133: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


135-135: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


136-136: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


136-136: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


138-138: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


139-139: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


139-139: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


140-140: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


141-141: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


142-142: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


143-143: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


144-144: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


145-145: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


147-147: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


148-148: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


148-148: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


149-149: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


151-151: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


152-152: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


152-152: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


153-153: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


153-153: Bare URL used
null

(MD034, no-bare-urls)


155-155: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


156-156: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


156-156: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


157-157: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


159-159: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


160-160: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


160-160: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


160-160: Files should end with a single newline character
null

(MD047, single-trailing-newline)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9d45f56 and 2b05eaf.

⛔ Files ignored due to path filters (241)
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00100101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00100102.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00100103.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00100104.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00100105.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00100106.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00100107.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00100108.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00200101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00200102.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00200103.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00200104.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00200105.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00200106.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00200107.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00200108.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00300101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00300102.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00300103.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00300104.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00300105.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00300106.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00300107.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00300108.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00400101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00400102.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00400103.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00400104.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00400105.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00400106.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00500101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00500102.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00500103.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00500104.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00500105.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00500106.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00600101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00600102.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00600103.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00600104.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00600105.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00600106.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00600107.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00700101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00700102.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00700103.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00700104.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00700105.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00800101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00800102.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00800103.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00800104.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00800105.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00900101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00900102.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00900103.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt00900104.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01000101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01000102.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01000103.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01000104.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01100101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01100102.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01100103.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01100104.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01200101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01200102.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01200103.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01200104.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01300101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01300102.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01300103.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01300104.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01400101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01400102.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01400103.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01400104.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01400105.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01500101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01500102.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01500103.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01500104.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01600101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01600102.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01600103.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01600104.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01700101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01700102.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01700103.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01700104.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01800101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01800102.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01800103.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01800104.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01900101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01900102.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01900103.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt01900104.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02000101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02000102.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02000103.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02000104.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02100101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02100102.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02100103.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02100104.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02200101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02200102.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02200103.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02200104.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02300101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02300102.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02300103.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02300104.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02400101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02400102.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02400103.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02400104.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02700101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02700102.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02700103.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02700104.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02700105.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02800101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02800102.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02800103.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02800104.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02800105.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02900101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02900102.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02900103.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02900104.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt02900105.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt03000101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt03000102.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt03000103.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt03000104.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt03100101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt03100102.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt03100103.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt03100104.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt03100105.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt03200101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt03200102.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt03200103.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt03200104.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt03200105.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt03300101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt03300102.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt03400101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt03400102.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt03400103.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt03400104.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt03400105.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt03500101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt03500102.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt03600101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt03700101.java is excluded by !**/generated/**
  • model-acmt-mx/src/generated/java/com/prowidesoftware/swift/model/mx/MxAcmt03700102.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AcceptedStatusReason1Choice.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AcceptedStatusReason1Code.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/Account23.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/Account32.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountAdditionalInformationRequestV01.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountAdditionalInformationRequestV02.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountAdditionalInformationRequestV03.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountAdditionalInformationRequestV04.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountClosingAdditionalInformationRequestV01.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountClosingAdditionalInformationRequestV02.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountClosingAdditionalInformationRequestV03.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountClosingAdditionalInformationRequestV04.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountClosingAmendmentRequestV01.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountClosingAmendmentRequestV02.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountClosingAmendmentRequestV03.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountClosingAmendmentRequestV04.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountClosingRequestV01.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountClosingRequestV02.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountClosingRequestV03.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountClosingRequestV04.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountContract2.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountContract3.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountContract4.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountDesignation1Choice.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountDetailsConfirmation.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountDetailsConfirmationV02.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountDetailsConfirmationV03.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountDetailsConfirmationV04.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountDetailsConfirmationV05.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountDetailsConfirmationV06.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountDetailsConfirmationV07.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountDetailsConfirmationV08.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountExcludedMandateMaintenanceAmendmentRequestV01.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountExcludedMandateMaintenanceAmendmentRequestV02.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountExcludedMandateMaintenanceAmendmentRequestV03.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountExcludedMandateMaintenanceAmendmentRequestV04.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountExcludedMandateMaintenanceRequestV01.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountExcludedMandateMaintenanceRequestV02.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountExcludedMandateMaintenanceRequestV03.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountExcludedMandateMaintenanceRequestV04.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountForAction1.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountForAction2.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountManagementConfirmation1.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountManagementConfirmation2.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountManagementConfirmation3.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountManagementConfirmation4.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountManagementConfirmation5.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountManagementMessageReference.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountManagementMessageReference1.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountManagementMessageReference2.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountManagementMessageReference3.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountManagementMessageReference4.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountManagementMessageReference5.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountManagementStatus1Code.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountManagementStatusAndReason1.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountManagementStatusAndReason2.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountManagementStatusAndReason3.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountManagementStatusAndReason4.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountManagementStatusAndReason5.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountManagementStatusReport.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountManagementStatusReportV02.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountManagementStatusReportV03.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountManagementStatusReportV04.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountManagementStatusReportV05.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountManagementStatusReportV06.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountManagementStatusReportV07.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountManagementType1Code.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountManagementType2Code.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountManagementType3Code.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountMandateMaintenanceAmendmentRequestV01.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountMandateMaintenanceAmendmentRequestV02.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountMandateMaintenanceAmendmentRequestV03.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountMandateMaintenanceAmendmentRequestV04.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountMandateMaintenanceRequestV01.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountMandateMaintenanceRequestV02.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountMandateMaintenanceRequestV03.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountMandateMaintenanceRequestV04.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountModificationInstruction.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountModificationInstructionV02.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountModificationInstructionV03.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountModificationInstructionV04.java is excluded by !**/generated/**
  • model-acmt-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/AccountModificationInstructionV05.java is excluded by !**/generated/**
📒 Files selected for processing (59)
  • CHANGELOG.md (2 hunks)
  • build.gradle (9 hunks)
  • iso20022-core/src/main/java/com/prowidesoftware/swift/model/MxSwiftMessage.java (1 hunks)
  • iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/AbstractMX.java (4 hunks)
  • iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/AbstractMXAdapter.java (2 hunks)
  • iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/AppHdr.java (2 hunks)
  • iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/AppHdrFactory.java (6 hunks)
  • iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/BusinessAppHdrV01.java (4 hunks)
  • iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/BusinessAppHdrV02.java (3 hunks)
  • iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/BusinessAppHdrV03.java (3 hunks)
  • iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/BusinessAppHdrV04.java (3 hunks)
  • iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/JaxbContextCache.java (2 hunks)
  • iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/JaxbContextCacheImpl.java (1 hunks)
  • iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/JaxbContextLoader.java (1 hunks)
  • iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/LegacyAppHdr.java (3 hunks)
  • iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/MxParseUtils.java (1 hunks)
  • iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/MxReadConfiguration.java (1 hunks)
  • iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/MxReadParams.java (1 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/MxWriteParams.java (1 hunks)
  • iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/MxWriteUtils.java (1 hunks)
  • iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/XMLGregorianCalendarAdapter.java (1 hunks)
  • iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/XMLGregorianCalendarUtils.java (1 hunks)
  • iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/adapters/AdapterUtils.java (1 hunks)
  • iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/adapters/SimpleDateAdapter.java (1 hunks)
  • iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/adapters/TypeAdaptersConfiguration.java (3 hunks)
  • iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/adapters/ZonedDateTimeAdapter.java (1 hunks)
  • iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/adapters/ZonedTimeAdapter.java (1 hunks)
  • iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/adapters/ZuluDateTimeAdapter.java (1 hunks)
  • iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/adapters/ZuluOffsetDateTimeAdapter.java (0 hunks)
  • iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/sys/dic/package-info.java (1 hunks)
  • iso20022-core/src/test/java/com/prowidesoftware/issues/Issue11.java (0 hunks)
  • iso20022-core/src/test/java/com/prowidesoftware/issues/Jira1567.java (0 hunks)
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/AbstractMxJsonTest.java (1 hunks)
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/AbstractMxJsonTestAdapters.java (0 hunks)
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/AbstractMxJsonV9Test.java (0 hunks)
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/AppHdrParserTest.java (2 hunks)
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/GuavaJaxbContextCache.java (1 hunks)
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/JaxbContextCacheImplTest.java (1 hunks)
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/MxReadImplTest.java (2 hunks)
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/DateTimeJsonAdapterBackwardCompatibilityTest.java (0 hunks)
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/DefaultXMLGregorianCalendarAdapterTest.java (1 hunks)
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/IssueJira1566Test.java (0 hunks)
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/LocalDateAdapterTest.java (0 hunks)
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/LocalDateJsonAdapterTest.java (0 hunks)
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/MxWriteAdaptersTest.java (0 hunks)
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/MxWriteWithAdaptersTest.java (1 hunks)
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/OffsetDateTimeAdapterTest.java (0 hunks)
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/OffsetDateTimeJsonAdapterTest.java (0 hunks)
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/OffsetTimeAdapterTest.java (0 hunks)
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/OffsetTimeJsonAdapterTest.java (0 hunks)
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/TestCustomAdapter.java (1 hunks)
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/YearMonthAdapterTest.java (0 hunks)
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/YearMonthJsonAdapterTest.java (0 hunks)
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/ZonedDateTimeAdapterTest.java (1 hunks)
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/ZonedTimeAdapterTest.java (1 hunks)
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/ZuluDateTimeAdapterTest.java (3 hunks)
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/ZuluOffsetDateTimeAdapterUnmarshallingTest.java (0 hunks)
💤 Files with no reviewable changes (17)
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/LocalDateJsonAdapterTest.java
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/OffsetDateTimeJsonAdapterTest.java
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/MxWriteAdaptersTest.java
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/YearMonthJsonAdapterTest.java
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/YearMonthAdapterTest.java
  • iso20022-core/src/test/java/com/prowidesoftware/issues/Jira1567.java
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/AbstractMxJsonTestAdapters.java
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/ZuluOffsetDateTimeAdapterUnmarshallingTest.java
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/DateTimeJsonAdapterBackwardCompatibilityTest.java
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/AbstractMxJsonV9Test.java
  • iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/adapters/ZuluOffsetDateTimeAdapter.java
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/OffsetTimeAdapterTest.java
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/OffsetDateTimeAdapterTest.java
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/LocalDateAdapterTest.java
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/OffsetTimeJsonAdapterTest.java
  • iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/IssueJira1566Test.java
  • iso20022-core/src/test/java/com/prowidesoftware/issues/Issue11.java
🧰 Additional context used
🧬 Code Graph Analysis (10)
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/adapters/ZonedDateTimeAdapter.java (1)
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/adapters/AdapterUtils.java (1)
  • AdapterUtils (31-65)
iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/AbstractMxJsonTest.java (1)
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/AbstractMX.java (1)
  • AbstractMX (66-580)
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/BusinessAppHdrV02.java (4)
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/BusinessAppHdrV01.java (1)
  • XmlAccessorType (51-312)
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/BusinessAppHdrV03.java (1)
  • XmlAccessorType (49-305)
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/LegacyAppHdr.java (1)
  • XmlAccessorType (48-298)
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/XMLGregorianCalendarUtils.java (1)
  • XMLGregorianCalendarUtils (33-57)
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/adapters/ZuluDateTimeAdapter.java (1)
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/adapters/AdapterUtils.java (1)
  • AdapterUtils (31-65)
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/BusinessAppHdrV03.java (2)
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/LegacyAppHdr.java (1)
  • XmlAccessorType (48-298)
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/XMLGregorianCalendarUtils.java (1)
  • XMLGregorianCalendarUtils (33-57)
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/AppHdrFactory.java (1)
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/XMLGregorianCalendarUtils.java (1)
  • XMLGregorianCalendarUtils (33-57)
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/adapters/SimpleDateAdapter.java (1)
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/adapters/AdapterUtils.java (1)
  • AdapterUtils (31-65)
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/BusinessAppHdrV01.java (3)
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/adapters/ZuluDateTimeAdapter.java (1)
  • ZuluDateTimeAdapter (39-117)
model-common-types/src/generated/java/com/prowidesoftware/swift/model/mx/dic/BusinessApplicationHeaderV01Impl.java (1)
  • XmlAccessorType (31-392)
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/XMLGregorianCalendarUtils.java (1)
  • XMLGregorianCalendarUtils (33-57)
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/adapters/ZonedTimeAdapter.java (1)
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/adapters/AdapterUtils.java (1)
  • AdapterUtils (31-65)
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/LegacyAppHdr.java (4)
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/BusinessAppHdrV01.java (1)
  • XmlAccessorType (51-312)
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/BusinessAppHdrV02.java (1)
  • XmlAccessorType (49-307)
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/BusinessAppHdrV03.java (1)
  • XmlAccessorType (49-305)
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/XMLGregorianCalendarUtils.java (1)
  • XMLGregorianCalendarUtils (33-57)
🪛 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)


7-7: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


8-8: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


8-8: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


10-10: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


11-11: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


11-11: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


12-12: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


13-13: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


14-14: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


14-14: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)


15-15: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


16-16: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


17-17: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)


18-18: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


19-19: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


19-19: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


21-21: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


22-22: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


22-22: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


23-23: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


25-25: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


26-26: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


26-26: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


28-28: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


29-29: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


29-29: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


30-30: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


32-32: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


42-42: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


43-43: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


43-43: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


44-44: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)


45-45: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


46-46: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


46-46: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


47-47: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


48-48: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


49-49: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


50-50: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


52-52: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


53-53: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


53-53: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


54-54: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


56-56: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


57-57: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


57-57: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


59-59: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Analyze (java-kotlin)
🔇 Additional comments (138)
iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/MxWriteUtils.java (1)

18-21: Update JAXB Imports to Javax

The changes correctly update the import statements from jakarta.xml.bind.* to javax.xml.bind.*, ensuring compatibility with Java 8. This adjustment aligns with the PR objective of back-porting to Java 8 by reverting to the legacy JAXB API.

iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/MxWriteParams.java (1)

19-19: Updated JAXB Import for Java 8 Compatibility

The import statement has been changed from jakarta.xml.bind.JAXBContext to javax.xml.bind.JAXBContext, which aligns with the back-port goal for Java 8 compatibility. This update ensures that the code leverages legacy JAXB APIs available in Java 8 and maintains consistency with other changes in the project.

iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/TestCustomAdapter.java (3)

1-15: License header looks good.

The Apache License 2.0 header is properly included with the correct copyright information.


16-21: Import statements align with Java 8 backport objective.

The imports correctly use the legacy javax.xml.bind package rather than the Jakarta namespace, which aligns with the PR objective of ensuring Java 8 compatibility. The use of XMLGregorianCalendar instead of the Java 8+ time API is also consistent with the backport goal.


22-33: Test adapter implementation ignores input parameters.

While this is likely intentional for testing purposes as indicated by the class name, both methods ignore their input parameters:

  • unmarshal creates a default XMLGregorianCalendar without using the input string
  • marshal always returns "foobar" regardless of the input calendar

This suggests this class is meant for specific test cases that don't need actual conversion logic.

Is this adapter used in test fixtures where you only need a predictable output rather than actual conversion functionality?

iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/MxReadParams.java (1)

19-19: JAXBContext Import Update:
The change from jakarta.xml.bind.JAXBContext to javax.xml.bind.JAXBContext is correctly applied for Java 8 compatibility. This update aligns well with the back-port objectives and ensures that subsequent JAXB operations work as expected in a Java 8 environment.

iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/MxWriteConfiguration.java (1)

21-21: JAXBContext Import Update:
The modification to import javax.xml.bind.JAXBContext instead of the Jakarta version is correctly implemented and consistent with the overall Java 8 back-port. This change maintains compatibility with pre-Jakarta environments.

iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/JaxbContextLoader.java (1)

19-21: JAXB Imports Update:
Updating the import statements to use javax.xml.bind.JAXBContext and javax.xml.bind.JAXBException is an appropriate change that supports Java 8. The revised imports ensure that the context caching mechanism remains functional under the legacy JAXB framework.

iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/JaxbContextCacheImplTest.java (1)

20-21: JAXB Test Imports Update:
The test file now correctly uses javax.xml.bind.JAXBContext and javax.xml.bind.JAXBException instead of their Jakarta counterparts. This update is consistent with the changes across the codebase and ensures that tests execute properly in the Java 8 context.

iso20022-core/src/main/java/com/prowidesoftware/swift/model/MxSwiftMessage.java (1)

26-26: JPA Import Update:
Replacing the previous Jakarta Persistence import with javax.persistence.* is correctly executed, ensuring that the persistence layer remains compatible with Java 8. This change is in line with the broader effort to revert to legacy APIs.

iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/GuavaJaxbContextCache.java (1)

21-21: JAXBContext Import Updated for Java 8 Compatibility
The import on line 21 has been changed from the Jakarta package to javax.xml.bind.JAXBContext, which aligns with the project's back-port strategy to Java 8 and supports legacy JAXB.

iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/MxWriteImpl.java (1)

26-29: JAXB Imports Transitioned to Legacy Java EE Namespaces
The import statements for JAXBContext, JAXBElement, JAXBException, and Marshaller (lines 26–29) have been updated from the Jakarta packages to their javax.xml.bind counterparts. This change is consistent with the objective of ensuring compatibility with Java 8.

iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/sys/dic/package-info.java (1)

27-28: JAXB Annotation Imports Updated
The imports for XmlNsForm and XmlSchema have been modified to use javax.xml.bind.annotation instead of the Jakarta namespace. This update is essential for maintaining Java 8 compatibility and is applied consistently with related changes in the codebase.

iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/MxParseUtils.java (1)

36-37: JAXB Imports Transitioned to Javax for Legacy Support
The import statements on lines 36–37 now pull in javax.xml.bind.* and javax.xml.bind.annotation.adapters.XmlAdapter instead of their Jakarta counterparts. This adjustment ensures that the XML binding functionality remains compatible with Java 8 and follows the project's back-port requirements.

iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/JaxbContextCache.java (1)

19-21: JAXBContext and JAXBException Imports Updated
The import lines (19–21) now reference javax.xml.bind.JAXBContext and javax.xml.bind.JAXBException. This update supports the Java 8 maintenance requirement by reverting to legacy JAXB classes, ensuring consistency across the codebase.

iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/JaxbContextCacheImpl.java (1)

20-21: Import statements updated for Java 8 compatibility

The imports have been correctly changed from Jakarta EE (jakarta.xml.bind) to Java EE (javax.xml.bind) to maintain backward compatibility with Java 8. This aligns with the PR objective of back-porting to Java 8.

iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/adapters/AdapterUtils.java (1)

16-65: New utility class for XMLGregorianCalendar handling looks solid

This new utility class provides necessary methods for handling date-time formatting and parsing with XMLGregorianCalendar instead of the newer Java time API. The implementation includes proper error handling with appropriate logging levels and fallback parsing strategies.

The class follows good practices:

  • Has a private transient logger for debugging
  • Handles null values appropriately
  • Uses multiple parsing approaches with proper exception handling
  • Returns null when parsing fails rather than throwing exceptions

This implementation aligns well with the Java 8 compatibility objective.

iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/adapters/ZonedTimeAdapter.java (1)

16-102: Well-implemented XMLGregorianCalendar adapter with ISO 8601 compliance

This adapter provides a clean implementation for handling XML time elements with XMLGregorianCalendar. The code is well-documented and includes multiple constructor options for flexibility.

Notable strengths:

  • Thread-safety through synchronization on the SimpleDateFormat instance
  • Consistent ISO 8601 formatting with explicit UTC offsets
  • Proper handling of fractional seconds
  • Support for custom adapter implementations
  • Clear JavaDoc explaining the implementation details

The implementation correctly leverages the AdapterUtils class for parsing and formatting operations.

build.gradle (10)

8-8: Plugin version downgraded for Java 8 compatibility

The axion-release-plugin has been downgraded from 1.15.1 to 1.13.6 to maintain Java 8 compatibility.


10-10: Spotless plugin version downgraded with helpful comment

Good explanation in the comment about why the version needs to be 6.13.0 or lower (Java 11 requirement for newer versions).


27-27: Core version updated to align with Java 8 compatibility

The prowideCoreVersion has been updated from SRU2024-10.2.5 to SRU2024-9.5.5, which appears to be the Java 8 compatible version.


44-44: Java language version set to 8

The Java toolchain language version has been correctly set to 8, which is essential for the Java 8 backward compatibility goal.


75-75: Simplified source sets configuration

The sourceSets configuration has been simplified while maintaining the same functionality.


86-87: Dynamic Java compatibility attributes

Source and Target compatibility attributes now use project properties instead of hardcoded values, making the configuration more flexible and consistent with the project settings.


143-144: Persistence and validation APIs set as compile-only dependencies

Correctly configured Java EE dependencies as compileOnly to avoid runtime conflicts.


146-150: Added explicit JAXB dependencies for testing

Good practice to explicitly include JAXB implementation dependencies for testing to ensure consistent behavior across different environments. The comment explains the reasoning well.


471-476: New task for testing on Java 11

Added a new test task that allows testing the Java 8 compatible code on Java 11, which helps ensure forward compatibility while maintaining backward compatibility.


323-325: Aligned dependencies in the POM generation section

Dependencies for POM generation have been updated to match the Java 8 compatible versions used throughout the project.

iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/AbstractMXAdapter.java (2)

39-39: Improved documentation clarity

The added comment provides useful context about the JSON serialization behavior in the Integrator environment, enhancing maintainability.


56-56: Explicit null initialization improves code clarity

While Java implicitly initializes class variables to null, the explicit initialization makes the code more readable and the intent clearer. This is especially helpful in this method where the variable is used in a try-catch block.

iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/XMLGregorianCalendarUtils.java (1)

1-57: Well-implemented utility for Java 8-compatible date handling

This utility class is a well-crafted implementation to create XMLGregorianCalendar instances for UTC time handling. It properly:

  1. Creates a calendar in UTC timezone
  2. Uses a specific date format required for XSD validation
  3. Includes appropriate error handling with logging

The implementation correctly supports the Java 8 compatibility goal by providing date handling compatible with legacy JAXB.

Good practice of making the constructor private (implied since it's not explicitly defined) as this is a utility class with only static methods.

iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/AppHdr.java (1)

22-22: Appropriate type change for Java 8 compatibility

The change from OffsetDateTime to XMLGregorianCalendar aligns with the goal of Java 8 compatibility. This change:

  1. Moves away from newer java.time APIs to classes available in Java 8
  2. Maintains consistency with JAXB XML binding
  3. Follows XML standards for date/time representation

This is a well-considered change that supports the overall backport strategy.

Also applies to: 99-99

iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/MxReadImplTest.java (2)

133-134: Updated test for XMLGregorianCalendar compatibility

The test has been properly updated to use direct accessor methods on XMLGregorianCalendar instead of the previous java.time approach with ChronoField. This change correctly aligns the test with the implementation changes for Java 8 compatibility.


636-636: Updated date format in test XML

The date format in the test XML has been changed from 2013-01-03 to 20130103 format, aligning with compact XML date representation. This ensures the tests properly validate the date parsing capabilities with XMLGregorianCalendar.

iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/AppHdrParserTest.java (2)

81-82: Method access change for Java 8 compatibility

The test now uses the direct getYear() and getMonth() methods instead of the Java time API's ChronoField constants, which is in line with the migration to use XMLGregorianCalendar instead of newer Java time classes. This change maintains the same validation while ensuring Java 8 compatibility.


187-188: Method access change for Java 8 compatibility

Similar to the previous change, these assertions now use the direct accessor methods instead of ChronoField constants to maintain compatibility with XMLGregorianCalendar in Java 8. This approach is consistent with the PR objective of backporting to Java 8.

iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/AppHdrFactory.java (6)

67-67: Date creation updated for Java 8 compatibility

The creation date is now set using XMLGregorianCalendarUtils.now() instead of OffsetDateTime.now(), aligning with the Java 8 backport by using legacy date-time APIs rather than the newer Java time API.


113-113: Date creation updated for Java 8 compatibility

Changed to use XMLGregorianCalendarUtils.now() for consistent date-time handling with Java 8 compatibility.


160-160: Date creation updated for Java 8 compatibility

The creation date is now set using XMLGregorianCalendarUtils.now() for consistent date-time handling across the application.


176-176: Version annotation update for Java 8 backport

The @since annotation has been changed from 10.2.2 to 9.5.3 to reflect the version downgrade for Java 8 compatibility, which aligns with the PR objective of backporting the codebase.


207-207: Date creation updated for Java 8 compatibility

The creation date is now set using XMLGregorianCalendarUtils.now() for consistent date-time handling with Java 8 compatibility.


248-248: Date creation updated for Java 8 compatibility

Changed to use XMLGregorianCalendarUtils.now() for setting the creation date in LegacyAppHdr. This maintains consistency with the Java 8 backport approach across all header types.

iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/DefaultXMLGregorianCalendarAdapterTest.java (1)

25-117: Well-structured test class for XMLGregorianCalendar adapter

This comprehensive test suite validates the DefaultXMLGregorianCalendarAdapter with various date and time formats. The tests effectively verify bidirectional marshalling/unmarshalling integrity for:

  • Date-time with/without fractions
  • UTC and specific timezone offsets
  • Time-only formats
  • Date-only formats

This is a good addition that helps ensure reliable date handling for the Java 8 compatible implementation.

iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/adapters/ZonedDateTimeAdapter.java (4)

22-35: Well-documented adapter class for ISO 8601 date formatting

The class documentation clearly explains the purpose and behavior of this adapter, including its specific formatting approach for ISO 8601 date-time values. It properly documents how UTC times are handled with explicit offset notation (+00:00) instead of 'Z'.


36-67: Flexible adapter implementation with multiple constructor options

The adapter provides three constructor options that offer good flexibility:

  1. Default constructor with predefined formats
  2. Constructor for custom date format
  3. Constructor for injecting a completely custom adapter implementation

This design allows for both simple usage and advanced customization when needed.


75-82: Proper implementation of unmarshal method

The unmarshal implementation correctly delegates to either the custom adapter (if provided) or uses the AdapterUtils.parse method with the configured format. This maintains the flexibility of the adapter while providing a consistent API.


91-102: Thread-safe implementation of marshal method

The marshal method properly synchronizes on the SimpleDateFormat instance since it's not thread-safe. The post-processing to remove trailing zeros and replace 'Z' with '+00:00' ensures consistent output format in line with the adapter's design goals.

iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/MxWriteWithAdaptersTest.java (6)

1-15: Appropriate license header for a new file.

The Apache License header is correctly included, ensuring proper licensing for the new code.


18-34: Good import organization following Java 8 compatibility.

The imports correctly use javax.xml packages instead of Jakarta, which aligns with the Java 8 compatibility goal of this PR. Also includes all necessary imports for date handling with XMLGregorianCalendar.


186-234: Effective custom date pattern test.

The test demonstrates that custom date formatting works correctly with adapters, which is valuable for verifying flexibility in date handling. The assertions correctly focus on the components that should match rather than comparing full objects, accounting for truncated seconds.


236-254: Custom adapter test validates extensibility.

This test ensures that completely custom adapters can be used, which is important for extensibility. The test correctly validates that custom formatting is applied and that the results can be parsed back.


256-271: Good validation of header date-time handling.

The test correctly validates that date-time handling in business application headers works properly with XMLGregorianCalendar, which is essential for the Java 8 compatibility goal.


273-289: Well-structured utility methods for test data.

The sample and sampleGregorianCalendar methods provide a good way to create consistent test data, making the tests more maintainable.

iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/BusinessAppHdrV04.java (5)

29-37: Successfully migrated to javax.xml. packages for Java 8 compatibility.*

The import statements have been correctly updated from Jakarta to Javax namespaces, which is aligned with the PR objective of supporting Java 8. The XMLGregorianCalendar import has also been added to support the new date handling approach.


53-55: Added transient modifiers to static fields.

Marking these static fields as transient ensures they won't be included in serialization, which is a good practice. This change is consistent with similar changes in other header classes.


189-189: Updated date handling to use XMLGregorianCalendar.

The return type has been changed from OffsetDateTime to XMLGregorianCalendar, which aligns with the Java 8 compatibility objective of the PR.


197-198: Updated JavaDoc to reflect XMLGregorianCalendar usage.

The JavaDoc reference has been updated to refer to the new method signature with XMLGregorianCalendar, maintaining documentation consistency.


202-202: Implemented Java 8 compatible date creation.

The implementation now uses XMLGregorianCalendarUtils.now() instead of OffsetDateTime.now(), which provides Java 8 compatible date-time handling without requiring the java.time package.

iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/XMLGregorianCalendarAdapter.java (2)

1-27: Good implementation of a new adapter class for Java 8 compatibility.

The class includes a proper license header and JavaDoc, clearly indicating its purpose and version information. The import statements correctly use Java 8 compatible classes.


28-55: Well-structured JSON serialization for XMLGregorianCalendar.

The implementation correctly serializes all components of XMLGregorianCalendar to a JSON object. The commented alternative implementation provides good context about implementation choices.

iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/ZonedTimeAdapterTest.java (4)

1-25: Well-structured test class with proper imports.

The test class includes the appropriate license header and imports the necessary classes for testing the ZonedTimeAdapter. The code correctly uses javax.xml packages for Java 8 compatibility.


26-38: Comprehensive test for unmarshalling time with fractional seconds.

This test effectively validates that a time string with fractional seconds and timezone offset is correctly converted to an XMLGregorianCalendar, checking all relevant components.


40-58: Good coverage of time unmarshalling edge cases.

These tests validate unmarshalling behavior without fractional seconds and without timezone offset, ensuring the adapter handles these variations correctly.


59-78: Complete testing of time marshalling functionality.

The marshalling tests verify that XMLGregorianCalendar instances are correctly converted to ISO 8601 compliant time strings, with good coverage of different scenarios (with/without fractional seconds, with/without offset).

Note that in testMarshallNoOffset, even though the input has no offset, the output correctly includes "+00:00" which ensures ISO 8601 compliance.

iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/BusinessAppHdrV02.java (9)

29-37: Correctly updated XML binding imports for Java 8 compatibility

The import statements have been updated from Jakarta to Javax namespaces, which aligns with the PR objective of backporting to Java 8. The inclusion of XMLGregorianCalendar is also consistent with using legacy date handling instead of java.time.


53-55: Added transient modifier to static fields

Adding the transient modifier to these static fields prevents them from being serialized, which is good practice especially for logger instances and class arrays.


189-192: Updated return type for creationDate method

Changed the return type from what was likely OffsetDateTime to XMLGregorianCalendar, which is consistent with the Java 8 backport objective. This aligns with other application header implementations in the codebase.


197-204: Updated setCreationDate implementation for XMLGregorianCalendar

The implementation now uses XMLGregorianCalendarUtils.now() instead of OffsetDateTime.now(), properly maintaining the same functionality with Java 8 compatible classes.


29-37: Package imports updated for Java 8 compatibility

The imports have been changed from jakarta.xml.bind to javax.xml.bind, which is consistent with the pull request's objective to backport the codebase to Java 8. Jakarta EE packages are part of newer Java versions, while javax packages are compatible with Java 8.


53-55: Fields marked as transient

NAMESPACE, _classes, and log fields are now marked as transient to prevent them from being serialized. This is good practice for static fields and loggers, especially when working with JSON or XML serialization.


190-190: Return type changed to XMLGregorianCalendar

The creationDate() method now returns XMLGregorianCalendar instead of OffsetDateTime, which is consistent with Java 8 compatibility requirements. The java.time package was introduced in Java 8, but the PR aims for a more legacy-compatible approach using JAXB's XMLGregorianCalendar.


198-198: JavaDoc reference updated for XMLGregorianCalendar

JavaDoc update correctly reflects the change in the referenced method parameter type.


203-203: Date creation implementation updated

The implementation now uses XMLGregorianCalendarUtils.now() instead of OffsetDateTime.now(ZoneOffset.UTC). This is consistent with the backport to Java 8 requirement, utilizing the XMLGregorianCalendar-based date/time handling instead of the newer java.time API.

iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/ZonedDateTimeAdapterTest.java (4)

1-89: Well-structured test class for XMLGregorianCalendar date-time handling

This test class comprehensively verifies the ZonedDateTimeAdapter functionality for both marshalling and unmarshalling date-time values with:

  1. Fractional seconds handling
  2. Different timezone offset scenarios
  3. Proper ISO 8601 format compliance

The tests ensure the adapter correctly handles all date components (year, month, day, hour, minute, second, fraction, timezone) which is crucial for the Java 8 backport.


1-89: Well-structured new test class for ZonedDateTimeAdapter

This new test class comprehensively validates the adapter responsible for XML date/time serialization and deserialization. The tests cover:

  • Unmarshalling with and without fractional seconds
  • Timezone offset handling
  • Proper marshalling of XMLGregorianCalendar objects

The test cases are thorough and verify both successful parsing and proper formatting of date-time values, which is critical for the Java 8 compatibility changes.


31-41: Tests for fractional seconds handling

Good test coverage for fractional seconds in timestamps, ensuring that the adapter correctly parses the millisecond component and preserves the timezone offset.


82-87: Timezone normalization test

This test verifies that a calendar with no offset gets normalized to UTC (+00:00), which is important for consistency in XML serialization. This ensures consistent behavior when working with timestamps that don't explicitly specify a timezone.

iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/BusinessAppHdrV03.java (7)

29-37: Correctly updated XML binding imports for Java 8 compatibility

The import statements have been updated from Jakarta to Javax namespaces, which aligns with the PR objective of backporting to Java 8. The inclusion of XMLGregorianCalendar is consistent with using legacy date handling instead of java.time.


53-55: Added transient modifier to static fields

Adding the transient modifier to these static fields prevents them from being serialized, which is good practice especially for logger instances and class arrays.


189-191: Updated return type for creationDate method

Changed the return type from what was likely OffsetDateTime to XMLGregorianCalendar, which is consistent with the Java 8 backport objective. This aligns with other application header implementations in the codebase.


197-204: Updated setCreationDate implementation for XMLGregorianCalendar

The implementation now uses XMLGregorianCalendarUtils.now() instead of OffsetDateTime.now(), properly maintaining the same functionality with Java 8 compatible classes.


29-37: Package imports updated for Java 8 compatibility

Similar to BusinessAppHdrV02, imports have been updated from jakarta.xml.bind to javax.xml.bind for Java 8 compatibility. The XMLGregorianCalendar import has been added to support the legacy date/time API.


53-55: Fields marked as transient

The NAMESPACE, _classes, and log fields are now marked as transient to prevent serialization. This follows the same pattern applied in BusinessAppHdrV02 for consistency.


189-190: Date handling migrated to XMLGregorianCalendar

The implementation of creationDate() and setCreationDate() has been updated to use XMLGregorianCalendar instead of OffsetDateTime. This maintains consistency with the changes in BusinessAppHdrV02 and aligns with the Java 8 compatibility goal.

Also applies to: 197-198, 202-203

iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/AbstractMxJsonTest.java (9)

1-42: Well-structured test setup for JSON serialization

The test class is properly structured with a comprehensive test for MxPain00100108 serialization and deserialization. It tests the full object tree construction and properly validates all fields after roundtrip conversion.


107-154: Comprehensive test for multi-element collections

This test properly verifies that collections (multiple bank statements) in MX objects are correctly serialized and deserialized, which is important to ensure compatibility across different MX message types.


156-200: Good coverage for date serialization edge cases

These tests ensure date serialization and deserialization work correctly both when directly parsing JSON and when converting from XML to JSON and back. This is crucial for the Java 8 backport since date handling has changed from OffsetDateTime to XMLGregorianCalendar.


202-245: Appropriate testing of AppHdr serialization

This test verifies that Application Headers are correctly serialized and deserialized in JSON format, which is important for maintaining backward compatibility with existing systems after the Java 8 backport.


246-500: Comprehensive testing of different AppHdr versions

These tests provide thorough coverage for various Application Header scenarios including:

  1. Different namespace versions (V1, V2)
  2. Missing namespace handling
  3. Invalid namespace handling

This ensures robustness in the JSON serialization/deserialization process, especially important given the changes to date handling in this PR.


1-89: Comprehensive JSON serialization tests

This new test class provides thorough testing for JSON serialization and deserialization of MX objects. The tests cover complex object hierarchies, date handling, and validate that objects maintain their state through JSON conversion cycles.


156-179: Date format validation in JSON

Good test case for verifying that date objects can be correctly serialized to and from JSON, especially important when migrating from java.time to XMLGregorianCalendar.


181-200: Round-trip XML to JSON conversion test

This test ensures that an MX object parsed from XML can be correctly serialized to JSON and then parsed back with all data preserved. This is crucial for validating the end-to-end processing pipeline with the new date handling approach.


202-501: Comprehensive Application Header tests

Multiple test cases covering different application header scenarios:

  • Basic AppHdr parsing
  • BusinessAppHdrV01 and BusinessAppHdrV02 namespace handling
  • No namespace and invalid namespace scenarios

These tests ensure robust handling of application headers in JSON format, which is important for maintaining backward compatibility.

iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/adapters/ZuluDateTimeAdapter.java (7)

26-39: Well-structured class with comprehensive documentation.

The class documentation clearly explains the purpose of this adapter and how it formats date-time values according to ISO 8601 standards. The JavaDoc properly includes references to related classes and includes version information.


41-44: Good choice of field modifiers.

The fields are appropriately marked as final since they're initialized in the constructors and never modified afterward, ensuring thread safety and immutability.


48-52: Default constructor with sensible defaults.

The default constructor initializes the date formats with ISO 8601 patterns, which is appropriate for the adapter's purpose.


57-61: Custom format constructor enhances flexibility.

This constructor allows clients to customize the date format according to their needs, which is a good design practice.


66-70: Dependency injection constructor improves testability.

Allowing a custom adapter implementation to be injected makes the class more testable and flexible.


79-85: Unmarshal method correctly handles delegation.

The implementation properly delegates to custom adapter when available and falls back to the AdapterUtils helper class for parsing.


94-106: Thread-safe implementation with appropriate synchronization.

The marshal method correctly synchronizes access to the shared SimpleDateFormat instance, which is necessary since SimpleDateFormat is not thread-safe. The method also handles delegation to custom adapter and removes unnecessary ".000" from the formatted output.

iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/adapters/SimpleDateAdapter.java (7)

22-33: Clear class documentation with appropriate references.

The JavaDoc clearly explains the purpose and behavior of this adapter, with references to related classes and version information.


35-36: Appropriate field declarations.

The fields are correctly declared as final to ensure immutability, which is a good practice for thread safety.


41-44: Default constructor with standard ISO date format.

The default constructor initializes the date format with the ISO 8601 date pattern (yyyy-MM-dd), which is appropriate for the adapter's purpose.


49-52: Custom format constructor enhances flexibility.

This constructor allows clients to customize the date format according to their needs, which is a good design practice.


57-60: Dependency injection constructor improves testability.

Allowing a custom adapter implementation to be injected makes the class more testable and flexible.


69-74: Unmarshal method correctly handles delegation.

The implementation properly delegates to custom adapter when available and falls back to the AdapterUtils helper class for parsing.


84-91: Thread-safe implementation with appropriate synchronization.

The marshal method correctly synchronizes access to the shared SimpleDateFormat instance, which is necessary since SimpleDateFormat is not thread-safe.

iso20022-core/src/test/java/com/prowidesoftware/swift/model/mx/adapters/ZuluDateTimeAdapterTest.java (9)

28-30: Appropriate adapter class name and instance creation.

The test class has been updated to use the new ZuluDateTimeAdapter instead of the previous ZuluOffsetDateTimeAdapter, which is consistent with the Java 8 back-port changes mentioned in the PR objectives.


32-43: Comprehensive test for unmarshalling with fractional seconds.

This test verifies that the adapter correctly parses a date-time string with fractional seconds, checking year, month, day, hours, minutes, seconds, fractional seconds, and timezone offset.


45-56: Thorough test for unmarshalling without fractional seconds.

This test ensures that the adapter correctly handles date-time strings without fractional seconds, properly setting the fractionalSecond property to null.


58-68: Important test case for unmarshalling without offset.

This test verifies that the adapter can handle date-time strings without a timezone offset, which is a common case in some systems.


72-74: Test for marshalling with timezone conversion.

This test verifies that the adapter correctly converts timezones to UTC/Zulu time when marshalling, by creating a calendar with a -180 minutes offset and checking that the output is correctly adjusted.


79-81: Test for marshalling without fractional seconds.

This test ensures that the adapter correctly formats a date-time without fractional seconds, omitting the ".000" suffix from the output.


86-88: Test for marshalling with no timezone offset.

This test verifies that the adapter correctly handles XMLGregorianCalendar instances with a zero timezone offset, ensuring the "Z" indicator is still included in the output.


91-124: Integration test with message parsing.

This test verifies that the adapter works correctly when integrated with MxPacs00800110 message parsing, ensuring that date-time values in the CreDt field are correctly preserved in Zulu format.


126-159: Important timezone conversion test.

This test verifies that the adapter correctly converts non-UTC timezones to Zulu time when parsing and marshalling messages, checking that an input with "-03:00" offset is converted to "Z" notation with the appropriate time adjustment.

CHANGELOG.md (5)

3-3: Version number downgraded to align with Java 8 back-port.

The version number has been downgraded from 10.x.x to 9.x.x, which aligns with the PR objective of back-porting to Java 8. This is consistent with the approach described in the PR description.

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


7-8: Version numbers consistently downgraded.

All version numbers in the changelog have been consistently downgraded to reflect the Java 8 back-port.

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

7-7: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


8-8: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


8-8: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


18-19: New entry for bug fix.

The new entry for version 9.5.4 documents a bug fix for an NPE in the DefaultMxMetadataStrategy, which is useful information for users upgrading from older versions.

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

18-18: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


19-19: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


19-19: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


25-27: New entry for ZuluDateTimeAdapter fix.

This entry documents the fix in ZuluDateTimeAdapter, which is related to the adapter we're reviewing in this PR. This ensures users are aware of the improvement.

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

25-25: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


26-26: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


26-26: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


42-44: Zulu timezone standardization.

The entry for version 9.4.5 documents a change to always use Zulu timezone with "Z" indicator in BusinessApplicationHeaderV01, which is consistent with the ZuluDateTimeAdapter implementation we're reviewing.

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

42-42: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


43-43: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


43-43: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


44-44: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)

iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/AbstractMX.java (4)

36-37: Imports changed to use javax.xml.bind instead of jakarta.xml.bind

This change correctly implements the Java 8 backport by replacing Jakarta EE XML binding (which requires Java 11+) with the legacy Java EE javax.xml.bind packages that are available in Java 8.


203-207: JSON deserialization configuration updated for XMLGregorianCalendar support

The Gson builder configuration has been updated to register type adapters for XMLGregorianCalendar and AppHdr, which aligns with the project's move from java.time to XMLGregorianCalendar for Java 8 compatibility.


219-223: Consistent JSON deserialization configuration for static method

This change mirrors the type adapter configuration used in the instance method, ensuring consistent handling of XMLGregorianCalendar and AppHdr when deserializing JSON across both entry points.


563-571: JSON serialization updated with XMLGregorianCalendar adapter

The toJson method has been modified to use XMLGregorianCalendarAdapter with type hierarchy registration, ensuring proper serialization of date-time values in the Java 8 compatible format. The additional explanatory comment clarifies why AbstractMX.class is used explicitly.

iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/BusinessAppHdrV01.java (5)

23-23: Adapter import updated for Java 8 compatibility

The import has been changed from OffsetDateTime-based adapter to ZuluDateTimeAdapter which works with XMLGregorianCalendar, aligning with the Java 8 compatibility requirements.


55-57: Added transient modifiers to static fields

The transient modifier has been added to static class constants to prevent them from being included in serialization. This is good practice since these fields don't need to be serialized and helps with Java 8 compatibility.


173-175: Changed creationDate return type to XMLGregorianCalendar

The method return type has been updated from OffsetDateTime to XMLGregorianCalendar to maintain Java 8 compatibility, aligning with the project's goal of replacing java.time with XMLGregorianCalendar.


181-187: Updated creation date generation to use XMLGregorianCalendarUtils

The implementation now uses XMLGregorianCalendarUtils.now() instead of OffsetDateTime.now(), providing the required Java 8 compatible date-time representation. This matches the pattern used in other header implementations as seen in the provided code snippets.


225-225: Updated date-time adapter for XML serialization

The adapter configuration has been updated to use ZuluDateTimeAdapter wrapped by IsoDateTimeAdapter, ensuring proper ISO 8601 formatting of XMLGregorianCalendar instances when marshalling to XML.

iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/LegacyAppHdr.java (4)

28-37: Imports updated to use javax.xml.bind for Java 8 compatibility

The Jakarta XML binding imports have been replaced with Java EE (javax) equivalents to ensure Java 8 compatibility, consistent with the backporting objective of this PR.


52-54: Added transient modifiers to static fields

The transient modifier has been added to static class variables to prevent them from being included in serialization, which is appropriate for these non-serializable static fields.


181-183: Changed creationDate return type to XMLGregorianCalendar

The method return type has been updated from OffsetDateTime to XMLGregorianCalendar, which is consistent with the Java 8 backporting efforts and aligns with similar changes in the BusinessAppHdrV01 class.


189-195: Updated creation date generation to use XMLGregorianCalendarUtils

Similar to other header implementations, the code now uses XMLGregorianCalendarUtils.now() to generate dates in the Java 8 compatible XMLGregorianCalendar format instead of OffsetDateTime.now().

iso20022-core/src/main/java/com/prowidesoftware/swift/model/mx/adapters/TypeAdaptersConfiguration.java (4)

20-20: Import updated to use javax.xml.bind for Java 8 compatibility

The Jakarta XML binding import has been replaced with the Java EE equivalent, ensuring Java 8 compatibility consistent with changes in other files.


32-32: Updated documentation to reflect new adapter types

The class documentation has been updated to reference the new adapter implementations (ZonedDateTimeAdapter, SimpleDateAdapter, ZonedTimeAdapter) that work with XMLGregorianCalendar instead of the previous java.time-based adapters.

Also applies to: 57-59


62-65: Replaced adapter implementations with Java 8 compatible versions

The constructor now initializes adapters with Java 8 compatible implementations (ZonedDateTimeAdapter, SimpleDateAdapter, ZonedTimeAdapter) that work with XMLGregorianCalendar instead of java.time types like OffsetDateTime, ensuring compatibility with the backporting requirements.


68-82: Simplified adapter list creation

The asList method has been simplified by removing checks for IsoYearMonthAdapter, IsoYearAdapter, and IsoMonthAdapter, which aligns with the removal of these fields from the class. This streamlines the configuration to focus on the core date-time adapters needed for Java 8 compatibility.

@@ -16,7 +16,7 @@
package com.prowidesoftware.swift.model.mx;

import com.prowidesoftware.swift.model.mx.adapters.TypeAdaptersConfiguration;
import jakarta.xml.bind.JAXBContext;
import javax.xml.bind.JAXBContext;
Copy link
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick (assertive)

Update JAXBContext Import for Java 8 Compatibility

The import statement has been updated from the Jakarta package to the Javax package for JAXBContext. This change is aligned with the project’s objective to back-port to Java 8, ensuring that the code relies on legacy JAXB implementations rather than the newer Jakarta versions. Please verify that:

  • All JAXB-related imports across the project are consistently updated.
  • Dependencies (e.g., in your build configuration) correctly support the Java 8 javax.xml.bind package.

Comment on lines +29 to +32
@Override
public String marshal(XMLGregorianCalendar cal) throws Exception {
return "foobar";
}
Copy link
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick (assertive)

Consider more specific exception handling in marshal method.

The method declares it throws Exception, but the implementation doesn't appear to throw any exceptions. Consider removing the throws clause or specifying more precise exception types.

-    public String marshal(XMLGregorianCalendar cal) throws Exception {
+    public String marshal(XMLGregorianCalendar cal) {
         return "foobar";
     }
📝 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.

Suggested change
@Override
public String marshal(XMLGregorianCalendar cal) throws Exception {
return "foobar";
}
@Override
public String marshal(XMLGregorianCalendar cal) {
return "foobar";
}

Comment on lines +24 to +27
@Override
public XMLGregorianCalendar unmarshal(String v) throws Exception {
return DatatypeFactory.newInstance().newXMLGregorianCalendar();
}
Copy link
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick (assertive)

Consider more specific exception handling.

The method declares it throws a generic Exception. For improved error handling, consider catching specific exceptions from DatatypeFactory.newInstance() and throwing more specific exceptions.

-    public XMLGregorianCalendar unmarshal(String v) throws Exception {
+    public XMLGregorianCalendar unmarshal(String v) throws javax.xml.datatype.DatatypeConfigurationException {
         return DatatypeFactory.newInstance().newXMLGregorianCalendar();
     }
📝 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.

Suggested change
@Override
public XMLGregorianCalendar unmarshal(String v) throws Exception {
return DatatypeFactory.newInstance().newXMLGregorianCalendar();
}
@Override
public XMLGregorianCalendar unmarshal(String v) throws javax.xml.datatype.DatatypeConfigurationException {
return DatatypeFactory.newInstance().newXMLGregorianCalendar();
}

Comment on lines +23 to 24
* Cache for {@link javax.xml.bind.JAXBContext} instances per message type.
*
Copy link
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick (assertive)

Enhanced Javadoc for Clarity
The Javadoc comment has been updated on lines 23–24 to reflect the new package reference (javax.xml.bind.JAXBContext) and improve the readability of the documentation. This minor grammatical refinement aids in maintaining clear developer communication.

Comment on lines +41 to +56
static XMLGregorianCalendar now() {
GregorianCalendar c = new GregorianCalendar();
c.setTime(Calendar.getInstance(TimeZone.getTimeZone("UTC")).getTime());
XMLGregorianCalendar creationDate = null;
try {
/*
* important: cannot create XMLGregorianCalendar directly from Calendar object,
* specific format must be used for the unmarshalled XML to pass XSD validation.
*/
creationDate = DatatypeFactory.newInstance()
.newXMLGregorianCalendar(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").format(c.getTime()));
} catch (DatatypeConfigurationException e) {
log.log(Level.WARNING, "error initializing header creation date", e);
}
return creationDate;
}
Copy link
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick (assertive)

Consider adding more utility methods for date conversion

While the current implementation for now() is solid, consider adding more utility methods for common operations like:

  • Converting between java.util.Date and XMLGregorianCalendar
  • Parsing ISO8601 strings to XMLGregorianCalendar
  • Formatting XMLGregorianCalendar to strings

These would enhance the utility class and provide consistent date handling throughout the application.

Comment on lines +57 to +84
@Override
public XMLGregorianCalendar deserialize(
JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) {
try {
JsonObject obj = jsonElement.getAsJsonObject();
XMLGregorianCalendar xmlGregCalendar = DatatypeFactory.newInstance()
.newXMLGregorianCalendar(
obj.get(YEAR).getAsInt(),
obj.get(MONTH).getAsInt(),
obj.get(DAY).getAsInt(),
obj.get(HOUR).getAsInt(),
obj.get(MINUTE).getAsInt(),
obj.get(SECOND).getAsInt(),
0,
obj.get(TIMEZONE).getAsInt());
JsonElement fractional = obj.get(FRACTIONAL);
if (fractional != null) {
xmlGregCalendar.setFractionalSecond(fractional.getAsBigDecimal());
} else {
xmlGregCalendar.setFractionalSecond(null);
}
return xmlGregCalendar;
// use the line below as implementation in Java 8
// return DatatypeFactory.newInstance().newXMLGregorianCalendar(jsonElement.getAsString());
} catch (Exception e) {
e.printStackTrace();
return null;
}
Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Robust JSON deserialization with error handling improvement needed.

The deserialization logic correctly reconstructs an XMLGregorianCalendar from JSON, handling fractional seconds appropriately. However, the exception handling could be improved.

         try {
             // Existing code...
         } catch (Exception e) {
-            e.printStackTrace();
+            // Use a logger instead of printing stack trace
+            Logger.getLogger(XMLGregorianCalendarAdapter.class.getName())
+                  .log(Level.SEVERE, "Error deserializing XMLGregorianCalendar", e);
             return null;
         }

Using e.printStackTrace() directly is not recommended in production code as it writes to System.err without any control. A proper logging approach would be more appropriate for this library.

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

Suggested change
@Override
public XMLGregorianCalendar deserialize(
JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) {
try {
JsonObject obj = jsonElement.getAsJsonObject();
XMLGregorianCalendar xmlGregCalendar = DatatypeFactory.newInstance()
.newXMLGregorianCalendar(
obj.get(YEAR).getAsInt(),
obj.get(MONTH).getAsInt(),
obj.get(DAY).getAsInt(),
obj.get(HOUR).getAsInt(),
obj.get(MINUTE).getAsInt(),
obj.get(SECOND).getAsInt(),
0,
obj.get(TIMEZONE).getAsInt());
JsonElement fractional = obj.get(FRACTIONAL);
if (fractional != null) {
xmlGregCalendar.setFractionalSecond(fractional.getAsBigDecimal());
} else {
xmlGregCalendar.setFractionalSecond(null);
}
return xmlGregCalendar;
// use the line below as implementation in Java 8
// return DatatypeFactory.newInstance().newXMLGregorianCalendar(jsonElement.getAsString());
} catch (Exception e) {
e.printStackTrace();
return null;
}
@Override
public XMLGregorianCalendar deserialize(
JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) {
try {
JsonObject obj = jsonElement.getAsJsonObject();
XMLGregorianCalendar xmlGregCalendar = DatatypeFactory.newInstance()
.newXMLGregorianCalendar(
obj.get(YEAR).getAsInt(),
obj.get(MONTH).getAsInt(),
obj.get(DAY).getAsInt(),
obj.get(HOUR).getAsInt(),
obj.get(MINUTE).getAsInt(),
obj.get(SECOND).getAsInt(),
0,
obj.get(TIMEZONE).getAsInt());
JsonElement fractional = obj.get(FRACTIONAL);
if (fractional != null) {
xmlGregCalendar.setFractionalSecond(fractional.getAsBigDecimal());
} else {
xmlGregCalendar.setFractionalSecond(null);
}
return xmlGregCalendar;
// use the line below as implementation in Java 8
// return DatatypeFactory.newInstance().newXMLGregorianCalendar(jsonElement.getAsString());
} catch (Exception e) {
// Use a logger instead of printing stack trace
Logger.getLogger(XMLGregorianCalendarAdapter.class.getName())
.log(Level.SEVERE, "Error deserializing XMLGregorianCalendar", e);
return null;
}
}

Comment on lines +108 to +116
private static XMLGregorianCalendar getXmlGregorianCalendarInZulu(XMLGregorianCalendar cal)
throws DatatypeConfigurationException {
DatatypeFactory datatypeFactory = DatatypeFactory.newInstance();
XMLGregorianCalendar xmlGregorianCalendar = datatypeFactory.newXMLGregorianCalendar();
GregorianCalendar gregorianCalendar = xmlGregorianCalendar.toGregorianCalendar();
gregorianCalendar.setTime(cal.toGregorianCalendar().getTime());
gregorianCalendar.setTimeZone(TimeZone.getTimeZone("Z"));
return datatypeFactory.newXMLGregorianCalendar(gregorianCalendar);
}
Copy link
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick (assertive)

Potential inefficiency in getXmlGregorianCalendarInZulu method.

The method creates a new XMLGregorianCalendar but immediately calls toGregorianCalendar() before setting any values. This seems unnecessary and could be simplified.

Consider simplifying the method to avoid creating an unused XMLGregorianCalendar:

private static XMLGregorianCalendar getXmlGregorianCalendarInZulu(XMLGregorianCalendar cal)
        throws DatatypeConfigurationException {
    DatatypeFactory datatypeFactory = DatatypeFactory.newInstance();
-   XMLGregorianCalendar xmlGregorianCalendar = datatypeFactory.newXMLGregorianCalendar();
-   GregorianCalendar gregorianCalendar = xmlGregorianCalendar.toGregorianCalendar();
+   GregorianCalendar gregorianCalendar = new GregorianCalendar();
    gregorianCalendar.setTime(cal.toGregorianCalendar().getTime());
    gregorianCalendar.setTimeZone(TimeZone.getTimeZone("Z"));
    return datatypeFactory.newXMLGregorianCalendar(gregorianCalendar);
}
📝 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.

Suggested change
private static XMLGregorianCalendar getXmlGregorianCalendarInZulu(XMLGregorianCalendar cal)
throws DatatypeConfigurationException {
DatatypeFactory datatypeFactory = DatatypeFactory.newInstance();
XMLGregorianCalendar xmlGregorianCalendar = datatypeFactory.newXMLGregorianCalendar();
GregorianCalendar gregorianCalendar = xmlGregorianCalendar.toGregorianCalendar();
gregorianCalendar.setTime(cal.toGregorianCalendar().getTime());
gregorianCalendar.setTimeZone(TimeZone.getTimeZone("Z"));
return datatypeFactory.newXMLGregorianCalendar(gregorianCalendar);
}
private static XMLGregorianCalendar getXmlGregorianCalendarInZulu(XMLGregorianCalendar cal)
throws DatatypeConfigurationException {
DatatypeFactory datatypeFactory = DatatypeFactory.newInstance();
- XMLGregorianCalendar xmlGregorianCalendar = datatypeFactory.newXMLGregorianCalendar();
- GregorianCalendar gregorianCalendar = xmlGregorianCalendar.toGregorianCalendar();
+ GregorianCalendar gregorianCalendar = new GregorianCalendar();
gregorianCalendar.setTime(cal.toGregorianCalendar().getTime());
gregorianCalendar.setTimeZone(TimeZone.getTimeZone("Z"));
return datatypeFactory.newXMLGregorianCalendar(gregorianCalendar);
}

* (PW-2113) `MxParseUtils` added a method to extract the enclosed MT from a multi-format MX message
* (PW-2113) `MxParseUtils` added methods to extract comments from XML string
* Added new SettlementInfo class, and added MxParseUtils#getSettlementInfo to extract it from a raw MX message.
* Moved and enhanced the MxSwiftMessage#findElement to support multiple element's path
* Moved and enhanced the MxSwiftMessage#findElement to support multiple element's path
Copy link
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick (assertive)

Fix trailing whitespace in changelog.

There's a trailing space at the end of line 14 which should be removed.

-  * Moved and enhanced the MxSwiftMessage#findElement to support multiple element's path 
+  * Moved and enhanced the MxSwiftMessage#findElement to support multiple element's path
📝 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.

Suggested change
* Moved and enhanced the MxSwiftMessage#findElement to support multiple element's path
* Moved and enhanced the MxSwiftMessage#findElement to support multiple element's path
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

14-14: Unordered list indentation
Expected: 0; Actual: 2

(MD007, ul-indent)


14-14: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)

* Update apache-commons-lang3 from 3.14.0 to 3.17.0 fixing derived apache-text dependency vulnerabilities
* Gradle wrapper update to 8.12

Copy link
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick (assertive)

Fix trailing whitespace in changelog.

There's a trailing space at the end of line 17 which should be removed.

-  * Gradle wrapper update to 8.12
- 
+  * Gradle wrapper update to 8.12
+

Committable suggestion skipped: line range outside the PR's diff.

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

17-17: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)

* Update jaxb dependency from com.sun.xml.bind:jaxb-impl:4.0.2 to 4.0.5 containing several jaxb bugfixes

#### 10.1.4 - January 2024

Copy link
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick (assertive)

Fix trailing whitespace in changelog.

There's a trailing space at the end of line 44 which should be removed.

-  * (PW-1875) Changed the BusinessApplicationHeaderV01 marshaller to always use Zulu timezone with "Z" indicator
- 
+  * (PW-1875) Changed the BusinessApplicationHeaderV01 marshaller to always use Zulu timezone with "Z" indicator
+

Committable suggestion skipped: line range outside the PR's diff.

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

44-44: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)

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.

1 participant