You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2019/04/17 09:41:20 UTC

[camel] 03/38: Move mock component out of camel-core. Work in progress.

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch mock
in repository https://gitbox.apache.org/repos/asf/camel.git

commit b75878e52d7e81ccd5104a2415385cf863232fbe
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Mon Apr 15 16:13:32 2019 +0200

    Move mock component out of camel-core. Work in progress.
---
 .../org/apache/camel/builder/ExpressionClause.java |  7 --
 .../apache/camel/model/ProcessorDefinition.java    | 40 ++++-----
 ...mlChoiceFilterRoutePropertyPlaceholderTest.java | 95 ++++++++++++++++++++++
 3 files changed, 116 insertions(+), 26 deletions(-)

diff --git a/core/camel-core/src/main/java/org/apache/camel/builder/ExpressionClause.java b/core/camel-core/src/main/java/org/apache/camel/builder/ExpressionClause.java
index eed851f..6dd377b 100644
--- a/core/camel-core/src/main/java/org/apache/camel/builder/ExpressionClause.java
+++ b/core/camel-core/src/main/java/org/apache/camel/builder/ExpressionClause.java
@@ -25,7 +25,6 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
 import org.apache.camel.Message;
 import org.apache.camel.Predicate;
-import org.apache.camel.model.ExpressionNode;
 import org.apache.camel.support.ExpressionAdapter;
 import org.apache.camel.support.ExpressionToPredicateAdapter;
 import org.apache.camel.support.builder.xml.Namespaces;
@@ -42,12 +41,6 @@ public class ExpressionClause<T> implements Expression, Predicate {
         this.delegate = new ExpressionClauseSupport<>(result);
     }
 
-    public static <T extends ExpressionNode> ExpressionClause<T> createAndSetExpression(T result) {
-        ExpressionClause<T> clause = new ExpressionClause<>(result);
-        result.setExpression(clause);
-        return clause;
-    }
-
     // Helper expressions
     // -------------------------------------------------------------------------
 
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
index 46f2463..37ea037 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
@@ -94,6 +94,12 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
         index = COUNTER.getAndIncrement();
     }
 
