Skip to content

Releases: marcwrobel/jbanking

4.2.0

13 Nov 20:33
v4.2.0
a47ff92
Compare
Choose a tag to compare

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 Bic constants public (during #339). New available constants are BIC8_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

4.1.0

07 Jan 17:11
v4.1.0
c7fae62
Compare
Choose a tag to compare

Changed

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

22 Oct 21:14
v4.0.0
e3a5fc0
Compare
Choose a tag to compare

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#REGEX public (as part of #172).
  • Make Iban#REGEX public (as part of #171).
  • Make BbanStructure public (as part of #153). BbanStructure is an enum that holds countries BBAN structure as listed in the IBAN registry.
  • Add SwiftPatternCharacterRepresentation to centralize information about SWIFT pattern character representations (as part of #171).
  • Document alternatives to jbanking (#164).

Changed

  • (breaking change) Make CreditorIdentifier final (#116).
  • (breaking change) Rename Bic#BIC_REGEX to Bic#REGEX and make it accept untrimmed strings (as part of #170 and #176).
  • (breaking change) Make Iban not 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#validate return false for null or less than 5 characters strings (#188).
  • (breaking change) Make SwiftPattern#toString returning only the SWIFT pattern expression (as part of #222).
    Prior to this version SwiftPattern#toString were returning the SWIFT pattern expression with its corresponding regular expression.
  • (breaking change) Make BicFormatException, CreditorIdentifierFormatException, IbanFormatException and SwiftPatternSyntaxException extend IllegalArgumentException instead of RuntimeException (#220).
  • (breaking change) Move IbanCheckDigit from fr.marcwrobel.jbanking.iban to fr.marcwrobel.jbanking.checkdigit (#174).
  • (breaking change) Accept untrimmed input strings in Bic, CreditorIdentifier, Iban, IsoCountry and IsoCurrency (#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, Iban and SwiftPattern regarding 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) or IbanCheckDigit.validate(String) return false instead of raising an IllegalArgumentException with invalid IBAN check digit (e.g. 00, 01, or 99).
  • Fix Bic, CreditorIdentifier and Iban documentation (#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 from Bic#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, Holidays and BbanStructure enums 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.digit instead of Character.getNumericValue in IbanCheckDigit as recommended in Error Prone#CharacterGetNumericValue (closes #117).
  • Add serialization tests for serializable classes (#222).
  • Add the CheckDigit interface and make IbanCheckDigit implements it (#174).
  • Enums maintenance - 2022/10 (#231).

Thanks

Many thanks to @aSemy for his help on #153 !

3.4.0

20 Jul 23:02
v3.4.0
06a2552
Compare
Choose a tag to compare

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 an IsoCountry (#149).
  • Add a new CreditorIdentifier#getCountry() method that return an IsoCountry (#149).
  • Add a new Iban#getCountry() method that return an IsoCountry (#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 @LastVerification to document the last verification date of a list (#152).

3.3.0

07 Jul 12:45
v3.3.0
974b5a2
Compare
Choose a tag to compare

Added

  • Officially support Java 17 and 18 (#102).

Changed

Fixed

  • Make IsoCurrency and BbanStructure immutable (#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_TOKEN permissions 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.yml workflow (#110).
  • Configure CI for maintenance branches (#112).
  • Fix Sonatype lift MissingSummary warnings (#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 @author tags in the Javadoc (#122).

3.2.0

20 Apr 16:11
26f3e4b
Compare
Choose a tag to compare

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

08 Aug 16:43
3e4f27c
Compare
Choose a tag to compare

Fixed

  • Fix IBAN and creditor identifier check digit validation (#82). Validation of IBANs and creditor identifiers with a check digit equals to 00, 01 or 99 will now raise an IllegalArgumentException instead 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

04 Apr 08:39
42464be
Compare
Choose a tag to compare

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

  • Use maven-enforcer-plugin to prevent the project to be build with incompatible tools (#72).
  • Upgrade to guava 30.1.1 (#79).
  • Upgrade to strata 2.9.4 (#81).
  • Upgrade to parent 2.4.0 (#76).
  • Upgrade to nv-i18n 1.28 (#80).

3.0.0

18 Oct 17:48
a179c98
Compare
Choose a tag to compare

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,
  • Calendar API 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) IsoCountry and IsoCurrency enums 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 to IsoCurrency.fromNumericCode(int) (#56).
  • (breaking change) Rename Calendar.previousBusinessDay to Calendar.previous (#61).
  • (breaking change) Rename Calendar.nextBusinessDay to Calendar.next (#61).
  • (breaking change) Change return type of IsoCurrency.fromAlphabeticCode(String code) to Optional<IsoCurrency> (#62).
  • (breaking change) Change return type of IsoCurrency.fromNumericCode(int code) to Optional<IsoCurrency> (#62).
  • (breaking change) Change BbanStructure visibility to package-private (#64).

Fixed

Removed

  • (breaking change) Remove deprecated method IsoCountry.getCode() : use IsoCountry.getAlpha2Code() instead (#49).
  • (breaking change) Remove deprecated method IsoCountry.fromCode(String) : use IsoCountry.fromAlpha2Code(String) instead (#49).
  • (breaking change) Remove IsoCurrency.NO_UNIVERSAL_CURRENCY : this currency has no associated code and could not be retained during IsoCurrency enum entries renaming (#56).

Internal

  • Upgrade to Strata 2.8.2 (#57).
  • Upgrade to Guava 30.0 (#58).
  • Upgrade to parent 2.3.2 (#65).
  • Make use of lookup tables in IsoCountry, IsoCurrency and BbanStructure for better performance (#62).

2.1.0

10 Aug 21:28
62972c7
Compare
Choose a tag to compare

This new release includes :

  • an alignment of the IBAN definitions to IBAN Registry Release 87 (May 2020).
  • improvements to IsoCountry : ISO 3166-1 alpha-3 and numeric codes, country status - e.g.
    independent or dependent, participation to economic agreements (SEPA, EU, EEA...).
  • Holiday support with a few predefined calendars (TARGET, Paris, NYSE...).

Added

  • Set jbanking Automatic-Module-Name to fr.marcwrobel.jbanking (#42).
  • Countries' participation to European Union (#44).
  • Countries' participation to Single Euro Payments Area, also known as SEPA (#31).
  • Countries' participation to SEPA COM Pacifique (#46).
  • Countries' participation to European Economic Area (#45).
  • Countries' participation to European Free Trade Association (#45).
  • Holiday support with predefined calendars for :
    • Frankfurt, London, Paris and Sydney financial districts,
    • Federal Reserve Bank of New York (FED),
    • New York Stock Exchange (NYSE),
    • European Union TARGET system.

Changed

  • Adjust BBAN structure for Sao Tome and Principe (#36).
  • Upgrade to parent 2.3.1 (#51).
  • Upgrade to guava 29.0 (#41).
  • Add ISO 3166-1 alpha-3 and numeric codes to IsoCountry (#43).
  • Add IsoCountry status, e.g. independent or dependent (according to the International Organization
    for Standardization
    ) (#48).
  • Improve project's consumer POM with flatten-maven-plugin (#50).

Fixed

  • Sonar analysis fails on merge requests (#39).

Deprecated

  • IsoCountry.getCode() is now deprecated in favor or IsoCountry.getAlpha2Code() (#43).
  • IsoCountry.fromCode(String) is now deprecated in favor or IsoCountry.fromAlpha2Code(String)
    (#43).

Those methods will be removed in the next major version (3.0.0).

Thanks

Many thanks to @kayman-mk for his help !