From 86a54b86c0a7ca80cdc595e21226e24b0ccc4d08 Mon Sep 17 00:00:00 2001 From: lburgazzoli Date: Sun, 24 Nov 2019 17:02:05 +0100 Subject: [PATCH] YAML: add support for RoutingSlip EIP --- .../yaml/parser/RoutingSlipStepParser.java | 44 +++++++++++++ .../loader/yaml/parser/RoutingSlipTest.groovy | 61 +++++++++++++++++++ 2 files changed, 105 insertions(+) create mode 100644 camel-k-loader-yaml/src/main/java/org/apache/camel/k/loader/yaml/parser/RoutingSlipStepParser.java create mode 100644 camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/RoutingSlipTest.groovy diff --git a/camel-k-loader-yaml/src/main/java/org/apache/camel/k/loader/yaml/parser/RoutingSlipStepParser.java b/camel-k-loader-yaml/src/main/java/org/apache/camel/k/loader/yaml/parser/RoutingSlipStepParser.java new file mode 100644 index 000000000..83522b44b --- /dev/null +++ b/camel-k-loader-yaml/src/main/java/org/apache/camel/k/loader/yaml/parser/RoutingSlipStepParser.java @@ -0,0 +1,44 @@ +/* + * 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.k.loader.yaml.parser; + +import org.apache.camel.Expression; +import org.apache.camel.k.annotation.yaml.YAMLStepParser; +import org.apache.camel.k.loader.yaml.model.Step; +import org.apache.camel.model.ProcessorDefinition; +import org.apache.camel.model.RoutingSlipDefinition; +import org.apache.camel.reifier.ProcessorReifier; +import org.apache.camel.reifier.RoutingSlipReifier; + +@YAMLStepParser("routing-slip") +public class RoutingSlipStepParser implements ProcessorStepParser { + static { + ProcessorReifier.registerReifier(Definition.class, RoutingSlipReifier::new); + } + + @Override + public ProcessorDefinition toProcessor(Context context) { + return context.node(Definition.class); + } + + public static final class Definition extends RoutingSlipDefinition implements HasExpression, Step.Definition { + public Definition() { + super((Expression) null, RoutingSlipDefinition.DEFAULT_DELIMITER); + } + } +} + diff --git a/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/RoutingSlipTest.groovy b/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/RoutingSlipTest.groovy new file mode 100644 index 000000000..332a88ce2 --- /dev/null +++ b/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/RoutingSlipTest.groovy @@ -0,0 +1,61 @@ +/* + * 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.k.loader.yaml.parser + +import org.apache.camel.k.loader.yaml.TestSupport +import org.apache.camel.model.RoutingSlipDefinition +import org.apache.camel.model.language.SimpleExpression + +class RoutingSlipTest extends TestSupport { + + def "definition with expression"() { + given: + def stepContext = stepContext(''' + simple: "${header.MyHeader}" + uri-delimiter: "|" + ''') + when: + def processor = new RoutingSlipStepParser().toProcessor(stepContext) + then: + with(processor, RoutingSlipDefinition) { + with(expression, SimpleExpression) { + language == 'simple' + expression == '${header.MyHeader}' + } + uriDelimiter == '|' + } + } + + def "definition with expression block"() { + given: + def stepContext = stepContext(''' + expression: + simple: "${header.MyHeader}" + uri-delimiter: "|" + ''') + when: + def processor = new RoutingSlipStepParser().toProcessor(stepContext) + then: + with(processor, RoutingSlipDefinition) { + with(expression, SimpleExpression) { + language == 'simple' + expression == '${header.MyHeader}' + } + uriDelimiter == '|' + } + } +}