A Java banking API
Iban#getBankIdentifier()
to get the bank identifier from an Iban (#162).Iban#getBranchIdentifier()
to get the branch identifier from an Iban (#162).Iban#getAccountNumber()
to get the account number from an Iban (#162).Iban#getNationalCheckDigit()
to get the national check digit from an Iban (#162).CreditorIdentifier#REGEX
public (as part of #172).Iban#REGEX
public (as part of #171).BbanStructure
public (as part of #153). BbanStructure
is an enum that holds countries BBAN structure as listed in the IBAN registry.SwiftPatternCharacterRepresentation
to centralize information about SWIFT pattern character representations (as part of #171).CreditorIdentifier
final (#116).Bic#BIC_REGEX
to Bic#REGEX
and make it accept untrimmed strings (as part of #170 and #176).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.IbanCheckDigit#validate
return false
for null
or less than 5 characters strings (#188).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.BicFormatException
, CreditorIdentifierFormatException
, IbanFormatException
and SwiftPatternSyntaxException
extend IllegalArgumentException
instead of RuntimeException
(#220).IbanCheckDigit
from fr.marcwrobel.jbanking.iban
to fr.marcwrobel.jbanking.checkdigit
(#174).Bic
, CreditorIdentifier
, Iban
, IsoCountry
and IsoCurrency
(#176). In earlier versions only case-insensitive were accepted.Bic
, CreditorIdentifier
, Iban
and SwiftPattern
regarding serialization (as part of #222).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
).Bic
, CreditorIdentifier
and Iban
documentation (#209). It was not explicit that lowercase characters were accepted.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.IsoCurrency
, Holidays
and BbanStructure
enums entries (#161).OutOfMemoryError
.Character.digit
instead of Character.getNumericValue
in IbanCheckDigit
as recommended in Error Prone#CharacterGetNumericValue (closes #117).CheckDigit
interface and make IbanCheckDigit
implements it (#174).Many thanks to @aSemy for his help on #153 !
Bic#getCountry()
method that return an IsoCountry
(#149).CreditorIdentifier#getCountry()
method that return an IsoCountry
(#149).Iban#getCountry()
method that return an IsoCountry
(#149).CODEOWNERS
(#142).@LastVerification
to document the last verification date of a list (#152).IsoCurrency
and BbanStructure
immutable (#114).GITHUB_TOKEN
permissions in GitHub workflows (#101).codeql-analysis.yml
workflow (#110).MissingSummary
warnings (#118).@author
tags in the Javadoc (#122).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.
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.
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.Many thanks to @edgeofoblivion for his help !
BridgedHoliday
, to model japanese holidays (#77).YearRangeHoliday(Holiday base, long from, long to)
(#78).MonthDayHoliday(Month month, int dayOfMonth)
(#78).SwiftPattern
(#71).This new release includes :
Calendar
API improvements (new methods, new classes),IsoCurrency
,This new release also includes breaking changes (see details below).
Calendar.previousOrSame(LocalDate date)
: compute the previous business day before the given date (included) (#61).Calendar.nextOrSame(LocalDate date)
: compute the next business day before the given date (included) (#61).Calendar.shift(LocalDate date, int amount)
: shifts the date by the specified number of business days (#61).IsoCountry
and IsoCurrency
enums entries renamed using their alpha-code instead of their full names to reduce breaking changes in future versions (#56).IsoCurrency.fromNumericCode(Integer)
signature to IsoCurrency.fromNumericCode(int)
(#56).Calendar.previousBusinessDay
to Calendar.previous
(#61).Calendar.nextBusinessDay
to Calendar.next
(#61).IsoCurrency.fromAlphabeticCode(String code)
to Optional<IsoCurrency>
(#62).IsoCurrency.fromNumericCode(int code)
to Optional<IsoCurrency>
(#62).BbanStructure
visibility to package-private (#64).IsoCurrency
enum : Lithuania is using
Euro since 2015 (#59).IsoCurrency.CDF
(Congolese franc) enum entry : the entry declared the Congo (CG) instead of the Democratic Republic of the Congo (CD) (#60).IsoCurrency.CLF
) minor unit (#63).IsoCountry.getCode()
: use IsoCountry.getAlpha2Code()
instead (#49).IsoCountry.fromCode(String)
: use IsoCountry.fromAlpha2Code(String)
instead (#49).IsoCurrency.NO_UNIVERSAL_CURRENCY
: this currency has no associated code and could not be retained during IsoCurrency
enum entries renaming (#56).IsoCountry
, IsoCurrency
and BbanStructure
for better performance (#62).This new release includes :
Automatic-Module-Name
to fr.marcwrobel.jbanking
(#42).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).
Many thanks to @kayman-mk for his help !
This new release includes :
BYR
to BYN
(see
https://wikipedia.org/wiki/Belarusian_ruble) (#33).STD
to STN
(see
https://wikipedia.org/wiki/S%C3%A3o_Tom%C3%A9_and_Pr%C3%ADncipe_dobra) (#33).BELARUSSIAN_RUBLE
currency name to BELARUSIAN_RUBLE
(#33).MRO
to MRU
(see
https://wikipedia.org/wiki/Ouguiya) (#33).IsoCurrency
entry BOLIVAR
(VEF) (see https://wikipedia.org/wiki/Venezuelan_bol%C3%ADvar)
(#33).IsoCurrency
entry LATVIAN_LATS
(LVL) (see https://wikipedia.org/wiki/Latvian_lats) (#33).IsoCurrency
entry UIC_FRANC
(XFU) (see https://wikipedia.org/wiki/UIC_franc) (#33).Many thanks to @ckayser, @opeti and @ajsutton for their help !