This file provides guidance to Claude Code when working with code in this repository.
Prowide Core is the open-source Java framework for SWIFT FIN messages (MT category 1–9, plus headers, service messages, ACK/NAK). Active since 2006 (formerly WIFE). Apache 2.0. Companion library to prowide-iso20022.
Includes:
- Java model for ISO 15022 MT (e.g.
MT103,Field32A) for all categories - MT parser (FIN / RJE → Java) and builder (Java → FIN / RJE)
- MT ↔ JSON conversion
- MT ↔ proprietary XML conversion
- JPA entity model for MT persistence
- BIC and IBAN validation
./gradlew build # Compile + test + assemble
./gradlew test # Unit tests only (JUnit 5)
./gradlew spotlessApply # Format code
./gradlew spotlessCheck # Verify formatting
./gradlew javadoc # Generate JavadocRun a single test: ./gradlew test --tests "ClassName".
src/main/java — hand-written API (MODIFY HERE)
src/generated/java — generated MT field + message classes (DO NOT MODIFY)
src/test/java — unit tests
Generated code comes from pw-swift-codegen. To change generated output, edit the codegen project and re-run its tasks. The .claude/hooks/block-generated.sh PreToolUse hook refuses edits under src/generated/.
SwiftMessage— root parsed MT message objectSwiftBlock1…SwiftBlock5— the five SWIFT blocksAbstractMT/MTxxx— typed message wrappers (e.g.MT103)Fieldhierarchy — typed field classes (e.g.Field32A)SwiftParser/SwiftWriter— FIN parsing/serializationIBAN,BIC— validation helpersSafeXmlUtils— XXE-safe XML utilities; always use this for XML processing
- SRU = SWIFT's annual Standards Release Update (e.g. SRU2026)
- Version format:
SRU{YEAR}-{semver}via Axion Release Plugin (Git tags) - A new SRU is generated in a branch ~6 months before SWIFT's production date
.SRU2025.java8-maintenance/.SRU2026sibling working copies exist for active maintenance branches — when in doubt, checkgradle.propertiesfor the current SRU- Java 11+ for current SRU; older branches may require Java 8
- Tests: JUnit 5 + AssertJ. XMLUnit for XML comparisons.
- Spotless (Palantir Java Format) on
src/main/javaandsrc/test/java. - Javadoc: no
@author; add@sinceto new public API matching the upcoming version inCHANGELOG.md; prefer@seeover duplication. - Lombok is not used here (kept dependency-light for downstream consumers).
- New entries in
CHANGELOG.mdfor any functional change.
- Maven Central:
com.prowidesoftware:pw-swift-core - Nexus: internal SNAPSHOT and licensed-product builds
- Downstream consumers: prowide-iso20022, pw-swift-integrator, pw-swift-enterprise, several customer products. Any non-trivial API change must be coordinated.