jsr354-api icon indicating copy to clipboard operation
jsr354-api copied to clipboard

NullPointerException on getProviderName() even when provider name exists

Open manmedia opened this issue 6 years ago • 1 comments

The following code generates a query successfully

CurrencyQuery query = CurrencyQueryBuilder.of().setProviderName("ProviderClassName").setCurrencyCodes("CNH").build();

But when the appropriate CurrencyProvider imp is loaded and getCurrencies(CurrencyQuery) is invoked, the following code results into NPE.

if (!query.isEmpty() && query.getProviderName().equals("SomeName")) {

      for (CurrencyUnit c : currencySet) {

          if (c.getCurrencyCodes().equals(query.getCurrencyCodes()) {

             return Collections.singleton(c);

          }

     }

}

We are always building the currency query such that it will have a provider name and currency unit. The above code results into an NPE for getProviderName() where a provider name actually exists.

manmedia avatar Nov 07 '18 22:11 manmedia

Was it possible to debug the code to see, which line throws the NPE? In the first one swapping the equals() method and using it on a constant expression like "SomeName" would also be safer, even if the provider name should exist. In the loop below, c.getCurrencyCodes() being null would be another possible source for an NPE. That's why I wonder, if breakpoints allow to narrow it down.

keilw avatar Nov 07 '18 23:11 keilw