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/06 21:28:39 UTC

svn commit: r801784 - 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/resources/ components/camel-web/src/main/j...

Author: janstey
Date: Thu Aug  6 19:28:38 2009
New Revision: 801784

URL: http://svn.apache.org/viewvc?rev=801784&view=rev
Log:
CAMEL-1392 - Latest update for the Groovy renderer. Thanks to Xueqiang for this.

Added:
    camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/OnCompletionDefinitionRenderer.java   (with props)
    camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/OnExceptionDefinitionRenderer.java   (with props)
Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/AOPDefinition.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/FailOverLoadBalancer.java
    camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/resources/RouteResource.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/OutputDefinitionRenderer.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/RoutingSlipDSLTest.java
    camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/TransformDSLTest.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/AOPDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/AOPDefinition.java?rev=801784&r1=801783&r2=801784&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/AOPDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/AOPDefinition.java Thu Aug  6 19:28:38 2009
@@ -51,6 +51,18 @@
         return "AOP[" + getOutputs() + "]";
     }
 
+    public String getBeforeUri() {
+        return beforeUri;
+    }
+
+    public String getAfterUri() {
+        return afterUri;
+    }
+
+    public String getAfterFinallyUri() {
+        return afterFinallyUri;
+    }
+
     @Override
     public String getShortName() {
         return "aop";

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java?rev=801784&r1=801783&r2=801784&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java Thu Aug  6 19:28:38 2009
@@ -195,6 +195,10 @@
         return expressions;
     }
 
+    public List<Expression> getExpressionList() {
+        return expressionList;
+    }
+
     public List<ProcessorDefinition> getOutputs() {
         return outputs;
     }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/FailOverLoadBalancer.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/FailOverLoadBalancer.java?rev=801784&r1=801783&r2=801784&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/FailOverLoadBalancer.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/FailOverLoadBalancer.java Thu Aug  6 19:28:38 2009
@@ -42,6 +42,10 @@
         }
     }
 
