Skip to content

Commit 5ef97cc

Browse files
authored
[Apps Plugin] Allow bad enum constants (take 2) (#546)
Improving on the previous commit, this adds a set of expected problematic enum classes and only continues processing when an enum is unable to load if the enum is in the list.
1 parent e7ece24 commit 5ef97cc

File tree

1 file changed

+14
-2
lines changed
  • spring-cloud-dataflow-apps-plugin/spring-cloud-dataflow-apps-metadata-plugin/src/main/java/org/springframework/cloud/dataflow/app/plugin

1 file changed

+14
-2
lines changed

spring-cloud-dataflow-apps-plugin/spring-cloud-dataflow-apps-metadata-plugin/src/main/java/org/springframework/cloud/dataflow/app/plugin/MetadataAggregationMojo.java

+14-2
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,12 @@
3434
import java.util.Collection;
3535
import java.util.Collections;
3636
import java.util.HashMap;
37+
import java.util.HashSet;
3738
import java.util.List;
3839
import java.util.Map;
3940
import java.util.Optional;
4041
import java.util.Properties;
42+
import java.util.Set;
4143
import java.util.jar.JarOutputStream;
4244
import java.util.zip.ZipEntry;
4345
import java.util.zip.ZipFile;
@@ -108,6 +110,11 @@ public class MetadataAggregationMojo extends AbstractMojo {
108110

109111
static final String SPRING_CLOUD_DATAFLOW_OPTION_GROUPS_PROPERTIES = "dataflow-configuration-option-groups.properties";
110112

113+
private static final Set<String> KNOWN_PROBLEMATIC_ENUMS = new HashSet<>();
114+
static {
115+
KNOWN_PROBLEMATIC_ENUMS.add("org.springframework.boot.autoconfigure.data.jdbc.JdbcDatabaseDialect");
116+
}
117+
111118
@Parameter(defaultValue = "${project}")
112119
private MavenProject mavenProject;
113120

@@ -527,8 +534,13 @@ void addEnumHints(ConfigurationMetadata configurationMetadata, ClassLoader class
527534
enumConstants = clazz.getEnumConstants();
528535
}
529536
catch (NoClassDefFoundError ex) {
530-
getLog().error("Failed to resolve enum constants for property = " + property + " and class = " + clazz, ex);
531-
continue;
537+
String enumClass = clazz.getName();
538+
if (KNOWN_PROBLEMATIC_ENUMS.contains(enumClass)) {
539+
getLog().info("[EXPECTED] Failed to resolve enum constants for property = " + property + " and class = " + clazz);
540+
continue;
541+
}
542+
getLog().error("[UNEXPECTED] Failed to resolve enum constants for property = " + property + " and class = " + clazz, ex);
543+
throw ex;
532544
}
533545
for (Object enumConstant : enumConstants) {
534546
valueHints.add(new ValueHint(enumConstant, null));

0 commit comments

Comments
 (0)