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 2013/04/04 16:27:39 UTC
svn commit: r1464566 - in /camel/trunk:
camel-core/src/main/java/org/apache/camel/
camel-core/src/main/java/org/apache/camel/impl/
camel-core/src/main/java/org/apache/camel/util/
camel-core/src/test/java/org/apache/camel/util/ platforms/karaf/commands/...
Author: davsclaus
Date: Thu Apr 4 14:27:39 2013
New Revision: 1464566
URL: http://svn.apache.org/r1464566
Log:
CAMEL-6237: Polished karaf commands
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
camel/trunk/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java
camel/trunk/camel-core/src/test/java/org/apache/camel/util/CamelContextHelperTest.java
camel/trunk/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/AbstractRouteCommand.java
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java?rev=1464566&r1=1464565&r2=1464566&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java Thu Apr 4 14:27:39 2013
@@ -48,6 +48,7 @@ import org.apache.camel.spi.NodeIdFactor
import org.apache.camel.spi.PackageScanClassResolver;
import org.apache.camel.spi.ProcessorFactory;
import org.apache.camel.spi.Registry;
+import org.apache.camel.spi.RouteStartupOrder;
import org.apache.camel.spi.ServicePool;
import org.apache.camel.spi.ShutdownStrategy;
import org.apache.camel.spi.TypeConverterRegistry;
@@ -350,6 +351,16 @@ public interface CamelContext extends Su
RouteDefinition getRouteDefinition(String id);
/**
+ * Returns the order in which the route inputs was started.
+ * <p/>
+ * The order may not be according to the startupOrder defined on the route.
+ * For example a route could be started manually later, or new routes added at runtime.
+ *
+ * @return a list in the order how routes was started
+ */
+ List<RouteStartupOrder> getRouteStartupOrder();
+
+ /**
* Returns the current routes in this context
*
* @return the current routes
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=1464566&r1=1464565&r2=1464566&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 Thu Apr 4 14:27:39 2013
@@ -611,14 +611,6 @@ public class DefaultCamelContext extends
// Route Management Methods
// -----------------------------------------------------------------------
- /**
- * Returns the order in which the route inputs was started.
- * <p/>
- * The order may not be according to the startupOrder defined on the route.
- * For example a route could be started manually later, or new routes added at runtime.
- *
- * @return a list in the order how routes was started
- */
public List<RouteStartupOrder> getRouteStartupOrder() {
return routeStartupOrder;
}
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java?rev=1464566&r1=1464565&r2=1464566&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/util/CamelContextHelper.java Thu Apr 4 14:27:39 2013
@@ -33,6 +33,7 @@ import org.apache.camel.Endpoint;
import org.apache.camel.Exchange;
import org.apache.camel.NoSuchBeanException;
import org.apache.camel.NoSuchEndpointException;
+import org.apache.camel.spi.RouteStartupOrder;
import static org.apache.camel.util.ObjectHelper.isEmpty;
import static org.apache.camel.util.ObjectHelper.isNotEmpty;
@@ -390,4 +391,21 @@ public final class CamelContextHelper {
}
return map;
}
+
+ /**
+ * Gets the route startup order for the given route id
+ *
+ * @param camelContext the camel context
+ * @param routeId the id of the route
+ * @return the startup order, or <tt>0</tt> if not possible to determine
+ */
+ public static int getRouteStartupOrder(CamelContext camelContext, String routeId) {
+ for (RouteStartupOrder order : camelContext.getRouteStartupOrder()) {
+ if (order.getRoute().getId().equals(routeId)) {
+ return order.getStartupOrder();
+ }
+ }
+ return 0;
+ }
+
}
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/util/CamelContextHelperTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/util/CamelContextHelperTest.java?rev=1464566&r1=1464565&r2=1464566&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/util/CamelContextHelperTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/util/CamelContextHelperTest.java Thu Apr 4 14:27:39 2013
@@ -18,6 +18,7 @@ package org.apache.camel.util;
import org.apache.camel.CamelContext;
import org.apache.camel.ContextTestSupport;
+import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.impl.JndiRegistry;
@@ -63,7 +64,24 @@ public class CamelContextHelperTest exte
assertNotNull(foo);
}
+ public void testRouteStartupOrder() throws Exception {
+ context.addRoutes(new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:foo").routeId("foo").startupOrder(222).to("mock:foo");
+ from("direct:bar").routeId("bar").startupOrder(111).to("mock:bar");
+ }
+ });
+
+ assertEquals(111, CamelContextHelper.getRouteStartupOrder(context, "bar"));
+ assertEquals(222, CamelContextHelper.getRouteStartupOrder(context, "foo"));
+
+ // no route with that name
+ assertEquals(0, CamelContextHelper.getRouteStartupOrder(context, "zzz"));
+ }
+
public static class MyFooBean {
}
+
}
Modified: camel/trunk/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/AbstractRouteCommand.java
URL: http://svn.apache.org/viewvc/camel/trunk/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/AbstractRouteCommand.java?rev=1464566&r1=1464565&r2=1464566&view=diff
==============================================================================
--- camel/trunk/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/AbstractRouteCommand.java (original)
+++ camel/trunk/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/AbstractRouteCommand.java Thu Apr 4 14:27:39 2013
@@ -26,6 +26,8 @@ import org.apache.camel.karaf.commands.i
import org.apache.felix.gogo.commands.Argument;
import org.apache.karaf.shell.console.OsgiCommandSupport;
+import static org.apache.camel.util.CamelContextHelper.getRouteStartupOrder;
+
public abstract class AbstractRouteCommand extends OsgiCommandSupport {
@Argument(index = 0, name = "route", description = "The Camel route ID or a wildcard expression", required = true, multiValued = false)
String route;
@@ -74,14 +76,21 @@ public abstract class AbstractRouteComma
@Override
public int compare(Route o1, Route o2) {
// sort by camel context first
- String camel1 = o1.getRouteContext().getCamelContext().getName();
- String camel2 = o2.getRouteContext().getCamelContext().getName();
+ CamelContext camel1 = o1.getRouteContext().getCamelContext();
+ CamelContext camel2 = o2.getRouteContext().getCamelContext();
- if (camel1.equals(camel2)) {
- // and then route names in the same context
- return o1.getId().compareTo(o2.getId());
+ if (camel1.getName().equals(camel2.getName())) {
+ // and then accordingly to startup order
+ int order1 = getRouteStartupOrder(camel1, o1.getId());
+ int order2 = getRouteStartupOrder(camel2, o2.getId());
+ if (order1 == 0 && order2 == 0) {
+ // fallback and use name if not startup order was found
+ return o1.getId().compareTo(o2.getId());
+ } else {
+ return Integer.compare(order1, order2);
+ }
} else {
- return camel1.compareTo(camel2);
+ return camel1.getName().compareTo(camel2.getName());
}
}
}