Releases: marcwrobel/jbanking
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
Bic
constants 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#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
toBic#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
returnfalse
fornull
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 versionSwiftPattern#toString
were returning the SWIFT pattern expression with its corresponding regular expression. - (breaking change) Make
BicFormatException
,CreditorIdentifierFormatException
,IbanFormatException
andSwiftPatternSyntaxException
extendIllegalArgumentException
instead ofRuntimeException
(#220). - (breaking change) Move
IbanCheckDigit
fromfr.marcwrobel.jbanking.iban
tofr.marcwrobel.jbanking.checkdigit
(#174). - (breaking change) Accept untrimmed input strings in
Bic
,CreditorIdentifier
,Iban
,IsoCountry
andIsoCurrency
(#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
andSwiftPattern
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)
orIbanCheckDigit.validate(String)
returnfalse
instead of raising anIllegalArgumentException
with invalid IBAN check digit (e.g.00
,01
, or99
). - Fix
Bic
,CreditorIdentifier
andIban
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 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
,Holidays
andBbanStructure
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 ofCharacter.getNumericValue
inIbanCheckDigit
as recommended in Error Prone#CharacterGetNumericValue (closes #117). - Add serialization tests for serializable classes (#222).
- Add the
CheckDigit
interface and makeIbanCheckDigit
implements 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
@LastVerification
to 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
IsoCurrency
andBbanStructure
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
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
,01
or99
will now raise anIllegalArgumentException
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
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,
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
andIsoCurrency
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 toIsoCurrency.fromNumericCode(int)
(#56). - (breaking change) Rename
Calendar.previousBusinessDay
toCalendar.previous
(#61). - (breaking change) Rename
Calendar.nextBusinessDay
toCalendar.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
BbanStructure
visibility to package-private (#64).
Fixed
- (breaking change) Remove Lithuanian litas (LTL) entry from
IsoCurrency
enum : 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 duringIsoCurrency
enum entries renaming (#56).
Internal
2.1.0
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
tofr.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 orIsoCountry.getAlpha2Code()
(#43).IsoCountry.fromCode(String)
is now deprecated in favor orIsoCountry.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 !