Author: ningjiang Date: Mon Apr 20 09:57:03 2009 New Revision: 766633 URL: http://svn.apache.org/viewvc?rev=766633&view=rev Log: CAMEL-1547, CAMEL-1546 resolved some issues of restarting the CamelContext
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Delayer.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/impl/DefaultCamelContextTest.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=766633&r1=766632&r2=766633&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 Mon Apr 20 09:57:03 2009 @@ -84,7 +84,7 @@ private static final transient Log LOG = LogFactory.getLog(DefaultCamelContext.class); private static final String NAME_PREFIX = "camel-"; private static int nameSuffix; - + private boolean routeDefinitionInitiated; private String name; private final Map<String, Endpoint> endpoints = new HashMap<String, Endpoint>(); private final Map<String, Component> components = new HashMap<String, Component>(); @@ -808,7 +808,7 @@ if (getStreamCache()) { // only add a new stream cache if not already configured - if (StreamCaching.getStreamCache(this) == null) { + if (StreamCaching.getStreamCaching(this) == null) { LOG.debug("StreamCaching is enabled"); addInterceptStrategy(new StreamCaching()); } @@ -855,7 +855,11 @@ startServices(component); } } - startRouteDefinitions(routeDefinitions); + // To avoid initiating the routeDefinitions after stopping the camel context + if (!routeDefinitionInitiated) { + startRouteDefinitions(routeDefinitions); + routeDefinitionInitiated = true; + } } protected void startRouteDefinitions(Collection<RouteDefinition> list) throws Exception { @@ -887,7 +891,7 @@ stopServices(component); } } - routeServices.clear(); + servicesToClose.clear(); LOG.info("Apache Camel " + getVersion() + " (CamelContext:" + getName() + ") stopped"); } Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Delayer.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Delayer.java?rev=766633&r1=766632&r2=766633&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Delayer.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Delayer.java Mon Apr 20 09:57:03 2009 @@ -44,11 +44,11 @@ * @param context the camel context the delayer is connected to * @return the delayer or null if none can be found */ - public static DelayInterceptor getDelayer(CamelContext context) { + public static Delayer getDelayer(CamelContext context) { List<InterceptStrategy> list = context.getInterceptStrategies(); for (InterceptStrategy interceptStrategy : list) { - if (interceptStrategy instanceof DelayInterceptor) { - return (DelayInterceptor)interceptStrategy; + if (interceptStrategy instanceof Delayer) { + return (Delayer)interceptStrategy; } } return null; 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=766633&r1=766632&r2=766633&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 Mon Apr 20 09:57:03 2009 @@ -34,17 +34,17 @@ } /** - * A helper method to return the StreamCacheInterceptor instance + * A helper method to return the StreamCaching instance * for a given {...@link org.apache.camel.CamelContext} if one is enabled * * @param context the camel context the stream cache is connected to * @return the stream cache or null if none can be found */ - public static StreamCachingInterceptor getStreamCache(CamelContext context) { + public static StreamCaching getStreamCaching(CamelContext context) { List<InterceptStrategy> list = context.getInterceptStrategies(); for (InterceptStrategy interceptStrategy : list) { - if (interceptStrategy instanceof StreamCachingInterceptor) { - return (StreamCachingInterceptor)interceptStrategy; + if (interceptStrategy instanceof StreamCaching) { + return (StreamCaching)interceptStrategy; } } return null; Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextTest.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextTest.java?rev=766633&r1=766632&r2=766633&view=diff ============================================================================== --- camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextTest.java (original) +++ camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextTest.java Mon Apr 20 09:57:03 2009 @@ -91,13 +91,18 @@ } }); ctx.start(); - assertEquals("Should have one RouteService", ctx.getRouteServices().size(), 1); - ctx.stop(); - assertEquals("The RouteService should be removed ", ctx.getRouteServices().size(), 0); + assertEquals("Should have one RouteService", ctx.getRouteServices().size(), 1); + String routesString = ctx.getRoutes().toString(); + System.out.println("The routes is " + ctx.getRoutes()); + ctx.stop(); + assertEquals("The RouteService should be removed ", ctx.getRouteServices().size(), 1); ctx.start(); assertEquals("Should have one RouteService", ctx.getRouteServices().size(), 1); + System.out.println("The routes is " + ctx.getRoutes()); + assertEquals("The Routes should be same", routesString, ctx.getRoutes().toString()); ctx.stop(); - assertEquals("The RouteService should be removed ", ctx.getRouteServices().size(), 0); + assertEquals("The RouteService should be removed ", ctx.getRouteServices().size(), 1); + } }