This is an automated email from the ASF dual-hosted git repository. lburgazzoli pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit e840b4d2b8ad221244db11c6b6e4ca7c4c86ab0a Author: Luca Burgazzoli <lburgazz...@gmail.com> AuthorDate: Thu Feb 25 15:43:06 2021 +0100 CAMEL-12545: create a yaml based route loader (add support for auto generated SagaOptionDefinition) --- .../apache/camel/model/SagaOptionDefinition.java | 12 +- .../camel-yaml-dsl-deserializers/pom.xml | 3 + .../dsl/yaml/deserializers/ModelDeserializers.java | 133 ++++++++++++++------- .../deserializers/ModelDeserializersResolver.java | 1 + .../dsl/yaml/deserializers/CustomResolver.java | 2 - .../SagaOptionDefinitionDeserializer.java | 72 ----------- .../maven/dsl/yaml/GenerateYamlSupportMojo.java | 25 ++-- .../src/generated/resources/camel-yaml-dsl.json | 109 +++++++++++------ 8 files changed, 199 insertions(+), 158 deletions(-) diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/SagaOptionDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/SagaOptionDefinition.java index cf32a56..31cbe77 100644 --- a/core/camel-core-model/src/main/java/org/apache/camel/model/SagaOptionDefinition.java +++ b/core/camel-core-model/src/main/java/org/apache/camel/model/SagaOptionDefinition.java @@ -30,7 +30,7 @@ import org.apache.camel.spi.Metadata; */ @Metadata(label = "eip,routing") @XmlAccessorType(XmlAccessType.FIELD) -public class SagaOptionDefinition { +public class SagaOptionDefinition implements HasExpressionType { @XmlAttribute(required = true) private String optionName; @@ -73,4 +73,14 @@ public class SagaOptionDefinition { public void setExpression(ExpressionDefinition expression) { this.expression = expression; } + + @Override + public ExpressionDefinition getExpressionType() { + return getExpression(); + } + + @Override + public void setExpressionType(ExpressionDefinition expressionType) { + setExpression(expressionType); + } } diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/pom.xml b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/pom.xml index 9abcfd7..320bfac 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/pom.xml +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/pom.xml @@ -130,6 +130,9 @@ <bannedDefinition>org.apache.camel.model.ExpressionSubElementDefinition</bannedDefinition> <bannedDefinition>org.apache.camel.model.PropertyDefinitions</bannedDefinition> </bannedDefinitions> + <additionalDefinitions> + <additionalDefinition>org.apache.camel.model.SagaOptionDefinition</additionalDefinition> + </additionalDefinitions> </configuration> </execution> </executions> diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java index 07a3a14..5310e35 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java @@ -71,6 +71,7 @@ import org.apache.camel.model.RouteTemplatesDefinition; import org.apache.camel.model.RoutesDefinition; import org.apache.camel.model.RoutingSlipDefinition; import org.apache.camel.model.SagaDefinition; +import org.apache.camel.model.SagaOptionDefinition; import org.apache.camel.model.SamplingDefinition; import org.apache.camel.model.ScriptDefinition; import org.apache.camel.model.SetBodyDefinition; @@ -557,7 +558,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport { nodes = "avro", properties = { @YamlProperty(name = "id", type = "string"), - @YamlProperty(name = "instance-class-name", type = "string") + @YamlProperty(name = "instance-class-name", type = "string", required = true) } ) public static class AvroDataFormatDeserializer extends YamlDeserializerBase<AvroDataFormat> { @@ -850,8 +851,8 @@ public final class ModelDeserializers extends YamlDeserializerSupport { @YamlProperty(name = "ignore-invalid-records", type = "boolean"), @YamlProperty(name = "ignore-unexpected-records", type = "boolean"), @YamlProperty(name = "ignore-unidentified-records", type = "boolean"), - @YamlProperty(name = "mapping", type = "string"), - @YamlProperty(name = "stream-name", type = "string"), + @YamlProperty(name = "mapping", type = "string", required = true), + @YamlProperty(name = "stream-name", type = "string", required = true), @YamlProperty(name = "unmarshal-single-object", type = "boolean") } ) @@ -1481,7 +1482,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport { @YamlProperty(name = "filter", type = "string"), @YamlProperty(name = "inherit-error-handler", type = "boolean"), @YamlProperty(name = "key", type = "string"), - @YamlProperty(name = "operation", type = "string") + @YamlProperty(name = "operation", type = "string", required = true) } ) public static class ClaimCheckDefinitionDeserializer extends YamlDeserializerBase<ClaimCheckDefinition> { @@ -1950,7 +1951,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport { properties = { @YamlProperty(name = "charset", type = "string"), @YamlProperty(name = "inherit-error-handler", type = "boolean"), - @YamlProperty(name = "type", type = "string") + @YamlProperty(name = "type", type = "string", required = true) } ) public static class ConvertBodyDefinitionDeserializer extends YamlDeserializerBase<ConvertBodyDefinition> { @@ -2300,7 +2301,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport { nodes = "custom-data-format", properties = { @YamlProperty(name = "id", type = "string"), - @YamlProperty(name = "ref", type = "string") + @YamlProperty(name = "ref", type = "string", required = true) } ) public static class CustomDataFormatDeserializer extends YamlDeserializerBase<CustomDataFormat> { @@ -2347,7 +2348,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport { nodes = "custom-load-balancer", properties = { @YamlProperty(name = "id", type = "string"), - @YamlProperty(name = "ref", type = "string") + @YamlProperty(name = "ref", type = "string", required = true) } ) public static class CustomLoadBalancerDefinitionDeserializer extends YamlDeserializerBase<CustomLoadBalancerDefinition> { @@ -4931,8 +4932,8 @@ public final class ModelDeserializers extends YamlDeserializerSupport { order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1, nodes = "global-option", properties = { - @YamlProperty(name = "key", type = "string"), - @YamlProperty(name = "value", type = "string") + @YamlProperty(name = "key", type = "string", required = true), + @YamlProperty(name = "value", type = "string", required = true) } ) public static class GlobalOptionDefinitionDeserializer extends YamlDeserializerBase<GlobalOptionDefinition> { @@ -5009,7 +5010,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport { @YamlProperty(name = "flattened", type = "boolean"), @YamlProperty(name = "id", type = "string"), @YamlProperty(name = "named-only", type = "boolean"), - @YamlProperty(name = "pattern", type = "string") + @YamlProperty(name = "pattern", type = "string", required = true) } ) public static class GrokDataFormatDeserializer extends YamlDeserializerBase<GrokDataFormat> { @@ -5780,7 +5781,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport { @YamlProperty(name = "eager", type = "boolean"), @YamlProperty(name = "expression", type = "object:org.apache.camel.model.language.ExpressionDefinition"), @YamlProperty(name = "inherit-error-handler", type = "boolean"), - @YamlProperty(name = "message-id-repository-ref", type = "string"), + @YamlProperty(name = "message-id-repository-ref", type = "string", required = true), @YamlProperty(name = "remove-on-failure", type = "boolean"), @YamlProperty(name = "skip-duplicate", type = "boolean"), @YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition"), @@ -6099,7 +6100,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport { @YamlProperty(name = "after-uri", type = "string"), @YamlProperty(name = "inherit-error-handler", type = "boolean"), @YamlProperty(name = "skip-send-to-original-endpoint", type = "string"), - @YamlProperty(name = "uri", type = "string"), + @YamlProperty(name = "uri", type = "string", required = true), @YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition") } ) @@ -6287,7 +6288,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport { nodes = "jaxb", properties = { @YamlProperty(name = "content-type-header", type = "boolean"), - @YamlProperty(name = "context-path", type = "string"), + @YamlProperty(name = "context-path", type = "string", required = true), @YamlProperty(name = "context-path-is-class-name", type = "boolean"), @YamlProperty(name = "encoding", type = "string"), @YamlProperty(name = "filter-non-xml-chars", type = "boolean"), @@ -7017,7 +7018,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport { properties = { @YamlProperty(name = "expression", type = "string", required = true), @YamlProperty(name = "id", type = "string"), - @YamlProperty(name = "language", type = "string"), + @YamlProperty(name = "language", type = "string", required = true), @YamlProperty(name = "trim", type = "boolean") } ) @@ -7204,7 +7205,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport { @YamlProperty(name = "logger-ref", type = "string"), @YamlProperty(name = "logging-level", type = "string"), @YamlProperty(name = "marker", type = "string"), - @YamlProperty(name = "message", type = "string") + @YamlProperty(name = "message", type = "string", required = true) } ) public static class LogDefinitionDeserializer extends YamlDeserializerBase<LogDefinition> { @@ -8843,7 +8844,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport { nodes = "policy", properties = { @YamlProperty(name = "inherit-error-handler", type = "boolean"), - @YamlProperty(name = "ref", type = "string"), + @YamlProperty(name = "ref", type = "string", required = true), @YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition") } ) @@ -9173,7 +9174,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport { nodes = "process", properties = { @YamlProperty(name = "inherit-error-handler", type = "boolean"), - @YamlProperty(name = "ref", type = "string") + @YamlProperty(name = "ref", type = "string", required = true) } ) public static class ProcessDefinitionDeserializer extends YamlDeserializerBase<ProcessDefinition> { @@ -9213,8 +9214,8 @@ public final class ModelDeserializers extends YamlDeserializerSupport { order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1, nodes = "property", properties = { - @YamlProperty(name = "key", type = "string"), - @YamlProperty(name = "value", type = "string") + @YamlProperty(name = "key", type = "string", required = true), + @YamlProperty(name = "value", type = "string", required = true) } ) public static class PropertyDefinitionDeserializer extends YamlDeserializerBase<PropertyDefinition> { @@ -9872,7 +9873,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport { order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1, nodes = "remove-header", properties = { - @YamlProperty(name = "header-name", type = "string"), + @YamlProperty(name = "header-name", type = "string", required = true), @YamlProperty(name = "inherit-error-handler", type = "boolean") } ) @@ -9921,7 +9922,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport { properties = { @YamlProperty(name = "exclude-pattern", type = "string"), @YamlProperty(name = "inherit-error-handler", type = "boolean"), - @YamlProperty(name = "pattern", type = "string") + @YamlProperty(name = "pattern", type = "string", required = true) } ) public static class RemoveHeadersDefinitionDeserializer extends YamlDeserializerBase<RemoveHeadersDefinition> { @@ -9974,7 +9975,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport { properties = { @YamlProperty(name = "exclude-pattern", type = "string"), @YamlProperty(name = "inherit-error-handler", type = "boolean"), - @YamlProperty(name = "pattern", type = "string") + @YamlProperty(name = "pattern", type = "string", required = true) } ) public static class RemovePropertiesDefinitionDeserializer extends YamlDeserializerBase<RemovePropertiesDefinition> { @@ -10026,7 +10027,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport { nodes = "remove-property", properties = { @YamlProperty(name = "inherit-error-handler", type = "boolean"), - @YamlProperty(name = "property-name", type = "string") + @YamlProperty(name = "property-name", type = "string", required = true) } ) public static class RemovePropertyDefinitionDeserializer extends YamlDeserializerBase<RemovePropertyDefinition> { @@ -10530,7 +10531,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport { types = org.apache.camel.model.RestContextRefDefinition.class, order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1, nodes = "rest-context-ref", - properties = @YamlProperty(name = "ref", type = "string") + properties = @YamlProperty(name = "ref", type = "string", required = true) ) public static class RestContextRefDefinitionDeserializer extends YamlDeserializerBase<RestContextRefDefinition> { public RestContextRefDefinitionDeserializer() { @@ -10668,9 +10669,9 @@ public final class ModelDeserializers extends YamlDeserializerSupport { @YamlProperty(name = "default-value", type = "string"), @YamlProperty(name = "description", type = "string"), @YamlProperty(name = "examples", type = "array:org.apache.camel.model.rest.RestPropertyDefinition"), - @YamlProperty(name = "name", type = "string"), + @YamlProperty(name = "name", type = "string", required = true), @YamlProperty(name = "required", type = "boolean"), - @YamlProperty(name = "type", type = "enum:body,formData,header,path,query") + @YamlProperty(name = "type", type = "enum:body,formData,header,path,query", required = true) } ) public static class RestOperationParamDefinitionDeserializer extends YamlDeserializerBase<RestOperationParamDefinition> { @@ -10760,7 +10761,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport { @YamlProperty(name = "data-type", type = "string"), @YamlProperty(name = "description", type = "string"), @YamlProperty(name = "example", type = "string"), - @YamlProperty(name = "name", type = "string") + @YamlProperty(name = "name", type = "string", required = true) } ) public static class RestOperationResponseHeaderDefinitionDeserializer extends YamlDeserializerBase<RestOperationResponseHeaderDefinition> { @@ -10832,7 +10833,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport { @YamlProperty(name = "code", type = "string"), @YamlProperty(name = "examples", type = "array:org.apache.camel.model.rest.RestPropertyDefinition"), @YamlProperty(name = "header", type = "array:org.apache.camel.model.rest.RestOperationResponseHeaderDefinition"), - @YamlProperty(name = "message", type = "string"), + @YamlProperty(name = "message", type = "string", required = true), @YamlProperty(name = "response-model", type = "string") } ) @@ -10888,8 +10889,8 @@ public final class ModelDeserializers extends YamlDeserializerSupport { order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1, nodes = "rest-property", properties = { - @YamlProperty(name = "key", type = "string"), - @YamlProperty(name = "value", type = "string") + @YamlProperty(name = "key", type = "string", required = true), + @YamlProperty(name = "value", type = "string", required = true) } ) public static class RestPropertyDefinitionDeserializer extends YamlDeserializerBase<RestPropertyDefinition> { @@ -11353,7 +11354,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport { nodes = "route-builder", properties = { @YamlProperty(name = "id", type = "string"), - @YamlProperty(name = "ref", type = "string") + @YamlProperty(name = "ref", type = "string", required = true) } ) public static class RouteBuilderDefinitionDeserializer extends YamlDeserializerBase<RouteBuilderDefinition> { @@ -11397,7 +11398,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport { types = org.apache.camel.model.RouteContextRefDefinition.class, order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1, nodes = "route-context-ref", - properties = @YamlProperty(name = "ref", type = "string") + properties = @YamlProperty(name = "ref", type = "string", required = true) ) public static class RouteContextRefDefinitionDeserializer extends YamlDeserializerBase<RouteContextRefDefinition> { public RouteContextRefDefinitionDeserializer() { @@ -11478,7 +11479,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport { types = org.apache.camel.model.RouteTemplateContextRefDefinition.class, order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1, nodes = "route-template-context-ref", - properties = @YamlProperty(name = "ref", type = "string") + properties = @YamlProperty(name = "ref", type = "string", required = true) ) public static class RouteTemplateContextRefDefinitionDeserializer extends YamlDeserializerBase<RouteTemplateContextRefDefinition> { public RouteTemplateContextRefDefinitionDeserializer() { @@ -11555,7 +11556,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport { properties = { @YamlProperty(name = "default-value", type = "string"), @YamlProperty(name = "description", type = "string"), - @YamlProperty(name = "name", type = "string") + @YamlProperty(name = "name", type = "string", required = true) } ) public static class RouteTemplateParameterDefinitionDeserializer extends YamlDeserializerBase<RouteTemplateParameterDefinition> { @@ -11860,6 +11861,56 @@ public final class ModelDeserializers extends YamlDeserializerSupport { } @YamlType( + types = org.apache.camel.model.SagaOptionDefinition.class, + order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1, + properties = { + @YamlProperty(name = "expression", type = "object:org.apache.camel.model.language.ExpressionDefinition"), + @YamlProperty(name = "option-name", type = "string", required = true), + @YamlProperty(name = "__extends", type = "object:org.apache.camel.model.language.ExpressionDefinition") + } + ) + public static class SagaOptionDefinitionDeserializer extends YamlDeserializerBase<SagaOptionDefinition> { + public SagaOptionDefinitionDeserializer() { + super(SagaOptionDefinition.class); + } + + @Override + protected SagaOptionDefinition newInstance() { + return new SagaOptionDefinition(); + } + + @Override + protected boolean setProperty(SagaOptionDefinition target, String propertyKey, + String propertyName, Node node) { + switch(propertyKey) { + case "expression": { + org.apache.camel.model.language.ExpressionDefinition val = asType(node, org.apache.camel.model.language.ExpressionDefinition.class); + target.setExpression(val); + break; + } + case "option-name": { + String val = asText(node); + target.setOptionName(val); + break; + } + default: { + ExpressionDefinition ed = target.getExpressionType(); + if (ed != null) { + throw new org.apache.camel.dsl.yaml.common.exception.UnsupportedFieldException(propertyName, "an expression has already been configured (" + ed + ")"); + } + ed = ExpressionDeserializers.constructExpressionType(propertyKey, node); + if (ed != null) { + target.setExpressionType(ed); + } else { + return false; + } + } + } + return true; + } + } + + @YamlType( types = org.apache.camel.model.SamplingDefinition.class, order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1, nodes = "sample", @@ -12738,7 +12789,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport { properties = { @YamlProperty(name = "expression", type = "object:org.apache.camel.model.language.ExpressionDefinition"), @YamlProperty(name = "inherit-error-handler", type = "boolean"), - @YamlProperty(name = "name", type = "string"), + @YamlProperty(name = "name", type = "string", required = true), @YamlProperty(name = "__extends", type = "object:org.apache.camel.model.language.ExpressionDefinition") } ) @@ -12795,7 +12846,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport { properties = { @YamlProperty(name = "expression", type = "object:org.apache.camel.model.language.ExpressionDefinition"), @YamlProperty(name = "inherit-error-handler", type = "boolean"), - @YamlProperty(name = "name", type = "string"), + @YamlProperty(name = "name", type = "string", required = true), @YamlProperty(name = "__extends", type = "object:org.apache.camel.model.language.ExpressionDefinition") } ) @@ -12919,7 +12970,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport { order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1, nodes = "soapjaxb", properties = { - @YamlProperty(name = "context-path", type = "string"), + @YamlProperty(name = "context-path", type = "string", required = true), @YamlProperty(name = "element-name-strategy-ref", type = "string"), @YamlProperty(name = "encoding", type = "string"), @YamlProperty(name = "id", type = "string"), @@ -14076,7 +14127,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport { @YamlProperty(name = "inherit-namespace-tag-name", type = "string"), @YamlProperty(name = "regex", type = "boolean"), @YamlProperty(name = "skip-first", type = "boolean"), - @YamlProperty(name = "token", type = "string"), + @YamlProperty(name = "token", type = "string", required = true), @YamlProperty(name = "trim", type = "boolean"), @YamlProperty(name = "xml", type = "boolean") } @@ -15427,7 +15478,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport { order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1, nodes = "weighted", properties = { - @YamlProperty(name = "distribution-ratio", type = "string"), + @YamlProperty(name = "distribution-ratio", type = "string", required = true), @YamlProperty(name = "distribution-ratio-delimiter", type = "string"), @YamlProperty(name = "id", type = "string"), @YamlProperty(name = "round-robin", type = "string") @@ -16481,11 +16532,11 @@ public final class ModelDeserializers extends YamlDeserializerSupport { order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1, nodes = "zookeeper-service-discovery", properties = { - @YamlProperty(name = "base-path", type = "string"), + @YamlProperty(name = "base-path", type = "string", required = true), @YamlProperty(name = "connection-timeout", type = "string"), @YamlProperty(name = "id", type = "string"), @YamlProperty(name = "namespace", type = "string"), - @YamlProperty(name = "nodes", type = "string"), + @YamlProperty(name = "nodes", type = "string", required = true), @YamlProperty(name = "properties", type = "array:org.apache.camel.model.PropertyDefinition"), @YamlProperty(name = "reconnect-base-sleep-time", type = "string"), @YamlProperty(name = "reconnect-max-retries", type = "string"), diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializersResolver.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializersResolver.java index 1ddeaa2..1cc0e16 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializersResolver.java +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializersResolver.java @@ -304,6 +304,7 @@ public final class ModelDeserializersResolver implements YamlDeserializerResolve case "org.apache.camel.model.dataformat.RssDataFormat": return new ModelDeserializers.RssDataFormatDeserializer(); case "saga": return new ModelDeserializers.SagaDefinitionDeserializer(); case "org.apache.camel.model.SagaDefinition": return new ModelDeserializers.SagaDefinitionDeserializer(); + case "org.apache.camel.model.SagaOptionDefinition": return new ModelDeserializers.SagaOptionDefinitionDeserializer(); case "sample": return new ModelDeserializers.SamplingDefinitionDeserializer(); case "org.apache.camel.model.SamplingDefinition": return new ModelDeserializers.SamplingDefinitionDeserializer(); case "script": return new ModelDeserializers.ScriptDefinitionDeserializer(); diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/CustomResolver.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/CustomResolver.java index 20d77a0..d5aa2e6 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/CustomResolver.java +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/CustomResolver.java @@ -58,8 +58,6 @@ public class CustomResolver implements YamlDeserializerResolver { return new TryDefinitionDeserializer(); case "org.apache.camel.model.SagaActionUriDefinition": return new SagaActionUriDefinitionDeserializer(); - case "org.apache.camel.model.SagaOptionDefinition": - return new SagaOptionDefinitionDeserializer(); case "org.apache.camel.model.ProcessorDefinition": return new ProcessorDefinitionDefinitionDeserializer(); case "to": diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/SagaOptionDefinitionDeserializer.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/SagaOptionDefinitionDeserializer.java deleted file mode 100644 index 8448807..0000000 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/SagaOptionDefinitionDeserializer.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.camel.dsl.yaml.deserializers; - -import org.apache.camel.dsl.yaml.common.YamlDeserializerBase; -import org.apache.camel.dsl.yaml.common.YamlDeserializerResolver; -import org.apache.camel.model.SagaOptionDefinition; -import org.apache.camel.model.language.ExpressionDefinition; -import org.apache.camel.spi.annotations.YamlProperty; -import org.apache.camel.spi.annotations.YamlType; -import org.snakeyaml.engine.v2.nodes.Node; - -@YamlType( - types = SagaOptionDefinition.class, - order = YamlDeserializerResolver.ORDER_DEFAULT, - properties = { - @YamlProperty(name = "__extends", type = "ref:org.apache.camel.model.language.ExpressionDefinition"), - @YamlProperty(name = "option-name", type = "string", required = true) - }) -public class SagaOptionDefinitionDeserializer extends YamlDeserializerBase<SagaOptionDefinition> { - public SagaOptionDefinitionDeserializer() { - super(SagaOptionDefinition.class); - } - - @Override - protected SagaOptionDefinition newInstance() { - return new SagaOptionDefinition(); - } - - @Override - protected boolean setProperty(SagaOptionDefinition target, String propertyKey, String propertyName, Node value) { - switch (propertyKey) { - case "option-name": - target.setOptionName(asText(value)); - break; - case "expression": - ExpressionDefinition ed = ExpressionDeserializers.constructExpressionType(value); - if (ed != null) { - target.setExpression(ed); - } - break; - default: - return false; - } - - return true; - } - - @Override - protected void handleUnknownProperty(SagaOptionDefinition target, String propertyKey, String propertyName, Node node) { - ExpressionDefinition ed = ExpressionDeserializers.constructExpressionType(propertyKey, node); - if (ed != null) { - target.setExpression(ed); - } else { - super.handleUnknownProperty(target, propertyKey, propertyName, node); - } - } -} 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 b164130..33185c0 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 @@ -133,6 +133,8 @@ public abstract class GenerateYamlSupportMojo extends AbstractMojo { protected MavenProject project; @Parameter protected List<String> bannedDefinitions; + @Parameter + protected List<String> additionalDefinitions; @Override public void execute() throws MojoFailureException { @@ -307,12 +309,18 @@ public abstract class GenerateYamlSupportMojo extends AbstractMojo { } protected Stream<ClassInfo> all() { - return Stream.of(XML_ROOT_ELEMENT_ANNOTATION_CLASS, XML_TYPE_CLASS) - .map(view::getAnnotations) - .flatMap(Collection::stream) - .map(AnnotationInstance::target) - .filter(at -> at.kind() == AnnotationTarget.Kind.CLASS) - .map(AnnotationTarget::asClass) + Stream<ClassInfo> discovered = Stream.of(XML_ROOT_ELEMENT_ANNOTATION_CLASS, XML_TYPE_CLASS) + .map(view::getAnnotations) + .flatMap(Collection::stream) + .map(AnnotationInstance::target) + .filter(at -> at.kind() == AnnotationTarget.Kind.CLASS) + .map(AnnotationTarget::asClass); + + Stream<ClassInfo> additional = additionalDefinitions != null + ? additionalDefinitions.stream().map(DotName::createSimple).map(view::getClassByName) + : Stream.empty(); + + return Stream.concat(discovered, additional) .filter(ci -> (ci.flags() & Modifier.ABSTRACT) == 0) .filter(ci -> !isBanned(ci)) .filter(ci -> !ci.isEnum()) @@ -515,7 +523,10 @@ public abstract class GenerateYamlSupportMojo extends AbstractMojo { annotationValue(fi, METADATA_ANNOTATION_CLASS, "required") .map(AnnotationValue::asBoolean), annotationValue(fi, XML_VALUE_ANNOTATION_CLASS, "required") - .map(AnnotationValue::asBoolean)).orElse(false); + .map(AnnotationValue::asBoolean), + annotationValue(fi, XML_ATTRIBUTE_ANNOTATION_CLASS, "required") + .map(AnnotationValue::asBoolean)) + .orElse(false); } protected boolean extendsType(ClassInfo ci, DotName superType) { diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/camel-yaml-dsl.json b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/camel-yaml-dsl.json index 4a59104..4555f0c 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/camel-yaml-dsl.json +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/camel-yaml-dsl.json @@ -443,7 +443,8 @@ "strategy-ref" : { "type" : "string" } - } + }, + "required" : [ "operation" ] }, "org.apache.camel.model.ContextScanDefinition" : { "type" : "object", @@ -481,7 +482,8 @@ "type" : "string" } } - } ] + } ], + "required" : [ "type" ] }, "org.apache.camel.model.DataFormatDefinition" : { "type" : "object", @@ -757,7 +759,8 @@ "value" : { "type" : "string" } - } + }, + "required" : [ "key", "value" ] }, "org.apache.camel.model.GlobalOptionsDefinition" : { "type" : "object", @@ -904,7 +907,8 @@ "$ref" : "#/items/definitions/org.apache.camel.model.ProcessorDefinition" } } - } + }, + "required" : [ "message-id-repository-ref" ] }, "org.apache.camel.model.InOnlyDefinition" : { "oneOf" : [ { @@ -1010,7 +1014,8 @@ "type" : "string" } } - } ] + } ], + "required" : [ "uri" ] }, "org.apache.camel.model.LoadBalanceDefinition" : { "type" : "object", @@ -1080,7 +1085,8 @@ "type" : "string" } } - } ] + } ], + "required" : [ "message" ] }, "org.apache.camel.model.LoopDefinition" : { "type" : "object", @@ -1506,7 +1512,8 @@ "$ref" : "#/items/definitions/org.apache.camel.model.ProcessorDefinition" } } - } + }, + "required" : [ "ref" ] }, "org.apache.camel.model.PollEnrichDefinition" : { "type" : "object", @@ -1552,7 +1559,8 @@ "ref" : { "type" : "string" } - } + }, + "required" : [ "ref" ] }, "org.apache.camel.model.PropertyDefinition" : { "type" : "object", @@ -1563,7 +1571,8 @@ "value" : { "type" : "string" } - } + }, + "required" : [ "key", "value" ] }, "org.apache.camel.model.RecipientListDefinition" : { "type" : "object", @@ -1714,7 +1723,8 @@ "type" : "boolean" } } - } ] + } ], + "required" : [ "header-name" ] }, "org.apache.camel.model.RemoveHeadersDefinition" : { "oneOf" : [ { @@ -1732,7 +1742,8 @@ "type" : "string" } } - } ] + } ], + "required" : [ "pattern" ] }, "org.apache.camel.model.RemovePropertiesDefinition" : { "oneOf" : [ { @@ -1750,7 +1761,8 @@ "type" : "string" } } - } ] + } ], + "required" : [ "pattern" ] }, "org.apache.camel.model.RemovePropertyDefinition" : { "oneOf" : [ { @@ -1765,7 +1777,8 @@ "type" : "string" } } - } ] + } ], + "required" : [ "property-name" ] }, "org.apache.camel.model.ResequenceDefinition" : { "type" : "object", @@ -1844,7 +1857,8 @@ "ref" : { "type" : "string" } - } + }, + "required" : [ "ref" ] }, "org.apache.camel.model.RollbackDefinition" : { "oneOf" : [ { @@ -1880,7 +1894,8 @@ "type" : "string" } } - } ] + } ], + "required" : [ "ref" ] }, "org.apache.camel.model.RouteContextRefDefinition" : { "type" : "object", @@ -1888,7 +1903,8 @@ "ref" : { "type" : "string" } - } + }, + "required" : [ "ref" ] }, "org.apache.camel.model.RouteDefinition" : { "type" : "object", @@ -1917,7 +1933,8 @@ "ref" : { "type" : "string" } - } + }, + "required" : [ "ref" ] }, "org.apache.camel.model.RouteTemplateDefinition" : { "type" : "object", @@ -1945,7 +1962,8 @@ "name" : { "type" : "string" } - } + }, + "required" : [ "name" ] }, "org.apache.camel.model.RouteTemplatesDefinition" : { "type" : "object", @@ -2048,7 +2066,13 @@ }, "org.apache.camel.model.SagaOptionDefinition" : { "type" : "object", + "anyOf" : [ { + "$ref" : "#/items/definitions/org.apache.camel.model.language.ExpressionDefinition" + } ], "properties" : { + "expression" : { + "$ref" : "#/items/definitions/org.apache.camel.model.language.ExpressionDefinition" + }, "option-name" : { "type" : "string" } @@ -2131,7 +2155,8 @@ "name" : { "type" : "string" } - } + }, + "required" : [ "name" ] }, "org.apache.camel.model.SetPropertyDefinition" : { "type" : "object", @@ -2148,7 +2173,8 @@ "name" : { "type" : "string" } - } + }, + "required" : [ "name" ] }, "org.apache.camel.model.SortDefinition" : { "type" : "object", @@ -3369,7 +3395,8 @@ "session-timeout" : { "type" : "string" } - } + }, + "required" : [ "base-path", "nodes" ] }, "org.apache.camel.model.config.BatchResequencerConfig" : { "type" : "object", @@ -3475,7 +3502,8 @@ "type" : "string" } } - } ] + } ], + "required" : [ "instance-class-name" ] }, "org.apache.camel.model.dataformat.BarcodeDataFormat" : { "type" : "object", @@ -3544,7 +3572,8 @@ "unmarshal-single-object" : { "type" : "boolean" } - } + }, + "required" : [ "mapping", "stream-name" ] }, "org.apache.camel.model.dataformat.BindyDataFormat" : { "type" : "object", @@ -3755,7 +3784,8 @@ "type" : "string" } } - } ] + } ], + "required" : [ "ref" ] }, "org.apache.camel.model.dataformat.DataFormatsDefinition" : { "type" : "object", @@ -4047,7 +4077,8 @@ "pattern" : { "type" : "string" } - } + }, + "required" : [ "pattern" ] }, "org.apache.camel.model.dataformat.GzipDataFormat" : { "type" : "object", @@ -4195,7 +4226,8 @@ "xml-stream-writer-wrapper" : { "type" : "string" } - } + }, + "required" : [ "context-path" ] }, "org.apache.camel.model.dataformat.JsonApiDataFormat" : { "type" : "object", @@ -4418,7 +4450,8 @@ "type" : "string" } } - } ] + } ], + "required" : [ "context-path" ] }, "org.apache.camel.model.dataformat.SyslogDataFormat" : { "type" : "object", @@ -5173,7 +5206,7 @@ "type" : "boolean" } }, - "required" : [ "expression" ] + "required" : [ "expression", "language" ] }, "org.apache.camel.model.language.MethodCallExpression" : { "oneOf" : [ { @@ -5351,7 +5384,7 @@ } } } ], - "required" : [ "expression" ] + "required" : [ "expression", "token" ] }, "org.apache.camel.model.language.XMLTokenizerExpression" : { "oneOf" : [ { @@ -5468,7 +5501,8 @@ "type" : "string" } } - } ] + } ], + "required" : [ "ref" ] }, "org.apache.camel.model.loadbalancer.FailoverLoadBalancerDefinition" : { "type" : "object", @@ -5543,7 +5577,8 @@ "round-robin" : { "type" : "string" } - } + }, + "required" : [ "distribution-ratio" ] }, "org.apache.camel.model.rest.DeleteVerbDefinition" : { "type" : "object", @@ -6215,7 +6250,8 @@ "type" : "string" } } - } + }, + "required" : [ "name", "type" ] }, "org.apache.camel.model.rest.RestOperationResponseHeaderDefinition" : { "type" : "object", @@ -6248,7 +6284,8 @@ "type" : "string" } } - } + }, + "required" : [ "name" ] }, "org.apache.camel.model.rest.RestOperationResponseMsgDefinition" : { "type" : "object", @@ -6274,7 +6311,8 @@ "response-model" : { "type" : "string" } - } + }, + "required" : [ "message" ] }, "org.apache.camel.model.rest.RestPropertyDefinition" : { "type" : "object", @@ -6285,7 +6323,8 @@ "value" : { "type" : "string" } - } + }, + "required" : [ "key", "value" ] }, "org.apache.camel.model.rest.RestSecuritiesDefinition" : { "type" : "object",