+    public List<Class> getExceptions() {
+        return exceptions;
+    }
+
     /**
      * Should the given failed Exchange failover?
      *

Modified: camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/resources/RouteResource.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/resources/RouteResource.java?rev=801784&r1=801783&r2=801784&view=diff
==============================================================================
--- camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/resources/RouteResource.java (original)
+++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/resources/RouteResource.java Thu Aug  6 19:28:38 2009
@@ -118,7 +118,7 @@
             }
         } else if (language.equalsIgnoreCase(LANGUAGE_GROOVY)) {
             StringBuilder buffer = new StringBuilder();
-            new GroovyRenderer().renderRoute(buffer, route);
+            GroovyRenderer.renderRoute(buffer, route);
             return GroovyRenderer.header + buffer.toString() + GroovyRenderer.footer;
         } else {
             return "Unsupported language!";

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=801784&r1=801783&r2=801784&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 Thu Aug  6 19:28:38 2009
@@ -113,10 +113,7 @@
             }
         } else if (expNode instanceof TransformDefinition) {
             String expValue = expression.getExpressionValue().toString();
-            if (expValue.matches("\\w+")) {
-                buffer.append("()");
-                ExpressionRenderer.renderConstant(buffer, expression);
-            } else if (expValue.startsWith("append")) {
+            if (expValue.startsWith("append") || expValue.startsWith("prepend") || expValue.startsWith("to")) {
                 buffer.append("(");
                 ExpressionRenderer.render(buffer, expression);
                 buffer.append(")");
@@ -124,9 +121,7 @@
                 buffer.append("()");
                 ExpressionRenderer.render(buffer, expression);
             } else {
-                buffer.append("(");
-                ExpressionRenderer.render(buffer, expression);
-                buffer.append(")");
+                buffer.append("(constant(\"").append(expression.getExpressionValue().toString()).append("\"))");
             }
         } else if (expNode instanceof WhenDefinition) {
             if (expression.getPredicate() != null) {

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=801784&r1=801783&r2=801784&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 Thu Aug  6 19:28:38 2009
@@ -136,6 +136,11 @@
             String words[] = expression.split("\\(|, |\\)");
 
             buffer.append(words[1]).append("().").append("append(\"").append(words[2]).append("\")");
+        } else if (expression.startsWith("prepend")) {
+            // prepend(body, World!) -> body().prepend(" World!")
+            String words[] = expression.split("\\(|, |\\)");
+
+            buffer.append(words[1]).append("().").append("prepend(\"").append(words[2]).append("\")");
         }
     }
 }

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=801784&r1=801783&r2=801784&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 Thu Aug  6 19:28:38 2009
@@ -19,62 +19,27 @@
 import java.io.IOException;
 import java.util.List;
 
-import javax.xml.bind.annotation.XmlRootElement;
-
+import org.apache.camel.Expression;
 import org.apache.camel.builder.DeadLetterChannelBuilder;
 import org.apache.camel.builder.ErrorHandlerBuilderRef;
-import org.apache.camel.builder.ExpressionBuilder;
-import org.apache.camel.builder.ExpressionClause;
 import org.apache.camel.model.AggregateDefinition;
-import org.apache.camel.model.BeanDefinition;
 import org.apache.camel.model.ChoiceDefinition;
 import org.apache.camel.model.ConvertBodyDefinition;
-import org.apache.camel.model.DataFormatDefinition;
-import org.apache.camel.model.DelayDefinition;
-import org.apache.camel.model.EnrichDefinition;
 import org.apache.camel.model.ExpressionNode;
-import org.apache.camel.model.FilterDefinition;
-import org.apache.camel.model.FinallyDefinition;
 import org.apache.camel.model.FromDefinition;
-import org.apache.camel.model.IdempotentConsumerDefinition;
-import org.apache.camel.model.InterceptDefinition;
-import org.apache.camel.model.InterceptSendToEndpointDefinition;
 import org.apache.camel.model.LoadBalanceDefinition;
-import org.apache.camel.model.LoopDefinition;
-import org.apache.camel.model.MarshalDefinition;
-import org.apache.camel.model.MulticastDefinition;
+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.PipelineDefinition;
-import org.apache.camel.model.PolicyDefinition;
-import org.apache.camel.model.PollEnrichDefinition;
-import org.apache.camel.model.ProcessDefinition;
 import org.apache.camel.model.ProcessorDefinition;
-import org.apache.camel.model.RecipientListDefinition;
-import org.apache.camel.model.RemoveHeaderDefinition;
-import org.apache.camel.model.RemovePropertyDefinition;
 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.SetBodyDefinition;
-import org.apache.camel.model.SetExchangePatternDefinition;
-import org.apache.camel.model.SetHeaderDefinition;
-import org.apache.camel.model.SetOutHeaderDefinition;
-import org.apache.camel.model.SetPropertyDefinition;
-import org.apache.camel.model.SortDefinition;
-import org.apache.camel.model.SplitDefinition;
-import org.apache.camel.model.StopDefinition;
-import org.apache.camel.model.ThreadsDefinition;
 import org.apache.camel.model.ThrottleDefinition;
-import org.apache.camel.model.TransactedDefinition;
-import org.apache.camel.model.TransformDefinition;
-import org.apache.camel.model.TryDefinition;
-import org.apache.camel.model.UnmarshalDefinition;
 import org.apache.camel.model.WhenDefinition;
-import org.apache.camel.model.language.ConstantExpression;
-import org.apache.camel.model.language.ExpressionDefinition;
 import org.apache.camel.processor.loadbalancer.FailOverLoadBalancer;
 import org.apache.camel.processor.loadbalancer.LoadBalancer;
 import org.apache.camel.processor.loadbalancer.RandomLoadBalancer;
@@ -85,7 +50,7 @@
 /**
  * Render routes in Groovy language
  */
