You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2009/08/11 15:59:37 UTC
svn commit: r803128 [1/2] - in /camel/trunk:
camel-core/src/main/java/org/apache/camel/model/
camel-core/src/main/java/org/apache/camel/processor/loadbalancer/
components/camel-web/src/main/java/org/apache/camel/web/util/
components/camel-web/src/test/...
Author: janstey
Date: Tue Aug 11 13:59:36 2009
New Revision: 803128
URL: http://svn.apache.org/viewvc?rev=803128&view=rev
Log:
CAMEL-1392 - latest update to the Groovy renderer from Xueqiang
Added:
camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ConvertBodyDefinitionRenderer.java
camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/LoadBalanceDefinitionRenderer.java
camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ProcessorDefinitionRenderer.java
camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ResequenceDefinitionRenderer.java
camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/RoutingSlipDefinitionRenderer.java
camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ThrottleDefinitionRenderer.java
camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/AOPDSLTest.java
camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/InterceptDSLTest.java
camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/InterceptFromDSLTest.java
camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/InterceptSendToEndpointDSLTest.java
camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/MulticastDSLTest.java
camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/OnCompletionDSLTest.java
camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/PredicateRendererTest.java
camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/PredicateRendererTestSupport.java
camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/ResequenceDSLTest.java
camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/RollbackDSLTest.java
camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/SplitDSLTest.java
camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/StopDSLTest.java
camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/StreamCachingDSLTest.java
camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/TracingDSLTest.java
camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/util/
camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/util/UriCharachersEncoderTest.java
camel/trunk/components/camel-web/src/test/resources/routes.txt
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/model/InterceptSendToEndpointDefinition.java
camel/trunk/camel-core/src/main/java/org/apache/camel/model/RollbackDefinition.java
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/StickyLoadBalancer.java
camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/AggregateDefinitionRenderer.java
camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ChoiceDefinitionRenderer.java
camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ExpressionNodeRenderer.java
camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ExpressionRenderer.java
camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/GroovyRenderer.java
camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/OnCompletionDefinitionRenderer.java
camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/OnExceptionDefinitionRenderer.java
camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/OutputDefinitionRenderer.java
camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/PredicateRenderer.java
camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/SendDefinitionRenderer.java
camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/UriCharactersEncoder.java
camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/ChoiceDSLTest.java
camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/GroovyRendererTest.java
camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/GroovyRendererTestSupport.java
camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/LoadBalanceDSLTest.java
camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/PipelineDSLTest.java
camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/SortDSLTest.java
camel/trunk/components/camel-web/src/test/resources/route.txt
camel/trunk/components/camel-web/src/test/resources/testedRoutes.txt
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/InterceptSendToEndpointDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/InterceptSendToEndpointDefinition.java?rev=803128&r1=803127&r2=803128&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/InterceptSendToEndpointDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/InterceptSendToEndpointDefinition.java Tue Aug 11 13:59:36 2009
@@ -66,7 +66,7 @@
@Override
public String getShortName() {
- return "interceptEndpoint";
+ return "interceptSendToEndpoint";
}
@Override
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/RollbackDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/RollbackDefinition.java?rev=803128&r1=803127&r2=803128&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/RollbackDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/RollbackDefinition.java Tue Aug 11 13:59:36 2009
@@ -44,6 +44,10 @@
this.message = message;
}
+ public String getMessage() {
+ return message;
+ }
+
@Override
public String getShortName() {
return "rollback";
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/StickyLoadBalancer.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/StickyLoadBalancer.java?rev=803128&r1=803127&r2=803128&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/StickyLoadBalancer.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/StickyLoadBalancer.java Tue Aug 11 13:59:36 2009
@@ -52,6 +52,10 @@
this.correlationExpression = correlationExpression;
this.loadBalancer = loadBalancer;
}
+
+ public Expression getCorrelationExpression() {
+ return correlationExpression;
+ }
protected synchronized Processor chooseProcessor(List<Processor> processors, Exchange exchange) {
Object value = correlationExpression.evaluate(exchange, Object.class);
Modified: camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/AggregateDefinitionRenderer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/AggregateDefinitionRenderer.java?rev=803128&r1=803127&r2=803128&view=diff
==============================================================================
--- camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/AggregateDefinitionRenderer.java (original)
+++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/AggregateDefinitionRenderer.java Tue Aug 11 13:59:36 2009
@@ -22,7 +22,7 @@
import org.apache.camel.model.ProcessorDefinition;
/**
- *
+ *
*/
public class AggregateDefinitionRenderer {
Modified: camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ChoiceDefinitionRenderer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ChoiceDefinitionRenderer.java?rev=803128&r1=803127&r2=803128&view=diff
==============================================================================
--- camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ChoiceDefinitionRenderer.java (original)
+++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ChoiceDefinitionRenderer.java Tue Aug 11 13:59:36 2009
@@ -17,14 +17,26 @@
package org.apache.camel.web.util;
+import org.apache.camel.model.ChoiceDefinition;
+import org.apache.camel.model.OtherwiseDefinition;
import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.model.WhenDefinition;
/**
- *
+ *
*/
public class ChoiceDefinitionRenderer {
public static void render(StringBuilder buffer, ProcessorDefinition processor) {
-
+ ChoiceDefinition choice = (ChoiceDefinition)processor;
+ buffer.append(".").append(choice.getShortName()).append("()");
+ for (WhenDefinition when : choice.getWhenClauses()) {
+ ProcessorDefinitionRenderer.render(buffer, when);
+ }
+ OtherwiseDefinition other = choice.getOtherwise();
+ if (other != null) {
+ ProcessorDefinitionRenderer.render(buffer, other);
+ }
+ buffer.append(".end()");
}
}
Added: camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ConvertBodyDefinitionRenderer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ConvertBodyDefinitionRenderer.java?rev=803128&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ConvertBodyDefinitionRenderer.java (added)
+++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ConvertBodyDefinitionRenderer.java Tue Aug 11 13:59:36 2009
@@ -0,0 +1,41 @@
+/**
+ * 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.web.util;
+
+import org.apache.camel.model.ConvertBodyDefinition;
+import org.apache.camel.model.ProcessorDefinition;
+
+/**
+ *
+ */
+public class ConvertBodyDefinitionRenderer {
+
+ public static void render(StringBuilder buffer, ProcessorDefinition processor) {
+ ConvertBodyDefinition convertBody = (ConvertBodyDefinition)processor;
+ buffer.append(".").append(convertBody.getShortName()).append("(");
+ if (convertBody.getType().equals("[B")) {
+ buffer.append("byte[].class");
+ } else {
+ buffer.append(convertBody.getType()).append(".class");
+ }
+ if (convertBody.getCharset() != null) {
+ buffer.append(", \"").append(convertBody.getCharset()).append("\"");
+ }
+ buffer.append(")");
+ }
+}
Modified: camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ExpressionNodeRenderer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ExpressionNodeRenderer.java?rev=803128&r1=803127&r2=803128&view=diff
==============================================================================
--- camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ExpressionNodeRenderer.java (original)
+++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ExpressionNodeRenderer.java Tue Aug 11 13:59:36 2009
@@ -36,7 +36,7 @@
import org.apache.camel.model.language.ExpressionDefinition;
/**
- *
+ *
*/
public class ExpressionNodeRenderer {
@@ -56,7 +56,9 @@
}
} else if (expNode instanceof FilterDefinition) {
if (expression.getPredicate() != null) {
- PredicateRenderer.renderPredicate(buffer, expression.getPredicate());
+ buffer.append("(");
+ PredicateRenderer.render(buffer, expression.getPredicate());
+ buffer.append(")");
} else if (expression.getLanguage() != null) {
buffer.append("()");
ExpressionRenderer.render(buffer, expression);
@@ -65,6 +67,7 @@
ExpressionRenderer.render(buffer, expression);
}
} else if (expNode instanceof IdempotentConsumerDefinition) {
+ // TODO improve it
} else if (expNode instanceof LoopDefinition) {
if (expression instanceof ConstantExpression) {
buffer.append("(").append(expression.getExpression()).append(")");
@@ -105,11 +108,18 @@
ExpressionRenderer.render(buffer, expression);
}
} else if (expNode instanceof SplitDefinition) {
- String expValue = expression.getExpressionValue().toString();
- if (!expValue.contains("(")) {
- buffer.append("().").append(expValue).append("()");
- } else {
+ if (expression.getExpressionValue() != null) {
+ buffer.append("(");
ExpressionRenderer.render(buffer, expression);
+ buffer.append(")");
+ } else if (expression.getExpressionType() != null) {
+ buffer.append("().");
+ ExpressionRenderer.render(buffer, expression);
+ }
+
+ SplitDefinition split = (SplitDefinition)expNode;
+ if (split.isStreaming()) {
+ buffer.append(".streaming()");
}
} else if (expNode instanceof TransformDefinition) {
String expValue = expression.getExpressionValue().toString();
@@ -125,7 +135,9 @@
}
} else if (expNode instanceof WhenDefinition) {
if (expression.getPredicate() != null) {
- PredicateRenderer.renderPredicate(buffer, expression.getPredicate());
+ buffer.append("(");
+ PredicateRenderer.render(buffer, expression.getPredicate());
+ buffer.append(")");
}
if (expression instanceof ExpressionClause) {
buffer.append("()");
Modified: camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ExpressionRenderer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ExpressionRenderer.java?rev=803128&r1=803127&r2=803128&view=diff
==============================================================================
--- camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ExpressionRenderer.java (original)
+++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ExpressionRenderer.java Tue Aug 11 13:59:36 2009
@@ -23,7 +23,7 @@
import org.apache.camel.model.language.XPathExpression;
/**
- *
+ *
*/
public class ExpressionRenderer {
@@ -111,9 +111,14 @@
*/
public static void renderExpression(StringBuilder buffer, String expression) {
if (!expression.contains(",")) {
- // header(foo) -> header("foo")
- expression = expression.replaceAll("\\(", "(\"").replaceAll("\\)", "\")");
- buffer.append(expression);
+ if (expression.contains("(")) {
+ // header(foo) -> header("foo")
+ expression = expression.replaceAll("\\(", "(\"").replaceAll("\\)", "\")");
+ buffer.append(expression);
+ } else {
+ // body -> body()
+ buffer.append(expression).append("()");
+ }
} else if (expression.startsWith("tokenize")) {
String words[] = expression.split("\\(");
if (words.length == 2) {
@@ -121,8 +126,17 @@
String tokenize = words[1].substring(words[1].indexOf(" ") + 1, words[1].lastIndexOf(")"));
words[1] = words[1].substring(0, words[1].indexOf(","));
- buffer.append(words[1]).append("().");
- buffer.append(words[0]).append("(\"").append(tokenize).append("\")");
+ if (!words[1].contains("[")) {
+ // body
+ buffer.append(words[1]).append("()");
+ } else {
+ // bodyAs[clazz]
+ String word = words[1].substring(0, words[1].indexOf("As"));
+ String clazz = words[1].substring(words[1].lastIndexOf(".") + 1, words[1].length() - 1);
+ buffer.append(word).append("(").append(clazz).append(".class)");
+ }
+
+ buffer.append(".").append(words[0]).append("(\"").append(tokenize).append("\")");
} else if (words.length == 3) {
// tokenize(header(foo), ,) -> header("foo").tokenize(",")
String symbolName = words[2].substring(0, words[2].indexOf(")"));
Modified: camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/GroovyRenderer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/GroovyRenderer.java?rev=803128&r1=803127&r2=803128&view=diff
==============================================================================
--- camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/GroovyRenderer.java (original)
+++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/GroovyRenderer.java Tue Aug 11 13:59:36 2009
@@ -16,36 +16,14 @@
*/
package org.apache.camel.web.util;
-import java.io.IOException;
import java.util.List;
-import org.apache.camel.Expression;
import org.apache.camel.builder.DeadLetterChannelBuilder;
import org.apache.camel.builder.ErrorHandlerBuilderRef;
-import org.apache.camel.model.AggregateDefinition;
-import org.apache.camel.model.ChoiceDefinition;
-import org.apache.camel.model.ConvertBodyDefinition;
-import org.apache.camel.model.ExpressionNode;
import org.apache.camel.model.FromDefinition;
-import org.apache.camel.model.LoadBalanceDefinition;
-import org.apache.camel.model.OnCompletionDefinition;
-import org.apache.camel.model.OnExceptionDefinition;
-import org.apache.camel.model.OtherwiseDefinition;
-import org.apache.camel.model.OutputDefinition;
import org.apache.camel.model.ProcessorDefinition;
-import org.apache.camel.model.ResequenceDefinition;
import org.apache.camel.model.RouteDefinition;
-import org.apache.camel.model.RoutesDefinition;
-import org.apache.camel.model.RoutingSlipDefinition;
import org.apache.camel.model.SendDefinition;
-import org.apache.camel.model.ThrottleDefinition;
-import org.apache.camel.model.WhenDefinition;
-import org.apache.camel.processor.loadbalancer.FailOverLoadBalancer;
-import org.apache.camel.processor.loadbalancer.LoadBalancer;
-import org.apache.camel.processor.loadbalancer.RandomLoadBalancer;
-import org.apache.camel.processor.loadbalancer.RoundRobinLoadBalancer;
-import org.apache.camel.processor.loadbalancer.StickyLoadBalancer;
-import org.apache.camel.processor.loadbalancer.TopicLoadBalancer;
/**
* Render routes in Groovy language
@@ -58,8 +36,6 @@
/**
* render a RouteDefinition
- *
- * @throws IOException
*/
public static void renderRoute(StringBuilder buffer, RouteDefinition route) {
List<FromDefinition> inputs = route.getInputs();
@@ -78,10 +54,11 @@
}
// render the global dsl not started with from, like global
- // onCompletion, onException, intercept
+ // intercept, interceptFrom,interceptSendToEndpoint, onCompletion,
+ // onException
for (ProcessorDefinition processor : outputs) {
- if (processor.getParent() == null) {
- renderProcessor(buffer, processor);
+ if (processor.getParent() == null && !(processor instanceof SendDefinition)) {
+ ProcessorDefinitionRenderer.render(buffer, processor);
buffer.append(";");
}
}
@@ -96,125 +73,36 @@
}
buffer.append(")");
+ // render some route configurations
+ if (route.isTrace() != null) {
+ if (route.isTrace()) {
+ buffer.append(".tracing()");
+ } else {
+ buffer.append(".noTracing()");
+ }
+ }
+ if (route.isStreamCache() != null && route.isStreamCache()) {
+ buffer.append(".streamCaching()");
+ }
+
// render the outputs of the router
for (ProcessorDefinition processor : outputs) {
- if (processor.getParent() == route) {
- renderProcessor(buffer, processor);
+ if (processor.getParent() == route || processor instanceof SendDefinition) {
+ ProcessorDefinitionRenderer.render(buffer, processor);
}
}
}
/**
- * render a RoutesDefinition
- */
- public static void renderRoutes(StringBuilder buffer, RoutesDefinition routes) {
- // TODO Auto-generated method stub
-
- }
-
- /**
- * render a ProcessorDefiniton
+ * render a set of RouteDefinition
*/
- private static void renderProcessor(StringBuilder buffer, ProcessorDefinition processor) {
- if (processor instanceof AggregateDefinition) {
- AggregateDefinitionRenderer.render(buffer, processor);
- } else if (processor instanceof ChoiceDefinition) {
- ChoiceDefinition choice = (ChoiceDefinition)processor;
- buffer.append(".").append(choice.getShortName()).append("()");
- for (WhenDefinition when : choice.getWhenClauses()) {
- renderProcessor(buffer, when);
- }
- OtherwiseDefinition other = choice.getOtherwise();
- if (other != null) {
- renderProcessor(buffer, other);
- }
- buffer.append(".end()");
- return;
- } else if (processor instanceof ConvertBodyDefinition) {
- ConvertBodyDefinition convertBody = (ConvertBodyDefinition)processor;
- buffer.append(".").append(convertBody.getShortName()).append("(");
- if (convertBody.getType().equals("[B")) {
- buffer.append("byte[].class");
- } else {
- buffer.append(convertBody.getType()).append(".class");
- }
- if (convertBody.getCharset() != null) {
- buffer.append(", \"").append(convertBody.getCharset()).append("\"");
- }
- buffer.append(")");
- } else if (processor instanceof ExpressionNode) {
- ExpressionNodeRenderer.render(buffer, processor);
- } else if (processor instanceof LoadBalanceDefinition) {
- LoadBalanceDefinition loadB = (LoadBalanceDefinition)processor;
- // buffer.append(".").append(output.getShortName()).append("()");
- buffer.append(".").append("loadBalance").append("()");
-
- LoadBalancer lb = loadB.getLoadBalancerType().getLoadBalancer(null);
- if (lb instanceof FailOverLoadBalancer) {
- buffer.append(".failover(");
- List<Class> exceptions = ((FailOverLoadBalancer)lb).getExceptions();
- for (Class excep : exceptions) {
- buffer.append(excep.getSimpleName()).append(".class");
- if (excep != exceptions.get(exceptions.size() - 1)) {
- buffer.append(", ");
- }
- }
- buffer.append(")");
- } else if (lb instanceof RandomLoadBalancer) {
- buffer.append(".random()");
- } else if (lb instanceof RoundRobinLoadBalancer) {
- buffer.append(".roundRobin()");
- } else if (lb instanceof StickyLoadBalancer) {
- buffer.append(".sticky()");
- } else if (lb instanceof TopicLoadBalancer) {
- buffer.append(".topic()");
- }
-
- List<ProcessorDefinition> branches = loadB.getOutputs();
- for (ProcessorDefinition branch : branches) {
- renderProcessor(buffer, branch);
- }
- return;
- } else if (processor instanceof OnCompletionDefinition) {
- OnCompletionDefinitionRenderer.render(buffer, processor);
- return;
- } else if (processor instanceof OnExceptionDefinition) {
- OnExceptionDefinitionRenderer.render(buffer, processor);
- return;
- } else if (processor instanceof OutputDefinition) {
- OutputDefinitionRenderer.render(buffer, processor);
- } else if (processor instanceof ResequenceDefinition) {
- ResequenceDefinition resequence = (ResequenceDefinition)processor;
- buffer.append(".").append(processor.getShortName()).append("(");
-
- List<Expression> exps = resequence.getExpressionList();
- for (Expression exp : exps) {
- buffer.append(exp.toString()).append("()");
- if (exp != exps.get(exps.size() - 1)) {
- buffer.append(", ");
- }
- }
- buffer.append(")");
- } else if (processor instanceof RoutingSlipDefinition) {
- RoutingSlipDefinition routingSlip = (RoutingSlipDefinition)processor;
- buffer.append(".").append(routingSlip.getShortName()).append("(\"").append(routingSlip.getHeaderName()).append("\", \"").append(routingSlip.getUriDelimiter())
- .append("\")");
- } else if (processor instanceof SendDefinition) {
- SendDefinitionRenderer.render(buffer, processor);
- } else if (processor instanceof ThrottleDefinition) {
- ThrottleDefinition throttle = (ThrottleDefinition)processor;
- buffer.append(".").append(throttle.getShortName()).append("(").append(throttle.getMaximumRequestsPerPeriod()).append(")");
- if (throttle.getTimePeriodMillis() != 1000) {
- buffer.append(".timePeriodMillis(").append(throttle.getTimePeriodMillis()).append(")");
+ public static void renderRoutes(StringBuilder buffer, List<RouteDefinition> routes) {
+ for (RouteDefinition route : routes) {
+ renderRoute(buffer, route);
+ if (route != routes.get(routes.size() - 1)) {
+ buffer.append(";");
}
- } else {
- buffer.append(".").append(processor.getShortName()).append("()");
- }
-
- List<ProcessorDefinition> outputs = processor.getOutputs();
-
- for (ProcessorDefinition nextProcessor : outputs) {
- renderProcessor(buffer, nextProcessor);
}
}
+
}
Added: camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/LoadBalanceDefinitionRenderer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/LoadBalanceDefinitionRenderer.java?rev=803128&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/LoadBalanceDefinitionRenderer.java (added)
+++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/LoadBalanceDefinitionRenderer.java Tue Aug 11 13:59:36 2009
@@ -0,0 +1,72 @@
+/**
+ * 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.web.util;
+
+import java.util.List;
+
+import org.apache.camel.model.ChoiceDefinition;
+import org.apache.camel.model.LoadBalanceDefinition;
+import org.apache.camel.model.OtherwiseDefinition;
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.model.WhenDefinition;
+import org.apache.camel.processor.loadbalancer.FailOverLoadBalancer;
+import org.apache.camel.processor.loadbalancer.LoadBalancer;
+import org.apache.camel.processor.loadbalancer.RandomLoadBalancer;
+import org.apache.camel.processor.loadbalancer.RoundRobinLoadBalancer;
+import org.apache.camel.processor.loadbalancer.StickyLoadBalancer;
+import org.apache.camel.processor.loadbalancer.TopicLoadBalancer;
+
+/**
+ *
+ */
+public class LoadBalanceDefinitionRenderer {
+
+ public static void render(StringBuilder buffer, ProcessorDefinition processor) {
+ LoadBalanceDefinition loadB = (LoadBalanceDefinition)processor;
+ // buffer.append(".").append(output.getShortName()).append("()");
+ buffer.append(".").append("loadBalance").append("()");
+
+ LoadBalancer lb = loadB.getLoadBalancerType().getLoadBalancer(null);
+ if (lb instanceof FailOverLoadBalancer) {
+ buffer.append(".failover(");
+ List<Class> exceptions = ((FailOverLoadBalancer)lb).getExceptions();
+ for (Class excep : exceptions) {
+ buffer.append(excep.getSimpleName()).append(".class");
+ if (excep != exceptions.get(exceptions.size() - 1)) {
+ buffer.append(", ");
+ }
+ }
+ buffer.append(")");
+ } else if (lb instanceof RandomLoadBalancer) {
+ buffer.append(".random()");
+ } else if (lb instanceof RoundRobinLoadBalancer) {
+ buffer.append(".roundRobin()");
+ } else if (lb instanceof StickyLoadBalancer) {
+ buffer.append(".sticky(");
+ ExpressionRenderer.renderExpression(buffer, ((StickyLoadBalancer)lb).getCorrelationExpression().toString());
+ buffer.append(")");
+ } else if (lb instanceof TopicLoadBalancer) {
+ buffer.append(".topic()");
+ }
+
+ List<ProcessorDefinition> branches = loadB.getOutputs();
+ for (ProcessorDefinition branch : branches) {
+ ProcessorDefinitionRenderer.render(buffer, branch);
+ }
+ }
+}
Modified: camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/OnCompletionDefinitionRenderer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/OnCompletionDefinitionRenderer.java?rev=803128&r1=803127&r2=803128&view=diff
==============================================================================
--- camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/OnCompletionDefinitionRenderer.java (original)
+++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/OnCompletionDefinitionRenderer.java Tue Aug 11 13:59:36 2009
@@ -24,7 +24,7 @@
import org.apache.camel.model.WhenDefinition;
/**
- *
+ *
*/
public class OnCompletionDefinitionRenderer {
@@ -41,7 +41,9 @@
WhenDefinition when = onComplete.getOnWhen();
buffer.append(".onWhen");
if (when.getExpression().getPredicate() != null) {
- PredicateRenderer.renderPredicate(buffer, when.getExpression().getPredicate());
+ buffer.append("(");
+ PredicateRenderer.render(buffer, when.getExpression().getPredicate());
+ buffer.append(")");
} else {
buffer.append("Unsupported Expression!");
}
@@ -57,7 +59,6 @@
SendDefinitionRenderer.render(buffer, branch);
}
-
// if not a global onCompletion, using end() at the end
if (notGlobal) {
buffer.append(".end()");
Modified: camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/OnExceptionDefinitionRenderer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/OnExceptionDefinitionRenderer.java?rev=803128&r1=803127&r2=803128&view=diff
==============================================================================
--- camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/OnExceptionDefinitionRenderer.java (original)
+++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/OnExceptionDefinitionRenderer.java Tue Aug 11 13:59:36 2009
@@ -23,7 +23,7 @@
import org.apache.camel.model.ProcessorDefinition;
/**
- *
+ *
*/
public class OnExceptionDefinitionRenderer {
@@ -45,6 +45,12 @@
}
buffer.append(")");
+ // render handled() dsl
+ if (onException.getHandledPolicy() != null) {
+ String handled = onException.getHandledPolicy().toString();
+ buffer.append(".handled(").append(handled).append(")");
+ }
+
List<ProcessorDefinition> branches = onException.getOutputs();
for (ProcessorDefinition branch : branches) {
SendDefinitionRenderer.render(buffer, branch);
Modified: camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/OutputDefinitionRenderer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/OutputDefinitionRenderer.java?rev=803128&r1=803127&r2=803128&view=diff
==============================================================================
--- camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/OutputDefinitionRenderer.java (original)
+++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/OutputDefinitionRenderer.java Tue Aug 11 13:59:36 2009
@@ -25,6 +25,7 @@
import org.apache.camel.model.EnrichDefinition;
import org.apache.camel.model.FinallyDefinition;
import org.apache.camel.model.InterceptDefinition;
+import org.apache.camel.model.InterceptFromDefinition;
import org.apache.camel.model.InterceptSendToEndpointDefinition;
import org.apache.camel.model.MarshalDefinition;
import org.apache.camel.model.MulticastDefinition;
@@ -46,13 +47,12 @@
import org.apache.camel.model.UnmarshalDefinition;
/**
- *
+ *
*/
public class OutputDefinitionRenderer {
public static void render(StringBuilder buffer, ProcessorDefinition processor) {
OutputDefinition out = (OutputDefinition)processor;
-
boolean notGlobal = buffer.toString().endsWith(")");
if (notGlobal) {
buffer.append(".");
@@ -62,7 +62,6 @@
if (out instanceof AOPDefinition) {
buffer.append("()");
AOPDefinition aop = (AOPDefinition)out;
-
if (aop.getBeforeUri() != null && aop.getAfterUri() != null) {
buffer.append(".around(\"").append(aop.getBeforeUri());
buffer.append("\", \"").append(aop.getAfterUri()).append("\")");
@@ -75,32 +74,43 @@
}
} else if (out instanceof BeanDefinition) {
-
+ // TODO improve it
} else if (out instanceof EnrichDefinition) {
String enrich = out.toString();
String resourceUri = enrich.substring(enrich.indexOf('[') + 1, enrich.indexOf(' '));
buffer.append("(\"").append(resourceUri).append("\")");
} else if (out instanceof FinallyDefinition) {
-
+
} else if (out instanceof InterceptDefinition) {
+ if (out instanceof InterceptFromDefinition) {
+ InterceptFromDefinition interceptFrom = (InterceptFromDefinition)out;
+ if (interceptFrom.getUri() != null) {
+ buffer.append("(\"").append(interceptFrom.getUri()).append("\")");
+ return;
+ }
+ }
buffer.append("()");
} else if (out instanceof InterceptSendToEndpointDefinition) {
-
+ InterceptSendToEndpointDefinition interceptSend = (InterceptSendToEndpointDefinition)out;
+ buffer.append("(\"").append(interceptSend.getUri()).append("\")");
+ if (interceptSend.getSkipSendToOriginalEndpoint()) {
+ buffer.append(".skipSendToOriginalEndpoint()");
+ }
} else if (out instanceof MarshalDefinition) {
DataFormatDefinition dataFormat = ((MarshalDefinition)out).getDataFormatType();
buffer.append("().").append(dataFormat.getClass().getAnnotation(XmlRootElement.class).name()).append("()");
} else if (out instanceof MulticastDefinition) {
-
+ buffer.append("()");
} else if (out instanceof OtherwiseDefinition) {
buffer.append("()");
} else if (out instanceof PipelineDefinition) {
-
+ // transformed into simple ToDefinition
} else if (out instanceof PolicyDefinition) {
-
+ // TODO improve it
} else if (out instanceof PollEnrichDefinition) {
-
+ // TODO improve it
} else if (out instanceof ProcessDefinition) {
-
+ // TODO improve it
} else if (out instanceof RemoveHeaderDefinition) {
RemoveHeaderDefinition remove = (RemoveHeaderDefinition)out;
buffer.append("(\"").append(remove.getHeaderName()).append("\")");
@@ -108,23 +118,22 @@
RemovePropertyDefinition remove = (RemovePropertyDefinition)out;
buffer.append("(\"").append(remove.getPropertyName()).append("\")");
} else if (out instanceof SetExchangePatternDefinition) {
-
+ // TODO improve it
} else if (out instanceof SortDefinition) {
SortDefinition sort = (SortDefinition)out;
buffer.append("(");
ExpressionRenderer.renderExpression(buffer, sort.getExpression().toString());
buffer.append(")");
} else if (out instanceof StopDefinition) {
-
+ buffer.append("()");
} else if (out instanceof ThreadsDefinition) {
-
+ // TODO improve it
} else if (out instanceof TransactedDefinition) {
-
+ // TODO improve it
} else if (out instanceof TryDefinition) {
-
+ // TODO improve it
} else if (out instanceof UnmarshalDefinition) {
DataFormatDefinition dataFormat = ((UnmarshalDefinition)out).getDataFormatType();
- Class clazz = dataFormat.getClass();
buffer.append("().").append(dataFormat.getClass().getAnnotation(XmlRootElement.class).name()).append("()");
}
}
Modified: camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/PredicateRenderer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/PredicateRenderer.java?rev=803128&r1=803127&r2=803128&view=diff
==============================================================================
--- camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/PredicateRenderer.java (original)
+++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/PredicateRenderer.java Tue Aug 11 13:59:36 2009
@@ -20,27 +20,160 @@
import org.apache.camel.Predicate;
/**
- *
+ * render a predicate
*/
public class PredicateRenderer {
- public static void renderPredicate(StringBuilder buffer, Predicate predicate) {
+ public static void render(StringBuilder buffer, Predicate predicate) {
String pre = predicate.toString();
- if (pre.contains("(")) {
- pre = pre.replaceAll("\\(", "(\"").replaceAll("\\)", "\")");
+ if (pre.startsWith("not (")) {
+ renderNot(buffer, pre);
+ } else if (pre.contains(") and (")) {
+ renderAnd(buffer, pre);
+ } else if (pre.contains(") or (")) {
+ renderOr(buffer, pre);
+ } else if (pre.startsWith("in (")) {
+ renderIn(buffer, pre);
+ } else if (pre.contains(".matches(")) {
+ renderMatches(buffer, pre);
+ } else {
+ render(buffer, pre);
+ }
+ }
+
+ public static void render(StringBuilder buffer, String predicate) {
+ String left = predicate.substring(0, predicate.indexOf(" "));
+ String operation = predicate.substring(predicate.indexOf(" ") + 1, predicate.lastIndexOf(" "));
+ String right = predicate.substring(predicate.lastIndexOf(" ") + 1);
+
+ renderLeft(buffer, left);
+ renderOperation(buffer, operation);
+ renderRight(buffer, right);
+
+ }
- String rightExp = pre.substring(pre.indexOf(" ") + 1);
- if (rightExp.startsWith("==")) {
- // replace == with isEqualTo
- pre = pre.replaceFirst("\\ == ", ".isEqualTo(\"");
- pre += "\")";
- } else if (rightExp.startsWith("is not null")) {
- pre = pre.replaceFirst("\\ is not null", ".isNotNull()");
+ private static void renderAnd(StringBuilder buffer, String predicate) {
+ // (predicate1 and predicate2)
+ buffer.append("and(");
+ String predicate1 = predicate.substring(1, predicate.indexOf(") and ("));
+ String predicate2 = predicate.substring(predicate.indexOf(") and (") + 7, predicate.length() - 1);
+ render(buffer, predicate1);
+ buffer.append(", ");
+ render(buffer, predicate2);
+ buffer.append(")");
+ }
+
+ private static void renderIn(StringBuilder buffer, String predicate) {
+ String predicates[] = predicate.split("in \\(\\[|,\\s+|\\]\\)");
+ if (predicate.contains("convertToEvaluatedType")) {
+ // valueIn
+ String left = predicate.substring(predicate.indexOf("in ([") + 5, predicate.indexOf(" == "));
+ renderLeft(buffer, left);
+ buffer.append(".in(");
+ for (String pre : predicates) {
+ if (pre.equals("")) {
+ continue;
+ }
+ String value = pre.substring(pre.indexOf(" == ") + 4, pre.indexOf(".convertToEvaluatedType("));
+ buffer.append("\"").append(value).append("\"");
+ if (pre != predicates[predicates.length - 1]) {
+ buffer.append(", ");
+ }
+ }
+ buffer.append(")");
+ } else {
+ // predicateIn
+ buffer.append("in(");
+ for (String pre : predicates) {
+ if (pre.equals("")) {
+ continue;
+ }
+ render(buffer, pre);
+ if (pre != predicates[predicates.length - 1]) {
+ buffer.append(", ");
+ }
}
- buffer.append("(").append(pre).append(")");
+ buffer.append(")");
+ }
+ }
+
+ private static void renderLeft(StringBuilder buffer, String left) {
+ if (left.contains("(")) {
+ // header(foo) -> header("foo")
+ buffer.append(left.replaceAll("\\(", "(\"").replaceAll("\\)", "\")"));
+ } else {
+ // body -> body()
+ buffer.append(left).append("()");
+ }
+ }
+
+ private static void renderMatches(StringBuilder buffer, String pre) {
+ // header(foo).matches('pattern')
+ pre = pre.replaceFirst("\\(", "(\"").replaceFirst("\\)", "\")");
+ pre = pre.replaceFirst(".matches\\('", ".regex(\"").replaceFirst("'\\)", "\")");
+ buffer.append(pre);
+ }
+
+ private static void renderNot(StringBuilder buffer, String predicate) {
+ // not(predicate)
+ buffer.append("not(");
+ String notPredicate = predicate.substring(predicate.indexOf("(") + 1, predicate.length() - 1);
+ render(buffer, notPredicate);
+ buffer.append(")");
+ }
+
+ private static void renderOperation(StringBuilder buffer, String operation) {
+ // process the operations
+ if (operation.equals("==")) {
+ buffer.append(".isEqualTo");
+ } else if (operation.equals("!=")) {
+ buffer.append(".isNotEqualTo");
+ } else if (operation.equals("<")) {
+ buffer.append(".isLessThan");
+ } else if (operation.equals("<=")) {
+ buffer.append(".isLessThanOrEqualTo");
+ } else if (operation.equals(">")) {
+ buffer.append(".isGreaterThan");
+ } else if (operation.equals(">=")) {
+ buffer.append(".isGreaterThanOrEqualTo");
+ } else if (operation.equals("contains")) {
+ buffer.append(".contains");
+ } else if (operation.equals("is")) {
+ buffer.append(".isNull()");
+ } else if (operation.equals("is not")) {
+ buffer.append(".isNotNull()");
+ } else if (operation.equals("instanceof")) {
+ buffer.append(".isInstanceOf");
+ } else if (operation.equals("startsWith")) {
+ buffer.append(".startsWith");
+ } else if (operation.equals("endsWith")) {
+ buffer.append(".endsWith");
+ } else if (operation.equals("matches")) {
+ buffer.append(".regex");
+ }
+ }
+
+ private static void renderOr(StringBuilder buffer, String predicate) {
+ // (predicate1 or predicate2)
+ buffer.append("or(");
+ String predicate1 = predicate.substring(1, predicate.indexOf(") or ("));
+ String predicate2 = predicate.substring(predicate.indexOf(") or (") + 6, predicate.length() - 1);
+ render(buffer, predicate1);
+ buffer.append(", ");
+ render(buffer, predicate2);
+ buffer.append(")");
+ }
+
+ private static void renderRight(StringBuilder buffer, String right) {
+ if (right.matches("-?\\d+")) {
+ // number -> number
+ buffer.append("(").append(right).append(")");
+ } else if (right.equals("") || right.equals("null")) {
+ // for isNull() and isNotNull()
+ return;
} else {
- String tmp[] = pre.split("\\s+");
- buffer.append("(").append(tmp[0]).append("().").append(tmp[1]).append("(\"").append(tmp[2]).append("\"))");
+ // string -> "string"
+ buffer.append("(\"").append(right).append("\")");
}
}
Added: camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ProcessorDefinitionRenderer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ProcessorDefinitionRenderer.java?rev=803128&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ProcessorDefinitionRenderer.java (added)
+++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ProcessorDefinitionRenderer.java Tue Aug 11 13:59:36 2009
@@ -0,0 +1,93 @@
+/**
+ * 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.web.util;
+
+import java.util.List;
+
+import org.apache.camel.Expression;
+import org.apache.camel.model.AggregateDefinition;
+import org.apache.camel.model.ChoiceDefinition;
+import org.apache.camel.model.ConvertBodyDefinition;
+import org.apache.camel.model.ExpressionNode;
+import org.apache.camel.model.LoadBalanceDefinition;
+import org.apache.camel.model.OnCompletionDefinition;
+import org.apache.camel.model.OnExceptionDefinition;
+import org.apache.camel.model.OtherwiseDefinition;
+import org.apache.camel.model.OutputDefinition;
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.model.ResequenceDefinition;
+import org.apache.camel.model.RollbackDefinition;
+import org.apache.camel.model.RoutingSlipDefinition;
+import org.apache.camel.model.SendDefinition;
+import org.apache.camel.model.ThrottleDefinition;
+import org.apache.camel.model.WhenDefinition;
+import org.apache.camel.processor.loadbalancer.FailOverLoadBalancer;
+import org.apache.camel.processor.loadbalancer.LoadBalancer;
+import org.apache.camel.processor.loadbalancer.RandomLoadBalancer;
+import org.apache.camel.processor.loadbalancer.RoundRobinLoadBalancer;
+import org.apache.camel.processor.loadbalancer.StickyLoadBalancer;
+import org.apache.camel.processor.loadbalancer.TopicLoadBalancer;
+
+/**
+ *
+ */
+public class ProcessorDefinitionRenderer {
+
+ public static void render(StringBuilder buffer, ProcessorDefinition processor) {
+ if (processor instanceof AggregateDefinition) {
+ AggregateDefinitionRenderer.render(buffer, processor);
+ } else if (processor instanceof ChoiceDefinition) {
+ ChoiceDefinitionRenderer.render(buffer, processor);
+ return;
+ } else if (processor instanceof ConvertBodyDefinition) {
+ ConvertBodyDefinitionRenderer.render(buffer, processor);
+ } else if (processor instanceof ExpressionNode) {
+ ExpressionNodeRenderer.render(buffer, processor);
+ } else if (processor instanceof LoadBalanceDefinition) {
+ LoadBalanceDefinitionRenderer.render(buffer, processor);
+ return;
+ } else if (processor instanceof OnCompletionDefinition) {
+ OnCompletionDefinitionRenderer.render(buffer, processor);
+ return;
+ } else if (processor instanceof OnExceptionDefinition) {
+ OnExceptionDefinitionRenderer.render(buffer, processor);
+ return;
+ } else if (processor instanceof OutputDefinition) {
+ OutputDefinitionRenderer.render(buffer, processor);
+ } else if (processor instanceof ResequenceDefinition) {
+ ResequenceDefinitionRenderer.render(buffer, processor);
+ } else if (processor instanceof RollbackDefinition) {
+ RollbackDefinition rollback = (RollbackDefinition)processor;
+ buffer.append(".").append(processor.getShortName()).append("(\"");
+ buffer.append(rollback.getMessage()).append("\")");
+ } else if (processor instanceof RoutingSlipDefinition) {
+ RoutingSlipDefinitionRenderer.render(buffer, processor);
+ } else if (processor instanceof SendDefinition) {
+ SendDefinitionRenderer.render(buffer, processor);
+ } else if (processor instanceof ThrottleDefinition) {
+ ThrottleDefinitionRenderer.render(buffer, processor);
+ } else {
+ buffer.append(".").append(processor.getShortName()).append("()");
+ }
+
+ List<ProcessorDefinition> outputs = processor.getOutputs();
+ for (ProcessorDefinition nextProcessor : outputs) {
+ render(buffer, nextProcessor);
+ }
+ }
+}
Added: camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ResequenceDefinitionRenderer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ResequenceDefinitionRenderer.java?rev=803128&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ResequenceDefinitionRenderer.java (added)
+++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ResequenceDefinitionRenderer.java Tue Aug 11 13:59:36 2009
@@ -0,0 +1,49 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.camel.web.util;
+
+import java.util.List;
+
+import org.apache.camel.Expression;
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.model.ResequenceDefinition;
+
+/**
+ *
+ */
+public class ResequenceDefinitionRenderer {
+
+ public static void render(StringBuilder buffer, ProcessorDefinition processor) {
+ ResequenceDefinition resequence = (ResequenceDefinition)processor;
+ buffer.append(".").append(processor.getShortName()).append("(");
+
+ List<Expression> exps = resequence.getExpressionList();
+ for (Expression exp : exps) {
+ ExpressionRenderer.renderExpression(buffer, exp.toString());
+ if (exp != exps.get(exps.size() - 1)) {
+ buffer.append(", ");
+ }
+ }
+ buffer.append(")");
+
+ if (resequence.getStreamConfig() != null) {
+ // TODO improve stream() support
+ buffer.append(".stream()");
+ }
+ }
+}
Added: camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/RoutingSlipDefinitionRenderer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/RoutingSlipDefinitionRenderer.java?rev=803128&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/RoutingSlipDefinitionRenderer.java (added)
+++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/RoutingSlipDefinitionRenderer.java Tue Aug 11 13:59:36 2009
@@ -0,0 +1,33 @@
+/**
+ * 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.web.util;
+
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.model.RoutingSlipDefinition;
+
+/**
+ *
+ */
+public class RoutingSlipDefinitionRenderer {
+
+ public static void render(StringBuilder buffer, ProcessorDefinition processor) {
+ RoutingSlipDefinition routingSlip = (RoutingSlipDefinition)processor;
+ buffer.append(".").append(routingSlip.getShortName()).append("(\"").append(routingSlip.getHeaderName()).append("\", \"").append(routingSlip.getUriDelimiter())
+ .append("\")");
+ }
+}
Modified: camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/SendDefinitionRenderer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/SendDefinitionRenderer.java?rev=803128&r1=803127&r2=803128&view=diff
==============================================================================
--- camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/SendDefinitionRenderer.java (original)
+++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/SendDefinitionRenderer.java Tue Aug 11 13:59:36 2009
@@ -22,7 +22,7 @@
import org.apache.camel.model.WireTapDefinition;
/**
- *
+ *
*/
public class SendDefinitionRenderer {
Added: camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ThrottleDefinitionRenderer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ThrottleDefinitionRenderer.java?rev=803128&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ThrottleDefinitionRenderer.java (added)
+++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ThrottleDefinitionRenderer.java Tue Aug 11 13:59:36 2009
@@ -0,0 +1,35 @@
+/**
+ * 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.web.util;
+
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.model.ThrottleDefinition;
+
+/**
+ *
+ */
+public class ThrottleDefinitionRenderer {
+
+ public static void render(StringBuilder buffer, ProcessorDefinition processor) {
+ ThrottleDefinition throttle = (ThrottleDefinition)processor;
+ buffer.append(".").append(throttle.getShortName()).append("(").append(throttle.getMaximumRequestsPerPeriod()).append(")");
+ if (throttle.getTimePeriodMillis() != 1000) {
+ buffer.append(".timePeriodMillis(").append(throttle.getTimePeriodMillis()).append(")");
+ }
+ }
+}
Modified: camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/UriCharactersEncoder.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/UriCharactersEncoder.java?rev=803128&r1=803127&r2=803128&view=diff
==============================================================================
--- camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/UriCharactersEncoder.java (original)
+++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/UriCharactersEncoder.java Tue Aug 11 13:59:36 2009
@@ -25,7 +25,7 @@
import org.apache.commons.logging.LogFactory;
/**
- *
+ *
*/
public class UriCharactersEncoder {
private static BitSet unsafeCharacters;
Added: camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/AOPDSLTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/AOPDSLTest.java?rev=803128&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/AOPDSLTest.java (added)
+++ camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/AOPDSLTest.java Tue Aug 11 13:59:36 2009
@@ -0,0 +1,67 @@
+/**
+ * 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.web.groovy;
+
+/**
+ *
+ */
+public class AOPDSLTest extends GroovyRendererTestSupport {
+
+ public void testAOPAfter() throws Exception {
+ String DSL = "from(\"direct:start\").aop().after(\"mock:after\").transform(constant(\"Bye World\")).to(\"mock:result\")";
+ String expectedDSL = DSL;
+
+ assertEquals(expectedDSL, render(DSL));
+ }
+
+ public void _testAOPAfterFinally() throws Exception {
+ String DSL = "from(\"direct:start\").aop().afterFinally(\"mock:after\").choice().when(body().isEqualTo(\"Hello World\")).transform(constant(\"Bye World\")).otherwise().transform(constant(\"Kabom the World\")).throwException(new IllegalArgumentException(\"Damn\")).end().to(\"mock:result\")";
+ String expectedDSL = DSL;
+
+ assertEquals(expectedDSL, render(DSL));
+ }
+
+ public void testAOPAround() throws Exception {
+ String DSL = "from(\"direct:start\").aop().around(\"mock:before\", \"mock:after\").transform(constant(\"Bye World\")).to(\"mock:result\")";
+ String expectedDSL = DSL;
+
+ assertEquals(expectedDSL, render(DSL));
+ }
+
+ public void _testAOPAroundFinally() throws Exception {
+ String DSL = "from(\"direct:start\").aop().aroundFinally(\"mock:before\", \"mock:after\").choice().when(body().isEqualTo(\"Hello World\")).transform(constant(\"Bye World\")).otherwise().transform(constant(\"Kabom the World\")).throwException(new IllegalArgumentException(\"Damn\")).end()to(\"mock:result\")";
+ String expectedDSL = DSL;
+
+ assertEquals(expectedDSL, render(DSL));
+ }
+
+ public void testAOPBefore() throws Exception {
+ String DSL = "from(\"direct:start\").aop().before(\"mock:before\").transform(constant(\"Bye World\")).to(\"mock:result\")";
+ String expectedDSL = DSL;
+
+ assertEquals(expectedDSL, render(DSL));
+ }
+
+ public void testAOPNestedRoute() throws Exception {
+ String DSL = "from(\"direct:start\").to(\"mock:start\").aop().around(\"mock:before\", \"mock:after\").transform(constant(\"Bye\")).to(\"mock:middle\").transform(body().append(\" World\")).end().transform(body().prepend(\"Bye \")).to(\"mock:result\")";
+ String expectedDSL = "from(\"direct:start\").to(\"mock:start\").aop().around(\"mock:before\", \"mock:after\").transform(constant(\"Bye\")).to(\"mock:middle\").transform(body().append(\" World\")).transform(body().prepend(\"Bye \")).to(\"mock:result\")";
+
+ assertEquals(expectedDSL, render(DSL));
+ }
+
+}
Modified: camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/ChoiceDSLTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/ChoiceDSLTest.java?rev=803128&r1=803127&r2=803128&view=diff
==============================================================================
--- camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/ChoiceDSLTest.java (original)
+++ camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/ChoiceDSLTest.java Tue Aug 11 13:59:36 2009
@@ -34,7 +34,7 @@
public void testChoiceWithPredication() throws Exception {
String DSL = "from(\"direct:start\").choice()" +
- ".when(header(\"username\").isNotNull()).to(\"mock:god\")" +
+ ".when(header(\"username\").isNull()).to(\"mock:god\")" +
".when(header(\"admin\").isEqualTo(\"true\")).to(\"mock:admin\")" +
".otherwise().to(\"mock:guest\")" +
".end()";
@@ -47,7 +47,9 @@
String DSL = "from(\"direct:start\").split().body().choice()" +
".when().method(\"orderItemHelper\", \"isWidget\").to(\"bean:widgetInventory\", \"seda:aggregate\")" +
".otherwise().to(\"bean:gadgetInventory\", \"seda:aggregate\")";
- String expectedDSL = "from(\"direct:start\").split().body().choice()" +
+
+ //TODO check this result
+ String expectedDSL = "from(\"direct:start\").split(body()).choice()" +
".when().method(\"orderItemHelper\", \"isWidget\").to(\"bean:widgetInventory\").to(\"seda:aggregate\")" +
".otherwise().to(\"bean:gadgetInventory\").to(\"seda:aggregate\")" +
".end()";
Modified: camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/GroovyRendererTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/GroovyRendererTest.java?rev=803128&r1=803127&r2=803128&view=diff
==============================================================================
--- camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/GroovyRendererTest.java (original)
+++ camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/GroovyRendererTest.java Tue Aug 11 13:59:36 2009
@@ -39,16 +39,13 @@
}
}
- public void _testRoutes() throws Exception {
- FileReader reader = new FileReader("src/test/resources/testedRoutes.txt");
+ public void testRoutes() throws Exception {
+ FileReader reader = new FileReader("src/test/resources/routes.txt");
BufferedReader br = new BufferedReader(reader);
String dsl = null;
while ((dsl = br.readLine()) != null) {
- if (dsl.startsWith("#")) {
- continue;
- }
System.out.println("dsl: " + dsl);
- System.out.println("after rendered: \n" + render(dsl));
+ System.out.println("after rendered: \n" + renderRoutes(dsl));
System.out.println();
}
}
Modified: camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/GroovyRendererTestSupport.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/GroovyRendererTestSupport.java?rev=803128&r1=803127&r2=803128&view=diff
==============================================================================
--- camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/GroovyRendererTestSupport.java (original)
+++ camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/GroovyRendererTestSupport.java Tue Aug 11 13:59:36 2009
@@ -26,6 +26,7 @@
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.model.RouteDefinition;
+import org.apache.camel.model.RoutesDefinition;
import org.apache.camel.web.util.GroovyRenderer;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -43,18 +44,11 @@
private CamelContext context;
- public RouteDefinition createRoute(String dsl) throws Exception {
- if (context != null) {
- context.stop();
- }
- context = new DefaultCamelContext();
-
- String routeStr = header + dsl + footer;
- GroovyClassLoader classLoader = new GroovyClassLoader();
- Class clazz = classLoader.parseClass(routeStr);
- RouteBuilder builder = (RouteBuilder)clazz.newInstance();
-
- context.addRoutes(builder);
+ /**
+ * get the first route in camelContext
+ */
+ public RouteDefinition getRoute(String dsl) throws Exception {
+ createAndAddRoute(dsl);
List<RouteDefinition> list = context.getRouteDefinitions();
if (!list.isEmpty()) {
return list.get(0);
@@ -62,8 +56,16 @@
return null;
}
+ /**
+ * get all routes in camelContext
+ */
+ public List<RouteDefinition> getRoutes(String dsl) throws Exception {
+ createAndAddRoute(dsl);
+ return context.getRouteDefinitions();
+ }
+
public String render(String dsl) throws Exception {
- RouteDefinition route = createRoute(dsl);
+ RouteDefinition route = getRoute(dsl);
assertNotNull(route);
StringBuilder sb = new StringBuilder();
@@ -71,4 +73,29 @@
return sb.toString();
}
+ public String renderRoutes(String dsl) throws Exception {
+ List<RouteDefinition> routes = getRoutes(dsl);
+
+ StringBuilder sb = new StringBuilder();
+ GroovyRenderer.renderRoutes(sb, routes);
+ return sb.toString();
+ }
+
+ /**
+ * create routes using the dsl and add them into camelContext
+ */
+ private void createAndAddRoute(String dsl) throws Exception, InstantiationException, IllegalAccessException {
+ if (context != null) {
+ context.stop();
+ }
+ context = new DefaultCamelContext();
+
+ String routeStr = header + dsl + footer;
+ GroovyClassLoader classLoader = new GroovyClassLoader();
+ Class clazz = classLoader.parseClass(routeStr);
+ RouteBuilder builder = (RouteBuilder)clazz.newInstance();
+
+ context.addRoutes(builder);
+ }
+
}
Added: camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/InterceptDSLTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/InterceptDSLTest.java?rev=803128&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/InterceptDSLTest.java (added)
+++ camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/InterceptDSLTest.java Tue Aug 11 13:59:36 2009
@@ -0,0 +1,53 @@
+/**
+ * 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.web.groovy;
+
+/**
+ *
+ */
+public class InterceptDSLTest extends GroovyRendererTestSupport {
+
+ public void testIntercept() throws Exception {
+ String DSL = "intercept().to(\"mock:intercepted\");from(\"direct:start\").to(\"mock:foo\").to(\"mock:bar\").to(\"mock:result\")";
+ String expectedDSL = DSL;
+
+ assertEquals(expectedDSL, render(DSL));
+ }
+
+ public void testInterceptStop() throws Exception {
+ String DSL = "intercept().to(\"mock:intercepted\").stop();from(\"direct:start\").to(\"mock:foo\").to(\"mock:bar\").to(\"mock:result\")";
+ String expectedDSL = DSL;
+
+ assertEquals(expectedDSL, render(DSL));
+ }
+
+ public void testInterceptWhen() throws Exception {
+ String DSL = "intercept().when(body().contains(\"Hello\")).to(\"mock:intercepted\");from(\"direct:start\").to(\"mock:foo\").to(\"mock:bar\").to(\"mock:result\")";
+ String expectedDSL = "intercept().choice().when(body().contains(\"Hello\")).to(\"mock:intercepted\").end();from(\"direct:start\").to(\"mock:foo\").to(\"mock:bar\").to(\"mock:result\")";
+
+ assertEquals(expectedDSL, render(DSL));
+ }
+
+ public void testInterceptWhenStop() throws Exception {
+ String DSL = "intercept().when(body().contains(\"Hello\")).to(\"mock:intercepted\").stop();from(\"direct:start\").to(\"mock:foo\").to(\"mock:bar\").to(\"mock:result\")";
+ String expectedDSL = "intercept().choice().when(body().contains(\"Hello\")).to(\"mock:intercepted\").stop().end();from(\"direct:start\").to(\"mock:foo\").to(\"mock:bar\").to(\"mock:result\")";
+
+ assertEquals(expectedDSL, render(DSL));
+ }
+
+}
Added: camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/InterceptFromDSLTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/InterceptFromDSLTest.java?rev=803128&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/InterceptFromDSLTest.java (added)
+++ camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/InterceptFromDSLTest.java Tue Aug 11 13:59:36 2009
@@ -0,0 +1,79 @@
+/**
+ * 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.web.groovy;
+
+/**
+ *
+ */
+public class InterceptFromDSLTest extends GroovyRendererTestSupport {
+
+ public void testInterceptFromChoice() throws Exception {
+ String DSL = "interceptFrom().choice().when(header(\"foo\").isEqualTo(\"bar\")).to(\"mock:b\").stop().end();from(\"direct:start\").to(\"mock:a\")";
+ String expectedDSL = DSL;
+
+ assertEquals(expectedDSL, render(DSL));
+ }
+
+ public void testInterceptFromPredicateWithStop() throws Exception {
+ String DSL = "interceptFrom().when(header(\"usertype\").isEqualTo(\"test\")).stop();from(\"direct:start\").to(\"mock:result\")";
+ String expectedDSL = "interceptFrom().choice().when(header(\"usertype\").isEqualTo(\"test\")).stop().end();from(\"direct:start\").to(\"mock:result\")";
+
+ assertEquals(expectedDSL, render(DSL));
+ }
+
+ public void testInterceptFromToLog() throws Exception {
+ String DSL = "interceptFrom().to(\"log:received\");from(\"direct:start\").to(\"mock:result\")";
+ String expectedDSL = DSL;
+
+ assertEquals(expectedDSL, render(DSL));
+ }
+
+ public void testInterceptFromUriRegex() throws Exception {
+ String DSL = "interceptFrom(\"seda:(bar|foo)\").to(\"mock:intercept\");from(\"direct:start\").to(\"mock:result\");from(\"seda:bar\").to(\"mock:result\");from(\"seda:foo\").to(\"mock:result\");from(\"seda:cheese\").to(\"mock:result\")";
+ String expectedDSL = "from(\"direct:start\").to(\"mock:result\");" +
+ "interceptFrom(\"seda:(bar|foo)\").to(\"mock:intercept\");from(\"seda:bar\").to(\"mock:result\");" +
+ "interceptFrom(\"seda:(bar|foo)\").to(\"mock:intercept\");from(\"seda:foo\").to(\"mock:result\");" +
+ "from(\"seda:cheese\").to(\"mock:result\")";
+
+ assertEquals(expectedDSL, renderRoutes(DSL));
+ }
+
+ public void testInterceptFromUriSimpleLog() throws Exception {
+ String DSL = "interceptFrom(\"seda:bar\").to(\"mock:bar\");from(\"direct:start\").to(\"mock:first\").to(\"seda:bar\");from(\"seda:bar\").to(\"mock:result\");from(\"seda:foo\").to(\"mock:result\")";
+ String expectedDSL = "from(\"direct:start\").to(\"mock:first\").to(\"seda:bar\");interceptFrom(\"seda:bar\").to(\"mock:bar\");from(\"seda:bar\").to(\"mock:result\");from(\"seda:foo\").to(\"mock:result\")";
+
+ assertEquals(expectedDSL, renderRoutes(DSL));
+ }
+
+ public void testInterceptFromUriWildcard() throws Exception {
+ String DSL = "interceptFrom(\"seda*\").to(\"mock:intercept\");from(\"direct:start\").to(\"mock:result\");from(\"seda:bar\").to(\"mock:result\");from(\"seda:foo\").to(\"mock:result\")";
+ String expectedDSL = "from(\"direct:start\").to(\"mock:result\");" +
+ "interceptFrom(\"seda*\").to(\"mock:intercept\");from(\"seda:bar\").to(\"mock:result\");" +
+ "interceptFrom(\"seda*\").to(\"mock:intercept\");from(\"seda:foo\").to(\"mock:result\")";
+
+ assertEquals(expectedDSL, renderRoutes(DSL));
+ }
+
+ public void testInterceptFromWithPredicate() throws Exception {
+ String DSL = "interceptFrom().when(header(\"foo\").isEqualTo(\"bar\")).to(\"mock:b\").stop();from(\"direct:start\").to(\"mock:a\")";
+ String expectedDSL = "interceptFrom().choice().when(header(\"foo\").isEqualTo(\"bar\")).to(\"mock:b\").stop().end();from(\"direct:start\").to(\"mock:a\")";
+
+ assertEquals(expectedDSL, render(DSL));
+ }
+
+}
Added: camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/InterceptSendToEndpointDSLTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/InterceptSendToEndpointDSLTest.java?rev=803128&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/InterceptSendToEndpointDSLTest.java (added)
+++ camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/InterceptSendToEndpointDSLTest.java Tue Aug 11 13:59:36 2009
@@ -0,0 +1,53 @@
+/**
+ * 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.web.groovy;
+
+/**
+ *
+ */
+public class InterceptSendToEndpointDSLTest extends GroovyRendererTestSupport {
+
+ public void testInterceptSendToEndpoint() throws Exception {
+ String DSL = "interceptSendToEndpoint(\"mock:foo\").to(\"mock:detour\").transform(constant(\"Bye World\"));from(\"direct:first\").to(\"mock:bar\").to(\"mock:foo\").to(\"mock:result\")";
+ String expectedDSL = DSL;
+
+ assertEquals(expectedDSL, render(DSL));
+ }
+
+ public void testInterceptSendToEndpointDynamic() throws Exception {
+ String DSL = "interceptSendToEndpoint(\"file:*\").skipSendToOriginalEndpoint().to(\"mock:detour\");from(\"direct:first\").to(\"file://foo\").to(\"file://bar\").to(\"mock:result\")";
+ String expectedDSL = DSL;
+
+ assertEquals(expectedDSL, render(DSL));
+ }
+
+ public void testInterceptSendToEndpointInOnException() throws Exception {
+ String DSL = "onException(IOException.class).handled(true).to(\"mock:io\");interceptSendToEndpoint(\"mock:io\").skipSendToOriginalEndpoint().to(\"mock:intercepted\");from(\"direct:start\").to(\"mock:foo\").to(\"mock:result\")";
+ String expectedDSL = DSL;
+
+ assertEquals(expectedDSL, render(DSL));
+ }
+
+ public void _testInterceptSendToIssue() throws Exception {
+ String DSL = "interceptSendToEndpoint(\"direct:foo\").to(\"mock:foo\");from(\"direct:start\").setHeader(Exchange.FILE_NAME, constant(\"hello.txt\")).to(\"direct:foo\")";
+ String expectedDSL = DSL;
+
+ assertEquals(expectedDSL, render(DSL));
+ }
+
+}
Modified: camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/LoadBalanceDSLTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/LoadBalanceDSLTest.java?rev=803128&r1=803127&r2=803128&view=diff
==============================================================================
--- camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/LoadBalanceDSLTest.java (original)
+++ camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/LoadBalanceDSLTest.java Tue Aug 11 13:59:36 2009
@@ -36,4 +36,11 @@
assertEquals(expectedDSL, render(DSL));
}
+ public void testLoadBalanceSticky() throws Exception {
+ String DSL = "from(\"direct:start\").loadBalance().sticky(header(\"foo\")).to(\"mock:x\", \"mock:y\", \"mock:z\")";
+ String expectedDSL = "from(\"direct:start\").loadBalance().sticky(header(\"foo\")).to(\"mock:x\").to(\"mock:y\").to(\"mock:z\")";
+
+ assertEquals(expectedDSL, render(DSL));
+ }
+
}
Added: camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/MulticastDSLTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/MulticastDSLTest.java?rev=803128&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/MulticastDSLTest.java (added)
+++ camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/MulticastDSLTest.java Tue Aug 11 13:59:36 2009
@@ -0,0 +1,31 @@
+/**
+ * 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.web.groovy;
+
+/**
+ *
+ */
+public class MulticastDSLTest extends GroovyRendererTestSupport {
+
+ public void testMulticast() throws Exception {
+ String DSL = "from(\"direct:a\").multicast().to(\"mock:x\", \"mock:y\", \"mock:z\")";
+ String expectedDSL = "from(\"direct:a\").multicast().to(\"mock:x\").to(\"mock:y\").to(\"mock:z\")";
+
+ assertEquals(expectedDSL, render(DSL));
+ }
+}
Added: camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/OnCompletionDSLTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/OnCompletionDSLTest.java?rev=803128&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/OnCompletionDSLTest.java (added)
+++ camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/OnCompletionDSLTest.java Tue Aug 11 13:59:36 2009
@@ -0,0 +1,89 @@
+/**
+ * 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.web.groovy;
+
+/**
+ *
+ */
+public class OnCompletionDSLTest extends GroovyRendererTestSupport {
+
+ public void testOnCompletionAndIntercept() throws Exception {
+ String DSL = "intercept().to(\"mock:intercept\");from(\"direct:start\").onCompletion().to(\"log:sync\").to(\"mock:sync\").end().to(\"mock:result\")";
+ String expectedDSL = DSL;
+
+ assertEquals(expectedDSL, render(DSL));
+ }
+
+ public void testOnCompletionAndInterceptAndOnException() throws Exception {
+ String DSL = "intercept().to(\"mock:intercept\");onCompletion().to(\"log:global\").to(\"mock:sync\");onException(Exception.class).to(\"mock:exception\");from(\"direct:start\").to(\"mock:result\")";
+ // the order is changed
+ String expectedDSL = "onException(Exception.class).to(\"mock:exception\");intercept().to(\"mock:intercept\");onCompletion().to(\"log:global\").to(\"mock:sync\");from(\"direct:start\").to(\"mock:result\")";
+
+ assertEquals(expectedDSL, render(DSL));
+ }
+
+ public void testOnCompletionDSL() throws Exception {
+ String DSL = "from(\"direct:start\").onCompletion().to(\"log:sync\").to(\"mock:sync\").end().to(\"mock:result\")";
+ String expectedDSL = DSL;
+
+ assertEquals(expectedDSL, render(DSL));
+ }
+
+ public void testOnCompletionGlobal() throws Exception {
+ String DSL = "onCompletion().to(\"log:global\").to(\"mock:sync\");from(\"direct:start\").to(\"mock:result\")";
+ String expectedDSL = DSL;
+
+ assertEquals(expectedDSL, render(DSL));
+ }
+
+ public void testOnCompletionMoreGlobal() throws Exception {
+ String DSL = "onCompletion().to(\"log:global\").to(\"mock:sync\");onCompletion().to(\"log:global\").to(\"mock:two\");onCompletion().onCompleteOnly().to(\"log:global\").to(\"mock:complete\");onCompletion().onFailureOnly().to(\"log:global\").to(\"mock:failure\");from(\"direct:start\").to(\"mock:result\")";
+ String expectedDSL = DSL;
+
+ assertEquals(expectedDSL, render(DSL));
+ }
+
+ public void testOnCompletionOnly() throws Exception {
+ String DSL = "from(\"direct:start\").onCompletion().onCompleteOnly().to(\"log:sync\").to(\"mock:sync\").end().to(\"mock:result\")";
+ String expectedDSL = DSL;
+
+ assertEquals(expectedDSL, render(DSL));
+ }
+
+ public void testOnCompletionRouteScopeOverrideGlobalScope() throws Exception {
+ String DSL = "onCompletion().to(\"log:global\").to(\"mock:global\");from(\"direct:start\").onCompletion().to(\"log:route\").to(\"mock:sync\").end().to(\"mock:result\")";
+ // the global onCompletion is removed
+ String expectedDSL = "from(\"direct:start\").onCompletion().to(\"log:route\").to(\"mock:sync\").end().to(\"mock:result\")";
+
+ assertEquals(expectedDSL, render(DSL));
+ }
+
+ public void testOnCompletionWhen() throws Exception {
+ String DSL = "from(\"direct:start\").onCompletion().onWhen(body().contains(\"Hello\")).to(\"log:sync\").to(\"mock:sync\").end().to(\"log:original\").to(\"mock:result\")";
+ String expectedDSL = DSL;
+
+ assertEquals(expectedDSL, render(DSL));
+ }
+
+ public void testOnFailureOnly() throws Exception {
+ String DSL = "from(\"direct:start\").onCompletion().onFailureOnly().to(\"log:sync\").to(\"mock:sync\").end().to(\"mock:result\")";
+ String expectedDSL = DSL;
+
+ assertEquals(expectedDSL, render(DSL));
+ }
+}