From 796c1db44140dcecbbf50fcb9f4810bf407ba229 Mon Sep 17 00:00:00 2001 From: lburgazzoli Date: Sun, 24 Nov 2019 17:07:03 +0100 Subject: [PATCH] YAML: add support for Sample EIP --- .../loader/yaml/parser/SampleStepParser.java | 49 +++++++++++++++++++ .../k/loader/yaml/parser/SampleTest.groovy | 36 ++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 camel-k-loader-yaml/src/main/java/org/apache/camel/k/loader/yaml/parser/SampleStepParser.java create mode 100644 camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/SampleTest.groovy diff --git a/camel-k-loader-yaml/src/main/java/org/apache/camel/k/loader/yaml/parser/SampleStepParser.java b/camel-k-loader-yaml/src/main/java/org/apache/camel/k/loader/yaml/parser/SampleStepParser.java new file mode 100644 index 000000000..a65c35527 --- /dev/null +++ b/camel-k-loader-yaml/src/main/java/org/apache/camel/k/loader/yaml/parser/SampleStepParser.java @@ -0,0 +1,49 @@ +/* + * 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 java.util.List; + +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.SamplingDefinition; +import org.apache.camel.reifier.ProcessorReifier; +import org.apache.camel.reifier.SamplingReifier; + +@YAMLStepParser("sample") +public class SampleStepParser implements ProcessorStepParser { + static { + ProcessorReifier.registerReifier(Definition.class, SamplingReifier::new); + } + + @Override + public ProcessorDefinition toProcessor(Context context) { + Definition definition = context.node(Definition.class); + + return StepParserSupport.convertSteps( + context, + definition, + definition.steps + ); + } + + public static final class Definition extends SamplingDefinition implements Step.Definition { + public List steps; + } +} + diff --git a/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/SampleTest.groovy b/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/SampleTest.groovy new file mode 100644 index 000000000..c2036e2e9 --- /dev/null +++ b/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/SampleTest.groovy @@ -0,0 +1,36 @@ +/* + * 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.SamplingDefinition + +class SampleTest extends TestSupport { + + def "definition"() { + given: + def stepContext = stepContext(''' + message-frequency: "5" + ''') + when: + def processor = new SampleStepParser().toProcessor(stepContext) + then: + with (processor, SamplingDefinition) { + messageFrequency == 5 + } + } +}