+    private static <T extends ExpressionNode> ExpressionClause<T> createAndSetExpression(T result) {
+        ExpressionClause<T> clause = new ExpressionClause<>(result);
+        result.setExpression(clause);
+        return clause;
+    }
+
     /**
      * Gets the unique index number for when this {@link ProcessorDefinition} was created by its constructor.
      * <p/>
@@ -1061,8 +1067,7 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
     public ExpressionClause<IdempotentConsumerDefinition> idempotentConsumer() {
         IdempotentConsumerDefinition answer = new IdempotentConsumerDefinition();
         addOutput(answer);
-
-        return ExpressionClause.createAndSetExpression(answer);
+        return createAndSetExpression(answer);
     }
 
     /**
@@ -1106,7 +1111,7 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
     public ExpressionClause<? extends FilterDefinition> filter() {
         FilterDefinition filter = new FilterDefinition();
         addOutput(filter);
-        return ExpressionClause.createAndSetExpression(filter);
+        return createAndSetExpression(filter);
     }
 
     /**
@@ -1189,7 +1194,7 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
     public ExpressionClause<ValidateDefinition> validate() {
         ValidateDefinition answer = new ValidateDefinition();
         addOutput(answer);
-        return ExpressionClause.createAndSetExpression(answer);
+        return createAndSetExpression(answer);
     }
 
     /**
@@ -1397,7 +1402,7 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
         RecipientListDefinition<Type> answer = new RecipientListDefinition<>();
         answer.setDelimiter(delimiter);
         addOutput(answer);
-        return ExpressionClause.createAndSetExpression(answer);
+        return createAndSetExpression(answer);
     }
 
     /**
@@ -1410,7 +1415,7 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
     public ExpressionClause<RecipientListDefinition<Type>> recipientList() {
         RecipientListDefinition<Type> answer = new RecipientListDefinition<>();
         addOutput(answer);
-        return ExpressionClause.createAndSetExpression(answer);
+        return createAndSetExpression(answer);
     }
 
     /**
@@ -1463,7 +1468,7 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
     public ExpressionClause<RoutingSlipDefinition<Type>> routingSlip() {
         RoutingSlipDefinition<Type> answer = new RoutingSlipDefinition<>();
         addOutput(answer);
-        return ExpressionClause.createAndSetExpression(answer);
+        return createAndSetExpression(answer);
     }
 
     /**
@@ -1499,7 +1504,7 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
     public ExpressionClause<DynamicRouterDefinition<Type>> dynamicRouter() {
         DynamicRouterDefinition<Type> answer = new DynamicRouterDefinition<>();
         addOutput(answer);
-        return ExpressionClause.createAndSetExpression(answer);
+        return createAndSetExpression(answer);
     }
 
     /**
@@ -1564,7 +1569,7 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
     public ExpressionClause<SplitDefinition> split() {
         SplitDefinition answer = new SplitDefinition();
         addOutput(answer);
-        return ExpressionClause.createAndSetExpression(answer);
+        return createAndSetExpression(answer);
     }
 
     /**
@@ -1712,7 +1717,7 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
     public ExpressionClause<DelayDefinition> delay() {
         DelayDefinition answer = new DelayDefinition();
         addOutput(answer);
-        return ExpressionClause.createAndSetExpression(answer);
+        return createAndSetExpression(answer);
     }
 
     /**
@@ -1735,8 +1740,7 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
     public ExpressionClause<ThrottleDefinition> throttle() {
         ThrottleDefinition answer = new ThrottleDefinition();
         addOutput(answer);
-
-        return ExpressionClause.createAndSetExpression(answer);
+        return createAndSetExpression(answer);
     }
 
     /**
@@ -1823,7 +1827,7 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
     public ExpressionClause<LoopDefinition> loop() {
         LoopDefinition loop = new LoopDefinition();
         addOutput(loop);
-        return ExpressionClause.createAndSetExpression(loop);
+        return createAndSetExpression(loop);
     }
 
     /**
@@ -1864,10 +1868,8 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
     public ExpressionClause<LoopDefinition> loopDoWhile() {
         LoopDefinition loop = new LoopDefinition();
         loop.setDoWhile(true);
-
         addOutput(loop);
-
-        return ExpressionClause.createAndSetExpression(loop);
+        return createAndSetExpression(loop);
     }
 
     /**
@@ -2671,7 +2673,7 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
     public <T> ExpressionClause<SortDefinition<T>> sort() {
         SortDefinition<T> answer = new SortDefinition<>();
         addOutput(answer);
-        return ExpressionClause.createAndSetExpression(answer);
+        return createAndSetExpression(answer);
     }
 
     /**
@@ -2852,7 +2854,7 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
     public ExpressionClause<EnrichDefinition> enrich() {
         EnrichDefinition answer = new EnrichDefinition();
         addOutput(answer);
-        return ExpressionClause.createAndSetExpression(answer);
+        return createAndSetExpression(answer);
     }
 
     /**
@@ -3107,7 +3109,7 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
     public ExpressionClause<PollEnrichDefinition> pollEnrich() {
         PollEnrichDefinition answer = new PollEnrichDefinition();
         addOutput(answer);
-        return ExpressionClause.createAndSetExpression(answer);
+        return createAndSetExpression(answer);
     }
 
     /**
diff --git a/core/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlChoiceFilterRoutePropertyPlaceholderTest.java b/core/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlChoiceFilterRoutePropertyPlaceholderTest.java
new file mode 100644
index 0000000..b369dcc
--- /dev/null
+++ b/core/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlChoiceFilterRoutePropertyPlaceholderTest.java
@@ -0,0 +1,95 @@
+/*
+ * 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.util;
+
+import java.util.Properties;
+
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.model.ModelHelper;
+import org.apache.camel.spi.PropertiesComponent;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class DumpModelAsXmlChoiceFilterRoutePropertyPlaceholderTest extends ContextTestSupport {
+
+    @Test
+    public void testDumpModelAsXml() throws Exception {
+        String xml = ModelHelper.dumpModelAsXml(context, context.getRouteDefinition("myRoute"));
+        assertNotNull(xml);
+        log.info(xml);
+
+        assertTrue(xml.contains("<header>{{duke}}</header>"));
+        assertTrue(xml.contains("<header>{{best}}</header>"));
+        assertTrue(xml.contains("<header>{{extra}}</header>"));
+        assertTrue(xml.contains("<simple>${body} contains 'Camel'</simple>"));
+    }
+
+    @Test
+    public void testDumpModelAsXmAl() throws Exception {
+        String xml = ModelHelper.dumpModelAsXml(context, context.getRouteDefinition("a"));
+        assertNotNull(xml);
+        log.info(xml);
+
+        assertTrue(xml.contains("message=\"{{mypath}}\""));
+        assertTrue(xml.contains("<constant>bar</constant>"));
+        assertTrue(xml.contains("<expressionDefinition>header{test} is not null</expressionDefinition>"));
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                Properties prop = new Properties();
+                prop.put("duke", "dude");
+                prop.put("best", "gold");
+                prop.put("extra", "extra-gold");
+                prop.put("mypath", "xpath");
+
+                PropertiesComponent pc = context.getPropertiesComponent(true);
+                pc.setInitialProperties(prop);
+
+                from("direct:start").routeId("myRoute")
+                    .to("log:input")
+                    .transform().header("{{duke}}")
+                    .choice()
+                        .when().header("{{best}}")
+                            .to("mock:gold")
+                            .filter().header("{{extra}}")
+                                .to("mock:extra-gold")
+                            .endChoice()
+                        .when().simple("${body} contains 'Camel'")
+                            .to("mock:camel")
+                        .otherwise()
+                            .to("mock:other")
+                    .end()
+                    .to("mock:result");
+
+                from("seda:a").routeId("a")
+                    .setProperty("foo").constant("bar")
+                    .choice()
+                        .when(header("test").isNotNull()).log("not null")
+                        .when(xpath("/foo/bar")).log("{{mypath}}")
+                    .end()
+                    .to("mock:a");
+            }
+        };
+    }
+}