This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
commit a32518526672d0ad50445e043e34a4833facad30 Author: Claus Ibsen <[email protected]> AuthorDate: Fri Apr 8 11:00:11 2022 +0200 CAMEL-17930: camel-yaml-dsl - Yaml schema - generate enums for logging levels --- .../maven/dsl/yaml/GenerateYamlDeserializersMojo.java | 13 +++++++++++++ .../camel/maven/dsl/yaml/GenerateYamlSupportMojo.java | 14 ++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlDeserializersMojo.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlDeserializersMojo.java index d44eae64dbf..e98ea40eacf 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlDeserializersMojo.java +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlDeserializersMojo.java @@ -840,6 +840,19 @@ public class GenerateYamlDeserializersMojo extends GenerateYamlSupportMojo { builder.addMember("required", "$L", isRequired(field)); } + annotations.add(builder.build()); + } else if (isEnum(field)) { + // this is a fake enum where the model is text based by have enum values to represent the user to choose between + cb.addStatement("String val = asText(node)"); + cb.addStatement("target.set$L(val)", StringHelper.capitalize(field.name())); + cb.addStatement("break"); + + AnnotationSpec.Builder builder = AnnotationSpec.builder(CN_YAML_PROPERTY); + builder.addMember("name", "$S", fieldName); + builder.addMember("type", "$S", "enum:" + getEnums(field)); + if (isRequired(field)) { + builder.addMember("required", "$L", isRequired(field)); + } annotations.add(builder.build()); } else { switch (field.type().name().toString()) { diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlSupportMojo.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlSupportMojo.java index 4fb10bbc198..89f626edbd8 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlSupportMojo.java +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlSupportMojo.java @@ -603,6 +603,20 @@ public abstract class GenerateYamlSupportMojo extends AbstractMojo { .orElse(false); } + protected String getEnums(FieldInfo fi) { + return annotationValue(fi, METADATA_ANNOTATION_CLASS, "enums") + .map(AnnotationValue::asString).orElse(""); + } + + protected String getJavaType(FieldInfo fi) { + return annotationValue(fi, METADATA_ANNOTATION_CLASS, "javaType") + .map(AnnotationValue::asString).orElse(""); + } + + protected boolean isEnum(FieldInfo fi) { + return !getEnums(fi).isBlank(); + } + protected boolean isDeprecated(FieldInfo fi) { return fi.hasAnnotation(DEPRECATED_ANNOTATION_CLASS); }
