From 5c319173ee7b873f85cd3e84046cf559b8577d36 Mon Sep 17 00:00:00 2001 From: Jochen Schalanda Date: Thu, 26 Nov 2020 13:47:55 +0100 Subject: [PATCH] Skip errors when visiting default implementations in ConfigurationMetadata (#3577) Fixes #3557 --- .../dropwizard/configuration/ConfigurationMetadata.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/dropwizard-configuration/src/main/java/io/dropwizard/configuration/ConfigurationMetadata.java b/dropwizard-configuration/src/main/java/io/dropwizard/configuration/ConfigurationMetadata.java index ea2c5b8c473..e5ddafecedd 100644 --- a/dropwizard-configuration/src/main/java/io/dropwizard/configuration/ConfigurationMetadata.java +++ b/dropwizard-configuration/src/main/java/io/dropwizard/configuration/ConfigurationMetadata.java @@ -106,6 +106,7 @@ public boolean isCollectionOfStrings(String fieldName) { } @Override + @SuppressWarnings("java:S106") public JsonObjectFormatVisitor expectObjectFormat(JavaType type) throws JsonMappingException { // store the pointer to the own instance final ConfigurationMetadata thiss = this; @@ -159,8 +160,11 @@ public void optionalProperty(BeanProperty prop) throws JsonMappingException { parentProps.add(prop); // visit the type of the property (or its defaultImpl). - mapper.acceptJsonFormatVisitor( - defaultImpl == null ? fieldType.getRawClass() : defaultImpl, thiss); + try { + mapper.acceptJsonFormatVisitor(defaultImpl == null ? fieldType.getRawClass() : defaultImpl, thiss); + } catch (NoClassDefFoundError | Exception e) { + System.err.println(getClass() + ": " + e.getMessage()); + } // reset state after the recursive traversal parentProps.remove(prop);