You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2010/04/27 11:33:26 UTC

svn commit: r938376 - in /camel/trunk: camel-core/src/main/java/org/apache/camel/impl/ camel-core/src/main/java/org/apache/camel/model/ camel-core/src/main/java/org/apache/camel/processor/interceptor/ camel-core/src/test/java/org/apache/camel/processor...

Author: davsclaus
Date: Tue Apr 27 09:33:26 2010
New Revision: 938376

URL: http://svn.apache.org/viewvc?rev=938376&view=rev
Log:
CAMEL-2677: RouteDefinition should be stateless, eg not tied to a CamelContext. This allows us to have reusable route defs used by multiple CamelContexts.

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/RoutesDefinition.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/ThrottleDefinition.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/StreamCaching.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/AdviceWithRouteIdTest.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/AdviceWithTest.java
    camel/trunk/components/camel-bam/src/main/java/org/apache/camel/bam/rules/TemporalRule.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/resources/RouteStatusResource.java
    camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ProcessorDefinitionRenderer.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java?rev=938376&r1=938375&r2=938376&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java Tue Apr 27 09:33:26 2010
@@ -579,7 +579,6 @@ public class DefaultCamelContext extends
 
     public void addRouteDefinitions(Collection<RouteDefinition> routeDefinitions) throws Exception {
         for (RouteDefinition routeDefinition : routeDefinitions) {
-            routeDefinition.setCamelContext(this);
             removeRouteDefinition(routeDefinition);
         }
         this.routeDefinitions.addAll(routeDefinitions);

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java?rev=938376&r1=938375&r2=938376&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java Tue Apr 27 09:33:26 2010
@@ -99,9 +99,6 @@ public class DefaultRouteContext impleme
     }
 
     public CamelContext getCamelContext() {
-        if (camelContext == null) {
-            camelContext = getRoute().getCamelContext();
-        }
         return camelContext;
     }
 
