Releases: marcwrobel/jbanking
4.3.0
Added
- Support numeric characters in BIC's institution code (#452).
Currently, the BIC validation checks if the institution code contains only letters.
ISO 9362:2022 changed this to also allow numeric characters. - Add currency code XAD/396 to
IsoCurrency(#488).
This currency code was introduced by ISO-4217 amendment number 179 and is effective from 12 May 2025.
According to the amendment :The Finance Department Arab Monetary Fund (AMF) is applying for new Fund currency code Arab Accounting Dinar with Alphabetic Code XAD and Numeric Code 396.
The Arab Accounting Dinar is the official and reporting currency of the Arab Monetary Fund Reserve Asset.
The decimal for the currency is set to 1.00, which corresponds to a Minor Unit of 2. - Add currency code ZWG/924 to
IsoCurrency(#408).
This currency code was introduced by ISO-4217 amendment number 177 and is effective from 25 June 2024.
According to the amendment :The monetary authority of Zimbabwe (Reserve Bank of Zimbabwe) has confirmed that the new currency ZWG will replace the old currency ZWL.
The name of the new currency ZWG will be Zimbabwe Gold with new numeric code 924 and is effective from 25 June 2024.
Changed
- Add the National Day of Mourning for former President Jimmy Carter
to the list of holidays of the New York Stock Exchange calendar (#477).
Deprecated
- Deprecate for removal the cuban convertible peso (CUC) as per ISO-4217 amendment number 178 (#474).
- Deprecate for removal the zimbabwean dollar (ZWL) as per ISO-4217 amendment number 177 (#408).
- Deprecate for removal the sierra leonean leone (SLL) as per ISO-4217 amendment number 175 (#320).
Internal
- Bump com.opengamma.strata:strata-basics from 2.12.28 to 2.12.63 (#376, #379, #383, #386, #392, #396, #405, #412, #453, #481, #493, #499).
- Bump com.google.guava:guava from 32.1.3 to 33.5.0 (#378, #390, #398, #403, #420, #428, #458, #483, #487, #496).
- Bump actions/setup-java from 3.13.0 to v5 (#374, #389, #416, #425, #444, #494).
- Bump actions/cache from 3.3.2 to v4 (#381, #385, #391, #455).
- Bump actions/checkout from 4.1.1 to v5 (#387, #397, #400, #407, #443, #494).
- Bump github/codeql-action from 2.13.4 to v4 (#401, #409, #417, #427, #454, #500).
- Use only major versions for GitHub-managed actions (#480).
- Bump internal Java version from 17.0.8 to 17.0.17 (#479, #501).
- Bump internal Maven version from 3.9.4 to 3.9.9 (#501).
4.2.0
Added
- Officially support Java 21 (#367).
- Drop official support for Java 20 (#367).
- Support random IBAN generation based on countries (
RandomIban.next(IsoCountry...)), country alpha-2
codes (RandomIban.next(String...)) or currencies (RandomIban.next(IsoCurrency...)) (#339). - Support random BIC generation based on countries (
RandomBic.next(IsoCountry...)), country alpha-2
codes (RandomBic.next(String...)) or currencies (RandomBic.next(IsoCurrency...)) (#338).
Changed
- Make
Bicconstants public (during #339). New available constants areBIC8_LENGTH,
BIC11_LENGTH,INSTITUTION_CODE_INDEX,INSTITUTION_CODE_LENGTH,COUNTRY_CODE_INDEX,
COUNTRY_CODE_LENGTH,LOCATION_CODE_INDEX,LOCATION_CODE_LENGTH,BRANCH_CODE_INDEX,
BRANCH_CODE_LENGTH.
Internal
- Comment GitHub actions with version (#287).
- Bump actions/cache from 3.2.2 to 3.3.2 (#284, #294, #301, #305, #308, #309, #364).
- Bump actions/setup-java from 3.9.0 to 3.13.0 (#299, #318, #356, #365).
- Bump actions/checkout from 3.3.0 to 4.1.1 (#313, #316, #324, #352, #362, #363, #366, #370).
- Bump github/codeql-action from 2.1.37 to 2.13.4 (#286, #290, #291, #295, #300, #302, #307, #310,
#312, #315, #317, #321, #322, #325, #326, #328, #329, #335, #348, #353). - Bump cyclonedx-maven-plugin from 2.7.4 to 2.7.5 (#304).
- Bump strata-basics test dependency from 2.12.17 to 2.12.28 (#285, #288, #289, #311, #330, #332, #333, #347, #350, #358).
- Bump parent from 3.0.0 to 3.0.2 (#306, #331).
- Update build workflow to use Java 20 instead of Java 19 (#336).
- Bump java from 17.0.5 to 17.0.8+101 (#340, #361, #363).
- Bump maven from 3.8.6 to 3.9.4 (#340, #361).
- Bump guava test dependency from 31.1-jre to 32.1.3-jre (#345, #351, #355, #357, #369).
- Update benchmarks results (#341).
- Migrate tests to AssertJ (#359).
- Upgrade analyze workflow to use Java 17 (#361).
4.1.0
Changed
- Add Bank Holiday for the Coronation of King Charles III to LONDON calendar (#266).
- Move Croatia (HR) from kuna currency (HKR) countries to euro currency (EUR) countries (#256).
- Verify enums are up-to-date (#278).
Deprecated
- Deprecate the croatian kuna currency (HKR) as per ISO-4217 amendment number 174 (#256).
Internal
- Reactivate SonarCloud analysis for PR originating from this repo (#243).
- Grant permissions to comment pull-requests to SonarCloud (#243).
- Improve caching during SonarCloud analysis (#243).
- Merge codeql and analyze workflows (#243).
- Bump github/codeql-action from 2.1.28 to 2.1.37 (#240, #255, #259, #260, #263, #265, #268).
- Bump actions/setup-java from 3.6.0 to 3.9.0 (#262, #264, #269).
- Bump actions/checkout from 3.1.0 to 3.3.0 (#267, #276).
- Bump actions/cache from 3.0.11 to 3.2.2 (#272, #274, #275).
- Bump parent from 2.7.0 to 3.0.0 (#241, #261, #271, #273).
- Bump strata-basics from 2.12.15 to 2.12.17 (#266, #270).
- Bump development java version from 17.0.4+101 to 17.0.5+8 (#258).
- Bump development maven version from 3.8.5 to 3.8.6 (during #266).
- Enable reproducible builds (#247).
- Add Gitpod integration to facilitate contributions (#251).
- Trigger analysis only if source-related files has been modified (#246).
- Integrate CycloneDX to publish an SBOM (#257).
4.0.0
Added
- Add random IBAN generation for all the ISO 13616-compliant national IBAN formats (#153).
- Add
Iban#getBankIdentifier()to get the bank identifier from an Iban (#162). - Add
Iban#getBranchIdentifier()to get the branch identifier from an Iban (#162). - Add
Iban#getAccountNumber()to get the account number from an Iban (#162). - Add
Iban#getNationalCheckDigit()to get the national check digit from an Iban (#162). - Make
CreditorIdentifier#REGEXpublic (as part of #172). - Make
Iban#REGEXpublic (as part of #171). - Make
BbanStructurepublic (as part of #153).BbanStructureis an enum that holds countries BBAN structure as listed in the IBAN registry. - Add
SwiftPatternCharacterRepresentationto centralize information about SWIFT pattern character representations (as part of #171). - Document alternatives to jbanking (#164).
Changed
- (breaking change) Make
CreditorIdentifierfinal (#116). - (breaking change) Rename
Bic#BIC_REGEXtoBic#REGEXand make it accept untrimmed strings (as part of #170 and #176). - (breaking change) Make
Ibannot accepting values containing spaces anymore (as part of #116). This means
printable or untrimmed IBANs are not considered valid values anymore. Note that this feature was not documented. - (breaking change) Make
IbanCheckDigit#validatereturnfalsefornullor less than 5 characters strings (#188). - (breaking change) Make
SwiftPattern#toStringreturning only the SWIFT pattern expression (as part of #222).
Prior to this versionSwiftPattern#toStringwere returning the SWIFT pattern expression with its corresponding regular expression. - (breaking change) Make
BicFormatException,CreditorIdentifierFormatException,IbanFormatExceptionandSwiftPatternSyntaxExceptionextendIllegalArgumentExceptioninstead ofRuntimeException(#220). - (breaking change) Move
IbanCheckDigitfromfr.marcwrobel.jbanking.ibantofr.marcwrobel.jbanking.checkdigit(#174). - (breaking change) Accept untrimmed input strings in
Bic,CreditorIdentifier,Iban,IsoCountryandIsoCurrency(#176). In earlier versions only case-insensitive were accepted. - Get rid of regexes to validate BICs (#170). This significantly increased the performances of BIC validation and creation (+200-300%).
- Get rid of regexes to validate Creditor Identifiers (#172). This significantly increased the performances of Creditor Identifiers validation and creation (+100-300%).
- Get rid of regexes to validate IBANs (#171). This significantly increased the performances of IBAN validation and creation (+200-400%).
- Improve javadoc (as part of #170 and #172).
- Add the state funeral of Queen Elizabeth II day to London calendar (#204).
- Add the national day of mourning for Her Majesty The Queen day to Sydney calendar (#204).
- Improve documentation of
Bic,CreditorIdentifier,IbanandSwiftPatternregarding serialization (as part of #222). - Update documentation to reflect the change from Turkey to Türkiye documented in the ISO 4217 Currency Code Service - Amendment number 173 (#207).
Fixed
- (breaking change)
Iban.isValid(String)orIbanCheckDigit.validate(String)returnfalseinstead of raising anIllegalArgumentExceptionwith invalid IBAN check digit (e.g.00,01, or99). - Fix
Bic,CreditorIdentifierandIbandocumentation (#209). It was not explicit that lowercase characters were accepted.
Removed
- (breaking change) Remove
Bic#BIC_PATTERN(as part of #170). If you still need to use the BIC regex, you may compile the pattern fromBic#REGEX, which has been kept for compatibility and documentation purposes.
Internal
- Bump strata-basics from 2.12.5 to 2.12.15 (#179, #204, #210).
- Bump github/codeql-action from 2.1.16 to 2.1.27 (#192, #206, #217).
- Bump actions/setup-java from 3.4.1 to 3.6.0 (#195, #202, #218).
- Bump actions/checkout from 3.0.2 to 3.1.0 (#205).
- Bump development java version from temurin-17.0.3+7 to temurin-17.0.4+101 (#212, #233).
- Bump benchmark java version from temurin-8.0.332+9 to temurin-8.0.345+1 (#233).
- Alphabetically sort
IsoCurrency,HolidaysandBbanStructureenums entries (#161). - Add benchmarks that track the evolution of jbanking performances from version to version (#166). Some numbers can be seen here.
- Increase JVM memory for Maven (#184). Sonar analysis fails with
OutOfMemoryError. - Remove bin/check-links (#129). The script has been moved to https://github.com/marcwrobel/checklinks.
- Configure dependabot to check for update of GitHub actions versions (#189).
- Add OpenSSF scorecard badge to the README (#193).
- Update build workflow to use Java 19 instead of Java 18 (#191).
- Use
Character.digitinstead ofCharacter.getNumericValueinIbanCheckDigitas recommended in Error Prone#CharacterGetNumericValue (closes #117). - Add serialization tests for serializable classes (#222).
- Add the
CheckDigitinterface and makeIbanCheckDigitimplements it (#174). - Enums maintenance - 2022/10 (#231).
Thanks
3.4.0
Added
- Add support for Abarundi (BI) IBAN numbers (#133).
- Add support for Djiboutian (DJ) IBAN numbers (#133).
- Add support for Russian (RU) IBAN numbers (#133).
- Add support for Sudanese (SD) IBAN numbers (#133).
- Add code samples in the project's readme (#137).
- Add a new
Bic#getCountry()method that return anIsoCountry(#149). - Add a new
CreditorIdentifier#getCountry()method that return anIsoCountry(#149). - Add a new
Iban#getCountry()method that return anIsoCountry(#149).
Fixed
- Fix some broken links in documentation (#129).
Internal
- Add a simple script to help to verify links in Javadoc (#129).
- Upgrade to actions/checkout v3.0.2 (#138).
- Upgrade to actions/setup-java v3.4.1 (#139).
- Upgrade to github/codeql-action v2.1.16 (#140).
- Pin actions to a full length commit SHA (#141).
- Enable experimental alerts for CodeQL (#145).
- Set up Maven dependencies caching (#143).
- Add a
CODEOWNERS(#142). - Add
@LastVerificationto document the last verification date of a list (#152).
3.3.0
Added
- Officially support Java 17 and 18 (#102).
Changed
- Update NYSE and New York FED calendars following Juneteenth National Independence Day Act (#98).
- Improve documentation: add examples, documentation on packages, an overview and fix typos (#121).
Fixed
- Make
IsoCurrencyandBbanStructureimmutable (#114). - Fix broken links generated by the javadoc search feature (#119).
Internal
- Upgrade to parent 2.7.0 (#100).
- Upgrade to strata 2.12.5 (#96, #99).
- Restrict
GITHUB_TOKENpermissions in GitHub workflows (#101). - Add a contribution guide (#101).
- Use javadoc.io as the project documentation (#101).
- Add the OpenSSF Best Practices badge on the project's README (#101).
- Restrict sonar analysis to main (#106).
- Automatically trigger all workflows weekly (#107).
- Prevent duplicate builds on “push” and “pull_request” simultaneous event (#109).
- Fix branch name in
codeql-analysis.ymlworkflow (#110). - Configure CI for maintenance branches (#112).
- Fix Sonatype lift
MissingSummarywarnings (#118). - Upgrade JDK version in development environment to 17 (#119).
- Use Maven --strict-checksums option by default (#123).
- Switch to formatter-maven-plugin for code formatting (#125).
- Disallow
@authortags in the Javadoc (#122).
3.2.0
Added
- Add currency code VED/926 to
IsoCurrency(#85). This currency code was introduced by ISO-4217 amendment number 170 and is effective from 1 October 2021. According to the amendment :The Bolívar Soberano (VES) is redenominated by removing six zeros from the denominations. A new currency code VED/926 representing the new valuation (1,000,000 times old VES/928) is introduced on 1 October 2021 for any internal needs during the redenomination process, but is not replacing VES as the official currency code. The Central Bank of Venezuela will not adopt the new codes in the local system, VES/928 remains in use.
The actual currency code VES/928 remains the valid code after 1 October 2021 to use in any future transactions to indicate the redenominated Bolívar Soberano.
- Add currency code SLE/925 to
IsoCurrency(#89). This currency code was introduced by ISO-4217 amendment number 171 and is effective from 1 April 2022. According to the amendment :The Sierra Leonean LEONE (SLL) is redenominated by removing three (3) zeros from the denominations. A new currency code SLE/925 representing the new valuation (1’000 times old SLL/694) is introduced on 1 st April 2022 for any internal needs during the redenomination process, and is replacing SLL as the official currency code, after the transition period to be determined.
During this transition period, both the old Leone and new Leone will be in physical circulation for at least 90 days.
The Bank of Sierra Leone will adopt the new code in the local system but SLL/694 shall remain in use until further notice.
The Sierra Leonean currency shall continue to be the LEONE and this will not change after redenomination.
Fixed
- Fix typos.
Internal
3.1.1
Fixed
- Fix IBAN and creditor identifier check digit validation (#82). Validation of IBANs and creditor identifiers with a check digit equals to
00,01or99will now raise anIllegalArgumentExceptioninstead of just being considered invalid. Note that this fix has an impact on both IBANs and creditor identifiers validation because they both use the same ISO 7064 Mod 97,10 check digit validation. - Fix typo in one of the IbanCheckDigit exception messages : grater → greater (#84).
Thanks
Many thanks to @edgeofoblivion for his help !
3.1.0
Added
- Categorize ISO currencies (bond market unit, fund, precious metals, National or supranational and other) in order to filter out some currencies depending on the business context (#70).
- Add a calendar for Tokyo financial district (#77).
- Add a new holiday type,
BridgedHoliday, to model japanese holidays (#77). - Add a new constructor for YearRangeHoliday:
YearRangeHoliday(Holiday base, long from, long to)(#78). - Add a new constructor for MonthDayHoliday:
MonthDayHoliday(Month month, int dayOfMonth)(#78).
Changed
- Add platinum jubilee to London calendar (#75).
Fixed
- Add missing currency UYW (Unidad Previsional) (#69).
- Prevent potential stack overflow in
SwiftPattern(#71).
Deprecated
Removed
Internal
3.0.0
This new release includes :
- an alignment of the IBAN definitions to IBAN Registry Release 88 (Septembre 2020),
- a review of the ISO 3166 countries, ISO 4217 currencies and BBAN structure enums,
CalendarAPI improvements (new methods, new classes),- a few fixes for
IsoCurrency, - minor performance improvements,
- serialization support.
This new release also includes breaking changes (see details below).
Added
- Add support for composite calendars, e.g. calendars calendars that combine multiple calendars into a single one.
- Add
Calendar.previousOrSame(LocalDate date): compute the previous business day before the given date (included) (#61). - Add
Calendar.nextOrSame(LocalDate date): compute the next business day before the given date (included) (#61). - Add
Calendar.shift(LocalDate date, int amount): shifts the date by the specified number of business days (#61). - Add support for Libyan (LY) IBAN numbers (#63).
Changed
- Make jbanking serializable-friendly (#53).
- (breaking change)
IsoCountryandIsoCurrencyenums entries renamed using their alpha-code instead of their full names to reduce breaking changes in future versions (#56). - (breaking change) Changed
IsoCurrency.fromNumericCode(Integer)signature toIsoCurrency.fromNumericCode(int)(#56). - (breaking change) Rename
Calendar.previousBusinessDaytoCalendar.previous(#61). - (breaking change) Rename
Calendar.nextBusinessDaytoCalendar.next(#61). - (breaking change) Change return type of
IsoCurrency.fromAlphabeticCode(String code)toOptional<IsoCurrency>(#62). - (breaking change) Change return type of
IsoCurrency.fromNumericCode(int code)toOptional<IsoCurrency>(#62). - (breaking change) Change
BbanStructurevisibility to package-private (#64).
Fixed
- (breaking change) Remove Lithuanian litas (LTL) entry from
IsoCurrencyenum : Lithuania is using
Euro since 2015 (#59). - Fix
IsoCurrency.CDF(Congolese franc) enum entry : the entry declared the Congo (CG) instead of the Democratic Republic of the Congo (CD) (#60). - Fix Unidad de Fomento (
IsoCurrency.CLF) minor unit (#63).
Removed
- (breaking change) Remove deprecated method
IsoCountry.getCode(): useIsoCountry.getAlpha2Code()instead (#49). - (breaking change) Remove deprecated method
IsoCountry.fromCode(String): useIsoCountry.fromAlpha2Code(String)instead (#49). - (breaking change) Remove
IsoCurrency.NO_UNIVERSAL_CURRENCY: this currency has no associated code and could not be retained duringIsoCurrencyenum entries renaming (#56).