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/07/25 09:27:14 UTC
svn commit: r978994 - in /camel/trunk/camel-core/src:
main/java/org/apache/camel/ main/java/org/apache/camel/impl/
test/java/org/apache/camel/ test/java/org/apache/camel/component/timer/
Author: davsclaus
Date: Sun Jul 25 07:27:13 2010
New Revision: 978994
URL: http://svn.apache.org/viewvc?rev=978994&view=rev
Log:
CAMEL-2991: Restart CamelContext should re-initialize type converters.
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/impl/DefaultProducerTemplate.java
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ServiceSupport.java
camel/trunk/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java
camel/trunk/camel-core/src/test/java/org/apache/camel/component/timer/TimerRestartTest.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=978994&r1=978993&r2=978994&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 Sun Jul 25 07:27:13 2010
@@ -164,9 +164,7 @@ public interface CamelContext extends Se
*
* @param componentName the component name to remove
* @return the previously added component or null if it had not been previously added.
- * @deprecated will be removed in Camel 2.5
*/
- @Deprecated
Component removeComponent(String componentName);
// Endpoint Management Methods
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=978994&r1=978993&r2=978994&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 Sun Jul 25 07:27:13 2010
@@ -352,6 +352,14 @@ public class DefaultCamelContext extends
endpoints.remove(endpoint.getEndpointUri());
}
}
+
+ // notify lifecycle its being removed
+ for (Endpoint endpoint : answer) {
+ for (LifecycleStrategy strategy : lifecycleStrategies) {
+ strategy.onEndpointRemove(endpoint);
+ }
+ }
+
return answer;
}
@@ -776,6 +784,9 @@ public class DefaultCamelContext extends
}
public LanguageResolver getLanguageResolver() {
+ if (languageResolver == null) {
+ languageResolver = new DefaultLanguageResolver();
+ }
return languageResolver;
}
@@ -1153,6 +1164,9 @@ public class DefaultCamelContext extends
// shutdown management as the last one
shutdownServices(managementStrategy);
+ // stop the lazy created so they can be re-created on restart
+ forceStopLazyInitialization();
+
stopWatch.stop();
if (LOG.isInfoEnabled()) {
LOG.info("Uptime: " + getUptime());
@@ -1415,10 +1429,21 @@ public class DefaultCamelContext extends
protected void forceLazyInitialization() {
getInjector();
getLanguageResolver();
+ getTypeConverterRegistry();
getTypeConverter();
}
/**
+ * Lets force clear lazy initialization so they can be re-created on restart
+ */
+ protected void forceStopLazyInitialization() {
+ injector = null;
+ languageResolver = null;
+ typeConverterRegistry = null;
+ typeConverter = null;
+ }
+
+ /**
* Lazily create a default implementation
*/
protected TypeConverter createTypeConverter() {
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerTemplate.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerTemplate.java?rev=978994&r1=978993&r2=978994&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerTemplate.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerTemplate.java Sun Jul 25 07:27:13 2010
@@ -47,9 +47,9 @@ import org.apache.camel.util.ServiceHelp
*/
public class DefaultProducerTemplate extends ServiceSupport implements ProducerTemplate {
private final CamelContext context;
- private ProducerCache producerCache;
+ private volatile ProducerCache producerCache;
+ private volatile ExecutorService executor;
private Endpoint defaultEndpoint;
- private ExecutorService executor;
private int maximumCacheSize;
public DefaultProducerTemplate(CamelContext context) {
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ServiceSupport.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ServiceSupport.java?rev=978994&r1=978993&r2=978994&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ServiceSupport.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ServiceSupport.java Sun Jul 25 07:27:13 2010
@@ -159,21 +159,21 @@ public abstract class ServiceSupport imp
}
/**
- * @return true if this service is
+ * @return true if this service is being started
*/
public boolean isStarting() {
return starting.get();
}
/**
- * @return true if this service is in the process of closing
+ * @return true if this service is in the process of stopping
*/
public boolean isStopping() {
return stopping.get();
}
/**
- * @return true if this service is closed
+ * @return true if this service is stopped
*/
public boolean isStopped() {
return stopped.get();
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java?rev=978994&r1=978993&r2=978994&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java Sun Jul 25 07:27:13 2010
@@ -36,9 +36,9 @@ import org.apache.camel.util.jndi.JndiTe
*/
public abstract class ContextTestSupport extends TestSupport {
- protected CamelContext context;
- protected ProducerTemplate template;
- protected ConsumerTemplate consumer;
+ protected volatile CamelContext context;
+ protected volatile ProducerTemplate template;
+ protected volatile ConsumerTemplate consumer;
private boolean useRouteBuilder = true;
private Service camelContextService;
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/component/timer/TimerRestartTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/timer/TimerRestartTest.java?rev=978994&r1=978993&r2=978994&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/component/timer/TimerRestartTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/component/timer/TimerRestartTest.java Sun Jul 25 07:27:13 2010
@@ -24,6 +24,7 @@ import org.apache.camel.component.mock.M
* @version $Revision$
*/
public class TimerRestartTest extends ContextTestSupport {
+
public void testTimerRestart() throws Exception {
MockEndpoint mock = getMockEndpoint("mock:result");
mock.expectedMinimumMessageCount(1);