Skip to content

Commit 81f6edd

Browse files
committed
Merge remote-tracking branch 'origin/main' into SRU2026
2 parents 7e5f163 + baf1339 commit 81f6edd

20 files changed

Lines changed: 1266 additions & 165 deletions

File tree

.claude/hooks/block-generated.sh

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#!/bin/sh
2+
# PreToolUse hook: block writes to generated source folders.
3+
set -eu
4+
5+
path=$(jq -r '.tool_input.file_path // empty')
6+
[ -z "$path" ] && exit 0
7+
8+
case "$path" in
9+
*/src/generated/*|*/src/generated)
10+
cat >&2 <<MSG
11+
Refusing to modify $path.
12+
This file is under src/generated and is copied from external codegen projects.
13+
Edit the upstream codegen source instead, or regenerate locally.
14+
MSG
15+
exit 2
16+
;;
17+
esac
18+
19+
exit 0

.claude/hooks/no-author-tag.sh

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#!/bin/sh
2+
# PreToolUse hook: reject @author javadoc tags in Java edits.
3+
set -eu
4+
5+
input=$(cat)
6+
tool=$(printf '%s' "$input" | jq -r '.tool_name // empty')
7+
path=$(printf '%s' "$input" | jq -r '.tool_input.file_path // empty')
8+
9+
case "$path" in
10+
*.java) ;;
11+
*) exit 0 ;;
12+
esac
13+
14+
case "$tool" in
15+
Edit) content=$(printf '%s' "$input" | jq -r '.tool_input.new_string // empty') ;;
16+
Write) content=$(printf '%s' "$input" | jq -r '.tool_input.content // empty') ;;
17+
NotebookEdit) content=$(printf '%s' "$input" | jq -r '.tool_input.new_source // empty') ;;
18+
*) exit 0 ;;
19+
esac
20+
21+
if printf '%s' "$content" | grep -Eq '(^|[^A-Za-z0-9_])@author([^A-Za-z0-9_]|$)'; then
22+
cat >&2 <<MSG
23+
Refusing edit: $path introduces an @author javadoc tag.
24+
Project convention (CLAUDE.md): do not use @author. Use @since for new public APIs.
25+
MSG
26+
exit 2
27+
fi
28+
29+
exit 0

