You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2021/02/26 10:08:56 UTC
[camel] 08/09: CAMEL-12545: create a yaml based route loader (add
support for auto generated TryDefinition)
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 d7768d69513b9f9a82fdae7f3bbf9fa2d185cfab
Author: Luca Burgazzoli <lb...@gmail.com>
AuthorDate: Thu Feb 25 19:20:11 2021 +0100
CAMEL-12545: create a yaml based route loader (add support for auto generated TryDefinition)
---
.../java/org/apache/camel/spi/Metadata.java | 1 -
.../apache/camel/spi/annotations/DslProperty.java | 31 ++++++++
.../camel/model/CircuitBreakerDefinition.java | 2 +
.../java/org/apache/camel/model/TryDefinition.java | 13 ++++
.../EndpointConsumerDeserializersResolver.java | 4 -
.../EndpointProducerDeserializersResolver.java | 5 --
.../dsl/yaml/deserializers/ModelDeserializers.java | 58 ++++++++------
.../dsl/yaml/deserializers/CustomResolver.java | 4 +-
.../deserializers/TryDefinitionDeserializer.java | 61 ---------------
.../dsl/yaml/GenerateYamlDeserializersMojo.java | 24 +++---
.../maven/dsl/yaml/GenerateYamlSupportMojo.java | 32 +++++++-
.../src/generated/resources/camel-yaml-dsl.json | 91 +++++++++++-----------
.../org/apache/camel/dsl/yaml/TryTest.groovy | 39 ++++------
.../main/java/org/apache/camel/spi/Metadata.java | 1 -
.../apache/camel/spi/annotations/DslProperty.java | 31 ++++++++
15 files changed, 216 insertions(+), 181 deletions(-)
diff --git a/core/camel-api/src/generated/java/org/apache/camel/spi/Metadata.java b/core/camel-api/src/generated/java/org/apache/camel/spi/Metadata.java
index 19be69a..f37ea43 100644
--- a/core/camel-api/src/generated/java/org/apache/camel/spi/Metadata.java
+++ b/core/camel-api/src/generated/java/org/apache/camel/spi/Metadata.java
@@ -132,5 +132,4 @@ public @interface Metadata {
* specify which options each implementation only supports.
*/
String includeProperties() default "";
-
}
diff --git a/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/DslProperty.java b/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/DslProperty.java
new file mode 100644
index 0000000..b2bf04b
--- /dev/null
+++ b/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/DslProperty.java
@@ -0,0 +1,31 @@
+/*
+ * 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.spi.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Internal annotation used to include fields otherwise excluded because annotate with XmlTransient.
+ */
+@Target(ElementType.FIELD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface DslProperty {
+ String name() default "";
+}
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/CircuitBreakerDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/CircuitBreakerDefinition.java
index 77fb7d7..a248419 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/CircuitBreakerDefinition.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/CircuitBreakerDefinition.java
@@ -28,6 +28,7 @@ import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.annotations.DslProperty;
@Metadata(label = "eip,routing,circuitbreaker")
@XmlRootElement(name = "circuitBreaker")
@@ -42,6 +43,7 @@ public class CircuitBreakerDefinition extends OutputDefinition<CircuitBreakerDef
private FaultToleranceConfigurationDefinition faultToleranceConfiguration;
@XmlAttribute
private String configurationRef;
+ @DslProperty
@XmlTransient
private OnFallbackDefinition onFallback;
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/TryDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/TryDefinition.java
index 9dd687e..069769c 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/TryDefinition.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/TryDefinition.java
@@ -30,6 +30,7 @@ import javax.xml.bind.annotation.XmlTransient;
import org.apache.camel.Predicate;
import org.apache.camel.spi.AsPredicate;
import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.annotations.DslProperty;
/**
* Marks the beginning of a try, catch, finally block
@@ -38,8 +39,10 @@ import org.apache.camel.spi.Metadata;
@XmlRootElement(name = "doTry")
@XmlAccessorType(XmlAccessType.FIELD)
public class TryDefinition extends OutputDefinition<TryDefinition> {
+ @DslProperty
@XmlTransient
private List<CatchDefinition> catchClauses;
+ @DslProperty
@XmlTransient
private FinallyDefinition finallyClause;
@XmlTransient
@@ -136,6 +139,11 @@ public class TryDefinition extends OutputDefinition<TryDefinition> {
// Properties
// -------------------------------------------------------------------------
+ @XmlTransient
+ public void setCatchClauses(List<CatchDefinition> catchClauses) {
+ this.catchClauses = catchClauses;
+ }
+
public List<CatchDefinition> getCatchClauses() {
if (catchClauses == null) {
checkInitialized();
@@ -143,6 +151,11 @@ public class TryDefinition extends OutputDefinition<TryDefinition> {
return catchClauses;
}
+ @XmlTransient
+ public void setFinallyClause(FinallyDefinition finallyClause) {
+ this.finallyClause = finallyClause;
+ }
+
public FinallyDefinition getFinallyClause() {
if (finallyClause == null) {
checkInitialized();
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/EndpointConsumerDeserializersResolver.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/EndpointConsumerDeserializersResolver.java
index 76a2a53..41507eb 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/EndpointConsumerDeserializersResolver.java
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/EndpointConsumerDeserializersResolver.java
@@ -31,16 +31,12 @@ public final class EndpointConsumerDeserializersResolver implements YamlDeserial
case "atomix-set":
case "atomix-value":
case "avro":
- case "aws-ddbstream":
- case "aws-s3":
case "aws-swf":
case "aws2-ddbstream":
case "aws2-kinesis":
case "aws2-s3":
case "aws2-sqs":
- case "azure-blob":
case "azure-eventhubs":
- case "azure-queue":
case "azure-storage-blob":
case "azure-storage-datalake":
case "azure-storage-queue":
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/EndpointProducerDeserializersResolver.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/EndpointProducerDeserializersResolver.java
index 8529c20..6f8e22d 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/EndpointProducerDeserializersResolver.java
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/EndpointProducerDeserializersResolver.java
@@ -34,9 +34,6 @@ public final class EndpointProducerDeserializersResolver implements YamlDeserial
case "atomix-set":
case "atomix-value":
case "avro":
- case "aws-cw":
- case "aws-ddb":
- case "aws-s3":
case "aws-swf":
case "aws2-athena":
case "aws2-cw":
@@ -58,9 +55,7 @@ public final class EndpointProducerDeserializersResolver implements YamlDeserial
case "aws2-sqs":
case "aws2-sts":
case "aws2-translate":
- case "azure-blob":
case "azure-eventhubs":
- case "azure-queue":
case "azure-storage-blob":
case "azure-storage-datalake":
case "azure-storage-queue":
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 ac67574..3a3f325 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
@@ -1357,7 +1357,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
properties = {
@YamlProperty(name = "inherit-error-handler", type = "boolean"),
@YamlProperty(name = "otherwise", type = "object:org.apache.camel.model.OtherwiseDefinition"),
- @YamlProperty(name = "when-clauses", type = "array:org.apache.camel.model.WhenDefinition"),
+ @YamlProperty(name = "when", type = "array:org.apache.camel.model.WhenDefinition"),
@YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition")
}
)
@@ -3565,9 +3565,9 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
@YamlProperty(name = "enable-cors", type = "string"),
@YamlProperty(name = "method", type = "string"),
@YamlProperty(name = "out-type", type = "string"),
- @YamlProperty(name = "params", type = "array:org.apache.camel.model.rest.RestOperationParamDefinition"),
+ @YamlProperty(name = "param", type = "array:org.apache.camel.model.rest.RestOperationParamDefinition"),
@YamlProperty(name = "produces", type = "string"),
- @YamlProperty(name = "response-msgs", type = "array:org.apache.camel.model.rest.RestOperationResponseMsgDefinition"),
+ @YamlProperty(name = "response-message", type = "array:org.apache.camel.model.rest.RestOperationResponseMsgDefinition"),
@YamlProperty(name = "route-id", type = "string"),
@YamlProperty(name = "security", type = "array:org.apache.camel.model.rest.SecurityDefinition"),
@YamlProperty(name = "skip-binding-on-error-code", type = "string"),
@@ -4794,9 +4794,9 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
@YamlProperty(name = "enable-cors", type = "string"),
@YamlProperty(name = "method", type = "string"),
@YamlProperty(name = "out-type", type = "string"),
- @YamlProperty(name = "params", type = "array:org.apache.camel.model.rest.RestOperationParamDefinition"),
+ @YamlProperty(name = "param", type = "array:org.apache.camel.model.rest.RestOperationParamDefinition"),
@YamlProperty(name = "produces", type = "string"),
- @YamlProperty(name = "response-msgs", type = "array:org.apache.camel.model.rest.RestOperationResponseMsgDefinition"),
+ @YamlProperty(name = "response-message", type = "array:org.apache.camel.model.rest.RestOperationResponseMsgDefinition"),
@YamlProperty(name = "route-id", type = "string"),
@YamlProperty(name = "security", type = "array:org.apache.camel.model.rest.SecurityDefinition"),
@YamlProperty(name = "skip-binding-on-error-code", type = "string"),
@@ -5212,9 +5212,9 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
@YamlProperty(name = "enable-cors", type = "string"),
@YamlProperty(name = "method", type = "string"),
@YamlProperty(name = "out-type", type = "string"),
- @YamlProperty(name = "params", type = "array:org.apache.camel.model.rest.RestOperationParamDefinition"),
+ @YamlProperty(name = "param", type = "array:org.apache.camel.model.rest.RestOperationParamDefinition"),
@YamlProperty(name = "produces", type = "string"),
- @YamlProperty(name = "response-msgs", type = "array:org.apache.camel.model.rest.RestOperationResponseMsgDefinition"),
+ @YamlProperty(name = "response-message", type = "array:org.apache.camel.model.rest.RestOperationResponseMsgDefinition"),
@YamlProperty(name = "route-id", type = "string"),
@YamlProperty(name = "security", type = "array:org.apache.camel.model.rest.SecurityDefinition"),
@YamlProperty(name = "skip-binding-on-error-code", type = "string"),
@@ -8699,9 +8699,9 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
@YamlProperty(name = "enable-cors", type = "string"),
@YamlProperty(name = "method", type = "string"),
@YamlProperty(name = "out-type", type = "string"),
- @YamlProperty(name = "params", type = "array:org.apache.camel.model.rest.RestOperationParamDefinition"),
+ @YamlProperty(name = "param", type = "array:org.apache.camel.model.rest.RestOperationParamDefinition"),
@YamlProperty(name = "produces", type = "string"),
- @YamlProperty(name = "response-msgs", type = "array:org.apache.camel.model.rest.RestOperationResponseMsgDefinition"),
+ @YamlProperty(name = "response-message", type = "array:org.apache.camel.model.rest.RestOperationResponseMsgDefinition"),
@YamlProperty(name = "route-id", type = "string"),
@YamlProperty(name = "security", type = "array:org.apache.camel.model.rest.SecurityDefinition"),
@YamlProperty(name = "skip-binding-on-error-code", type = "string"),
@@ -9031,9 +9031,9 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
@YamlProperty(name = "enable-cors", type = "string"),
@YamlProperty(name = "method", type = "string"),
@YamlProperty(name = "out-type", type = "string"),
- @YamlProperty(name = "params", type = "array:org.apache.camel.model.rest.RestOperationParamDefinition"),
+ @YamlProperty(name = "param", type = "array:org.apache.camel.model.rest.RestOperationParamDefinition"),
@YamlProperty(name = "produces", type = "string"),
- @YamlProperty(name = "response-msgs", type = "array:org.apache.camel.model.rest.RestOperationResponseMsgDefinition"),
+ @YamlProperty(name = "response-message", type = "array:org.apache.camel.model.rest.RestOperationResponseMsgDefinition"),
@YamlProperty(name = "route-id", type = "string"),
@YamlProperty(name = "security", type = "array:org.apache.camel.model.rest.SecurityDefinition"),
@YamlProperty(name = "skip-binding-on-error-code", type = "string"),
@@ -9361,9 +9361,9 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
@YamlProperty(name = "enable-cors", type = "string"),
@YamlProperty(name = "method", type = "string"),
@YamlProperty(name = "out-type", type = "string"),
- @YamlProperty(name = "params", type = "array:org.apache.camel.model.rest.RestOperationParamDefinition"),
+ @YamlProperty(name = "param", type = "array:org.apache.camel.model.rest.RestOperationParamDefinition"),
@YamlProperty(name = "produces", type = "string"),
- @YamlProperty(name = "response-msgs", type = "array:org.apache.camel.model.rest.RestOperationResponseMsgDefinition"),
+ @YamlProperty(name = "response-message", type = "array:org.apache.camel.model.rest.RestOperationResponseMsgDefinition"),
@YamlProperty(name = "route-id", type = "string"),
@YamlProperty(name = "security", type = "array:org.apache.camel.model.rest.SecurityDefinition"),
@YamlProperty(name = "skip-binding-on-error-code", type = "string"),
@@ -10616,7 +10616,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
@YamlProperty(name = "security-definitions", type = "object:org.apache.camel.model.rest.RestSecuritiesDefinition"),
@YamlProperty(name = "skip-binding-on-error-code", type = "string"),
@YamlProperty(name = "tag", type = "string"),
- @YamlProperty(name = "verbs", type = "array:org.apache.camel.model.rest.VerbDefinition")
+ @YamlProperty(name = "verb", type = "array:org.apache.camel.model.rest.VerbDefinition")
}
)
public static class RestDefinitionDeserializer extends YamlDeserializerBase<RestDefinition> {
@@ -11201,7 +11201,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
types = org.apache.camel.model.rest.RestsDefinition.class,
order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
nodes = "rests",
- properties = @YamlProperty(name = "rests", type = "array:org.apache.camel.model.rest.RestDefinition")
+ properties = @YamlProperty(name = "rest", type = "array:org.apache.camel.model.rest.RestDefinition")
)
public static class RestsDefinitionDeserializer extends YamlDeserializerBase<RestsDefinition> {
public RestsDefinitionDeserializer() {
@@ -11640,7 +11640,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
types = org.apache.camel.model.RouteTemplatesDefinition.class,
order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
nodes = "route-templates",
- properties = @YamlProperty(name = "route-templates", type = "array:org.apache.camel.model.RouteTemplateDefinition")
+ properties = @YamlProperty(name = "route-template", type = "array:org.apache.camel.model.RouteTemplateDefinition")
)
public static class RouteTemplatesDefinitionDeserializer extends YamlDeserializerBase<RouteTemplatesDefinition> {
public RouteTemplatesDefinitionDeserializer() {
@@ -11673,7 +11673,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
types = org.apache.camel.model.RoutesDefinition.class,
order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
nodes = "routes",
- properties = @YamlProperty(name = "routes", type = "array:org.apache.camel.model.RouteDefinition")
+ properties = @YamlProperty(name = "route", type = "array:org.apache.camel.model.RouteDefinition")
)
public static class RoutesDefinitionDeserializer extends YamlDeserializerBase<RoutesDefinition> {
public RoutesDefinitionDeserializer() {
@@ -14612,6 +14612,8 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
nodes = "do-try",
properties = {
+ @YamlProperty(name = "do-catch", type = "array:org.apache.camel.model.CatchDefinition"),
+ @YamlProperty(name = "do-finally", type = "object:org.apache.camel.model.FinallyDefinition"),
@YamlProperty(name = "inherit-error-handler", type = "boolean"),
@YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition")
}
@@ -14630,6 +14632,16 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
protected boolean setProperty(TryDefinition target, String propertyKey, String propertyName,
Node node) {
switch(propertyKey) {
+ case "do-catch": {
+ java.util.List<org.apache.camel.model.CatchDefinition> val = asFlatList(node, org.apache.camel.model.CatchDefinition.class);
+ target.setCatchClauses(val);
+ break;
+ }
+ case "do-finally": {
+ org.apache.camel.model.FinallyDefinition val = asType(node, org.apache.camel.model.FinallyDefinition.class);
+ target.setFinallyClause(val);
+ break;
+ }
case "inherit-error-handler": {
String val = asText(node);
target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
@@ -14659,7 +14671,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
@YamlProperty(name = "delimiter", type = "string"),
@YamlProperty(name = "empty-value", type = "string"),
@YamlProperty(name = "header-extraction-enabled", type = "boolean"),
- @YamlProperty(name = "headers", type = "array:org.apache.camel.model.dataformat.UniVocityHeader"),
+ @YamlProperty(name = "univocity-header", type = "array:org.apache.camel.model.dataformat.UniVocityHeader"),
@YamlProperty(name = "headers-disabled", type = "boolean"),
@YamlProperty(name = "id", type = "string"),
@YamlProperty(name = "ignore-leading-whitespaces", type = "boolean"),
@@ -14801,7 +14813,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
@YamlProperty(name = "comment", type = "string"),
@YamlProperty(name = "empty-value", type = "string"),
@YamlProperty(name = "header-extraction-enabled", type = "boolean"),
- @YamlProperty(name = "headers", type = "array:org.apache.camel.model.dataformat.UniVocityHeader"),
+ @YamlProperty(name = "univocity-header", type = "array:org.apache.camel.model.dataformat.UniVocityHeader"),
@YamlProperty(name = "headers-disabled", type = "boolean"),
@YamlProperty(name = "id", type = "string"),
@YamlProperty(name = "ignore-leading-whitespaces", type = "boolean"),
@@ -14980,7 +14992,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
@YamlProperty(name = "empty-value", type = "string"),
@YamlProperty(name = "escape-char", type = "string"),
@YamlProperty(name = "header-extraction-enabled", type = "boolean"),
- @YamlProperty(name = "headers", type = "array:org.apache.camel.model.dataformat.UniVocityHeader"),
+ @YamlProperty(name = "univocity-header", type = "array:org.apache.camel.model.dataformat.UniVocityHeader"),
@YamlProperty(name = "headers-disabled", type = "boolean"),
@YamlProperty(name = "id", type = "string"),
@YamlProperty(name = "ignore-leading-whitespaces", type = "boolean"),
@@ -15511,9 +15523,9 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
@YamlProperty(name = "enable-cors", type = "string"),
@YamlProperty(name = "method", type = "string"),
@YamlProperty(name = "out-type", type = "string"),
- @YamlProperty(name = "params", type = "array:org.apache.camel.model.rest.RestOperationParamDefinition"),
+ @YamlProperty(name = "param", type = "array:org.apache.camel.model.rest.RestOperationParamDefinition"),
@YamlProperty(name = "produces", type = "string"),
- @YamlProperty(name = "response-msgs", type = "array:org.apache.camel.model.rest.RestOperationResponseMsgDefinition"),
+ @YamlProperty(name = "response-message", type = "array:org.apache.camel.model.rest.RestOperationResponseMsgDefinition"),
@YamlProperty(name = "route-id", type = "string"),
@YamlProperty(name = "security", type = "array:org.apache.camel.model.rest.SecurityDefinition"),
@YamlProperty(name = "skip-binding-on-error-code", type = "string"),
@@ -15828,7 +15840,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
@YamlProperty(name = "copy", type = "boolean"),
@YamlProperty(name = "dynamic-uri", type = "boolean"),
@YamlProperty(name = "executor-service-ref", type = "string"),
- @YamlProperty(name = "headers", type = "array:org.apache.camel.model.SetHeaderDefinition"),
+ @YamlProperty(name = "set-header", type = "array:org.apache.camel.model.SetHeaderDefinition"),
@YamlProperty(name = "ignore-invalid-endpoint", type = "boolean"),
@YamlProperty(name = "inherit-error-handler", type = "boolean"),
@YamlProperty(name = "body", type = "object:org.apache.camel.model.ExpressionSubElementDefinition"),
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 845785c..16b29bb 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
@@ -54,8 +54,8 @@ public class CustomResolver implements YamlDeserializerResolver {
return new BeansDeserializer();
case "error-handler":
return new ErrorHandlerBuilderDeserializer();
- case "do-try":
- return new TryDefinitionDeserializer();
+ //case "do-try":
+ // return new TryDefinitionDeserializer();
case "org.apache.camel.model.ProcessorDefinition":
return new ProcessorDefinitionDeserializer();
default:
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/TryDefinitionDeserializer.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/TryDefinitionDeserializer.java
deleted file mode 100644
index 267efe1..0000000
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/TryDefinitionDeserializer.java
+++ /dev/null
@@ -1,61 +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.YamlDeserializationContext;
-import org.apache.camel.dsl.yaml.common.YamlDeserializerResolver;
-import org.apache.camel.model.CatchDefinition;
-import org.apache.camel.model.FinallyDefinition;
-import org.apache.camel.model.TryDefinition;
-import org.apache.camel.spi.annotations.YamlProperty;
-import org.apache.camel.spi.annotations.YamlType;
-import org.snakeyaml.engine.v2.nodes.Node;
-
-@YamlType(
- nodes = "do-try",
- types = TryDefinition.class,
- order = YamlDeserializerResolver.ORDER_DEFAULT,
- properties = {
- @YamlProperty(name = "__extends", type = "ref:org.apache.camel.model.TryDefinition"),
- @YamlProperty(name = "do-catch", type = "object:org.apache.camel.model.CatchDefinition"),
- @YamlProperty(name = "do-finally", type = "object:org.apache.camel.model.FinallyDefinition")
- })
-public class TryDefinitionDeserializer extends ModelDeserializers.TryDefinitionDeserializer {
- @Override
- protected void handleUnknownProperty(TryDefinition target, String propertyKey, String propertyName, Node value) {
- switch (propertyKey) {
- case "do-catch": {
- YamlDeserializationContext dc = getDeserializationContext(value);
- CatchDefinition definition = dc.construct(propertyKey, value, CatchDefinition.class);
-
- target.addOutput(definition);
- break;
- }
- case "do-finally": {
- YamlDeserializationContext dc = getDeserializationContext(value);
- FinallyDefinition definition = dc.construct(propertyKey, value, FinallyDefinition.class);
-
- target.addOutput(definition);
- break;
- }
- default:
- super.handleUnknownProperty(target, propertyKey, propertyName, value);
- break;
-
- }
- }
-}
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 94659c8..ff755a0 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
@@ -599,18 +599,8 @@ public class GenerateYamlDeserializersMojo extends GenerateYamlSupportMojo {
@SuppressWarnings("MethodLength")
private void generateSetValue(CodeBlock.Builder cb, FieldInfo field, Collection<AnnotationSpec> annotations) {
- if(hasAnnotation(field, XML_TRANSIENT_CLASS)) {
- ClassInfo ci = view.getClassByName(field.type().name());
- if (ci == null) {
- return;
- }
-
- switch (ci.name().toString()) {
- case "org.apache.camel.model.OnFallbackDefinition":
- break;
- default:
- return;
- }
+ if(hasAnnotation(field, XML_TRANSIENT_CLASS) && !hasAnnotation(field, DSL_PROPERTY_ANNOTATION)) {
+ return;
}
//
@@ -750,7 +740,10 @@ public class GenerateYamlDeserializersMojo extends GenerateYamlSupportMojo {
cb.endControlFlow();
annotations.add(
- yamlPropertyWithSubtype(fieldName, "array", parametrizedType.name().toString(), isRequired(field))
+ yamlPropertyWithSubtype(
+ StringHelper.camelCaseToDash(name).toLowerCase(Locale.US),
+ "array",
+ parametrizedType.name().toString(), isRequired(field))
);
}
return;
@@ -790,7 +783,10 @@ public class GenerateYamlDeserializersMojo extends GenerateYamlSupportMojo {
cb.endControlFlow();
annotations.add(
- yamlPropertyWithSubtype(fieldName, "array", parametrizedType.name().toString(), isRequired(field))
+ yamlPropertyWithSubtype(
+ StringHelper.camelCaseToDash(name).toLowerCase(Locale.US),
+ "array",
+ parametrizedType.name().toString(), isRequired(field))
);
}
return;
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 88f1a0a..5b16c1e 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
@@ -34,6 +34,7 @@ import com.squareup.javapoet.AnnotationSpec;
import com.squareup.javapoet.ClassName;
import org.apache.camel.maven.dsl.yaml.support.IndexerSupport;
import org.apache.camel.util.AntPathMatcher;
+import org.apache.camel.util.ObjectHelper;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.Parameter;
@@ -101,6 +102,8 @@ public abstract class GenerateYamlSupportMojo extends AbstractMojo {
= DotName.createSimple("org.apache.camel.spi.annotations.YamlIn");
public static final DotName YAML_OUT_ANNOTATION
= DotName.createSimple("org.apache.camel.spi.annotations.YamlOut");
+ public static final DotName DSL_PROPERTY_ANNOTATION
+ = DotName.createSimple("org.apache.camel.spi.annotations.DslProperty");
public static final ClassName CN_DESERIALIZER_RESOLVER
= ClassName.get("org.apache.camel.dsl.yaml.common", "YamlDeserializerResolver");
@@ -156,14 +159,23 @@ public abstract class GenerateYamlSupportMojo extends AbstractMojo {
// **************************
protected static boolean hasAnnotation(ClassInfo target, DotName annotationName) {
+ if (target == null) {
+ return false;
+ }
return target.classAnnotation(annotationName) != null;
}
protected static boolean hasAnnotation(FieldInfo target, DotName annotationName) {
+ if (target == null) {
+ return false;
+ }
return target.annotation(annotationName) != null;
}
protected static boolean hasAnnotationValue(ClassInfo target, DotName annotationName, String name) {
+ if (target == null) {
+ return false;
+ }
return annotationValue(
target.classAnnotation(annotationName),
name).isPresent();
@@ -176,18 +188,27 @@ public abstract class GenerateYamlSupportMojo extends AbstractMojo {
}
protected static Optional<AnnotationValue> annotationValue(ClassInfo target, DotName annotationName, String name) {
+ if (target == null) {
+ return Optional.empty();
+ }
return annotationValue(
target.classAnnotation(annotationName),
name);
}
protected static Optional<AnnotationValue> annotationValue(FieldInfo target, DotName annotationName, String name) {
+ if (target == null) {
+ return Optional.empty();
+ }
return annotationValue(
target.annotation(annotationName),
name);
}
protected static Optional<AnnotationValue> annotationValue(MethodInfo target, DotName annotationName, String name) {
+ if (target == null) {
+ return Optional.empty();
+ }
return annotationValue(
target.annotation(annotationName),
name);
@@ -510,7 +531,12 @@ public abstract class GenerateYamlSupportMojo extends AbstractMojo {
}
protected String fieldName(FieldInfo field) {
+ ClassInfo ct = view.getClassByName(field.type().name());
+
return firstPresent(
+ annotationValue(field, DSL_PROPERTY_ANNOTATION, "name")
+ .map(AnnotationValue::asString)
+ .filter(value -> ObjectHelper.isNotEmpty(value)),
annotationValue(field, XML_VALUE_ANNOTATION_CLASS, "name")
.map(AnnotationValue::asString)
.filter(value -> !"##default".equals(value)),
@@ -519,7 +545,11 @@ public abstract class GenerateYamlSupportMojo extends AbstractMojo {
.filter(value -> !"##default".equals(value)),
annotationValue(field, XML_ELEMENT_ANNOTATION_CLASS, "name")
.map(AnnotationValue::asString)
- .filter(value -> !"##default".equals(value))).orElseGet(field::name);
+ .filter(value -> !"##default".equals(value)),
+ annotationValue(ct, XML_ROOT_ELEMENT_ANNOTATION_CLASS, "name")
+ .map(AnnotationValue::asString)
+ .filter(value -> !"##default".equals(value)))
+ .orElseGet(field::name);
}
protected boolean isRequired(FieldInfo fi) {
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 9855ccf..f3c79b6 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
@@ -388,7 +388,7 @@
"$ref" : "#/items/definitions/org.apache.camel.model.ProcessorDefinition"
}
},
- "when-clauses" : {
+ "when" : {
"type" : "array",
"items" : {
"$ref" : "#/items/definitions/org.apache.camel.model.WhenDefinition"
@@ -1977,7 +1977,7 @@
"org.apache.camel.model.RouteTemplatesDefinition" : {
"type" : "object",
"properties" : {
- "route-templates" : {
+ "route-template" : {
"type" : "array",
"items" : {
"$ref" : "#/items/definitions/org.apache.camel.model.RouteTemplateDefinition"
@@ -1988,7 +1988,7 @@
"org.apache.camel.model.RoutesDefinition" : {
"type" : "object",
"properties" : {
- "routes" : {
+ "route" : {
"type" : "array",
"items" : {
"$ref" : "#/items/definitions/org.apache.camel.model.RouteDefinition"
@@ -2497,7 +2497,10 @@
"type" : "object",
"properties" : {
"do-catch" : {
- "$ref" : "#/items/definitions/org.apache.camel.model.CatchDefinition"
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/items/definitions/org.apache.camel.model.CatchDefinition"
+ }
},
"do-finally" : {
"$ref" : "#/items/definitions/org.apache.camel.model.FinallyDefinition"
@@ -2722,12 +2725,6 @@
"executor-service-ref" : {
"type" : "string"
},
- "headers" : {
- "type" : "array",
- "items" : {
- "$ref" : "#/items/definitions/org.apache.camel.model.SetHeaderDefinition"
- }
- },
"ignore-invalid-endpoint" : {
"type" : "boolean"
},
@@ -2743,6 +2740,12 @@
"processor-ref" : {
"type" : "string"
},
+ "set-header" : {
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/items/definitions/org.apache.camel.model.SetHeaderDefinition"
+ }
+ },
"uri" : {
"type" : "string"
}
@@ -4559,12 +4562,6 @@
"header-extraction-enabled" : {
"type" : "boolean"
},
- "headers" : {
- "type" : "array",
- "items" : {
- "$ref" : "#/items/definitions/org.apache.camel.model.dataformat.UniVocityHeader"
- }
- },
"headers-disabled" : {
"type" : "boolean"
},
@@ -4603,6 +4600,12 @@
},
"skip-empty-lines" : {
"type" : "boolean"
+ },
+ "univocity-header" : {
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/items/definitions/org.apache.camel.model.dataformat.UniVocityHeader"
+ }
}
}
},
@@ -4621,12 +4624,6 @@
"header-extraction-enabled" : {
"type" : "boolean"
},
- "headers" : {
- "type" : "array",
- "items" : {
- "$ref" : "#/items/definitions/org.apache.camel.model.dataformat.UniVocityHeader"
- }
- },
"headers-disabled" : {
"type" : "boolean"
},
@@ -4665,6 +4662,12 @@
},
"skip-trailing-chars-until-newline" : {
"type" : "boolean"
+ },
+ "univocity-header" : {
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/items/definitions/org.apache.camel.model.dataformat.UniVocityHeader"
+ }
}
}
},
@@ -4697,12 +4700,6 @@
"header-extraction-enabled" : {
"type" : "boolean"
},
- "headers" : {
- "type" : "array",
- "items" : {
- "$ref" : "#/items/definitions/org.apache.camel.model.dataformat.UniVocityHeader"
- }
- },
"headers-disabled" : {
"type" : "boolean"
},
@@ -4732,6 +4729,12 @@
},
"skip-empty-lines" : {
"type" : "boolean"
+ },
+ "univocity-header" : {
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/items/definitions/org.apache.camel.model.dataformat.UniVocityHeader"
+ }
}
}
},
@@ -5629,7 +5632,7 @@
"out-type" : {
"type" : "string"
},
- "params" : {
+ "param" : {
"type" : "array",
"items" : {
"$ref" : "#/items/definitions/org.apache.camel.model.rest.RestOperationParamDefinition"
@@ -5638,7 +5641,7 @@
"produces" : {
"type" : "string"
},
- "response-msgs" : {
+ "response-message" : {
"type" : "array",
"items" : {
"$ref" : "#/items/definitions/org.apache.camel.model.rest.RestOperationResponseMsgDefinition"
@@ -5703,7 +5706,7 @@
"out-type" : {
"type" : "string"
},
- "params" : {
+ "param" : {
"type" : "array",
"items" : {
"$ref" : "#/items/definitions/org.apache.camel.model.rest.RestOperationParamDefinition"
@@ -5712,7 +5715,7 @@
"produces" : {
"type" : "string"
},
- "response-msgs" : {
+ "response-message" : {
"type" : "array",
"items" : {
"$ref" : "#/items/definitions/org.apache.camel.model.rest.RestOperationResponseMsgDefinition"
@@ -5777,7 +5780,7 @@
"out-type" : {
"type" : "string"
},
- "params" : {
+ "param" : {
"type" : "array",
"items" : {
"$ref" : "#/items/definitions/org.apache.camel.model.rest.RestOperationParamDefinition"
@@ -5786,7 +5789,7 @@
"produces" : {
"type" : "string"
},
- "response-msgs" : {
+ "response-message" : {
"type" : "array",
"items" : {
"$ref" : "#/items/definitions/org.apache.camel.model.rest.RestOperationResponseMsgDefinition"
@@ -5851,7 +5854,7 @@
"out-type" : {
"type" : "string"
},
- "params" : {
+ "param" : {
"type" : "array",
"items" : {
"$ref" : "#/items/definitions/org.apache.camel.model.rest.RestOperationParamDefinition"
@@ -5860,7 +5863,7 @@
"produces" : {
"type" : "string"
},
- "response-msgs" : {
+ "response-message" : {
"type" : "array",
"items" : {
"$ref" : "#/items/definitions/org.apache.camel.model.rest.RestOperationResponseMsgDefinition"
@@ -5925,7 +5928,7 @@
"out-type" : {
"type" : "string"
},
- "params" : {
+ "param" : {
"type" : "array",
"items" : {
"$ref" : "#/items/definitions/org.apache.camel.model.rest.RestOperationParamDefinition"
@@ -5934,7 +5937,7 @@
"produces" : {
"type" : "string"
},
- "response-msgs" : {
+ "response-message" : {
"type" : "array",
"items" : {
"$ref" : "#/items/definitions/org.apache.camel.model.rest.RestOperationResponseMsgDefinition"
@@ -5999,7 +6002,7 @@
"out-type" : {
"type" : "string"
},
- "params" : {
+ "param" : {
"type" : "array",
"items" : {
"$ref" : "#/items/definitions/org.apache.camel.model.rest.RestOperationParamDefinition"
@@ -6008,7 +6011,7 @@
"produces" : {
"type" : "string"
},
- "response-msgs" : {
+ "response-message" : {
"type" : "array",
"items" : {
"$ref" : "#/items/definitions/org.apache.camel.model.rest.RestOperationResponseMsgDefinition"
@@ -6223,7 +6226,7 @@
"tag" : {
"type" : "string"
},
- "verbs" : {
+ "verb" : {
"type" : "array",
"items" : {
"$ref" : "#/items/definitions/org.apache.camel.model.rest.VerbDefinition"
@@ -6428,7 +6431,7 @@
"org.apache.camel.model.rest.RestsDefinition" : {
"type" : "object",
"properties" : {
- "rests" : {
+ "rest" : {
"type" : "array",
"items" : {
"$ref" : "#/items/definitions/org.apache.camel.model.rest.RestDefinition"
@@ -6472,7 +6475,7 @@
"out-type" : {
"type" : "string"
},
- "params" : {
+ "param" : {
"type" : "array",
"items" : {
"$ref" : "#/items/definitions/org.apache.camel.model.rest.RestOperationParamDefinition"
@@ -6481,7 +6484,7 @@
"produces" : {
"type" : "string"
},
- "response-msgs" : {
+ "response-message" : {
"type" : "array",
"items" : {
"$ref" : "#/items/definitions/org.apache.camel.model.rest.RestOperationResponseMsgDefinition"
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/TryTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/TryTest.groovy
index afec59f..2188bad 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/TryTest.groovy
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/TryTest.groovy
@@ -34,21 +34,17 @@ class TryTest extends YamlTestSupport {
- to: "log:when-a"
- to: "log:when-b"
do-catch:
- exception:
+ - exception:
- "java.io.FileNotFoundException"
- "java.io.IOException"
steps:
- to: "log:io-error"
'''
then:
- context.routeDefinitions.size() == 1
-
with(context.routeDefinitions[0], RouteDefinition) {
input.endpointUri == 'direct:start'
with (outputs[0], TryDefinition) {
- outputs.size() == 3
-
catchClauses.size() == 1
catchClauses[0].outputs.size() == 1
catchClauses[0].exceptions.contains('java.io.FileNotFoundException')
@@ -70,7 +66,7 @@ class TryTest extends YamlTestSupport {
- to: "log:when-a"
- to: "log:when-b"
do-catch:
- exception:
+ - exception:
- "java.io.FileNotFoundException"
- "java.io.IOException"
on-when:
@@ -79,14 +75,10 @@ class TryTest extends YamlTestSupport {
- to: "log:io-error"
'''
then:
- context.routeDefinitions.size() == 1
-
with(context.routeDefinitions[0], RouteDefinition) {
input.endpointUri == 'direct:start'
with (outputs[0], TryDefinition) {
- outputs.size() == 3
-
catchClauses.size() == 1
catchClauses[0].outputs.size() == 1
catchClauses[0].exceptions.contains('java.io.FileNotFoundException')
@@ -112,7 +104,7 @@ class TryTest extends YamlTestSupport {
- to: "log:when-a"
- to: "log:when-b"
do-catch:
- exception:
+ - exception:
- "java.io.FileNotFoundException"
- "java.io.IOException"
on-when:
@@ -124,24 +116,25 @@ class TryTest extends YamlTestSupport {
- to: "log:finally"
'''
then:
- context.routeDefinitions.size() == 1
-
with(context.routeDefinitions[0], RouteDefinition) {
input.endpointUri == 'direct:start'
with (outputs[0], TryDefinition) {
- outputs.size() == 4
-
catchClauses.size() == 1
- catchClauses[0].outputs.size() == 1
- catchClauses[0].exceptions.contains('java.io.FileNotFoundException')
- catchClauses[0].exceptions.contains('java.io.IOException')
- with(catchClauses[0].onWhen.expression, SimpleExpression) {
- expression == '${body.size()} == 1'
+ with(catchClauses[0]) {
+ outputs.size() == 1
+ exceptions.contains('java.io.FileNotFoundException')
+ exceptions.contains('java.io.IOException')
+
+ with(onWhen.expression, SimpleExpression) {
+ expression == '${body.size()} == 1'
+ }
}
- finallyClause.outputs.size() == 1
+ with(finallyClause) {
+ outputs.size() == 1
+ }
}
}
}
@@ -161,14 +154,10 @@ class TryTest extends YamlTestSupport {
- to: "log:finally"
'''
then:
- context.routeDefinitions.size() == 1
-
with(context.routeDefinitions[0], RouteDefinition) {
input.endpointUri == 'direct:start'
with (outputs[0], TryDefinition) {
- outputs.size() == 3
- catchClauses.size() == 0
finallyClause.outputs.size() == 1
}
}
diff --git a/tooling/spi-annotations/src/main/java/org/apache/camel/spi/Metadata.java b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/Metadata.java
index 19be69a..f37ea43 100644
--- a/tooling/spi-annotations/src/main/java/org/apache/camel/spi/Metadata.java
+++ b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/Metadata.java
@@ -132,5 +132,4 @@ public @interface Metadata {
* specify which options each implementation only supports.
*/
String includeProperties() default "";
-
}
diff --git a/tooling/spi-annotations/src/main/java/org/apache/camel/spi/annotations/DslProperty.java b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/annotations/DslProperty.java
new file mode 100644
index 0000000..b2bf04b
--- /dev/null
+++ b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/annotations/DslProperty.java
@@ -0,0 +1,31 @@
+/*
+ * 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.spi.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Internal annotation used to include fields otherwise excluded because annotate with XmlTransient.
+ */
+@Target(ElementType.FIELD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface DslProperty {
+ String name() default "";
+}