@@ -110,7 +107,7 @@ public class DefaultRouteContext impleme
     }
 
     public Endpoint resolveEndpoint(String uri) {
-        return route.resolveEndpoint(uri);
+        return route.resolveEndpoint(getCamelContext(), uri);
     }
 
     public Endpoint resolveEndpoint(String uri, String ref) {

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java?rev=938376&r1=938375&r2=938376&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java Tue Apr 27 09:33:26 2010
@@ -28,7 +28,6 @@ import javax.xml.bind.annotation.XmlTran
 import javax.xml.bind.annotation.XmlType;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.CamelContextAware;
 import org.apache.camel.Endpoint;
 import org.apache.camel.FailedToCreateRouteException;
 import org.apache.camel.NoSuchEndpointException;
@@ -47,6 +46,7 @@ import org.apache.camel.spi.LifecycleStr
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.spi.RoutePolicy;
 import org.apache.camel.util.CamelContextHelper;
+import org.apache.camel.util.ObjectHelper;
 
 /**
  * Represents an XML &lt;route/&gt; element
@@ -56,10 +56,9 @@ import org.apache.camel.util.CamelContex
 @XmlRootElement(name = "route")
 @XmlType(propOrder = {"inputs", "outputs" })
 @XmlAccessorType(XmlAccessType.PROPERTY)
-public class RouteDefinition extends ProcessorDefinition<ProcessorDefinition> implements CamelContextAware {
+public class RouteDefinition extends ProcessorDefinition<ProcessorDefinition> {
     private List<FromDefinition> inputs = new ArrayList<FromDefinition>();
     private List<ProcessorDefinition> outputs = new ArrayList<ProcessorDefinition>();
-    private CamelContext camelContext;
     private String group;
     private Boolean streamCache;
     private Boolean trace;
@@ -96,7 +95,7 @@ public class RouteDefinition extends Pro
     /**
      * Returns the status of the route if it has been registered with a {@link CamelContext}
      */
-    public ServiceStatus getStatus() {
+    public ServiceStatus getStatus(CamelContext camelContext) {
         if (camelContext != null) {
             ServiceStatus answer = camelContext.getRouteStatus(this.getId());
             if (answer == null) {
@@ -107,8 +106,8 @@ public class RouteDefinition extends Pro
         return null;
     }
 
-    public boolean isStartable() {
-        ServiceStatus status = getStatus();
+    public boolean isStartable(CamelContext camelContext) {
+        ServiceStatus status = getStatus(camelContext);
         if (status == null) {
             return true;
         } else {
@@ -116,8 +115,8 @@ public class RouteDefinition extends Pro
         }
     }
 
-    public boolean isStoppable() {
-        ServiceStatus status = getStatus();
+    public boolean isStoppable(CamelContext camelContext) {
+        ServiceStatus status = getStatus(camelContext);
         if (status == null) {
             return false;
         } else {
@@ -125,11 +124,10 @@ public class RouteDefinition extends Pro
         }
     }
     
-    public List<RouteContext> addRoutes(CamelContext context, Collection<Route> routes) throws Exception {
+    public List<RouteContext> addRoutes(CamelContext camelContext, Collection<Route> routes) throws Exception {
         List<RouteContext> answer = new ArrayList<RouteContext>();
-        setCamelContext(context);
 
-        ErrorHandlerBuilder handler = context.getErrorHandlerBuilder();
+        ErrorHandlerBuilder handler = camelContext.getErrorHandlerBuilder();
         if (handler != null) {
             setErrorHandlerBuilderIfNull(handler);
         }
@@ -137,7 +135,7 @@ public class RouteDefinition extends Pro
         for (FromDefinition fromType : inputs) {
             RouteContext routeContext;
             try {
-                routeContext = addRoutes(routes, fromType);
+                routeContext = addRoutes(camelContext, routes, fromType);
             } catch (FailedToCreateRouteException e) {
                 throw e;
             } catch (Exception e) {
@@ -150,12 +148,9 @@ public class RouteDefinition extends Pro
     }
 
 
-    public Endpoint resolveEndpoint(String uri) throws NoSuchEndpointException {
-        CamelContext context = getCamelContext();
-        if (context == null) {
-            throw new IllegalArgumentException("CamelContext has not been injected!");
-        }
-        return CamelContextHelper.getMandatoryEndpoint(context, uri);
+    public Endpoint resolveEndpoint(CamelContext camelContext, String uri) throws NoSuchEndpointException {
+        ObjectHelper.notNull(camelContext, "CamelContext");
+        return CamelContextHelper.getMandatoryEndpoint(camelContext, uri);
     }
 
     /**
@@ -168,18 +163,17 @@ public class RouteDefinition extends Pro
      * <p/>
      * Will stop and remove the old route from camel context and add and start this new advised route.
      *
-     * @param builder the route builder
+     * @param camelContext  the camel context
+     * @param builder       the route builder
      * @return a new route which is this route merged with the route builder
      * @throws Exception can be thrown from the route builder
      */
-    public RouteDefinition adviceWith(RouteBuilder builder) throws Exception {
-        CamelContext context = getCamelContext();
-        if (context == null) {
-            throw new IllegalArgumentException("CamelContext has not been injected!");
-        }
+    public RouteDefinition adviceWith(CamelContext camelContext, RouteBuilder builder) throws Exception {
+        ObjectHelper.notNull(camelContext, "CamelContext");
+        ObjectHelper.notNull(builder, "RouteBuilder");
 
         // configure and prepare the routes from the builder
-        RoutesDefinition routes = builder.configureRoutes(context);
+        RoutesDefinition routes = builder.configureRoutes(camelContext);
 
         // we can only advice with a route builder without any routes
         if (!routes.getRoutes().isEmpty()) {
@@ -188,18 +182,18 @@ public class RouteDefinition extends Pro
         }
 
         // stop and remove this existing route
-        List<RouteDefinition> list = new ArrayList<RouteDefinition>();
+        List<RouteDefinition> list = new ArrayList<RouteDefinition>(1);
         list.add(this);
-        context.removeRouteDefinitions(list);
+        camelContext.removeRouteDefinitions(list);
 
         // now merge which also ensures that interceptors and the likes get mixed in correctly as well
         RouteDefinition merged = routes.route(this);
 
         // add the new merged route
-        context.getRouteDefinitions().add(0, merged);
+        camelContext.getRouteDefinitions().add(0, merged);
 
         // and start it
-        context.startRoute(merged);
+        camelContext.startRoute(merged);
         return merged;
     }
 
@@ -294,7 +288,7 @@ public class RouteDefinition extends Pro
      */
     public RouteDefinition streamCaching() {
         setStreamCache(Boolean.TRUE);
-        StreamCaching cache = StreamCaching.getStreamCaching(getCamelContext());
+        StreamCaching cache = StreamCaching.getStreamCaching(getInterceptStrategies());
         if (cache == null) {
             cache = new StreamCaching();
         }
@@ -470,15 +464,6 @@ public class RouteDefinition extends Pro
         }
     }
 
-    public CamelContext getCamelContext() {
-        return camelContext;
-    }
-
-    @XmlTransient
-    public void setCamelContext(CamelContext camelContext) {
-        this.camelContext = camelContext;
-    }
-
     /**
      * The group that this route belongs to; could be the name of the RouteBuilder class
      * or be explicitly configured in the XML.
@@ -611,8 +596,8 @@ public class RouteDefinition extends Pro
     // Implementation methods
     // -------------------------------------------------------------------------
     @SuppressWarnings("unchecked")
-    protected RouteContext addRoutes(Collection<Route> routes, FromDefinition fromType) throws Exception {
-        RouteContext routeContext = new DefaultRouteContext(getCamelContext(), this, fromType, routes);
+    protected RouteContext addRoutes(CamelContext camelContext, Collection<Route> routes, FromDefinition fromType) throws Exception {
+        RouteContext routeContext = new DefaultRouteContext(camelContext, this, fromType, routes);
 
         // configure tracing
         if (trace != null) {
@@ -633,7 +618,7 @@ public class RouteDefinition extends Pro
                     log.debug("StreamCaching is enabled on route: " + this);
                 }
                 // only add a new stream cache if not already a global configured on camel context
-                if (StreamCaching.getStreamCaching(getCamelContext()) == null) {
+                if (StreamCaching.getStreamCaching(camelContext) == null) {
                     addInterceptStrategy(new StreamCaching());
                 }
             }
@@ -647,7 +632,7 @@ public class RouteDefinition extends Pro
                     log.debug("HandleFault is enabled on route: " + this);
                 }
                 // only add a new handle fault if not already a global configured on camel context
-                if (HandleFault.getHandleFault(getCamelContext()) == null) {
+                if (HandleFault.getHandleFault(camelContext) == null) {
                     addInterceptStrategy(new HandleFault());
                 }
             }
@@ -678,7 +663,7 @@ public class RouteDefinition extends Pro
             }
             routeContext.setRoutePolicy(getRoutePolicy());
         } else if (routePolicyRef != null) {
-            RoutePolicy policy = CamelContextHelper.mandatoryLookup(getCamelContext(), routePolicyRef, RoutePolicy.class);
+            RoutePolicy policy = CamelContextHelper.mandatoryLookup(camelContext, routePolicyRef, RoutePolicy.class);
             if (log.isDebugEnabled()) {
                 log.debug("RoutePolicy is enabled: " + policy + " on route: " + this);
             }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/RoutesDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/RoutesDefinition.java?rev=938376&r1=938375&r2=938376&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/RoutesDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/RoutesDefinition.java Tue Apr 27 09:33:26 2010
@@ -198,8 +198,6 @@ public class RoutesDefinition extends Op
      * @return the builder
      */
     public RouteDefinition route(RouteDefinition route) {
-        // lets configure the route
-        route.setCamelContext(getCamelContext());
 
         // configure intercept
         for (InterceptDefinition intercept : getIntercepts()) {

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/ThrottleDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ThrottleDefinition.java?rev=938376&r1=938375&r2=938376&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/ThrottleDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/ThrottleDefinition.java Tue Apr 27 09:33:26 2010
@@ -16,13 +16,11 @@
  */
 package org.apache.camel.model;
 
-import java.util.ArrayList;
 import java.util.List;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElementRef;
 import javax.xml.bind.annotation.XmlRootElement;
 
 import org.apache.camel.Processor;
@@ -36,13 +34,11 @@ import org.apache.camel.spi.RouteContext
  */
 @XmlRootElement(name = "throttle")
 @XmlAccessorType(XmlAccessType.FIELD)
-public class ThrottleDefinition extends ProcessorDefinition<ProcessorDefinition> {
+public class ThrottleDefinition extends OutputDefinition<ProcessorDefinition> {
     @XmlAttribute
     private Long maximumRequestsPerPeriod;
     @XmlAttribute
     private long timePeriodMillis = 1000;
-    @XmlElementRef
-    private List<ProcessorDefinition> outputs = new ArrayList<ProcessorDefinition>();
 
     public ThrottleDefinition() {
     }
@@ -117,11 +113,4 @@ public class ThrottleDefinition extends 
         this.timePeriodMillis = timePeriodMillis;
     }
 
-    public List<ProcessorDefinition> getOutputs() {
-        return outputs;
-    }
-
-    public void setOutputs(List<ProcessorDefinition> outputs) {
-        this.outputs = outputs;
-    }
 }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/StreamCaching.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/StreamCaching.java?rev=938376&r1=938375&r2=938376&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/StreamCaching.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/StreamCaching.java Tue Apr 27 09:33:26 2010
@@ -28,9 +28,8 @@ import org.apache.camel.spi.InterceptStr
  */
 public final class StreamCaching implements InterceptStrategy {
     
-    public Processor wrapProcessorInInterceptors(CamelContext context, 
-            ProcessorDefinition<?> definition, Processor target, Processor nextTarget) throws Exception {
-
+    public Processor wrapProcessorInInterceptors(CamelContext context, ProcessorDefinition<?> definition,
+                                                 Processor target, Processor nextTarget) throws Exception {
         return new StreamCachingInterceptor(target);
     }
     
@@ -42,8 +41,18 @@ public final class StreamCaching impleme
      * @return the stream cache or null if none can be found
      */
     public static StreamCaching getStreamCaching(CamelContext context) {
-        List<InterceptStrategy> list = context.getInterceptStrategies();
-        for (InterceptStrategy interceptStrategy : list) {
+        return getStreamCaching(context.getInterceptStrategies());
+    }
+
+    /**
+     * A helper method to return the StreamCaching instance
+     * for a given list of interceptors
+     *
+     * @param interceptors the list of interceptors
+     * @return the stream cache or null if none can be found
+     */
+    public static StreamCaching getStreamCaching(List<InterceptStrategy> interceptors) {
+        for (InterceptStrategy interceptStrategy : interceptors) {
             if (interceptStrategy instanceof StreamCaching) {
                 return (StreamCaching)interceptStrategy;
             }

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/AdviceWithRouteIdTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/AdviceWithRouteIdTest.java?rev=938376&r1=938375&r2=938376&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/AdviceWithRouteIdTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/AdviceWithRouteIdTest.java Tue Apr 27 09:33:26 2010
@@ -24,7 +24,7 @@ import org.apache.camel.builder.RouteBui
 public class AdviceWithRouteIdTest extends AdviceWithTest {
 
     public void testAdvised() throws Exception {
-        context.getRouteDefinition("myRoute").adviceWith(new RouteBuilder() {
+        context.getRouteDefinition("myRoute").adviceWith(context, new RouteBuilder() {
             @Override
             public void configure() throws Exception {
                 interceptSendToEndpoint("mock:foo")

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/AdviceWithTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/AdviceWithTest.java?rev=938376&r1=938375&r2=938376&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/AdviceWithTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/AdviceWithTest.java Tue Apr 27 09:33:26 2010
@@ -37,7 +37,7 @@ public class AdviceWithTest extends Cont
     // START SNIPPET: e1
     public void testAdvised() throws Exception {
         // advice the first route using the inlined route builder
-        context.getRouteDefinitions().get(0).adviceWith(new RouteBuilder() {
+        context.getRouteDefinitions().get(0).adviceWith(context, new RouteBuilder() {
             @Override
             public void configure() throws Exception {
                 // intercept sending to mock:foo and do something else
@@ -60,7 +60,7 @@ public class AdviceWithTest extends Cont
 
     public void testAdvisedNoNewRoutesAllowed() throws Exception {
         try {
-            context.getRouteDefinitions().get(0).adviceWith(new RouteBuilder() {
+            context.getRouteDefinitions().get(0).adviceWith(context, new RouteBuilder() {
                 @Override
                 public void configure() throws Exception {
                     from("direct:bar").to("mock:bar");
@@ -78,7 +78,7 @@ public class AdviceWithTest extends Cont
     }
 
     public void testAdvisedThrowException() throws Exception {
-        context.getRouteDefinitions().get(0).adviceWith(new RouteBuilder() {
+        context.getRouteDefinitions().get(0).adviceWith(context, new RouteBuilder() {
             @Override
             public void configure() throws Exception {
                 interceptSendToEndpoint("mock:foo")

Modified: camel/trunk/components/camel-bam/src/main/java/org/apache/camel/bam/rules/TemporalRule.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-bam/src/main/java/org/apache/camel/bam/rules/TemporalRule.java?rev=938376&r1=938375&r2=938376&view=diff
==============================================================================
--- camel/trunk/components/camel-bam/src/main/java/org/apache/camel/bam/rules/TemporalRule.java (original)
+++ camel/trunk/components/camel-bam/src/main/java/org/apache/camel/bam/rules/TemporalRule.java Tue Apr 27 09:33:26 2010
@@ -87,9 +87,8 @@ public class TemporalRule extends Servic
     public Processor getOverdueAction() throws Exception {
         if (overdueAction == null && overdueProcessors != null) {
             RouteDefinition route = new RouteDefinition();
-            route.setCamelContext(first.getBuilder().getProcessBuilder().getContext());
-            RouteContext routeContext = new DefaultRouteContext(
-                first.getBuilder().getProcessBuilder().getContext(), route, null, new ArrayList<Route>());
+            RouteContext routeContext = new DefaultRouteContext(first.getBuilder().getProcessBuilder().getContext(),
+                    route, null, new ArrayList<Route>());
 
             overdueAction = overdueProcessors.createOutputsProcessor(routeContext);
         }
@@ -158,8 +157,6 @@ public class TemporalRule extends Servic
     /**
      * Returns the date in the future adding the given number of millis
      *
-     * @param date
-     * @param millis
      * @return the date in the future
      */
     protected Date add(Date date, long millis) {

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=938376&r1=938375&r2=938376&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 Tue Apr 27 09:33:26 2010
@@ -79,7 +79,7 @@ public class RouteResource extends Camel
     public RouteResource(RoutesResource routesResource, RouteDefinition route) {
         super(routesResource.getContextResource());
         this.route = route;
-        this.id = route.idOrCreate(route.getCamelContext().getNodeIdFactory());
+        this.id = route.idOrCreate(getCamelContext().getNodeIdFactory());
     }
 
     /**

Modified: camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/resources/RouteStatusResource.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/resources/RouteStatusResource.java?rev=938376&r1=938375&r2=938376&view=diff
==============================================================================
--- camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/resources/RouteStatusResource.java (original)
+++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/resources/RouteStatusResource.java Tue Apr 27 09:33:26 2010
@@ -61,7 +61,7 @@ public class RouteStatusResource {
     }
 
     public ServiceStatus getStatus() {
-        return getRoute().getStatus();
+        return getRoute().getStatus(getCamelContext());
     }
 
     @POST

Modified: 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=938376&r1=938375&r2=938376&view=diff
==============================================================================
--- camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ProcessorDefinitionRenderer.java (original)
+++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/ProcessorDefinitionRenderer.java Tue Apr 27 09:33:26 2010
@@ -64,8 +64,6 @@ public final class ProcessorDefinitionRe
         } 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) {
@@ -80,6 +78,9 @@ public final class ProcessorDefinitionRe
             ThrottleDefinitionRenderer.render(buffer, processor);
         } else if (processor instanceof ThrowExceptionDefinition) {
             ThrowExceptionDefinitionRenderer.render(buffer, processor);
+        } else if (processor instanceof OutputDefinition) {
+            // output must be last as its very generic
+            OutputDefinitionRenderer.render(buffer, processor);
         } else {
             buffer.append(".").append(processor.getShortName()).append("()");
         }