.claude/settings.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,15 @@
11
{
2+
"hooks": {
3+
"PreToolUse": [
4+
{
5+
"matcher": "Edit|Write|NotebookEdit",
6+
"hooks": [
7+
{ "type": "command", "command": "sh $CLAUDE_PROJECT_DIR/.claude/hooks/block-generated.sh" },
8+
{ "type": "command", "command": "sh $CLAUDE_PROJECT_DIR/.claude/hooks/no-author-tag.sh" }
9+
]
10+
}
11+
]
12+
},
213
"permissions": {
314
"allow": [
415
"Bash(./gradlew:*)",

.github/workflows/gradle.yml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ name: Java CI with Gradle
44

55
on:
66
push:
7-
branches: [ "main", "SRU2024_v10" ]
7+
branches: [ "main", "SRU2025-java8-maintenance", "SRU2026" ]
88
# pull_request:
9-
# branches: [ "main", "SRU2024_v10" ]
9+
# branches: [ "main" ]
1010

1111
jobs:
1212

@@ -19,17 +19,17 @@ jobs:
1919
steps:
2020
- uses: actions/checkout@v4
2121

22-
# Set the JDK 11 for the latest code branch (Prowide Core v10)
22+
# Set up JDK 11 for current development branches (main, next SRU)
2323
- name: Set up JDK 11
24-
if: github.ref == 'refs/heads/SRU2024_v10' || github.head_ref == 'SRU2024_v10'
24+
if: github.ref != 'refs/heads/SRU2025-java8-maintenance' && github.head_ref != 'SRU2025-java8-maintenance'
2525
uses: actions/setup-java@v4
2626
with:
2727
java-version: '11'
2828
distribution: 'temurin'
2929

30-
# Set the JDK 8 for the legacy code branch
30+
# Set up JDK 8 only for the legacy Java 8 maintenance branch
3131
- name: Set up JDK 8
32-
if: github.ref != 'refs/heads/SRU2024_v10' && github.head_ref != 'SRU2024_v10'
32+
if: github.ref == 'refs/heads/SRU2025-java8-maintenance' || github.head_ref == 'SRU2025-java8-maintenance'
3333
uses: actions/setup-java@v4
3434
with:
3535
java-version: '8'
@@ -47,9 +47,9 @@ jobs:
4747
run: ./gradlew test --info
4848

4949
# This job generates and submits a dependency graph, enabling Dependabot Alerts for all project dependencies.
50-
# We only do it for the SRU2024_v10 branch to avoid spamming the Dependabot alerts for the legacy Java 8 code.
50+
# We only run it on the default branch (main) to avoid duplicate alerts from maintenance branches.
5151
dependency-submission:
52-
if: github.ref == 'refs/heads/SRU2024_v10' || github.head_ref == 'SRU2024_v10'
52+
if: github.ref == 'refs/heads/main' || github.head_ref == 'main'
5353
runs-on: ubuntu-latest
5454
permissions:
5555
contents: write

CHANGELOG.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
# Prowide ISO 20022 - CHANGELOG
22

3+
### 10.4.1 - SNAPSHOT
4+
* Feat: `xsd:any` wildcard content (e.g. `SplmtryData/Envlp`, signature envelopes) is no longer dropped on parse; it is captured as an `org.w3c.dom.Element` with namespaces preserved (GH-39, GH-43)
5+
* Fix: `toJson()` now serializes `@XmlAnyElement` wildcard content as raw XML instead of an empty `{}`, and `fromJson()` restores it back to a DOM Element (round-trippable)
6+
* Updated gson from 2.13.2 to 2.14.0
7+
38
### 10.4.0 - May 2026
49
* SWIFT Standard release update 2026 (live 14 November 2026)
510
* Yearly revision of deprecation phase (see https://dev.prowidesoftware.com/SRU2024/getting-started/deprecation/)
11+
* Updated gson from 2.13.2 to 2.14.0
612

713
### 10.3.8 - May 2026
814
* (PW-3202) Fix: removed spurious `Error propagating pending prefix mapping` warnings when parsing regular ISO 20022 Documents wrapped in an SNL-like envelope
915
* (PW-3185) `MxSwiftMessage.toJson()` now uses 1-based months (January=1) for Calendar fields and emits a `schemaVersion` marker. `fromJson()` reads both new and legacy (0-based) payloads transparently.
10-
* Updated gson from 2.13.2 to 2.14.0
1116

1217
### 10.3.7 - April 2026
1318
* (PW-3207) Fix: update semt.044.001.01 model from draft4 to draft5

CLAUDE.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,6 @@ src/generated/java → JAXB-generated code from XSD schemas (DO NOT MODIFY)
149149
- Uses **Axion Release Plugin** for Git-based versioning
150150
- Version format: `SRU{YEAR}-{semantic-version}` (e.g., `SRU2024-10.2.9`)
151151
- **SRU** (Standards Release Update) tracks SWIFT's annual schema releases
152-
- Always update `CHANGELOG.md` with functional, concise entries
153152

154153
### Build Performance
155154
- **Very large codebase** - full build can be slow

build.gradle

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ scmVersion {
3737
}
3838
}
3939
//project.version = "${SRU}-${scmVersion.version}"
40-
project.version = "${SRU}-10.4.0"
40+
project.version = "${SRU}-10.4.1"
4141

4242
allprojects {
4343

@@ -162,13 +162,15 @@ project(':iso20022-core') {
162162

163163
testImplementation "jakarta.persistence:jakarta.persistence-api:${jakartaPersistenceVersion}"
164164
testImplementation 'org.junit.jupiter:junit-jupiter:5.11.4'
165-
testImplementation 'com.google.guava:guava:33.5.0-jre'
165+
testImplementation 'com.google.guava:guava:33.6.0-jre'
166166
testImplementation 'org.assertj:assertj-core:3.27.7'
167-
testImplementation 'org.xmlunit:xmlunit-core:2.11.0'
168-
testImplementation 'org.xmlunit:xmlunit-matchers:2.11.0'
169-
testImplementation 'org.xmlunit:xmlunit-assertj:2.11.0'
167+
testImplementation 'org.xmlunit:xmlunit-core:2.12.0'
168+
testImplementation 'org.xmlunit:xmlunit-matchers:2.12.0'
169+
testImplementation 'org.xmlunit:xmlunit-assertj:2.12.0'
170170
testImplementation project(':model-acmt-mx')
171171
testImplementation project(':model-acmt-types')
172+
testImplementation project(':model-admi-mx')
173+
testImplementation project(':model-admi-types')
172174
testImplementation project(':model-camt-mx')
173175
testImplementation project(':model-camt-types')
174176
testImplementation project(':model-catm-mx')

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.4-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.5-bin.zip
44
networkTimeout=10000
55
validateDistributionUrl=true
66
zipStoreBase=GRADLE_USER_HOME

gradlew.bat

Lines changed: 94 additions & 94 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)