-public class GroovyRenderer implements TextRenderer {
+public class GroovyRenderer {
 
     public static final String header = "import org.apache.camel.language.groovy.GroovyRouteBuilder;\nclass GroovyRoute extends GroovyRouteBuilder {\nvoid configure() {\n";
 
@@ -96,8 +61,7 @@
      * 
      * @throws IOException
      */
-    public void renderRoute(StringBuilder buffer, RouteDefinition route) {
-        // TODO Auto-generated method stub
+    public static void renderRoute(StringBuilder buffer, RouteDefinition route) {
         List<FromDefinition> inputs = route.getInputs();
         List<ProcessorDefinition> outputs = route.getOutputs();
 
@@ -113,6 +77,15 @@
             }
         }
 
+        // render the global dsl not started with from, like global
+        // onCompletion, onException, intercept
+        for (ProcessorDefinition processor : outputs) {
+            if (processor.getParent() == null) {
+                renderProcessor(buffer, processor);
+                buffer.append(";");
+            }
+        }
+
         // render the inputs of the router
         buffer.append("from(");
         for (FromDefinition input : inputs) {
@@ -125,14 +98,16 @@
 
         // render the outputs of the router
         for (ProcessorDefinition processor : outputs) {
-            renderProcessor(buffer, processor);
+            if (processor.getParent() == route) {
+                renderProcessor(buffer, processor);
+            }
         }
     }
 
     /**
      * render a RoutesDefinition
      */
-    public void renderRoutes(StringBuilder buffer, RoutesDefinition routes) {
+    public static void renderRoutes(StringBuilder buffer, RoutesDefinition routes) {
         // TODO Auto-generated method stub
 
     }
@@ -140,7 +115,7 @@
     /**
      * render a ProcessorDefiniton
      */
-    private void renderProcessor(StringBuilder buffer, ProcessorDefinition processor) {
+    private static void renderProcessor(StringBuilder buffer, ProcessorDefinition processor) {
         if (processor instanceof AggregateDefinition) {
             AggregateDefinitionRenderer.render(buffer, processor);
         } else if (processor instanceof ChoiceDefinition) {
@@ -176,7 +151,15 @@
 
             LoadBalancer lb = loadB.getLoadBalancerType().getLoadBalancer(null);
             if (lb instanceof FailOverLoadBalancer) {
-                buffer.append(".failover()");
+                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) {
@@ -192,14 +175,24 @@
                 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<ExpressionBuilder> exps = null;
-            for (ExpressionBuilder exp : exps) {
-                buffer.append(exp.toString()).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) {
@@ -219,9 +212,9 @@
         }
 
         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/OnCompletionDefinitionRenderer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/OnCompletionDefinitionRenderer.java?rev=801784&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/OnCompletionDefinitionRenderer.java (added)
+++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/OnCompletionDefinitionRenderer.java Thu Aug  6 19:28:38 2009
@@ -0,0 +1,66 @@
+/**
+ * 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.OnCompletionDefinition;
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.model.WhenDefinition;
+
+/**
+ * 
+ */
+public class OnCompletionDefinitionRenderer {
+
+    public static void render(StringBuilder buffer, ProcessorDefinition processor) {
+        // if not a global onCompletion, add a period
+        boolean notGlobal = buffer.toString().endsWith(")");
+        if (notGlobal) {
+            buffer.append(".");
+        }
+
+        OnCompletionDefinition onComplete = (OnCompletionDefinition)processor;
+        buffer.append(processor.getShortName()).append("()");
+        if (onComplete.getOnWhen() != null) {
+            WhenDefinition when = onComplete.getOnWhen();
+            buffer.append(".onWhen");
+            if (when.getExpression().getPredicate() != null) {
+                PredicateRenderer.renderPredicate(buffer, when.getExpression().getPredicate());
+            } else {
+                buffer.append("Unsupported Expression!");
+            }
+        }
+        if (onComplete.getOnCompleteOnly()) {
+            buffer.append(".onCompleteOnly()");
+        }
+        if (onComplete.getOnFailureOnly()) {
+            buffer.append(".onFailureOnly()");
+        }
+        List<ProcessorDefinition> branches = onComplete.getOutputs();
+        for (ProcessorDefinition branch : branches) {
+            SendDefinitionRenderer.render(buffer, branch);
+        }
+
+
+        // if not a global onCompletion, using end() at the end
+        if (notGlobal) {
+            buffer.append(".end()");
+        }
+    }
+}

Propchange: camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/OnCompletionDefinitionRenderer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 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=801784&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/OnExceptionDefinitionRenderer.java (added)
+++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/OnExceptionDefinitionRenderer.java Thu Aug  6 19:28:38 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.util;
+
+import java.util.List;
+
+import org.apache.camel.model.OnExceptionDefinition;
+import org.apache.camel.model.ProcessorDefinition;
+
+/**
+ * 
+ */
+public class OnExceptionDefinitionRenderer {
+
+    public static void render(StringBuilder buffer, ProcessorDefinition processor) {
+        // if not a global onCompletion, add a period
+        boolean notGlobal = buffer.toString().endsWith(")");
+        if (notGlobal) {
+            buffer.append(".");
+        }
+
+        OnExceptionDefinition onException = (OnExceptionDefinition)processor;
+        buffer.append(processor.getShortName()).append("(");
+        List<Class> exceptions = onException.getExceptionClasses();
+        for (Class excep : exceptions) {
+            buffer.append(excep.getSimpleName()).append(".class");
+            if (excep != exceptions.get(exceptions.size() - 1)) {
+                buffer.append(", ");
+            }
+        }
+        buffer.append(")");
+
+        List<ProcessorDefinition> branches = onException.getOutputs();
+        for (ProcessorDefinition branch : branches) {
+            SendDefinitionRenderer.render(buffer, branch);
+        }
+    }
+}

Propchange: camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/OnExceptionDefinitionRenderer.java
------------------------------------------------------------------------------
    svn:eol-style = native

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=801784&r1=801783&r2=801784&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 Thu Aug  6 19:28:38 2009
@@ -19,6 +19,7 @@
 
 import javax.xml.bind.annotation.XmlRootElement;
 
+import org.apache.camel.model.AOPDefinition;
 import org.apache.camel.model.BeanDefinition;
 import org.apache.camel.model.DataFormatDefinition;
 import org.apache.camel.model.EnrichDefinition;
@@ -43,7 +44,6 @@
 import org.apache.camel.model.TransactedDefinition;
 import org.apache.camel.model.TryDefinition;
 import org.apache.camel.model.UnmarshalDefinition;
-import org.apache.camel.model.language.ExpressionDefinition;
 
 /**
  * 
@@ -52,17 +52,38 @@
 
     public static void render(StringBuilder buffer, ProcessorDefinition processor) {
         OutputDefinition out = (OutputDefinition)processor;
-        buffer.append(".").append(out.getShortName());
-        if (out instanceof BeanDefinition) {
+
+        boolean notGlobal = buffer.toString().endsWith(")");
+        if (notGlobal) {
+            buffer.append(".");
+        }
+        buffer.append(out.getShortName());
+
+        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("\")");
+            } else if (aop.getBeforeUri() != null) {
+                buffer.append(".before(\"").append(aop.getBeforeUri()).append("\")");
+            } else if (aop.getAfterUri() != null) {
+                buffer.append(".after(\"").append(aop.getAfterUri()).append("\")");
+            } else if (aop.getAfterFinallyUri() != null) {
+                buffer.append(".afterFinally(\"").append(aop.getAfterUri()).append("\")");
+            }
+
+        } else if (out instanceof BeanDefinition) {
 
         } 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) {
-
+            buffer.append("()");
         } else if (out instanceof InterceptSendToEndpointDefinition) {
 
         } else if (out instanceof MarshalDefinition) {

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=801784&r1=801783&r2=801784&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 Thu Aug  6 19:28:38 2009
@@ -67,7 +67,7 @@
         assertNotNull(route);
 
         StringBuilder sb = new StringBuilder();
-        new GroovyRenderer().renderRoute(sb, route);
+        GroovyRenderer.renderRoute(sb, route);
         return sb.toString();
     }
 

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=801784&r1=801783&r2=801784&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 Thu Aug  6 19:28:38 2009
@@ -22,11 +22,18 @@
  */
 public class LoadBalanceDSLTest extends GroovyRendererTestSupport {
 
-    public void testFromTo() throws Exception {
+    public void testLoadBalanceRandom() throws Exception {
         String DSL = "from(\"direct:start\").loadBalance().random().to(\"mock:x\", \"mock:y\", \"mock:z\")";
         String expectedDSL = "from(\"direct:start\").loadBalance().random().to(\"mock:x\").to(\"mock:y\").to(\"mock:z\")";
 
         assertEquals(expectedDSL, render(DSL));
     }
 
+    public void testLoadBalanceFailover() throws Exception {
+        String DSL = "from(\"direct:start\").loadBalance().failover(IOException.class).to(\"direct:x\", \"direct:y\")";
+        String expectedDSL = "from(\"direct:start\").loadBalance().failover(IOException.class).to(\"direct:x\").to(\"direct:y\")";
+
+        assertEquals(expectedDSL, render(DSL));
+    }
+
 }

Modified: camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/RoutingSlipDSLTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/RoutingSlipDSLTest.java?rev=801784&r1=801783&r2=801784&view=diff
==============================================================================
--- camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/RoutingSlipDSLTest.java (original)
+++ camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/RoutingSlipDSLTest.java Thu Aug  6 19:28:38 2009
@@ -22,15 +22,22 @@
  */
 public class RoutingSlipDSLTest extends GroovyRendererTestSupport {
 
+    public void testRoutingSlip() throws Exception {
+        String DSL = "from(\"direct:a\").routingSlip(\"myHeader\").to(\"mock:end\")";
+        String expectedDSL = "from(\"direct:a\").routingSlip(\"myHeader\", \",\").to(\"mock:end\")";
+
+        assertEquals(expectedDSL, render(DSL));
+    }
+
     public void testRoutingSlip1() throws Exception {
-        String DSL = "from(\"direct:start\").routingSlip(\"headerName\")";
-        String expectedDSL = "from(\"direct:start\").routingSlip(\"headerName\", \",\")";
+        String DSL = "from(\"direct:b\").routingSlip(\"aRoutingSlipHeader\")";
+        String expectedDSL = "from(\"direct:b\").routingSlip(\"aRoutingSlipHeader\", \",\")";
 
         assertEquals(expectedDSL, render(DSL));
     }
 
     public void testRoutingSlip2() throws Exception {
-        String DSL = "from(\"direct:start\").routingSlip(\"aRoutingSlipHeader\", \"#\")";
+        String DSL = "from(\"direct:c\").routingSlip(\"aRoutingSlipHeader\", \"#\")";
         String expectedDSL = DSL;
 
         assertEquals(expectedDSL, render(DSL));

Modified: camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/TransformDSLTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/TransformDSLTest.java?rev=801784&r1=801783&r2=801784&view=diff
==============================================================================
--- camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/TransformDSLTest.java (original)
+++ camel/trunk/components/camel-web/src/test/java/org/apache/camel/web/groovy/TransformDSLTest.java Thu Aug  6 19:28:38 2009
@@ -22,8 +22,15 @@
  */
 public class TransformDSLTest extends GroovyRendererTestSupport {
 
-    public void testTransformToConstant() throws Exception {
+    public void testTransformToConstant1() throws Exception {
         String DSL = "from(\"direct:start\").transform().constant(\"London\").to(\"mock:result\")";
+        String expectedDSL = "from(\"direct:start\").transform(constant(\"London\")).to(\"mock:result\")";
+
+        assertEquals(expectedDSL, render(DSL));
+    }
+
+    public void testTransformToConstant2() throws Exception {
+        String DSL = "from(\"direct:start\").transform(constant(\"London\")).to(\"mock:result\")";
         String expectedDSL = DSL;
 
         assertEquals(expectedDSL, render(DSL));

Modified: camel/trunk/components/camel-web/src/test/resources/route.txt
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/test/resources/route.txt?rev=801784&r1=801783&r2=801784&view=diff
==============================================================================
--- camel/trunk/components/camel-web/src/test/resources/route.txt (original)
+++ camel/trunk/components/camel-web/src/test/resources/route.txt Thu Aug  6 19:28:38 2009
@@ -1 +1 @@
-from("direct:start").filter().method("myBean", "matches").to("mock:result")
\ No newline at end of file
+onCompletion().to("log:global").to("mock:global");from("direct:start").onCompletion().to("log:route").to("mock:sync").end().to("mock:result")
\ No newline at end of file

Modified: camel/trunk/components/camel-web/src/test/resources/testedRoutes.txt
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/test/resources/testedRoutes.txt?rev=801784&r1=801783&r2=801784&view=diff
==============================================================================
--- camel/trunk/components/camel-web/src/test/resources/testedRoutes.txt (original)
+++ camel/trunk/components/camel-web/src/test/resources/testedRoutes.txt Thu Aug  6 19:28:38 2009
@@ -49,8 +49,7 @@
 #########################recipientList#########################
 from("direct:start").recipientList(header("recipientListHeader").tokenize(","))
 #########################resequencer#########################
-#from("direct:start").resequence(body()).to("mock:result")  // No getExceptionList method for ResequenceDefinition
-#from("direct:start").resequencer(body()).to("mock:result") // No getExceptionList method for ResequenceDefinition
+#from("direct:start").resequence(body()).to("mock:result")
 #########################routingSlip#########################
 from("direct:start").routingSlip("headerName")
 from("direct:start").routingSlip("aRoutingSlipHeader", "#")