Dealing with IBAN / BIC in Java? .check iban4j #iban #java #iban4j
This post is mostly targeted to Java developers working on the financial sector, especially with systems that need to do payments and specifically using the IBAN/BIC standard.
So today I was browsing through some legacy code, that was performing some sort of validations on String representations of IBAN accounts. I wrote a simple JUnit test, in order to check if the validations performed from this very very old JAVA 1.4 (or older) style of code, were eventually correct.
To my surprise I realized that a few bugs or missing cases were floating around. I started digging further, missing empty/null string or formatting exceptions, specific formatting decisions based on specific countries and many other issues led to starting asking myself how I can efficiently correct the code and eventually secure this part of the system that was relying on such error prone validations.
After some more digging around, I found that there are actually 2 good candidates, for my case
- Apache Commons Validator - IBANCheckDigit
- iban4j - IBAN for Java Library
I reviewed the API and functionality offered by both. To be fair IBANCheckDigit from Apache is some sort of utility class, while iban4j is a complete mini library that covers, creating, formating and checking of IBAN and BIC literals.
I re-used my unit test, replacing the legacy code with calls to ibanj, after including the dependency on my pom. All test passed, all validations and exceptions caught. I had a clear winner.
Many thanks to the developer, for sharing such a handy library. The API is clean and simple and the functionality conforms to the standards. At least it passed my legacy compatibility tests.
So in case you find yourself in a similar situation .give iban4j a go!