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);