From 294e8074395b8600b3c998333c31f4ea2b41765f Mon Sep 17 00:00:00 2001 From: Chris Bono Date: Sun, 2 Jun 2024 13:58:14 -0500 Subject: [PATCH] [Apps Plugin] Allow bad enum constants (#545) The metadata plugin currently barfs when it encounters a config item with an enum field that references itself (e.g. `JdbcDatabaseDialect`). This commit allows processing to continue when the bad enums are encountered. --- .../dataflow/app/plugin/MetadataAggregationMojo.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/spring-cloud-dataflow-apps-plugin/spring-cloud-dataflow-apps-metadata-plugin/src/main/java/org/springframework/cloud/dataflow/app/plugin/MetadataAggregationMojo.java b/spring-cloud-dataflow-apps-plugin/spring-cloud-dataflow-apps-metadata-plugin/src/main/java/org/springframework/cloud/dataflow/app/plugin/MetadataAggregationMojo.java index d62faad25..29a192f32 100644 --- a/spring-cloud-dataflow-apps-plugin/spring-cloud-dataflow-apps-metadata-plugin/src/main/java/org/springframework/cloud/dataflow/app/plugin/MetadataAggregationMojo.java +++ b/spring-cloud-dataflow-apps-plugin/spring-cloud-dataflow-apps-metadata-plugin/src/main/java/org/springframework/cloud/dataflow/app/plugin/MetadataAggregationMojo.java @@ -522,8 +522,16 @@ void addEnumHints(ConfigurationMetadata configurationMetadata, ClassLoader class Class clazz = ClassUtils.resolveClassName(property.getType(), classLoader); if (clazz.isEnum()) { List valueHints = new ArrayList<>(); - for (Object o : clazz.getEnumConstants()) { - valueHints.add(new ValueHint(o, null)); + Object[] enumConstants; + try { + enumConstants = clazz.getEnumConstants(); + } + catch (NoClassDefFoundError ex) { + getLog().error("Failed to resolve enum constants for property = " + property + " and class = " + clazz, ex); + continue; + } + for (Object enumConstant : enumConstants) { + valueHints.add(new ValueHint(enumConstant, null)); } if (!providers.containsKey(property.getType())) {