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-k-runtime.git
commit a237bc5c803f946f2c28792f1b77a8769b571128 Author: lburgazzoli <lburgazz...@gmail.com> AuthorDate: Wed May 6 18:19:05 2020 +0200 yaml-loader: auto generate part fo the dsl --- .../k/loader/yaml/parser/AggregateStepParser.java | 1 + .../k/loader/yaml/parser/ChoiceStepParser.java | 2 + .../yaml/parser/CircuitBreakerStepParser.java | 2 + .../k/loader/yaml/parser/ClaimCheckStepParser.java | 30 ----- .../loader/yaml/parser/ConvertBodyStepParser.java | 30 ----- .../k/loader/yaml/parser/DelayStepParser.java | 6 +- .../k/loader/yaml/parser/DoTryStepParser.java | 2 + .../yaml/parser/DynamicRouterStepParser.java | 1 + .../k/loader/yaml/parser/EnrichStepParser.java | 1 + .../k/loader/yaml/parser/FilterStepParser.java | 2 + .../camel/k/loader/yaml/parser/FromStepParser.java | 2 + .../yaml/parser/IdempotentConsumerParser.java | 2 + .../loader/yaml/parser/LoadBalanceStepParser.java | 2 + .../camel/k/loader/yaml/parser/LoopStepParser.java | 2 + .../k/loader/yaml/parser/MarshalStepParser.java | 1 + .../k/loader/yaml/parser/MulticastStepParser.java | 2 + .../k/loader/yaml/parser/PipelineStepParser.java | 2 + .../k/loader/yaml/parser/PollEnrichStepParser.java | 1 + .../k/loader/yaml/parser/ProcessStepParser.java | 1 + .../yaml/parser/RecipientListStepParser.java | 1 + .../loader/yaml/parser/RemoveHeaderStepParser.java | 46 -------- .../yaml/parser/RemoveHeadersStepParser.java | 29 ----- .../yaml/parser/RemovePropertiesStepParser.java | 30 ----- .../yaml/parser/RemovePropertyStepParser.java | 46 -------- .../k/loader/yaml/parser/ResequenceStepParser.java | 2 + .../camel/k/loader/yaml/parser/RestStepParser.java | 2 + .../k/loader/yaml/parser/RouteStepParser.java | 2 + .../loader/yaml/parser/RoutingSlipStepParser.java | 3 +- .../camel/k/loader/yaml/parser/SagaStepParser.java | 2 + .../k/loader/yaml/parser/SampleStepParser.java | 2 + .../k/loader/yaml/parser/ScriptStepParser.java | 1 + .../loader/yaml/parser/ServiceCallStepParser.java | 1 + .../k/loader/yaml/parser/SetBodyStepParser.java | 1 + .../yaml/parser/SetExchangePatternStepParser.java | 1 + .../k/loader/yaml/parser/SetHeaderStepParser.java | 1 + .../loader/yaml/parser/SetPropertyStepParser.java | 1 + .../camel/k/loader/yaml/parser/SortStepParser.java | 1 + .../k/loader/yaml/parser/SplitStepParser.java | 2 + .../camel/k/loader/yaml/parser/StepStepParser.java | 2 + .../camel/k/loader/yaml/parser/StopStepParser.java | 30 ----- .../k/loader/yaml/parser/ThreadsStepParser.java | 30 ----- .../k/loader/yaml/parser/ThrottleStepParser.java | 1 + .../yaml/parser/ThrowExceptionStepParser.java | 1 + .../k/loader/yaml/parser/ToDynamicStepParser.java | 3 +- .../camel/k/loader/yaml/parser/ToStepParser.java | 1 + .../k/loader/yaml/parser/TransactedStepParser.java | 1 + .../k/loader/yaml/parser/TransformStepParser.java | 1 + ...epParser.java => TypedProcessorStepParser.java} | 16 ++- .../k/loader/yaml/parser/UnmarshalStepParser.java | 1 + .../k/loader/yaml/parser/ValidateStepParser.java | 1 + .../k/loader/yaml/parser/WireTapStepParser.java | 3 +- .../yaml/{parser => spi}/ProcessorStepParser.java | 14 +-- .../yaml/{parser => spi}/StartStepParser.java | 9 +- .../k/loader/yaml/{parser => spi}/StepParser.java | 74 ++++++++----- .../yaml/{parser => spi}/StepParserException.java | 2 +- .../yaml/{parser => spi}/StepParserSupport.java | 3 +- .../RemoveHeaderDefinitionMixIn.java} | 21 ++-- .../RemovePropertyDefinitionMixIn.java} | 21 ++-- .../camel/k/loader/yaml/YamlSourceLoader.java | 7 +- .../apache/camel/k/loader/yaml/TestSupport.groovy | 23 +++- .../camel/k/loader/yaml/parser/BeanTest.groovy | 8 +- .../camel/k/loader/yaml/parser/ChoiceTest.groovy | 1 + .../k/loader/yaml/parser/ClaimCheckTest.groovy | 6 +- .../k/loader/yaml/parser/ConvertBodyTest.groovy | 6 +- .../camel/k/loader/yaml/parser/FromTest.groovy | 1 + .../camel/k/loader/yaml/parser/LogTest.groovy | 6 +- .../camel/k/loader/yaml/parser/PipelineTest.groovy | 1 + .../k/loader/yaml/parser/RemoveHeaderTest.groovy | 17 ++- .../k/loader/yaml/parser/RemoveHeadersTest.groovy | 6 +- .../loader/yaml/parser/RemovePropertiesTest.groovy | 8 +- .../k/loader/yaml/parser/RemovePropertyTest.groovy | 18 ++- .../camel/k/loader/yaml/parser/RestTest.groovy | 1 + .../camel/k/loader/yaml/parser/RollbackTest.groovy | 16 +-- .../yaml/parser/SetExchangePatternTest.groovy | 6 +- .../camel/k/loader/yaml/parser/StepTest.groovy | 3 +- .../{TransactedTest.groovy => StopTest.groovy} | 15 ++- .../camel/k/loader/yaml/parser/ThreadsTest.groovy | 4 +- .../k/loader/yaml/parser/ThrowExceptionTest.groovy | 24 ++-- .../k/loader/yaml/parser/TransactedTest.groovy | 2 +- .../core/quarkus/deployment/DeploymentSupport.java | 54 +++++++++ .../quarkus/deployment/DeploymentProcessor.java | 77 +++---------- .../k/knative/yaml/parser/KnativeStepParser.java | 6 +- .../data/routes.yaml | 2 +- .../data/routes.yaml | 2 +- .../data/routes.yaml | 2 +- .../src/main/resources/routes.yaml | 8 +- pom.xml | 2 +- .../apache/camel/k/tooling/apt/CamelProcessor.java | 10 -- tooling/camel-k-maven-plugin/pom.xml | 2 +- .../maven/GenerateYamlLoaderSupportClasses.java | 121 +++++++++++++++++++-- .../camel/k/tooling/maven/GenerateYamlSupport.java | 5 +- 91 files changed, 449 insertions(+), 522 deletions(-) diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/AggregateStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/AggregateStepParser.java index 4feff93..61c8745 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/AggregateStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/AggregateStepParser.java @@ -20,6 +20,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import org.apache.camel.Expression; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; import org.apache.camel.model.AggregateDefinition; import org.apache.camel.model.ExpressionSubElementDefinition; import org.apache.camel.model.ProcessorDefinition; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ChoiceStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ChoiceStepParser.java index 44f4665..4685cd3 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ChoiceStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ChoiceStepParser.java @@ -21,6 +21,8 @@ import java.util.List; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; import org.apache.camel.k.loader.yaml.model.Step; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; +import org.apache.camel.k.loader.yaml.spi.StepParserSupport; import org.apache.camel.model.ChoiceDefinition; import org.apache.camel.model.OtherwiseDefinition; import org.apache.camel.model.ProcessorDefinition; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/CircuitBreakerStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/CircuitBreakerStepParser.java index cbf6b3d..0386d20 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/CircuitBreakerStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/CircuitBreakerStepParser.java @@ -22,6 +22,8 @@ import com.fasterxml.jackson.annotation.JsonAlias; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; import org.apache.camel.k.loader.yaml.model.Step; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; +import org.apache.camel.k.loader.yaml.spi.StepParserSupport; import org.apache.camel.model.CircuitBreakerDefinition; import org.apache.camel.model.HystrixConfigurationDefinition; import org.apache.camel.model.OnFallbackDefinition; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ClaimCheckStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ClaimCheckStepParser.java deleted file mode 100644 index 59e7ab7..0000000 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ClaimCheckStepParser.java +++ /dev/null @@ -1,30 +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.k.loader.yaml.parser; - -import org.apache.camel.k.annotation.yaml.YAMLStepParser; -import org.apache.camel.model.ClaimCheckDefinition; -import org.apache.camel.model.ProcessorDefinition; - -@YAMLStepParser("claim-check") -public class ClaimCheckStepParser implements ProcessorStepParser { - @Override - public ProcessorDefinition<?> toProcessor(Context context) { - return context.node(ClaimCheckDefinition.class); - } -} - diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ConvertBodyStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ConvertBodyStepParser.java deleted file mode 100644 index d117f27..0000000 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ConvertBodyStepParser.java +++ /dev/null @@ -1,30 +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.k.loader.yaml.parser; - -import org.apache.camel.k.annotation.yaml.YAMLStepParser; -import org.apache.camel.model.ConvertBodyDefinition; -import org.apache.camel.model.ProcessorDefinition; - -@YAMLStepParser("convert-body") -public class ConvertBodyStepParser implements ProcessorStepParser { - @Override - public ProcessorDefinition<?> toProcessor(Context context) { - return context.node(ConvertBodyDefinition.class); - } -} - diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/DelayStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/DelayStepParser.java index 6d34875..9aac940 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/DelayStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/DelayStepParser.java @@ -18,17 +18,13 @@ package org.apache.camel.k.loader.yaml.parser; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; import org.apache.camel.model.DelayDefinition; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.reifier.DelayReifier; -import org.apache.camel.reifier.ProcessorReifier; @YAMLStepParser("delay") public class DelayStepParser implements ProcessorStepParser { - static { - ProcessorReifier.registerReifier(Definition.class, DelayReifier::new); - } - @Override public ProcessorDefinition<?> toProcessor(Context context) { return context.node(Definition.class); diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/DoTryStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/DoTryStepParser.java index 96c55c4..d164b42 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/DoTryStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/DoTryStepParser.java @@ -22,6 +22,8 @@ import com.fasterxml.jackson.annotation.JsonAlias; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; import org.apache.camel.k.loader.yaml.model.Step; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; +import org.apache.camel.k.loader.yaml.spi.StepParserSupport; import org.apache.camel.model.CatchDefinition; import org.apache.camel.model.FinallyDefinition; import org.apache.camel.model.ProcessorDefinition; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/DynamicRouterStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/DynamicRouterStepParser.java index 2ddc5ae..4974d78 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/DynamicRouterStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/DynamicRouterStepParser.java @@ -18,6 +18,7 @@ package org.apache.camel.k.loader.yaml.parser; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; import org.apache.camel.model.DynamicRouterDefinition; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.reifier.DynamicRouterReifier; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/EnrichStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/EnrichStepParser.java index ff06a9d..997351f 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/EnrichStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/EnrichStepParser.java @@ -20,6 +20,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import org.apache.camel.Expression; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; import org.apache.camel.model.EnrichDefinition; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.reifier.EnrichReifier; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/FilterStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/FilterStepParser.java index 650e526..90af676 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/FilterStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/FilterStepParser.java @@ -21,6 +21,8 @@ import java.util.List; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; import org.apache.camel.k.loader.yaml.model.Step; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; +import org.apache.camel.k.loader.yaml.spi.StepParserSupport; import org.apache.camel.model.FilterDefinition; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.reifier.FilterReifier; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/FromStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/FromStepParser.java index 7607f2b..22f846f 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/FromStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/FromStepParser.java @@ -25,6 +25,8 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; import org.apache.camel.k.loader.yaml.model.Step; +import org.apache.camel.k.loader.yaml.spi.StartStepParser; +import org.apache.camel.k.loader.yaml.spi.StepParserSupport; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.model.RouteDefinition; import org.apache.camel.util.URISupport; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/IdempotentConsumerParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/IdempotentConsumerParser.java index e35ba8d..fb90ed1 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/IdempotentConsumerParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/IdempotentConsumerParser.java @@ -21,6 +21,8 @@ import java.util.List; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; import org.apache.camel.k.loader.yaml.model.Step; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; +import org.apache.camel.k.loader.yaml.spi.StepParserSupport; import org.apache.camel.model.IdempotentConsumerDefinition; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.reifier.IdempotentConsumerReifier; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/LoadBalanceStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/LoadBalanceStepParser.java index 811e035..d27983e 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/LoadBalanceStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/LoadBalanceStepParser.java @@ -25,6 +25,8 @@ import org.apache.camel.Expression; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; import org.apache.camel.k.loader.yaml.model.Step; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; +import org.apache.camel.k.loader.yaml.spi.StepParserSupport; import org.apache.camel.model.ExpressionSubElementDefinition; import org.apache.camel.model.LoadBalanceDefinition; import org.apache.camel.model.LoadBalancerDefinition; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/LoopStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/LoopStepParser.java index e05af6f..f6965f4 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/LoopStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/LoopStepParser.java @@ -21,6 +21,8 @@ import java.util.List; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; import org.apache.camel.k.loader.yaml.model.Step; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; +import org.apache.camel.k.loader.yaml.spi.StepParserSupport; import org.apache.camel.model.LoopDefinition; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.reifier.LoopReifier; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/MarshalStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/MarshalStepParser.java index d39f3a2..b03f56d 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/MarshalStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/MarshalStepParser.java @@ -18,6 +18,7 @@ package org.apache.camel.k.loader.yaml.parser; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; import org.apache.camel.model.MarshalDefinition; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.reifier.MarshalReifier; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/MulticastStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/MulticastStepParser.java index 98a7ffd..fd237c3 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/MulticastStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/MulticastStepParser.java @@ -21,6 +21,8 @@ import java.util.List; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; import org.apache.camel.k.loader.yaml.model.Step; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; +import org.apache.camel.k.loader.yaml.spi.StepParserSupport; import org.apache.camel.model.MulticastDefinition; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.reifier.MulticastReifier; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/PipelineStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/PipelineStepParser.java index 1b1393a..dfdb8b1 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/PipelineStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/PipelineStepParser.java @@ -21,6 +21,8 @@ import java.util.List; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; import org.apache.camel.k.loader.yaml.model.Step; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; +import org.apache.camel.k.loader.yaml.spi.StepParserSupport; import org.apache.camel.model.PipelineDefinition; import org.apache.camel.model.ProcessorDefinition; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/PollEnrichStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/PollEnrichStepParser.java index 88e0ec7..4b2f047 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/PollEnrichStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/PollEnrichStepParser.java @@ -20,6 +20,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import org.apache.camel.Expression; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; import org.apache.camel.model.PollEnrichDefinition; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.reifier.PollEnrichReifier; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ProcessStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ProcessStepParser.java index 007811b..1e22238 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ProcessStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ProcessStepParser.java @@ -17,6 +17,7 @@ package org.apache.camel.k.loader.yaml.parser; import org.apache.camel.k.annotation.yaml.YAMLStepParser; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; import org.apache.camel.model.ProcessDefinition; import org.apache.camel.model.ProcessorDefinition; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/RecipientListStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/RecipientListStepParser.java index f0fbccf..4e1d386 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/RecipientListStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/RecipientListStepParser.java @@ -18,6 +18,7 @@ package org.apache.camel.k.loader.yaml.parser; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.model.RecipientListDefinition; import org.apache.camel.reifier.RecipientListReifier; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/RemoveHeaderStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/RemoveHeaderStepParser.java deleted file mode 100644 index 86f07f9..0000000 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/RemoveHeaderStepParser.java +++ /dev/null @@ -1,46 +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.k.loader.yaml.parser; - -import com.fasterxml.jackson.annotation.JsonAlias; -import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; -import org.apache.camel.k.annotation.yaml.YAMLStepParser; -import org.apache.camel.model.ProcessorDefinition; -import org.apache.camel.model.RemoveHeaderDefinition; -import org.apache.camel.reifier.RemoveHeaderReifier; - -@YAMLStepParser("remove-header") -public class RemoveHeaderStepParser implements ProcessorStepParser { - @Override - public ProcessorDefinition<?> toProcessor(Context context) { - return context.node(Definition.class); - } - - @YAMLNodeDefinition(reifiers = RemoveHeaderReifier.class) - public static final class Definition extends RemoveHeaderDefinition { - @JsonAlias("name") - public void setHeaderName(String headerName) { - super.setHeaderName(headerName); - } - - @JsonAlias("name") - public String getHeaderName() { - return super.getHeaderName(); - } - } -} - diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/RemoveHeadersStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/RemoveHeadersStepParser.java deleted file mode 100644 index 0215efc..0000000 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/RemoveHeadersStepParser.java +++ /dev/null @@ -1,29 +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.k.loader.yaml.parser; - -import org.apache.camel.k.annotation.yaml.YAMLStepParser; -import org.apache.camel.model.ProcessorDefinition; -import org.apache.camel.model.RemoveHeadersDefinition; - -@YAMLStepParser("remove-headers") -public class RemoveHeadersStepParser implements ProcessorStepParser { - @Override - public ProcessorDefinition<?> toProcessor(Context context) { - return context.node(RemoveHeadersDefinition.class); - } -} diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/RemovePropertiesStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/RemovePropertiesStepParser.java deleted file mode 100644 index 91222f8..0000000 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/RemovePropertiesStepParser.java +++ /dev/null @@ -1,30 +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.k.loader.yaml.parser; - -import org.apache.camel.k.annotation.yaml.YAMLStepParser; -import org.apache.camel.model.ProcessorDefinition; -import org.apache.camel.model.RemovePropertiesDefinition; - -@YAMLStepParser("remove-properties") -public class RemovePropertiesStepParser implements ProcessorStepParser { - @Override - public ProcessorDefinition<?> toProcessor(Context context) { - return context.node(RemovePropertiesDefinition.class); - } -} - diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/RemovePropertyStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/RemovePropertyStepParser.java deleted file mode 100644 index 947f36f..0000000 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/RemovePropertyStepParser.java +++ /dev/null @@ -1,46 +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.k.loader.yaml.parser; - -import com.fasterxml.jackson.annotation.JsonAlias; -import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; -import org.apache.camel.k.annotation.yaml.YAMLStepParser; -import org.apache.camel.model.ProcessorDefinition; -import org.apache.camel.model.RemovePropertyDefinition; -import org.apache.camel.reifier.RemovePropertyReifier; - -@YAMLStepParser("remove-property") -public class RemovePropertyStepParser implements ProcessorStepParser { - @Override - public ProcessorDefinition<?> toProcessor(Context context) { - return context.node(Definition.class); - } - - @YAMLNodeDefinition(reifiers = RemovePropertyReifier.class) - public static final class Definition extends RemovePropertyDefinition { - @JsonAlias("name") - public void setPropertyName(String headerName) { - super.setPropertyName(headerName); - } - - @JsonAlias("name") - public String getPropertyName() { - return super.getPropertyName(); - } - } -} - diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ResequenceStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ResequenceStepParser.java index de1cce1..6200a2e 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ResequenceStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ResequenceStepParser.java @@ -24,6 +24,8 @@ import org.apache.camel.Expression; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; import org.apache.camel.k.loader.yaml.model.Step; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; +import org.apache.camel.k.loader.yaml.spi.StepParserSupport; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.model.ResequenceDefinition; import org.apache.camel.model.config.BatchResequencerConfig; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/RestStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/RestStepParser.java index 978cfed..99cb057 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/RestStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/RestStepParser.java @@ -24,6 +24,8 @@ import com.fasterxml.jackson.annotation.Nulls; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; import org.apache.camel.k.loader.yaml.model.Step; +import org.apache.camel.k.loader.yaml.spi.StartStepParser; +import org.apache.camel.k.loader.yaml.spi.StepParserSupport; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.model.rest.RestBindingMode; import org.apache.camel.model.rest.RestDefinition; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/RouteStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/RouteStepParser.java index 3b8dfaf..c227a32 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/RouteStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/RouteStepParser.java @@ -24,6 +24,8 @@ import com.fasterxml.jackson.databind.JsonNode; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; import org.apache.camel.k.loader.yaml.model.Node; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; +import org.apache.camel.k.loader.yaml.spi.StartStepParser; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.model.RouteDefinition; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/RoutingSlipStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/RoutingSlipStepParser.java index 4e43cb1..dd55300 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/RoutingSlipStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/RoutingSlipStepParser.java @@ -19,6 +19,7 @@ package org.apache.camel.k.loader.yaml.parser; import org.apache.camel.Expression; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.model.RoutingSlipDefinition; import org.apache.camel.reifier.RoutingSlipReifier; @@ -31,7 +32,7 @@ public class RoutingSlipStepParser implements ProcessorStepParser { } @YAMLNodeDefinition(reifiers = RoutingSlipReifier.class) - public static final class Definition extends RoutingSlipDefinition implements HasExpression { + public static final class Definition<T extends ProcessorDefinition<T>> extends RoutingSlipDefinition<T> implements HasExpression { public Definition() { super((Expression) null, RoutingSlipDefinition.DEFAULT_DELIMITER); } diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/SagaStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/SagaStepParser.java index 4772b10..5f6186b 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/SagaStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/SagaStepParser.java @@ -21,6 +21,8 @@ import java.util.List; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; import org.apache.camel.k.loader.yaml.model.Step; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; +import org.apache.camel.k.loader.yaml.spi.StepParserSupport; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.model.SagaDefinition; import org.apache.camel.reifier.SagaReifier; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/SampleStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/SampleStepParser.java index 6cba016..48a55c7 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/SampleStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/SampleStepParser.java @@ -21,6 +21,8 @@ import java.util.List; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; import org.apache.camel.k.loader.yaml.model.Step; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; +import org.apache.camel.k.loader.yaml.spi.StepParserSupport; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.model.SamplingDefinition; import org.apache.camel.reifier.SamplingReifier; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ScriptStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ScriptStepParser.java index 105a1c5..8abe16c 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ScriptStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ScriptStepParser.java @@ -18,6 +18,7 @@ package org.apache.camel.k.loader.yaml.parser; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.model.ScriptDefinition; import org.apache.camel.reifier.ScriptReifier; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ServiceCallStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ServiceCallStepParser.java index 9c708f2..2b9a8d1 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ServiceCallStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ServiceCallStepParser.java @@ -18,6 +18,7 @@ package org.apache.camel.k.loader.yaml.parser; import com.fasterxml.jackson.annotation.JsonIgnore; import org.apache.camel.k.annotation.yaml.YAMLStepParser; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.model.cloud.ServiceCallDefinition; import org.apache.camel.model.cloud.ServiceCallExpressionConfiguration; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/SetBodyStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/SetBodyStepParser.java index a879b9f..f4fddb1 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/SetBodyStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/SetBodyStepParser.java @@ -18,6 +18,7 @@ package org.apache.camel.k.loader.yaml.parser; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.model.SetBodyDefinition; import org.apache.camel.reifier.SetBodyReifier; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/SetExchangePatternStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/SetExchangePatternStepParser.java index 3ad2ad5..81aa70a 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/SetExchangePatternStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/SetExchangePatternStepParser.java @@ -17,6 +17,7 @@ package org.apache.camel.k.loader.yaml.parser; import org.apache.camel.k.annotation.yaml.YAMLStepParser; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.model.SetExchangePatternDefinition; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/SetHeaderStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/SetHeaderStepParser.java index 4d3987e..c6caf62 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/SetHeaderStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/SetHeaderStepParser.java @@ -18,6 +18,7 @@ package org.apache.camel.k.loader.yaml.parser; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.model.SetHeaderDefinition; import org.apache.camel.reifier.SetHeaderReifier; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/SetPropertyStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/SetPropertyStepParser.java index d55445b..5d09482 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/SetPropertyStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/SetPropertyStepParser.java @@ -18,6 +18,7 @@ package org.apache.camel.k.loader.yaml.parser; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.model.SetPropertyDefinition; import org.apache.camel.reifier.SetPropertyReifier; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/SortStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/SortStepParser.java index be6fe23..90f9004 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/SortStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/SortStepParser.java @@ -18,6 +18,7 @@ package org.apache.camel.k.loader.yaml.parser; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.model.SortDefinition; import org.apache.camel.reifier.SortReifier; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/SplitStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/SplitStepParser.java index e641ad9..3faabca 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/SplitStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/SplitStepParser.java @@ -21,6 +21,8 @@ import java.util.List; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; import org.apache.camel.k.loader.yaml.model.Step; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; +import org.apache.camel.k.loader.yaml.spi.StepParserSupport; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.model.SplitDefinition; import org.apache.camel.reifier.SplitReifier; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/StepStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/StepStepParser.java index 26450ff..006133e 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/StepStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/StepStepParser.java @@ -21,6 +21,8 @@ import java.util.List; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; import org.apache.camel.k.loader.yaml.model.Step; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; +import org.apache.camel.k.loader.yaml.spi.StepParserSupport; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.model.StepDefinition; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/StopStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/StopStepParser.java deleted file mode 100644 index 7e147bc..0000000 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/StopStepParser.java +++ /dev/null @@ -1,30 +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.k.loader.yaml.parser; - -import org.apache.camel.k.annotation.yaml.YAMLStepParser; -import org.apache.camel.model.ProcessorDefinition; -import org.apache.camel.model.StopDefinition; - -@YAMLStepParser("stop") -public class StopStepParser implements ProcessorStepParser { - @Override - public ProcessorDefinition<?> toProcessor(Context context) { - return context.node(StopDefinition.class); - } -} - diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ThreadsStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ThreadsStepParser.java deleted file mode 100644 index a21fc33..0000000 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ThreadsStepParser.java +++ /dev/null @@ -1,30 +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.k.loader.yaml.parser; - -import org.apache.camel.k.annotation.yaml.YAMLStepParser; -import org.apache.camel.model.ProcessorDefinition; -import org.apache.camel.model.ThreadsDefinition; - -@YAMLStepParser("threads") -public class ThreadsStepParser implements ProcessorStepParser { - @Override - public ProcessorDefinition<?> toProcessor(Context context) { - return context.node(ThreadsDefinition.class); - } -} - diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ThrottleStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ThrottleStepParser.java index b2ee2ac..90e8308 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ThrottleStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ThrottleStepParser.java @@ -18,6 +18,7 @@ package org.apache.camel.k.loader.yaml.parser; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.model.ThrottleDefinition; import org.apache.camel.reifier.ThrottleReifier; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ThrowExceptionStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ThrowExceptionStepParser.java index 455e565..3933013 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ThrowExceptionStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ThrowExceptionStepParser.java @@ -17,6 +17,7 @@ package org.apache.camel.k.loader.yaml.parser; import org.apache.camel.k.annotation.yaml.YAMLStepParser; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.model.ThrowExceptionDefinition; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ToDynamicStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ToDynamicStepParser.java index 21ab519..19cc5b3 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ToDynamicStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ToDynamicStepParser.java @@ -23,11 +23,12 @@ import java.util.Map; import com.fasterxml.jackson.annotation.JsonIgnore; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.model.ToDynamicDefinition; import org.apache.camel.util.URISupport; -@YAMLStepParser("tod") +@YAMLStepParser({"tod", "to-d"}) public class ToDynamicStepParser implements ProcessorStepParser { @Override public ProcessorDefinition<?> toProcessor(Context context) { diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ToStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ToStepParser.java index ad2d4bf..66ba2d3 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ToStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ToStepParser.java @@ -23,6 +23,7 @@ import java.util.Map; import com.fasterxml.jackson.annotation.JsonIgnore; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.model.ToDefinition; import org.apache.camel.util.URISupport; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/TransactedStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/TransactedStepParser.java index 01be806..1fd34e0 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/TransactedStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/TransactedStepParser.java @@ -17,6 +17,7 @@ package org.apache.camel.k.loader.yaml.parser; import org.apache.camel.k.annotation.yaml.YAMLStepParser; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.model.TransactedDefinition; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/TransformStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/TransformStepParser.java index c09c99c..a12f1a4 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/TransformStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/TransformStepParser.java @@ -18,6 +18,7 @@ package org.apache.camel.k.loader.yaml.parser; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.model.TransformDefinition; import org.apache.camel.reifier.TransformReifier; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/RollbackStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/TypedProcessorStepParser.java similarity index 72% rename from camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/RollbackStepParser.java rename to camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/TypedProcessorStepParser.java index 4931752..cac8d37 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/RollbackStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/TypedProcessorStepParser.java @@ -16,15 +16,19 @@ */ package org.apache.camel.k.loader.yaml.parser; -import org.apache.camel.k.annotation.yaml.YAMLStepParser; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; import org.apache.camel.model.ProcessorDefinition; -import org.apache.camel.model.RollbackDefinition; -@YAMLStepParser("rollback") -public class RollbackStepParser implements ProcessorStepParser { +@SuppressWarnings("rawtypes") +public class TypedProcessorStepParser implements ProcessorStepParser { + private final Class<? extends ProcessorDefinition> type; + + public TypedProcessorStepParser(Class<? extends ProcessorDefinition> type) { + this.type = type; + } + @Override public ProcessorDefinition<?> toProcessor(Context context) { - return context.node(RollbackDefinition.class); + return context.node(type); } } - diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/UnmarshalStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/UnmarshalStepParser.java index d4b0e90..aec8e98 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/UnmarshalStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/UnmarshalStepParser.java @@ -18,6 +18,7 @@ package org.apache.camel.k.loader.yaml.parser; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.model.UnmarshalDefinition; import org.apache.camel.reifier.UnmarshalReifier; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ValidateStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ValidateStepParser.java index ca0740a..abd6182 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ValidateStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ValidateStepParser.java @@ -18,6 +18,7 @@ package org.apache.camel.k.loader.yaml.parser; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.model.ValidateDefinition; import org.apache.camel.reifier.ValidateReifier; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/WireTapStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/WireTapStepParser.java index ca65930..9667bfd 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/WireTapStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/WireTapStepParser.java @@ -24,6 +24,7 @@ import java.util.Map; import com.fasterxml.jackson.annotation.JsonIgnore; import org.apache.camel.k.annotation.yaml.YAMLNodeDefinition; import org.apache.camel.k.annotation.yaml.YAMLStepParser; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; import org.apache.camel.model.ExpressionSubElementDefinition; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.model.SetHeaderDefinition; @@ -34,7 +35,7 @@ import org.apache.camel.reifier.WireTapReifier; import org.apache.camel.util.ObjectHelper; import org.apache.camel.util.URISupport; -@YAMLStepParser("wiretap") +@YAMLStepParser({"wiretap", "wire-tap"}) public class WireTapStepParser implements ProcessorStepParser { @SuppressWarnings("unchecked") @Override diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ProcessorStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/spi/ProcessorStepParser.java similarity index 77% rename from camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ProcessorStepParser.java rename to camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/spi/ProcessorStepParser.java index 5c34347..ee520c3 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/ProcessorStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/spi/ProcessorStepParser.java @@ -14,9 +14,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.k.loader.yaml.parser; +package org.apache.camel.k.loader.yaml.spi; -import org.apache.camel.NoFactoryAvailableException; import org.apache.camel.model.ProcessorDefinition; @FunctionalInterface @@ -28,10 +27,11 @@ public interface ProcessorStepParser extends StepParser { ProcessorDefinition<?> toProcessor(Context context); static ProcessorDefinition<?> invoke(Context context, String stepId) { - try { - return StepParser.lookup(context.camelContext(), ProcessorStepParser.class, stepId).toProcessor(context); - } catch (NoFactoryAvailableException e) { - throw new RuntimeException(e); - } + return context.lookup(ProcessorStepParser.class, stepId).toProcessor(context); + } + + @SuppressWarnings("rawtypes") + static ProcessorStepParser forType(Class<? extends ProcessorDefinition> type) { + return c -> c.node(type); } } diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/StartStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/spi/StartStepParser.java similarity index 77% rename from camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/StartStepParser.java rename to camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/spi/StartStepParser.java index 2fb2333..f80bcdb 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/StartStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/spi/StartStepParser.java @@ -14,9 +14,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.k.loader.yaml.parser; +package org.apache.camel.k.loader.yaml.spi; -import org.apache.camel.NoFactoryAvailableException; import org.apache.camel.model.ProcessorDefinition; @FunctionalInterface @@ -28,10 +27,6 @@ public interface StartStepParser extends StepParser { ProcessorDefinition<?> toStartProcessor(Context context); static ProcessorDefinition<?> invoke(Context context, String stepId) { - try { - return StepParser.lookup(context.camelContext(), StartStepParser.class, stepId).toStartProcessor(context); - } catch (NoFactoryAvailableException e) { - throw new RuntimeException(e); - } + return context.lookup(StartStepParser.class, stepId).toStartProcessor(context); } } diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/StepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/spi/StepParser.java similarity index 56% rename from camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/StepParser.java rename to camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/spi/StepParser.java index 871218e..2fab5f2 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/StepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/spi/StepParser.java @@ -14,60 +14,47 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.k.loader.yaml.parser; +package org.apache.camel.k.loader.yaml.spi; import java.io.IOException; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.CamelContext; import org.apache.camel.ExtendedCamelContext; -import org.apache.camel.NoFactoryAvailableException; +import org.apache.camel.spi.HasCamelContext; import org.apache.camel.util.ObjectHelper; public interface StepParser { String SERVICE_LOCATION = "META-INF/services/org/apache/camel/k/loader/yaml-parser/"; - @SuppressWarnings("unchecked") - static <T extends StepParser> T lookup(CamelContext camelContext, Class<T> type, String stepId) throws NoFactoryAvailableException { - T converter = camelContext.getRegistry().lookupByNameAndType(stepId, type); - if (converter == null) { - converter = camelContext.adapt(ExtendedCamelContext.class) - .getFactoryFinder(SERVICE_LOCATION) - .newInstance(stepId, type) - .orElseThrow(() -> new RuntimeException("No handler for step with id: " + stepId)); - } - - return converter; - } - - class Context { + /** + * Context for step parsing. + */ + class Context implements HasCamelContext { private final ObjectMapper mapper; private final CamelContext camelContext; private final JsonNode node; + private final Resolver resolver; - public Context(CamelContext camelContext, ObjectMapper mapper, JsonNode node) { + public Context(CamelContext camelContext, ObjectMapper mapper, JsonNode node, Resolver resolver) { this.camelContext = camelContext; this.mapper = mapper; this.node = node; + this.resolver = ObjectHelper.notNull(resolver, "resolver"); } - public CamelContext camelContext() { + @Override + public CamelContext getCamelContext() { return camelContext; } - public <T extends CamelContext> T camelContext(Class<T> type) { - return camelContext.adapt(type); - } - public JsonNode node() { return node; } - public ObjectMapper mapper() { - return mapper; - } - public <T> T node(Class<T> type) { ObjectHelper.notNull(node, "node"); ObjectHelper.notNull(type, "type"); @@ -87,13 +74,46 @@ public interface StepParser { return definition; } + public <T extends StepParser> T lookup(Class<T> type, String stepId) { + StepParser parser = resolver.resolve(camelContext, stepId); + if (type.isInstance(parser)) { + return type.cast(parser); + } + + throw new RuntimeException("No handler for step with id: " + stepId); + } + public static Context of(Context context, JsonNode step) { return new Context( context.camelContext, context.mapper, - step + step, + context.resolver ); } } + /** + * Step resolver. + */ + interface Resolver { + StepParser resolve(CamelContext camelContext, String stepId); + + default StepParser lookup(CamelContext camelContext, String stepId) { + StepParser answer = camelContext.getRegistry().lookupByNameAndType(stepId, StepParser.class); + if (answer == null) { + answer = camelContext.adapt(ExtendedCamelContext.class) + .getFactoryFinder(SERVICE_LOCATION) + .newInstance(stepId, StepParser.class) + .orElseThrow(() -> new RuntimeException("No handler for step with id: " + stepId)); + } + + return answer; + } + + static Resolver caching(Resolver delegate) { + final ConcurrentMap<String, StepParser> cache = new ConcurrentHashMap<>(); + return (camelContext, stepId) -> cache.computeIfAbsent(stepId, key -> delegate.resolve(camelContext, key)); + } + } } diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/StepParserException.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/spi/StepParserException.java similarity index 97% rename from camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/StepParserException.java rename to camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/spi/StepParserException.java index 171f968..08a39c6 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/StepParserException.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/spi/StepParserException.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.k.loader.yaml.parser; +package org.apache.camel.k.loader.yaml.spi; import java.util.Arrays; import java.util.List; diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/StepParserSupport.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/spi/StepParserSupport.java similarity index 97% rename from camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/StepParserSupport.java rename to camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/spi/StepParserSupport.java index e123581..0a70f55 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/StepParserSupport.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/spi/StepParserSupport.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.k.loader.yaml.parser; +package org.apache.camel.k.loader.yaml.spi; import java.util.List; @@ -46,6 +46,7 @@ public final class StepParserSupport { ProcessorDefinition<?> current = parent; for (Step step : steps) { + ProcessorDefinition<?> child = ProcessorStepParser.invoke( ProcessorStepParser.Context.of(context, step.node), step.id diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/LogStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/support/RemoveHeaderDefinitionMixIn.java similarity index 64% rename from camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/LogStepParser.java rename to camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/support/RemoveHeaderDefinitionMixIn.java index 2019c5c..2716f53 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/LogStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/support/RemoveHeaderDefinitionMixIn.java @@ -14,17 +14,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.k.loader.yaml.parser; +package org.apache.camel.k.loader.yaml.support; -import org.apache.camel.k.annotation.yaml.YAMLStepParser; -import org.apache.camel.model.LogDefinition; -import org.apache.camel.model.ProcessorDefinition; +import com.fasterxml.jackson.annotation.JsonAlias; +import org.apache.camel.k.annotation.yaml.YAMLMixIn; -@YAMLStepParser("log") -public class LogStepParser implements ProcessorStepParser { - @Override - public ProcessorDefinition<?> toProcessor(Context context) { - return context.node(LogDefinition.class); - } -} +@YAMLMixIn(org.apache.camel.model.RemoveHeaderDefinition.class) +public abstract class RemoveHeaderDefinitionMixIn { + @JsonAlias({"name", "header-name"}) + public abstract void setHeaderName(String headerName); + @JsonAlias({"name", "header-name"}) + public abstract String getHeaderName(); +} diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/BeanStepParser.java b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/support/RemovePropertyDefinitionMixIn.java similarity index 63% rename from camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/BeanStepParser.java rename to camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/support/RemovePropertyDefinitionMixIn.java index a60f712..30b3695 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/parser/BeanStepParser.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/src/main/java/org/apache/camel/k/loader/yaml/support/RemovePropertyDefinitionMixIn.java @@ -14,17 +14,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.k.loader.yaml.parser; +package org.apache.camel.k.loader.yaml.support; -import org.apache.camel.k.annotation.yaml.YAMLStepParser; -import org.apache.camel.model.BeanDefinition; -import org.apache.camel.model.ProcessorDefinition; +import com.fasterxml.jackson.annotation.JsonAlias; +import org.apache.camel.k.annotation.yaml.YAMLMixIn; -@YAMLStepParser("bean") -public class BeanStepParser implements ProcessorStepParser { - @Override - public ProcessorDefinition<?> toProcessor(Context context) { - return context.node(BeanDefinition.class); - } -} +@YAMLMixIn(org.apache.camel.model.RemovePropertyDefinition.class) +public abstract class RemovePropertyDefinitionMixIn { + @JsonAlias({"name", "property-name"}) + public abstract void setPropertyName(String headerName); + @JsonAlias({"name", "property-name"}) + public abstract String getPropertyName(); +} diff --git a/camel-k-loader-yaml/camel-k-loader-yaml/src/main/java/org/apache/camel/k/loader/yaml/YamlSourceLoader.java b/camel-k-loader-yaml/camel-k-loader-yaml/src/main/java/org/apache/camel/k/loader/yaml/YamlSourceLoader.java index ed865c3..1c1b4cd 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml/src/main/java/org/apache/camel/k/loader/yaml/YamlSourceLoader.java +++ b/camel-k-loader-yaml/camel-k-loader-yaml/src/main/java/org/apache/camel/k/loader/yaml/YamlSourceLoader.java @@ -38,8 +38,8 @@ import org.apache.camel.k.Source; import org.apache.camel.k.SourceLoader; import org.apache.camel.k.annotation.Loader; import org.apache.camel.k.loader.yaml.model.Step; -import org.apache.camel.k.loader.yaml.parser.StartStepParser; -import org.apache.camel.k.loader.yaml.parser.StepParser; +import org.apache.camel.k.loader.yaml.spi.StartStepParser; +import org.apache.camel.k.loader.yaml.spi.StepParser; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.model.RouteDefinition; import org.apache.camel.model.RoutesDefinition; @@ -93,13 +93,14 @@ public class YamlSourceLoader implements SourceLoader { return new RouteBuilder() { @Override public void configure() throws Exception { + final StepParser.Resolver resolver = StepParser.Resolver.caching(new YamlStepResolver()); final CamelContext camelContext = getContext(); final List<RouteDefinition> routes = new ArrayList<>(); final List<RestDefinition> rests = new ArrayList<>(); try (is) { for (Step step : mapper.readValue(is, Step[].class)) { - final StepParser.Context context = new StepParser.Context(camelContext, mapper, step.node); + final StepParser.Context context = new StepParser.Context(camelContext, mapper, step.node, resolver); final ProcessorDefinition<?> root = StartStepParser.invoke(context, step.id); if (root == null) { diff --git a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/TestSupport.groovy b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/TestSupport.groovy index 97d5b42..597d429 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/TestSupport.groovy +++ b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/TestSupport.groovy @@ -21,8 +21,9 @@ import groovy.util.logging.Slf4j import org.apache.camel.CamelContext import org.apache.camel.component.mock.MockEndpoint import org.apache.camel.impl.DefaultCamelContext -import org.apache.camel.k.loader.yaml.parser.ProcessorStepParser -import org.apache.camel.k.loader.yaml.parser.StepParser +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser +import org.apache.camel.k.loader.yaml.spi.StartStepParser +import org.apache.camel.k.loader.yaml.spi.StepParser import org.apache.camel.model.ProcessorDefinition import spock.lang.Specification @@ -30,17 +31,18 @@ import java.nio.charset.StandardCharsets @Slf4j class TestSupport extends Specification { + static def RESOLVER = new YamlStepResolver() static def MAPPER = new YamlSourceLoader().mapper() static StepParser.Context stepContext(String content) { def node = MAPPER.readTree(content.stripMargin()) def cctx = new DefaultCamelContext() - return new StepParser.Context(cctx, MAPPER, node) + return new StepParser.Context(cctx, MAPPER, node, RESOLVER) } static StepParser.Context stepContext(JsonNode content) { - return new StepParser.Context(new DefaultCamelContext(), MAPPER, content) + return new StepParser.Context(new DefaultCamelContext(), MAPPER, content, RESOLVER) } static CamelContext startContext(String content) { @@ -105,4 +107,17 @@ class TestSupport extends Specification { static <U extends ProcessorStepParser> ProcessorDefinition<?> toProcessor(Class<U> type, String content) { return type.getConstructor().newInstance().toProcessor(stepContext(content)) } + + static ProcessorDefinition<?> toProcessor(String id, String content) { + def ctx = stepContext(content) + def parser = RESOLVER.resolve(ctx.camelContext, id) + + if (parser instanceof ProcessorStepParser) { + return parser.toProcessor(ctx) + } + if (parser instanceof StartStepParser) { + return parser.toStartProcessor(ctx) + } + throw new IllegalArgumentException("No parser of ${id}") + } } diff --git a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/BeanTest.groovy b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/BeanTest.groovy index 78f1486..30f1a19 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/BeanTest.groovy +++ b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/BeanTest.groovy @@ -21,20 +21,16 @@ import org.apache.camel.k.loader.yaml.TestSupport import org.apache.camel.model.BeanDefinition class BeanTest extends TestSupport { - def "definition"() { - given: - def stepContext = stepContext(''' + when: + def processor = toProcessor('bean', ''' ref: "myBean" method: "process" ''') - when: - def processor = new BeanStepParser().toProcessor(stepContext) then: with(processor, BeanDefinition) { ref == 'myBean' method == 'process' } } - } diff --git a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/ChoiceTest.groovy b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/ChoiceTest.groovy index 08d1a24..474acdd 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/ChoiceTest.groovy +++ b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/ChoiceTest.groovy @@ -17,6 +17,7 @@ package org.apache.camel.k.loader.yaml.parser import org.apache.camel.k.loader.yaml.TestSupport +import org.apache.camel.k.loader.yaml.spi.StepParserException import org.apache.camel.model.ChoiceDefinition class ChoiceTest extends TestSupport { diff --git a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/ClaimCheckTest.groovy b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/ClaimCheckTest.groovy index a300567..a431337 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/ClaimCheckTest.groovy +++ b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/ClaimCheckTest.groovy @@ -21,14 +21,12 @@ import org.apache.camel.model.ClaimCheckDefinition class ClaimCheckTest extends TestSupport { def "definition"() { - given: - def stepContext = stepContext(''' + when: + def processor = toProcessor('claim-check', ''' operation: "Push" key: "foo" filter: "header:(foo|bar)" ''') - when: - def processor = new ClaimCheckStepParser().toProcessor(stepContext) then: with(processor, ClaimCheckDefinition) { operation == 'Push' diff --git a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/ConvertBodyTest.groovy b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/ConvertBodyTest.groovy index 5c1daa9..a5cfc8b 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/ConvertBodyTest.groovy +++ b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/ConvertBodyTest.groovy @@ -21,14 +21,12 @@ import org.apache.camel.model.ConvertBodyDefinition class ConvertBodyTest extends TestSupport { def "definition"() { - given: - def stepContext = stepContext(''' + when: + def processor = toProcessor('convert-body-to',''' type: "java.lang.String" type-class: "java.lang.String" charset: "UTF8" ''') - when: - def processor = new ConvertBodyStepParser().toProcessor(stepContext) then: with(processor, ConvertBodyDefinition) { type == 'java.lang.String' diff --git a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/FromTest.groovy b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/FromTest.groovy index 14b4a5b..87161ed 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/FromTest.groovy +++ b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/FromTest.groovy @@ -17,6 +17,7 @@ package org.apache.camel.k.loader.yaml.parser import org.apache.camel.k.loader.yaml.TestSupport +import org.apache.camel.k.loader.yaml.spi.StepParserException import org.apache.camel.model.FromDefinition import org.apache.camel.model.RouteDefinition diff --git a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/LogTest.groovy b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/LogTest.groovy index 06b8c98..eeb1e9f 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/LogTest.groovy +++ b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/LogTest.groovy @@ -23,14 +23,12 @@ import org.apache.camel.model.LogDefinition class LogTest extends TestSupport { def "definition"() { - given: - def stepContext = stepContext(''' + when: + def processor =toProcessor('log', ''' logging-level: "ERROR" message: "test" log-name: "yaml" ''') - when: - def processor = new LogStepParser().toProcessor(stepContext) then: with(processor, LogDefinition) { loggingLevel == 'ERROR' diff --git a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/PipelineTest.groovy b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/PipelineTest.groovy index 89955c6..68a11dd 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/PipelineTest.groovy +++ b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/PipelineTest.groovy @@ -18,6 +18,7 @@ package org.apache.camel.k.loader.yaml.parser import org.apache.camel.k.loader.yaml.TestSupport +import org.apache.camel.k.loader.yaml.spi.StepParserException import org.apache.camel.model.PipelineDefinition class PipelineTest extends TestSupport { diff --git a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/RemoveHeaderTest.groovy b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/RemoveHeaderTest.groovy index 39ac88a..4e56e74 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/RemoveHeaderTest.groovy +++ b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/RemoveHeaderTest.groovy @@ -22,12 +22,21 @@ import org.apache.camel.model.RemoveHeaderDefinition class RemoveHeaderTest extends TestSupport { def "definition"() { - given: - def stepContext = stepContext(''' - name: test + when: + def processor = toProcessor('remove-header', ''' + header-name: test ''') + then: + with(processor, RemoveHeaderDefinition) { + headerName == 'test' + } + } + + def "definition (alias)"() { when: - def processor = new RemoveHeaderStepParser().toProcessor(stepContext) + def processor = toProcessor('remove-header', ''' + name: test + ''') then: with(processor, RemoveHeaderDefinition) { headerName == 'test' diff --git a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/RemoveHeadersTest.groovy b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/RemoveHeadersTest.groovy index 4fd49ce..7bedad6 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/RemoveHeadersTest.groovy +++ b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/RemoveHeadersTest.groovy @@ -22,16 +22,14 @@ import org.apache.camel.model.RemoveHeadersDefinition class RemoveHeadersTest extends org.apache.camel.k.loader.yaml.TestSupport { def "definition"() { - given: - def stepContext = stepContext(''' + when: + def processor = toProcessor('remove-headers', ''' pattern: toRemove exclude-pattern: toExclude exclude-patterns: - toExclude1 - toExclude2 ''') - when: - def processor = new RemoveHeadersStepParser().toProcessor(stepContext) then: with(processor, RemoveHeadersDefinition) { pattern == 'toRemove' diff --git a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/RemovePropertiesTest.groovy b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/RemovePropertiesTest.groovy index 90a151e..15193d5 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/RemovePropertiesTest.groovy +++ b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/RemovePropertiesTest.groovy @@ -31,7 +31,13 @@ class RemovePropertiesTest extends org.apache.camel.k.loader.yaml.TestSupport { - toExclude2 ''') when: - def processor = new RemovePropertiesStepParser().toProcessor(stepContext) + def processor = toProcessor('remove-properties', ''' + pattern: toRemove + exclude-pattern: toExclude + exclude-patterns: + - toExclude1 + - toExclude2 + ''') then: with(processor, RemovePropertiesDefinition) { pattern == 'toRemove' diff --git a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/RemovePropertyTest.groovy b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/RemovePropertyTest.groovy index edd0412..6687f44 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/RemovePropertyTest.groovy +++ b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/RemovePropertyTest.groovy @@ -22,16 +22,24 @@ import org.apache.camel.model.RemovePropertyDefinition class RemovePropertyTest extends TestSupport { def "definition"() { - given: - def stepContext = stepContext(''' - name: test - ''') when: - def processor = new RemovePropertyStepParser().toProcessor(stepContext) + def processor = toProcessor('remove-property', ''' + property-name: test + ''') then: with(processor, RemovePropertyDefinition) { propertyName == 'test' } } + def "definition (alias)"() { + when: + def processor = toProcessor('remove-property', ''' + name: test + ''') + then: + with(processor, RemovePropertyDefinition) { + propertyName == 'test' + } + } } diff --git a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/RestTest.groovy b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/RestTest.groovy index 9fe806a..30d090e 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/RestTest.groovy +++ b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/RestTest.groovy @@ -17,6 +17,7 @@ package org.apache.camel.k.loader.yaml.parser import org.apache.camel.k.loader.yaml.TestSupport +import org.apache.camel.k.loader.yaml.spi.StepParserException import org.apache.camel.model.RouteDefinition import org.apache.camel.model.rest.GetVerbDefinition diff --git a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/RollbackTest.groovy b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/RollbackTest.groovy index 3ba76f6..71dc515 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/RollbackTest.groovy +++ b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/RollbackTest.groovy @@ -17,25 +17,21 @@ package org.apache.camel.k.loader.yaml.parser import org.apache.camel.k.loader.yaml.TestSupport -import org.apache.camel.model.IdempotentConsumerDefinition -import org.apache.camel.model.LogDefinition import org.apache.camel.model.RollbackDefinition class RollbackTest extends TestSupport { def "definition"() { - given: - def stepContext = stepContext(''' + when: + def processor = toProcessor('rollback', ''' mark-rollback-only: "true" message: "test" ''') - when: - def processor = new RollbackStepParser().toProcessor(stepContext) then: - with(processor, RollbackDefinition) { - markRollbackOnly == "true" - message == 'test' - } + with(processor, RollbackDefinition) { + markRollbackOnly == "true" + message == 'test' + } } } diff --git a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/SetExchangePatternTest.groovy b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/SetExchangePatternTest.groovy index a7d3531..9efb531 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/SetExchangePatternTest.groovy +++ b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/SetExchangePatternTest.groovy @@ -23,12 +23,10 @@ import org.apache.camel.model.SetExchangePatternDefinition class SetExchangePatternTest extends TestSupport { def "definition"() { - given: - def stepContext = stepContext(''' + when: + def processor = toProcessor('set-exchange-pattern', ''' pattern: "InOut" ''') - when: - def processor = new SetExchangePatternStepParser().toProcessor(stepContext) then: with(processor, SetExchangePatternDefinition) { pattern == ExchangePattern.InOut.name() diff --git a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/StepTest.groovy b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/StepTest.groovy index a25b269..17ee0dd 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/StepTest.groovy +++ b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/StepTest.groovy @@ -17,6 +17,7 @@ package org.apache.camel.k.loader.yaml.parser import org.apache.camel.k.loader.yaml.TestSupport +import org.apache.camel.k.loader.yaml.spi.StepParserException import org.apache.camel.model.StepDefinition class StepTest extends TestSupport { @@ -40,7 +41,7 @@ class StepTest extends TestSupport { def "should fail without steps"() { given: - def stepContext = stepContext(TestSupport.MAPPER.createObjectNode()); + def stepContext = stepContext(MAPPER.createObjectNode()); when: new StepStepParser().toProcessor(stepContext) then: diff --git a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/TransactedTest.groovy b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/StopTest.groovy similarity index 73% copy from camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/TransactedTest.groovy copy to camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/StopTest.groovy index 23253f9..f89d68d 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/TransactedTest.groovy +++ b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/StopTest.groovy @@ -16,19 +16,18 @@ */ package org.apache.camel.k.loader.yaml.parser + import org.apache.camel.k.loader.yaml.TestSupport -import org.apache.camel.model.TransactedDefinition +import org.apache.camel.model.StopDefinition -class TransactedTest extends TestSupport { +class StopTest extends TestSupport { - def "definition with expression"() { + def "definition"() { when: - def processor = toProcessor(TransactedStepParser, ''' - ref: "my-policy" - ''') + def processor = toProcessor('stop', '''{}''') then: - with(processor, TransactedDefinition) { - ref == "my-policy" + with(processor, StopDefinition) { } } + } diff --git a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/ThreadsTest.groovy b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/ThreadsTest.groovy index 8cb63c0..0657c0a 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/ThreadsTest.groovy +++ b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/ThreadsTest.groovy @@ -27,7 +27,9 @@ class ThreadsTest extends TestSupport { pool-size: 5 ''') when: - def processor = new ThreadsStepParser().toProcessor(stepContext) + def processor = toProcessor('threads', ''' + pool-size: 5 + ''') then: with (processor, ThreadsDefinition) { poolSize == '5' diff --git a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/ThrowExceptionTest.groovy b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/ThrowExceptionTest.groovy index d592d14..1d1295c 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/ThrowExceptionTest.groovy +++ b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/ThrowExceptionTest.groovy @@ -22,18 +22,16 @@ import org.apache.camel.model.ThrowExceptionDefinition class ThrowExceptionTest extends TestSupport { def "definition"() { - given: - def stepContext = stepContext(''' - exception-type: "java.lang.IllegalArgumentException" - message: "test" - ''') when: - def processor = new ThrowExceptionStepParser().toProcessor(stepContext) - then: - with(processor, ThrowExceptionDefinition) { - message == 'test' - exceptionType == "java.lang.IllegalArgumentException" - } - } + def processor = toProcessor('throw-exception', ''' + exception-type: "java.lang.IllegalArgumentException" + message: "test" + ''') + then: + with(processor, ThrowExceptionDefinition) { + message == 'test' + exceptionType == "java.lang.IllegalArgumentException" + } + } -} + } diff --git a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/TransactedTest.groovy b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/TransactedTest.groovy index 23253f9..ed60dfe 100644 --- a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/TransactedTest.groovy +++ b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/parser/TransactedTest.groovy @@ -23,7 +23,7 @@ class TransactedTest extends TestSupport { def "definition with expression"() { when: - def processor = toProcessor(TransactedStepParser, ''' + def processor = toProcessor('transacted', ''' ref: "my-policy" ''') then: diff --git a/camel-k-quarkus/camel-k-quarkus-core/deployment/src/main/java/org/apache/camel/k/core/quarkus/deployment/DeploymentSupport.java b/camel-k-quarkus/camel-k-quarkus-core/deployment/src/main/java/org/apache/camel/k/core/quarkus/deployment/DeploymentSupport.java index 01a2876..9803f9a 100644 --- a/camel-k-quarkus/camel-k-quarkus-core/deployment/src/main/java/org/apache/camel/k/core/quarkus/deployment/DeploymentSupport.java +++ b/camel-k-quarkus/camel-k-quarkus-core/deployment/src/main/java/org/apache/camel/k/core/quarkus/deployment/DeploymentSupport.java @@ -16,6 +16,12 @@ */ package org.apache.camel.k.core.quarkus.deployment; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem; +import org.jboss.jandex.AnnotationInstance; +import org.jboss.jandex.AnnotationTarget; import org.jboss.jandex.ClassInfo; import org.jboss.jandex.DotName; import org.jboss.jandex.IndexView; @@ -39,4 +45,52 @@ public final class DeploymentSupport { public static Iterable<ClassInfo> getAllKnownSubclasses(IndexView view, Class<?> type) { return view.getAllKnownSubclasses(DotName.createSimple(type.getName())); } + + public static Iterable<ClassInfo> getAllKnownImplementors(IndexView view, DotName type) { + return view.getAllKnownImplementors(type); + } + + public static Iterable<ClassInfo> getAllKnownSubclasses(IndexView view, DotName type) { + return view.getAllKnownSubclasses(type); + } + + public static Iterable<ClassInfo> getAnnotated(IndexView view, String name) { + return getAnnotated(view, DotName.createSimple(name)); + } + + public static Iterable<ClassInfo> getAnnotated(IndexView view, Class<?> type) { + return getAnnotated(view, DotName.createSimple(type.getName())); + } + + public static Iterable<ClassInfo> getAnnotated(IndexView view, DotName type) { + return view.getAnnotations(type).stream() + .map(AnnotationInstance::target) + .filter(t -> t.kind() == AnnotationTarget.Kind.CLASS) + .map(AnnotationTarget::asClass) + .collect(Collectors.toList()); + } + + + public static ReflectiveClassBuildItem reflectiveClassBuildItem(ClassInfo... classInfos) { + return new ReflectiveClassBuildItem( + true, + false, + Stream.of(classInfos) + .map(ClassInfo::name) + .map(DotName::toString) + .toArray(String[]::new) + ); + } + + public static ReflectiveClassBuildItem reflectiveClassBuildItem(boolean methods, boolean fields, ClassInfo... classInfos) { + return new ReflectiveClassBuildItem( + methods, + fields, + Stream.of(classInfos) + .map(ClassInfo::name) + .map(DotName::toString) + .toArray(String[]::new) + ); + } + } diff --git a/camel-k-quarkus/camel-k-quarkus-loader-yaml/deployment/src/main/java/org/apache/camel/k/loader/yaml/quarkus/deployment/DeploymentProcessor.java b/camel-k-quarkus/camel-k-quarkus-loader-yaml/deployment/src/main/java/org/apache/camel/k/loader/yaml/quarkus/deployment/DeploymentProcessor.java index f62abb4..c49c1c4 100644 --- a/camel-k-quarkus/camel-k-quarkus-loader-yaml/deployment/src/main/java/org/apache/camel/k/loader/yaml/quarkus/deployment/DeploymentProcessor.java +++ b/camel-k-quarkus/camel-k-quarkus-loader-yaml/deployment/src/main/java/org/apache/camel/k/loader/yaml/quarkus/deployment/DeploymentProcessor.java @@ -16,8 +16,6 @@ */ package org.apache.camel.k.loader.yaml.quarkus.deployment; -import java.util.stream.Collectors; - import io.quarkus.deployment.annotations.BuildProducer; import io.quarkus.deployment.annotations.BuildStep; import io.quarkus.deployment.builditem.CombinedIndexBuildItem; @@ -26,29 +24,29 @@ import org.apache.camel.k.loader.yaml.model.Node; import org.apache.camel.k.loader.yaml.model.Step; import org.apache.camel.k.loader.yaml.parser.HasDataFormat; import org.apache.camel.k.loader.yaml.parser.HasExpression; -import org.apache.camel.k.loader.yaml.parser.StepParser; -import org.apache.camel.k.loader.yaml.support.Any23DataFormatMixIn; -import org.apache.camel.k.loader.yaml.support.ExpressionNodeMixIn; -import org.apache.camel.k.loader.yaml.support.ProcessorDefinitionMixIn; -import org.apache.camel.k.loader.yaml.support.XStreamDataFormatMixIn; +import org.apache.camel.k.loader.yaml.spi.StepParser; import org.apache.camel.model.DataFormatDefinition; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.model.language.ExpressionDefinition; import org.apache.camel.quarkus.core.deployment.CamelServicePatternBuildItem; -import org.jboss.jandex.AnnotationInstance; -import org.jboss.jandex.AnnotationTarget; import org.jboss.jandex.ClassInfo; import org.jboss.jandex.DotName; import org.jboss.jandex.IndexView; +import static org.apache.camel.k.core.quarkus.deployment.DeploymentSupport.getAllKnownImplementors; +import static org.apache.camel.k.core.quarkus.deployment.DeploymentSupport.getAllKnownSubclasses; +import static org.apache.camel.k.core.quarkus.deployment.DeploymentSupport.getAnnotated; +import static org.apache.camel.k.core.quarkus.deployment.DeploymentSupport.reflectiveClassBuildItem; + public class DeploymentProcessor { public static final DotName YAML_STEP_PARSER_ANNOTATION = DotName.createSimple("org.apache.camel.k.annotation.yaml.YAMLStepParser"); public static final DotName YAML_STEP_DEFINITION_ANNOTATION = DotName.createSimple("org.apache.camel.k.annotation.yaml.YAMLNodeDefinition"); + public static final DotName YAML_MIXIN_ANNOTATION = DotName.createSimple("org.apache.camel.k.annotation.yaml.YAMLMixIn"); @BuildStep CamelServicePatternBuildItem servicePatterns() { return new CamelServicePatternBuildItem( - CamelServicePatternBuildItem.CamelServiceDestination.REGISTRY, + CamelServicePatternBuildItem.CamelServiceDestination.DISCOVERY, true, StepParser.SERVICE_LOCATION + "/*"); } @@ -61,72 +59,31 @@ public class DeploymentProcessor { IndexView view = combinedIndexBuildItem.getIndex(); for (ClassInfo ci : getAnnotated(view, YAML_STEP_PARSER_ANNOTATION)) { - reflectiveClass.produce(new ReflectiveClassBuildItem(true, true, ci.name().toString())); + reflectiveClass.produce(reflectiveClassBuildItem(true, true, ci)); } for (ClassInfo ci : getAnnotated(view, YAML_STEP_DEFINITION_ANNOTATION)) { - reflectiveClass.produce(new ReflectiveClassBuildItem(true, true, ci.name().toString())); + reflectiveClass.produce(reflectiveClassBuildItem(true, true, ci)); + } + for (ClassInfo ci : getAnnotated(view, YAML_MIXIN_ANNOTATION)) { + reflectiveClass.produce(reflectiveClassBuildItem(true, true, ci)); } for (ClassInfo ci : getAllKnownImplementors(view, Step.Deserializer.class)) { - reflectiveClass.produce(new ReflectiveClassBuildItem(true, true, ci.name().toString())); + reflectiveClass.produce(reflectiveClassBuildItem(true, true, ci)); } for (ClassInfo ci : getAllKnownSubclasses(view, ProcessorDefinition.class)) { - reflectiveClass.produce(new ReflectiveClassBuildItem(true, true, ci.name().toString())); + reflectiveClass.produce(reflectiveClassBuildItem(true, true, ci)); } for (ClassInfo ci : getAllKnownSubclasses(view, ExpressionDefinition.class)) { - reflectiveClass.produce(new ReflectiveClassBuildItem(true, true, ci.name().toString())); + reflectiveClass.produce(reflectiveClassBuildItem(true, true, ci)); } for (ClassInfo ci : getAllKnownSubclasses(view, DataFormatDefinition.class)) { - reflectiveClass.produce(new ReflectiveClassBuildItem(true, true, ci.name().toString())); + reflectiveClass.produce(reflectiveClassBuildItem(true, true, ci)); } reflectiveClass.produce(new ReflectiveClassBuildItem(true, true, Step.Deserializer.class)); reflectiveClass.produce(new ReflectiveClassBuildItem(true, false, HasExpression.class)); reflectiveClass.produce(new ReflectiveClassBuildItem(true, false, HasDataFormat.class)); reflectiveClass.produce(new ReflectiveClassBuildItem(true, true, Node.class)); - reflectiveClass.produce(new ReflectiveClassBuildItem(true, true, ProcessorDefinitionMixIn.class)); - reflectiveClass.produce(new ReflectiveClassBuildItem(true, true, ExpressionNodeMixIn.class)); - reflectiveClass.produce(new ReflectiveClassBuildItem(true, true, Any23DataFormatMixIn.class)); - reflectiveClass.produce(new ReflectiveClassBuildItem(true, true, XStreamDataFormatMixIn.class)); - } - - private static Iterable<ClassInfo> getAllKnownImplementors(IndexView view, String name) { - return getAllKnownImplementors(view, DotName.createSimple(name)); - } - - private static Iterable<ClassInfo> getAllKnownImplementors(IndexView view, Class<?> type) { - return getAllKnownImplementors(view, DotName.createSimple(type.getName())); - } - - private static Iterable<ClassInfo> getAllKnownImplementors(IndexView view, DotName type) { - return view.getAllKnownImplementors(type); - } - - private static Iterable<ClassInfo> getAllKnownSubclasses(IndexView view, String name) { - return getAllKnownSubclasses(view, DotName.createSimple(name)); - } - - private static Iterable<ClassInfo> getAllKnownSubclasses(IndexView view, Class<?> type) { - return getAllKnownSubclasses(view, DotName.createSimple(type.getName())); - } - - private static Iterable<ClassInfo> getAllKnownSubclasses(IndexView view, DotName type) { - return view.getAllKnownSubclasses(type); - } - - private static Iterable<ClassInfo> getAnnotated(IndexView view, String name) { - return getAnnotated(view, DotName.createSimple(name)); - } - - private static Iterable<ClassInfo> getAnnotated(IndexView view, Class<?> type) { - return getAnnotated(view, DotName.createSimple(type.getName())); - } - - private static Iterable<ClassInfo> getAnnotated(IndexView view, DotName type) { - return view.getAnnotations(type).stream() - .map(AnnotationInstance::target) - .filter(t -> t.kind() == AnnotationTarget.Kind.CLASS) - .map(AnnotationTarget::asClass) - .collect(Collectors.toList()); } } diff --git a/camel-k-runtime-knative/src/main/java/org/apache/camel/k/knative/yaml/parser/KnativeStepParser.java b/camel-k-runtime-knative/src/main/java/org/apache/camel/k/knative/yaml/parser/KnativeStepParser.java index 581ae1d..48c07f8 100644 --- a/camel-k-runtime-knative/src/main/java/org/apache/camel/k/knative/yaml/parser/KnativeStepParser.java +++ b/camel-k-runtime-knative/src/main/java/org/apache/camel/k/knative/yaml/parser/KnativeStepParser.java @@ -23,9 +23,9 @@ import java.util.Map; import com.fasterxml.jackson.annotation.JsonIgnore; import org.apache.camel.component.knative.spi.Knative; -import org.apache.camel.k.loader.yaml.parser.ProcessorStepParser; -import org.apache.camel.k.loader.yaml.parser.StartStepParser; -import org.apache.camel.k.loader.yaml.parser.StepParserSupport; +import org.apache.camel.k.loader.yaml.spi.ProcessorStepParser; +import org.apache.camel.k.loader.yaml.spi.StartStepParser; +import org.apache.camel.k.loader.yaml.spi.StepParserSupport; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.model.RouteDefinition; import org.apache.camel.model.ToDefinition; diff --git a/examples/camel-k-runtime-example-knative/data/routes.yaml b/examples/camel-k-runtime-example-knative/data/routes.yaml index 72b90e4..dae43ba 100644 --- a/examples/camel-k-runtime-example-knative/data/routes.yaml +++ b/examples/camel-k-runtime-example-knative/data/routes.yaml @@ -21,7 +21,7 @@ from: uri: "knative:endpoint/from" steps: - - convert-body: + - convert-body-to: type: "java.lang.String" - to: uri: "log:knative" diff --git a/examples/camel-k-runtime-example-quarkus-knative/data/routes.yaml b/examples/camel-k-runtime-example-quarkus-knative/data/routes.yaml index e0559a5..31bda66 100644 --- a/examples/camel-k-runtime-example-quarkus-knative/data/routes.yaml +++ b/examples/camel-k-runtime-example-quarkus-knative/data/routes.yaml @@ -21,7 +21,7 @@ from: uri: "knative://endpoint/source" steps: - - convert-body: + - convert-body-to: type: "java.lang.String" - choice: when: diff --git a/examples/camel-k-runtime-example-quarkus-yaml/data/routes.yaml b/examples/camel-k-runtime-example-quarkus-yaml/data/routes.yaml index 23c82e8..287fd74 100644 --- a/examples/camel-k-runtime-example-quarkus-yaml/data/routes.yaml +++ b/examples/camel-k-runtime-example-quarkus-yaml/data/routes.yaml @@ -21,7 +21,7 @@ from: uri: "platform-http:/hello" steps: - - convert-body: + - convert-body-to: type: "java.lang.String" - to: uri: "log:info" diff --git a/examples/camel-k-runtime-example-yaml/src/main/resources/routes.yaml b/examples/camel-k-runtime-example-yaml/src/main/resources/routes.yaml index 11244a0..7a5dd03 100644 --- a/examples/camel-k-runtime-example-yaml/src/main/resources/routes.yaml +++ b/examples/camel-k-runtime-example-yaml/src/main/resources/routes.yaml @@ -24,7 +24,7 @@ accepts: "text/plain" binding-mode: "off" steps: - - convert-body: + - convert-body-to: type: "java.lang.String" - to: uri: "log:in" @@ -50,7 +50,7 @@ uri: "log:contains2" - marshal: json: {} - - convert-body: + - convert-body-to: type: "java.lang.String" - to: uri: "log:out" @@ -63,7 +63,7 @@ accepts: "text/plain" binding-mode: "off" steps: - - convert-body: + - convert-body-to: type: "java.lang.String" - to: uri: "log:in" @@ -84,7 +84,7 @@ accepts: "text/plain" binding-mode: "off" steps: - - convert-body: + - convert-body-to: type: "java.lang.String" - to: uri: "log:in" diff --git a/pom.xml b/pom.xml index 7b59509..c76999e 100644 --- a/pom.xml +++ b/pom.xml @@ -70,7 +70,7 @@ <gmavenplus-plugin.version>1.9.0</gmavenplus-plugin.version> <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version> <maven-surefire-plugin.version>3.0.0-M4</maven-surefire-plugin.version> - <maven-remote-resources-plugin.version>1.7.0</maven-remote-resources-plugin.version> + <maven-remote-resources-plugin.version>1.5</maven-remote-resources-plugin.version> <maven-failsafe-plugin.version>3.0.0-M4</maven-failsafe-plugin.version> <versions-maven-plugin.version>2.7</versions-maven-plugin.version> <directory-maven-plugin.version>0.3.1</directory-maven-plugin.version> diff --git a/tooling/camel-k-apt/src/main/java/org/apache/camel/k/tooling/apt/CamelProcessor.java b/tooling/camel-k-apt/src/main/java/org/apache/camel/k/tooling/apt/CamelProcessor.java index fd3d69b..886668a 100644 --- a/tooling/camel-k-apt/src/main/java/org/apache/camel/k/tooling/apt/CamelProcessor.java +++ b/tooling/camel-k-apt/src/main/java/org/apache/camel/k/tooling/apt/CamelProcessor.java @@ -38,12 +38,10 @@ import javax.tools.StandardLocation; import org.apache.camel.k.annotation.Loader; import org.apache.camel.k.annotation.LoaderInterceptor; -import org.apache.camel.k.annotation.yaml.YAMLStepParser; @SupportedAnnotationTypes({ "org.apache.camel.k.annotation.Loader", "org.apache.camel.k.annotation.LoaderInterceptor", - "org.apache.camel.k.annotation.yaml.YAMLStepParser" }) @SupportedSourceVersion(SourceVersion.RELEASE_8) public class CamelProcessor extends AbstractProcessor { @@ -67,14 +65,6 @@ public class CamelProcessor extends AbstractProcessor { e ); }); - on(element, YAMLStepParser.class, (e, a) -> { - for (String id: a.value()) { - service( - output("META-INF/services/org/apache/camel/k/loader/yaml-parser/%s", id), - e - ); - } - }); } } diff --git a/tooling/camel-k-maven-plugin/pom.xml b/tooling/camel-k-maven-plugin/pom.xml index dbab817..00cf287 100644 --- a/tooling/camel-k-maven-plugin/pom.xml +++ b/tooling/camel-k-maven-plugin/pom.xml @@ -34,7 +34,7 @@ <artifactId>camel-k-maven-plugin</artifactId> <properties> - <maven.version>3.6.1</maven.version> + <maven.version>3.6.3</maven.version> <maven-plugin-tools.version>3.6.0</maven-plugin-tools.version> <maven-shaded.version>3.1.0</maven-shaded.version> </properties> diff --git a/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateYamlLoaderSupportClasses.java b/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateYamlLoaderSupportClasses.java index f681f60..3982257 100644 --- a/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateYamlLoaderSupportClasses.java +++ b/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateYamlLoaderSupportClasses.java @@ -19,11 +19,16 @@ package org.apache.camel.k.tooling.maven; import java.io.IOException; import java.nio.file.Paths; +import java.util.Comparator; +import java.util.HashSet; +import java.util.Set; import javax.lang.model.element.Modifier; import com.fasterxml.jackson.core.Version; import com.fasterxml.jackson.databind.Module; +import com.google.common.base.CaseFormat; +import com.squareup.javapoet.ClassName; import com.squareup.javapoet.CodeBlock; import com.squareup.javapoet.JavaFile; import com.squareup.javapoet.MethodSpec; @@ -55,6 +60,10 @@ public class GenerateYamlLoaderSupportClasses extends GenerateYamlSupport { .indent(" ") .build() .writeTo(Paths.get(output)); + JavaFile.builder("org.apache.camel.k.loader.yaml", generateResolver()) + .indent(" ") + .build() + .writeTo(Paths.get(output)); } catch (IOException e) { throw new MojoFailureException(e.getMessage()); } @@ -86,14 +95,15 @@ public class GenerateYamlLoaderSupportClasses extends GenerateYamlSupport { .addParameter(Module.SetupContext.class, "context"); definitions(EXPRESSION_DEFINITION_CLASS).forEach( - (k, v) -> mb.addStatement("context.registerSubtypes(new com.fasterxml.jackson.databind.jsontype.NamedType($T.class, $S))", v, k) + (k, v) -> mb.addStatement("context.registerSubtypes(new com.fasterxml.jackson.databind.jsontype.NamedType($L.class, $S))", v.getName(), k) ); definitions(DATAFORMAT_DEFINITION_CLASS).forEach( - (k, v) -> mb.addStatement("context.registerSubtypes(new com.fasterxml.jackson.databind.jsontype.NamedType($T.class, $S))", v, k) + (k, v) -> mb.addStatement("context.registerSubtypes(new com.fasterxml.jackson.databind.jsontype.NamedType($L.class, $S))", v.getName(), k) ); definitions(LOAD_BALANCE_DEFINITION_CLASS).forEach( - (k, v) -> mb.addStatement("context.registerSubtypes(new com.fasterxml.jackson.databind.jsontype.NamedType($T.class, $S))", v, k) + (k, v) -> mb.addStatement("context.registerSubtypes(new com.fasterxml.jackson.databind.jsontype.NamedType($L.class, $S))", v.getName(), k) ); + annotated(YAML_MIXIN_ANNOTATION).forEach(i -> { final AnnotationInstance annotation = i.classAnnotation(YAML_MIXIN_ANNOTATION); final AnnotationValue targets = annotation.value("value"); @@ -124,18 +134,18 @@ public class GenerateYamlLoaderSupportClasses extends GenerateYamlSupport { .addModifiers(Modifier.PUBLIC) .addModifiers(Modifier.STATIC); - annotated(YAML_STEP_DEFINITION_ANNOTATION).forEach(i -> { - final AnnotationInstance annotation = i.classAnnotation(YAML_STEP_DEFINITION_ANNOTATION); + annotated(YAML_NODE_DEFINITION_ANNOTATION).forEach(i -> { + final AnnotationInstance annotation = i.classAnnotation(YAML_NODE_DEFINITION_ANNOTATION); final AnnotationValue reifiers = annotation.value("reifiers"); - String name = i.toString(); - if (i.nestingType() == ClassInfo.NestingType.INNER) { - name = i.enclosingClass().toString() + "." + i.simpleName(); - } - if (reifiers != null) { + String name = i.toString(); + if (i.nestingType() == ClassInfo.NestingType.INNER) { + name = i.enclosingClass().toString() + "." + i.simpleName(); + } + for (String reifier: reifiers.asStringArray()) { - mb.addStatement("org.apache.camel.reifier.ProcessorReifier.registerReifier($L.class, $L::new);", name, reifier); + mb.addStatement("org.apache.camel.reifier.ProcessorReifier.registerReifier($L.class, $L::new)", name, reifier); } } }); @@ -144,4 +154,93 @@ public class GenerateYamlLoaderSupportClasses extends GenerateYamlSupport { return type.build(); } + + public final TypeSpec generateResolver() { + Set<String> ids = new HashSet<>(); + + MethodSpec.Builder mb = MethodSpec.methodBuilder("resolve") + .addAnnotation(Override.class) + .addModifiers(Modifier.PUBLIC) + .addParameter(ClassName.get("org.apache.camel", "CamelContext"), "camelContext") + .addParameter(ClassName.get("java.lang", "String"), "id") + .returns(ClassName.get("org.apache.camel.k.loader.yaml.spi", "StepParser")); + + mb.beginControlFlow("switch(id)"); + + // custom parsers + annotated(YAML_STEP_PARSER_ANNOTATION) + .sorted(Comparator.comparing(i -> i.name().toString())) + .forEach( + i -> { + AnnotationValue value = i.classAnnotation(YAML_STEP_PARSER_ANNOTATION).value(); + for (String id: value.asStringArray()) { + if (ids.add(id)) { + mb.beginControlFlow("case $S:", id); + mb.addStatement("return new $L()", i.name().toString()); + mb.endControlFlow(); + } + } + } + ); + + // auto generated parsers + annotated(XMLROOTELEMENT_ANNOTATION_CLASS) + .forEach( + i -> { + AnnotationInstance meta = i.classAnnotation(METADATA_ANNOTATION); + AnnotationInstance root = i.classAnnotation(XMLROOTELEMENT_ANNOTATION_CLASS); + + if (meta != null && root != null) { + AnnotationValue name = root.value("name"); + AnnotationValue label = meta.value("label"); + + if (name != null && label != null) { + // skip known definitions for which there is a custom + // implementation + switch (i.name().toString()) { + case "org.apache.camel.model.Resilience4jConfigurationDefinition": + case "org.apache.camel.model.HystrixConfigurationDefinition": + case "org.apache.camel.model.config.StreamResequencerConfig": + case "org.apache.camel.model.config.BatchResequencerConfig": + case "org.apache.camel.model.OnFallbackDefinition": + case "org.apache.camel.model.InOnlyDefinition": + case "org.apache.camel.model.InOutDefinition": + case "org.apache.camel.model.OtherwiseDefinition": + case "org.apache.camel.model.WhenDefinition": + return; + default: + break; + } + switch (i.name().prefix().toString()) { + case "org.apache.camel.model.loadbalancer": + return; + default: + break; + } + + Set<String> labels = Set.of(label.asString().split(",", -1)); + if (labels.contains("eip")) { + String id = CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_HYPHEN, name.asString()); + if (ids.add(id)) { + mb.beginControlFlow("case $S:", id); + mb.addStatement("return new org.apache.camel.k.loader.yaml.parser.TypedProcessorStepParser($L.class)", i.name().toString()); + mb.endControlFlow(); + } + } + } + } + } + ); + + mb.beginControlFlow("default:"); + mb.addStatement("return lookup(camelContext, id)"); + mb.endControlFlow(); + mb.endControlFlow(); + + return TypeSpec.classBuilder("YamlStepResolver") + .addModifiers(Modifier.PUBLIC, Modifier.FINAL) + .addSuperinterface(ClassName.get("org.apache.camel.k.loader.yaml.spi", "StepParser.Resolver")) + .addMethod(mb.build()) + .build(); + } } diff --git a/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateYamlSupport.java b/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateYamlSupport.java index 337e045..1d9c540 100644 --- a/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateYamlSupport.java +++ b/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateYamlSupport.java @@ -47,9 +47,11 @@ public abstract class GenerateYamlSupport extends AbstractMojo { public static final DotName EXPRESSION_DEFINITION_CLASS = DotName.createSimple("org.apache.camel.model.language.ExpressionDefinition"); public static final DotName DATAFORMAT_DEFINITION_CLASS = DotName.createSimple("org.apache.camel.model.DataFormatDefinition"); public static final DotName XMLROOTELEMENT_ANNOTATION_CLASS = DotName.createSimple("javax.xml.bind.annotation.XmlRootElement"); - public static final DotName YAML_STEP_DEFINITION_ANNOTATION = DotName.createSimple("org.apache.camel.k.annotation.yaml.YAMLNodeDefinition"); + public static final DotName YAML_NODE_DEFINITION_ANNOTATION = DotName.createSimple("org.apache.camel.k.annotation.yaml.YAMLNodeDefinition"); + public static final DotName YAML_STEP_PARSER_ANNOTATION = DotName.createSimple("org.apache.camel.k.annotation.yaml.YAMLStepParser"); public static final DotName YAML_MIXIN_ANNOTATION = DotName.createSimple("org.apache.camel.k.annotation.yaml.YAMLMixIn"); public static final DotName LOAD_BALANCE_DEFINITION_CLASS = DotName.createSimple("org.apache.camel.model.LoadBalancerDefinition"); + public static final DotName METADATA_ANNOTATION = DotName.createSimple("org.apache.camel.spi.Metadata"); @Parameter(defaultValue = "${project}", readonly = true, required = true) protected MavenProject project; @@ -89,7 +91,6 @@ public abstract class GenerateYamlSupport extends AbstractMojo { ClassLoader cl = getClassLoader(); IndexView view = getCompositeIndexer(cl); - return view.getAnnotations(type).stream() .map(AnnotationInstance::target) .filter(t -> t.kind() == AnnotationTarget.Kind.CLASS)