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
The following commit(s) were added to refs/heads/master by this push:
new 0ec4545 CAMEL-16424: yaml dsl: re-introduce support for parameters in
endpoint definitions
0ec4545 is described below
commit 0ec45455525f69899d8965430380d054c92cee92
Author: Luca Burgazzoli <[email protected]>
AuthorDate: Mon Mar 29 18:54:59 2021 +0200
CAMEL-16424: yaml dsl: re-introduce support for parameters in endpoint
definitions
---
.../apache/camel/dsl/yaml/common/YamlSupport.java | 12 ++--
.../dsl/yaml/deserializers/ModelDeserializers.java | 84 +++++++++++++++-------
.../deserializers/FromDefinitionDeserializer.java | 2 +-
.../RouteFromDefinitionDeserializer.java | 4 +-
.../dsl/yaml/GenerateYamlDeserializersMojo.java | 12 ++--
.../maven/dsl/yaml/GenerateYamlSupportMojo.java | 3 +
.../src/generated/resources/camel-yaml-dsl.json | 22 +++---
.../org/apache/camel/dsl/yaml/RoutesTest.groovy | 49 ++++++++++++-
.../groovy/org/apache/camel/dsl/yaml/ToTest.groovy | 2 +-
9 files changed, 139 insertions(+), 51 deletions(-)
diff --git
a/dsl/camel-yaml-dsl/camel-yaml-dsl-common/src/main/java/org/apache/camel/dsl/yaml/common/YamlSupport.java
b/dsl/camel-yaml-dsl/camel-yaml-dsl-common/src/main/java/org/apache/camel/dsl/yaml/common/YamlSupport.java
index 032251b..a596677 100644
---
a/dsl/camel-yaml-dsl/camel-yaml-dsl-common/src/main/java/org/apache/camel/dsl/yaml/common/YamlSupport.java
+++
b/dsl/camel-yaml-dsl/camel-yaml-dsl-common/src/main/java/org/apache/camel/dsl/yaml/common/YamlSupport.java
@@ -211,7 +211,7 @@ public final class YamlSupport {
final YamlDeserializationContext dc =
getDeserializationContext(node);
String uri = null;
- Map<String, Object> properties = null;
+ Map<String, Object> parameters = null;
for (NodeTuple tuple : mn.getValue()) {
final String key = asText(tuple.getKeyNode());
@@ -228,20 +228,20 @@ public final class YamlSupport {
uri = asText(val);
break;
- case "properties":
+ case "parameters":
if (answer != null) {
throw new IllegalArgumentException(
"uri and properties are not supported when
using Endpoint DSL ");
}
- properties = asScalarMap(tuple.getValueNode());
+ parameters = asScalarMap(tuple.getValueNode());
break;
default:
String endpointUri = endpointResolver.apply(key, val);
if (endpointUri != null) {
- if (uri != null || properties != null) {
+ if (uri != null || parameters != null) {
throw new IllegalArgumentException(
- "uri and properties are not supported
when using Endpoint DSL ");
+ "uri and parameters are not supported
when using Endpoint DSL ");
}
answer = endpointUri;
} else {
@@ -252,7 +252,7 @@ public final class YamlSupport {
if (answer == null) {
ObjectHelper.notNull(uri, "The uri must set");
- answer = YamlSupport.createEndpointUri(dc.getCamelContext(),
uri, properties);
+ answer = YamlSupport.createEndpointUri(dc.getCamelContext(),
uri, parameters);
}
}
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 3a3f325..7080892 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
@@ -5872,7 +5872,7 @@ public final class ModelDeserializers extends
YamlDeserializerSupport {
properties = {
@YamlProperty(name = "inherit-error-handler", type =
"boolean"),
@YamlProperty(name = "uri", type = "string", required =
true),
- @YamlProperty(name = "properties", type = "object")
+ @YamlProperty(name = "parameters", type = "object")
}
)
public static class InOnlyDefinitionDeserializer extends
YamlDeserializerBase<InOnlyDefinition> {
@@ -5904,13 +5904,13 @@ public final class ModelDeserializers extends
YamlDeserializerSupport {
target.setUri(val);
break;
}
- case "properties": {
+ case "parameters": {
if (target.getUri() == null) {
- throw new IllegalStateException("url must be set
before setting properties");
+ throw new IllegalStateException("url must be set
before setting parameters");
}
- java.util.Map<String, Object> properties =
asScalarMap(asMappingNode(node));
+ java.util.Map<String, Object> parameters =
asScalarMap(asMappingNode(node));
YamlDeserializationContext dc =
getDeserializationContext(node);
- String uri =
YamlSupport.createEndpointUri(dc.getCamelContext(), target.getUri(),
properties);
+ String uri =
YamlSupport.createEndpointUri(dc.getCamelContext(), target.getUri(),
parameters);
target.setUri(uri);
break;
}
@@ -5937,7 +5937,7 @@ public final class ModelDeserializers extends
YamlDeserializerSupport {
properties = {
@YamlProperty(name = "inherit-error-handler", type =
"boolean"),
@YamlProperty(name = "uri", type = "string", required =
true),
- @YamlProperty(name = "properties", type = "object")
+ @YamlProperty(name = "parameters", type = "object")
}
)
public static class InOutDefinitionDeserializer extends
YamlDeserializerBase<InOutDefinition> {
@@ -5969,13 +5969,13 @@ public final class ModelDeserializers extends
YamlDeserializerSupport {
target.setUri(val);
break;
}
- case "properties": {
+ case "parameters": {
if (target.getUri() == null) {
- throw new IllegalStateException("url must be set
before setting properties");
+ throw new IllegalStateException("url must be set
before setting parameters");
}
- java.util.Map<String, Object> properties =
asScalarMap(asMappingNode(node));
+ java.util.Map<String, Object> parameters =
asScalarMap(asMappingNode(node));
YamlDeserializationContext dc =
getDeserializationContext(node);
- String uri =
YamlSupport.createEndpointUri(dc.getCamelContext(), target.getUri(),
properties);
+ String uri =
YamlSupport.createEndpointUri(dc.getCamelContext(), target.getUri(),
parameters);
target.setUri(uri);
break;
}
@@ -11817,7 +11817,7 @@ public final class ModelDeserializers extends
YamlDeserializerSupport {
properties = {
@YamlProperty(name = "inherit-error-handler", type =
"boolean"),
@YamlProperty(name = "uri", type = "string", required =
true),
- @YamlProperty(name = "properties", type = "object")
+ @YamlProperty(name = "parameters", type = "object")
}
)
public static class SagaActionUriDefinitionDeserializer extends
YamlDeserializerBase<SagaActionUriDefinition> {
@@ -11849,13 +11849,13 @@ public final class ModelDeserializers extends
YamlDeserializerSupport {
target.setUri(val);
break;
}
- case "properties": {
+ case "parameters": {
if (target.getUri() == null) {
- throw new IllegalStateException("url must be set
before setting properties");
+ throw new IllegalStateException("url must be set
before setting parameters");
}
- java.util.Map<String, Object> properties =
asScalarMap(asMappingNode(node));
+ java.util.Map<String, Object> parameters =
asScalarMap(asMappingNode(node));
YamlDeserializationContext dc =
getDeserializationContext(node);
- String uri =
YamlSupport.createEndpointUri(dc.getCamelContext(), target.getUri(),
properties);
+ String uri =
YamlSupport.createEndpointUri(dc.getCamelContext(), target.getUri(),
parameters);
target.setUri(uri);
break;
}
@@ -14147,7 +14147,7 @@ public final class ModelDeserializers extends
YamlDeserializerSupport {
@YamlProperty(name = "inherit-error-handler", type =
"boolean"),
@YamlProperty(name = "pattern", type = "string"),
@YamlProperty(name = "uri", type = "string", required =
true),
- @YamlProperty(name = "properties", type = "object")
+ @YamlProperty(name = "parameters", type = "object")
}
)
public static class ToDefinitionDeserializer extends
YamlDeserializerBase<ToDefinition> {
@@ -14184,13 +14184,13 @@ public final class ModelDeserializers extends
YamlDeserializerSupport {
target.setUri(val);
break;
}
- case "properties": {
+ case "parameters": {
if (target.getUri() == null) {
- throw new IllegalStateException("url must be set
before setting properties");
+ throw new IllegalStateException("url must be set
before setting parameters");
}
- java.util.Map<String, Object> properties =
asScalarMap(asMappingNode(node));
+ java.util.Map<String, Object> parameters =
asScalarMap(asMappingNode(node));
YamlDeserializationContext dc =
getDeserializationContext(node);
- String uri =
YamlSupport.createEndpointUri(dc.getCamelContext(), target.getUri(),
properties);
+ String uri =
YamlSupport.createEndpointUri(dc.getCamelContext(), target.getUri(),
parameters);
target.setUri(uri);
break;
}
@@ -14221,7 +14221,8 @@ public final class ModelDeserializers extends
YamlDeserializerSupport {
@YamlProperty(name = "ignore-invalid-endpoint", type =
"boolean"),
@YamlProperty(name = "inherit-error-handler", type =
"boolean"),
@YamlProperty(name = "pattern", type = "string"),
- @YamlProperty(name = "uri", type = "string", required =
true)
+ @YamlProperty(name = "uri", type = "string", required =
true),
+ @YamlProperty(name = "parameters", type = "object")
}
)
public static class ToDynamicDefinitionDeserializer extends
YamlDeserializerBase<ToDynamicDefinition> {
@@ -14278,8 +14279,25 @@ public final class ModelDeserializers extends
YamlDeserializerSupport {
target.setUri(val);
break;
}
+ case "parameters": {
+ if (target.getUri() == null) {
+ throw new IllegalStateException("url must be set
before setting parameters");
+ }
+ java.util.Map<String, Object> parameters =
asScalarMap(asMappingNode(node));
+ YamlDeserializationContext dc =
getDeserializationContext(node);
+ String uri =
YamlSupport.createEndpointUri(dc.getCamelContext(), target.getUri(),
parameters);
+ target.setUri(uri);
+ break;
+ }
default: {
- return false;
+ String uri =
EndpointProducerDeserializersResolver.resolveEndpointUri(propertyKey, node);
+ if (uri == null) {
+ return false;
+ }
+ if (target.getUri() != null) {
+ throw new IllegalStateException("url must not be set
when using Endpoint DSL");
+ }
+ target.setUri(uri);
}
}
return true;
@@ -15847,7 +15865,8 @@ public final class ModelDeserializers extends
YamlDeserializerSupport {
@YamlProperty(name = "processor-ref", type = "string"),
@YamlProperty(name = "on-prepare-ref", type = "string"),
@YamlProperty(name = "pattern", type = "string"),
- @YamlProperty(name = "uri", type = "string", required =
true)
+ @YamlProperty(name = "uri", type = "string", required =
true),
+ @YamlProperty(name = "parameters", type = "object")
}
)
public static class WireTapDefinitionDeserializer extends
YamlDeserializerBase<WireTapDefinition> {
@@ -15934,8 +15953,25 @@ public final class ModelDeserializers extends
YamlDeserializerSupport {
target.setUri(val);
break;
}
+ case "parameters": {
+ if (target.getUri() == null) {
+ throw new IllegalStateException("url must be set
before setting parameters");
+ }
+ java.util.Map<String, Object> parameters =
asScalarMap(asMappingNode(node));
+ YamlDeserializationContext dc =
getDeserializationContext(node);
+ String uri =
YamlSupport.createEndpointUri(dc.getCamelContext(), target.getUri(),
parameters);
+ target.setUri(uri);
+ break;
+ }
default: {
- return false;
+ String uri =
EndpointProducerDeserializersResolver.resolveEndpointUri(propertyKey, node);
+ if (uri == null) {
+ return false;
+ }
+ if (target.getUri() != null) {
+ throw new IllegalStateException("url must not be set
when using Endpoint DSL");
+ }
+ target.setUri(uri);
}
}
return true;
diff --git
a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/FromDefinitionDeserializer.java
b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/FromDefinitionDeserializer.java
index 11be5f5..4df8ddf 100644
---
a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/FromDefinitionDeserializer.java
+++
b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/FromDefinitionDeserializer.java
@@ -30,7 +30,7 @@ import org.snakeyaml.engine.v2.nodes.Node;
order = YamlDeserializerResolver.ORDER_DEFAULT,
properties = {
@YamlProperty(name = "uri", type = "string", required =
true),
- @YamlProperty(name = "properties", type = "object")
+ @YamlProperty(name = "parameters", type = "object")
})
public class FromDefinitionDeserializer implements ConstructNode {
@Override
diff --git
a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/RouteFromDefinitionDeserializer.java
b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/RouteFromDefinitionDeserializer.java
index 74e0633..16aee6d 100644
---
a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/RouteFromDefinitionDeserializer.java
+++
b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/RouteFromDefinitionDeserializer.java
@@ -40,7 +40,7 @@ import org.snakeyaml.engine.v2.nodes.NodeTuple;
order = YamlDeserializerResolver.ORDER_DEFAULT,
properties = {
@YamlProperty(name = "uri", type = "string", required =
true),
- @YamlProperty(name = "properties", type = "object"),
+ @YamlProperty(name = "parameters", type = "object"),
@YamlProperty(name = "steps", type =
"array:org.apache.camel.model.ProcessorDefinition", required = true)
})
public class RouteFromDefinitionDeserializer extends
YamlDeserializerBase<OutputAwareFromDefinition> {
@@ -80,7 +80,7 @@ public class RouteFromDefinitionDeserializer extends
YamlDeserializerBase<Output
case "uri":
uri = asText(val);
break;
- case "properties":
+ case "parameters":
properties = asScalarMap(tuple.getValueNode());
break;
default:
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 ff755a0..bad935b 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
@@ -500,14 +500,14 @@ public class GenerateYamlDeserializersMojo extends
GenerateYamlSupportMojo {
);
}
- if (extendsType(info, SEND_DEFINITION_CLASS)) {
- setProperty.beginControlFlow("case $S:", "properties");
+ if (extendsType(info, SEND_DEFINITION_CLASS) || extendsType(info,
TO_DYNAMIC_DEFINITION_CLASS)) {
+ setProperty.beginControlFlow("case $S:", "parameters");
setProperty.beginControlFlow("if (target.getUri() == null)");
- setProperty.addStatement("throw new IllegalStateException(\"url
must be set before setting properties\")");
+ setProperty.addStatement("throw new IllegalStateException(\"url
must be set before setting parameters\")");
setProperty.endControlFlow();
- setProperty.addStatement("java.util.Map<String, Object> properties
= asScalarMap(asMappingNode(node))");
+ setProperty.addStatement("java.util.Map<String, Object> parameters
= asScalarMap(asMappingNode(node))");
setProperty.addStatement("$T dc =
getDeserializationContext(node)", CN_DESERIALIZATION_CONTEXT);
- setProperty.addStatement("String uri =
$T.createEndpointUri(dc.getCamelContext(), target.getUri(), properties)",
CN_YAML_SUPPORT);
+ setProperty.addStatement("String uri =
$T.createEndpointUri(dc.getCamelContext(), target.getUri(), parameters)",
CN_YAML_SUPPORT);
setProperty.addStatement("target.setUri(uri)");
setProperty.addStatement("break");
setProperty.endControlFlow();
@@ -525,7 +525,7 @@ public class GenerateYamlDeserializersMojo extends
GenerateYamlSupportMojo {
properties.add(
yamlProperty(
- "properties",
+ "parameters",
"object")
);
} else if (implementType(info, HAS_EXPRESSION_TYPE_CLASS)) {
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 5b16c1e..3be1a50 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
@@ -95,6 +95,9 @@ public abstract class GenerateYamlSupportMojo extends
AbstractMojo {
=
DotName.createSimple("org.apache.camel.model.ProcessorDefinition");
public static final DotName SEND_DEFINITION_CLASS
= DotName.createSimple("org.apache.camel.model.SendDefinition");
+ public static final DotName TO_DYNAMIC_DEFINITION_CLASS
+ = DotName.createSimple("org.apache.camel.model.ToDynamicDefinition");
+
public static final DotName YAML_TYPE_ANNOTATION
=
DotName.createSimple("org.apache.camel.spi.annotations.YamlType");
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 f3c79b6..5fe6593 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
@@ -213,7 +213,7 @@
"org.apache.camel.dsl.yaml.deserializers.model.OutputAwareFromDefinition" : {
"type" : "object",
"properties" : {
- "properties" : {
+ "parameters" : {
"type" : "object"
},
"steps" : {
@@ -743,7 +743,7 @@
}, {
"type" : "object",
"properties" : {
- "properties" : {
+ "parameters" : {
"type" : "object"
},
"uri" : {
@@ -922,7 +922,7 @@
"inherit-error-handler" : {
"type" : "boolean"
},
- "properties" : {
+ "parameters" : {
"type" : "object"
},
"uri" : {
@@ -941,7 +941,7 @@
"inherit-error-handler" : {
"type" : "boolean"
},
- "properties" : {
+ "parameters" : {
"type" : "object"
},
"uri" : {
@@ -2032,7 +2032,7 @@
"inherit-error-handler" : {
"type" : "boolean"
},
- "properties" : {
+ "parameters" : {
"type" : "object"
},
"uri" : {
@@ -2418,12 +2418,12 @@
"inherit-error-handler" : {
"type" : "boolean"
},
+ "parameters" : {
+ "type" : "object"
+ },
"pattern" : {
"type" : "string"
},
- "properties" : {
- "type" : "object"
- },
"uri" : {
"type" : "string"
}
@@ -2452,6 +2452,9 @@
"inherit-error-handler" : {
"type" : "boolean"
},
+ "parameters" : {
+ "type" : "object"
+ },
"pattern" : {
"type" : "string"
},
@@ -2734,6 +2737,9 @@
"on-prepare-ref" : {
"type" : "string"
},
+ "parameters" : {
+ "type" : "object"
+ },
"pattern" : {
"type" : "string"
},
diff --git
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RoutesTest.groovy
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RoutesTest.groovy
index c6f45b6..d3baef1 100644
---
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RoutesTest.groovy
+++
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RoutesTest.groovy
@@ -19,11 +19,9 @@ package org.apache.camel.dsl.yaml
import org.apache.camel.dsl.yaml.support.YamlTestSupport
import org.apache.camel.model.LogDefinition
import org.apache.camel.model.RouteDefinition
-import spock.lang.Ignore
class RoutesTest extends YamlTestSupport {
- @Ignore
def "load from"() {
when:
loadRoutes '''
@@ -43,7 +41,29 @@ class RoutesTest extends YamlTestSupport {
}
}
}
- @Ignore
+
+ def "load from with parameters"() {
+ when:
+ loadRoutes '''
+ - from:
+ uri: "direct:info"
+ parameters:
+ timeout: 1234
+ steps:
+ - log: "message"
+ '''
+ then:
+ context.routeDefinitions.size() == 1
+
+ with(context.routeDefinitions[0], RouteDefinition) {
+ input.endpointUri == 'direct:info?timeout=1234'
+
+ with (outputs[0], LogDefinition) {
+ message == 'message'
+ }
+ }
+ }
+
def "load multi from "() {
when:
loadRoutes '''
@@ -95,4 +115,27 @@ class RoutesTest extends YamlTestSupport {
}
}
}
+
+ def "load route with parameters"() {
+ when:
+ loadRoutes '''
+ - route:
+ from:
+ uri: "direct:info"
+ parameters:
+ timeout: 1234
+ steps:
+ - log: "message"
+ '''
+ then:
+ context.routeDefinitions.size() == 1
+
+ with(context.routeDefinitions[0], RouteDefinition) {
+ input.endpointUri == 'direct:info?timeout=1234'
+
+ with (outputs[0], LogDefinition) {
+ message == 'message'
+ }
+ }
+ }
}
diff --git
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/ToTest.groovy
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/ToTest.groovy
index ac8857e..564a261 100644
---
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/ToTest.groovy
+++
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/ToTest.groovy
@@ -50,7 +50,7 @@ class ToTest extends YamlTestSupport {
steps:
- to:
uri: "direct"
- properties:
+ parameters:
name: "start"
'''),
asResource('endpoint', '''