diff --git a/build.gradle b/build.gradle index ad994da..d6856bd 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ plugins { } group 'com.docutools' -version = '1.6.9' +version = '1.6.10' java { toolchain { diff --git a/src/main/java/com/docutools/jocument/CustomPlaceholderRegistry.java b/src/main/java/com/docutools/jocument/CustomPlaceholderRegistry.java index f8a64aa..4732f6c 100644 --- a/src/main/java/com/docutools/jocument/CustomPlaceholderRegistry.java +++ b/src/main/java/com/docutools/jocument/CustomPlaceholderRegistry.java @@ -7,7 +7,7 @@ public interface CustomPlaceholderRegistry { void addHandler(String placeholder, Class customWordPlaceholderDataClass); Optional resolve(String placeholder, Object object) - throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException; + throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassCastException; boolean governs(String placeholderName, Object object); } diff --git a/src/main/java/com/docutools/jocument/impl/ReflectionResolver.java b/src/main/java/com/docutools/jocument/impl/ReflectionResolver.java index ba17774..efa348e 100644 --- a/src/main/java/com/docutools/jocument/impl/ReflectionResolver.java +++ b/src/main/java/com/docutools/jocument/impl/ReflectionResolver.java @@ -144,7 +144,7 @@ private static NumberFormat toNumberFormat(Numeric numeric, Locale locale) { if (numeric.minIntDigits() != -1) { format.setMinimumIntegerDigits(numeric.minIntDigits()); } - if (!numeric.currencyCode().equals("")) { + if (!numeric.currencyCode().isEmpty()) { format.setCurrency(Currency.getInstance(numeric.currencyCode())); } format.setGroupingUsed(numeric.groupingUsed()); @@ -381,6 +381,9 @@ private Optional doReflectiveResolve(String placeholderName, Lo } catch (EmptyOptionalException e) { logger.warn("Placeholder {} property is an empty optional", e.getMessage()); return Optional.empty(); + } catch (ClassCastException e) { + logger.warn("ClassCastException when resolving custom placeholder %s".formatted(placeholderName), e); + return Optional.empty(); } } @@ -486,7 +489,7 @@ private NumberFormat findNumberFormat(String fieldName, Locale locale) { .or(() -> ReflectionUtils.findFieldAnnotation(bean.getClass(), fieldName, Numeric.class) .map(numeric -> toNumberFormat(numeric, locale))) .orElseGet(() -> { - logger.info("Did not find formatting directive for {}, formatting according to locale {}", fieldName, locale); + logger.debug("Did not find formatting directive for {}, formatting according to locale {}", fieldName, locale); return NumberFormat.getInstance(locale); }); } @@ -515,6 +518,6 @@ private Object resolveNonFinalValue(Object property, String placeholderName) @Override public String toString() { - return bean != null? bean.toString() : ""; + return bean != null ? bean.toString() : ""; } }