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 2009/06/17 13:54:25 UTC
svn commit: r785564 - in /camel/trunk:
camel-core/src/main/java/org/apache/camel/impl/ components/camel-spring/
components/camel-spring/src/main/java/org/apache/camel/spring/
Author: davsclaus
Date: Wed Jun 17 11:54:25 2009
New Revision: 785564
URL: http://svn.apache.org/viewvc?rev=785564&view=rev
Log:
CAMEL-1711: Fixed bug where the Camel routes will be started more than once if spring sends multiple refresh events.
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
camel/trunk/components/camel-spring/pom.xml
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.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=785564&r1=785563&r2=785564&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 Wed Jun 17 11:54:25 2009
@@ -855,6 +855,7 @@
public void start() throws Exception {
super.start();
+ LOG.debug("Starting routes");
// the context is now considered started (i.e. isStarted() == true))
// starting routes is done after, not during context startup
synchronized (this) {
@@ -862,8 +863,7 @@
routeService.start();
}
}
-
- producerServicePool.stop();
+ LOG.debug("Started routes");
LOG.info("Apache Camel " + getVersion() + " (CamelContext:" + getName() + ") started");
}
@@ -874,7 +874,7 @@
protected void doStart() throws Exception {
LOG.info("Apache Camel " + getVersion() + " (CamelContext:" + getName() + ") is starting");
- producerServicePool.start();
+ startServices(producerServicePool);
if (isStreamCacheEnabled()) {
// only add a new stream cache if not already configured
@@ -941,6 +941,21 @@
}
}
+ protected synchronized void doStop() throws Exception {
+ LOG.info("Apache Camel " + getVersion() + " (CamelContext:" + getName() + ") is stopping");
+ stopServices(routeServices.values());
+ stopServices(servicesToClose);
+ if (components != null) {
+ for (Component component : components.values()) {
+ stopServices(component);
+ }
+ }
+ servicesToClose.clear();
+ stopServices(producerServicePool);
+
+ LOG.info("Apache Camel " + getVersion() + " (CamelContext:" + getName() + ") stopped");
+ }
+
protected void startRouteDefinitions(Collection<RouteDefinition> list) throws Exception {
if (list != null) {
for (RouteDefinition route : list) {
@@ -961,20 +976,6 @@
}
}
- protected synchronized void doStop() throws Exception {
- LOG.info("Apache Camel " + getVersion() + " (CamelContext:" + getName() + ") is stopping");
- stopServices(routeServices.values());
- stopServices(servicesToClose);
- if (components != null) {
- for (Component component : components.values()) {
- stopServices(component);
- }
- }
-
- servicesToClose.clear();
- LOG.info("Apache Camel " + getVersion() + " (CamelContext:" + getName() + ") stopped");
- }
-
/**
* Lets force some lazy initialization to occur upfront before we start any
* components and create routes
@@ -1161,4 +1162,9 @@
return routeServices;
}
+ @Override
+ public String toString() {
+ return "DefaultCamelContext(" + getName() + ")";
+ }
+
}
Modified: camel/trunk/components/camel-spring/pom.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/pom.xml?rev=785564&r1=785563&r2=785564&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/pom.xml (original)
+++ camel/trunk/components/camel-spring/pom.xml Wed Jun 17 11:54:25 2009
@@ -40,7 +40,6 @@
org.apache.camel.spring.*;${camel.osgi.version},
org.apache.camel.component;${camel.osgi.split.pkg};${camel.osgi.version},
org.apache.camel.component.event;${camel.osgi.split.pkg};${camel.osgi.version},
- org.apache.camel.component.file;${camel.osgi.split.pkg};${camel.osgi.version},
org.apache.camel.component.test;${camel.osgi.split.pkg};${camel.osgi.version},
org.apache.camel.component.validator;${camel.osgi.split.pkg};${camel.osgi.version},
org.apache.camel.component.xslt;${camel.osgi.split.pkg};${camel.osgi.version}
Modified: camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java?rev=785564&r1=785563&r2=785564&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java (original)
+++ camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java Wed Jun 17 11:54:25 2009
@@ -816,7 +816,7 @@
PackageScanDefinition packageScanDef = getPackageScan();
if (getPackages() != null && getPackages().length > 0) {
- LOG.warn("Using a packages element to specify packages to search has been deprecated. Please use a package-scan element instead.");
+ LOG.warn("Using a packages element to specify packages to search has been deprecated. Please use a packageScan element instead.");
if (packageScanDef == null) {
packageScanDef = new PackageScanDefinition();
setPackageScan(packageScanDef);
Modified: camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java?rev=785564&r1=785563&r2=785564&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java (original)
+++ camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java Wed Jun 17 11:54:25 2009
@@ -53,7 +53,8 @@
* @version $Revision$
*/
public class SpringCamelContext extends DefaultCamelContext implements InitializingBean, DisposableBean,
- ApplicationContextAware, ApplicationListener {
+ ApplicationContextAware, ApplicationListener {
+
private static final transient Log LOG = LogFactory.getLog(SpringCamelContext.class);
private ApplicationContext applicationContext;
private EventEndpoint eventEndpoint;
@@ -78,7 +79,6 @@
return answer;
}
-
public static SpringCamelContext springCamelContext(String configLocations) throws Exception {
return springCamelContext(new ClassPathXmlApplicationContext(configLocations));
}
@@ -88,11 +88,17 @@
}
private void maybeStart() throws Exception {
- if (getShouldStartContext()) {
- LOG.debug("Starting the CamelContext now that the ApplicationContext has started");
+ if (!getShouldStartContext()) {
+ LOG.info("Not starting Apache Camel as property ShouldStartContext is false");
+ return;
+ }
+
+ if (!isStarted()) {
+ LOG.info("Starting Apache Camel as property ShouldStartContext is true");
start();
} else {
- LOG.debug("Not starting the CamelContext since shouldStartContext property was false.");
+ // ignore as Camel is already started
+ LOG.trace("Ignoring maybeStart() as Apache Camel is already started");
}
}
@@ -102,7 +108,7 @@
public void onApplicationEvent(ApplicationEvent event) {
if (LOG.isDebugEnabled()) {
- LOG.debug("Publishing spring-event: " + event);
+ LOG.debug("onApplicationEvent: " + event);
}
if (event instanceof ContextRefreshedEvent) {
@@ -113,15 +119,12 @@
} catch (Exception e) {
throw wrapRuntimeCamelException(e);
}
- if (eventEndpoint != null) {
- eventEndpoint.onApplicationEvent(event);
- }
+ }
+
+ if (eventEndpoint != null) {
+ eventEndpoint.onApplicationEvent(event);
} else {
- if (eventEndpoint != null) {
- eventEndpoint.onApplicationEvent(event);
- } else {
- LOG.warn("No spring-event endpoint enabled for: " + event);
- }
+ LOG.warn("No spring-event endpoint enabled to handle event: " + event);
}
}
@@ -177,8 +180,7 @@
}
protected EventEndpoint createEventEndpoint() {
- EventEndpoint endpoint = getEndpoint("spring-event:default", EventEndpoint.class);
- return endpoint;
+ return getEndpoint("spring-event:default", EventEndpoint.class);
}
protected Endpoint convertBeanToEndpoint(String uri, Object bean) {
@@ -203,6 +205,16 @@
public boolean getShouldStartContext() {
return shouldStartContext;
- }
-
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("SpringCamelContext(").append(getName()).append(")");
+ if (applicationContext != null) {
+ sb.append(" with spring id ").append(applicationContext.getId());
+ }
+ return sb.toString();
+ }
+
}