Author: ningjiang Date: Fri Jan 11 05:57:47 2013 New Revision: 1431905 URL: http://svn.apache.org/viewvc?rev=1431905&view=rev Log: CAMEL-5950 fixed the issue that Cache producer is not thread safe Merged revisions 1431900,1431904 via svnmerge from https://svn.apache.org/repos/asf/camel/branches/camel-2.10.x
................ r1431900 | ningjiang | 2013-01-11 13:45:26 +0800 (Fri, 11 Jan 2013) | 10 lines CAMEL-5950 fixed the issue that Cache producer is not thread safe Merged revisions 1431891 via svnmerge from https://svn.apache.org/repos/asf/camel/trunk ........ r1431891 | ningjiang | 2013-01-11 13:14:31 +0800 (Fri, 11 Jan 2013) | 1 line CAMEL-5950 fixed the issue that Cache producer is not thread safe ........ ................ r1431904 | ningjiang | 2013-01-11 13:51:50 +0800 (Fri, 11 Jan 2013) | 10 lines CAMEL-5950 removed the System.out.println Merged revisions 1431902 via svnmerge from https://svn.apache.org/repos/asf/camel/trunk ........ r1431902 | ningjiang | 2013-01-11 13:48:19 +0800 (Fri, 11 Jan 2013) | 1 line CAMEL-5950 removed the System.out.println ........ ................ Modified: camel/branches/camel-2.9.x/ (props changed) camel/branches/camel-2.9.x/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheConsumer.java camel/branches/camel-2.9.x/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheProducer.java camel/branches/camel-2.9.x/components/camel-cache/src/test/java/org/apache/camel/component/cache/CacheRegistryRefTest.java Propchange: camel/branches/camel-2.9.x/ ------------------------------------------------------------------------------ Merged /camel/trunk:r1431891,1431902 Merged /camel/branches/camel-2.10.x:r1431900-1431904 Propchange: camel/branches/camel-2.9.x/ ------------------------------------------------------------------------------ Binary property 'svnmerge-integrated' - no diff available. Modified: camel/branches/camel-2.9.x/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheConsumer.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheConsumer.java?rev=1431905&r1=1431904&r2=1431905&view=diff ============================================================================== --- camel/branches/camel-2.9.x/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheConsumer.java (original) +++ camel/branches/camel-2.9.x/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheConsumer.java Fri Jan 11 05:57:47 2013 @@ -16,23 +16,35 @@ */ package org.apache.camel.component.cache; +import net.sf.ehcache.Ehcache; import org.apache.camel.Endpoint; import org.apache.camel.Processor; import org.apache.camel.impl.DefaultConsumer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class CacheConsumer extends DefaultConsumer { + private static final transient Logger LOG = LoggerFactory.getLogger(CacheConsumer.class); - private CacheConfiguration config; + private CacheEventListener cacheEventListener; + + private Ehcache cache; public CacheConsumer(Endpoint endpoint, Processor processor, CacheConfiguration config) { super(endpoint, processor); - this.config = config; } @Override protected void doStart() throws Exception { super.doStart(); createConsumerCacheConnection(); + LOG.debug("initialize the cache"); + } + + @Override + protected void doStop() throws Exception { + // unregisty the listenser when the consumer is stopped + cache.getCacheEventNotificationService().unregisterListener(cacheEventListener); } @Override @@ -41,11 +53,10 @@ public class CacheConsumer extends Defau } protected void createConsumerCacheConnection() { - CacheEventListener cacheEventListener = new CacheEventListener(); + cacheEventListener = new CacheEventListener(); cacheEventListener.setCacheConsumer(this); - - config.getEventListenerRegistry().addCacheEventListener(cacheEventListener); - - getEndpoint().initializeCache(); + cache = getEndpoint().initializeCache(); + // registry the CacheEventListener directly + cache.getCacheEventNotificationService().registerListener(cacheEventListener); } } Modified: camel/branches/camel-2.9.x/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheProducer.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheProducer.java?rev=1431905&r1=1431904&r2=1431905&view=diff ============================================================================== --- camel/branches/camel-2.9.x/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheProducer.java (original) +++ camel/branches/camel-2.9.x/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheProducer.java Fri Jan 11 05:57:47 2013 @@ -43,6 +43,7 @@ public class CacheProducer extends Defau @Override protected void doStart() throws Exception { super.doStart(); + cache = getEndpoint().initializeCache(); } @Override @@ -52,9 +53,6 @@ public class CacheProducer extends Defau public void process(Exchange exchange) throws Exception { LOG.trace("Cache Name: {}", config.getCacheName()); - - cache = getEndpoint().initializeCache(); - String key = exchange.getIn().getHeader(CacheConstants.CACHE_KEY, String.class); String operation = exchange.getIn().getHeader(CacheConstants.CACHE_OPERATION, String.class); Modified: camel/branches/camel-2.9.x/components/camel-cache/src/test/java/org/apache/camel/component/cache/CacheRegistryRefTest.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/components/camel-cache/src/test/java/org/apache/camel/component/cache/CacheRegistryRefTest.java?rev=1431905&r1=1431904&r2=1431905&view=diff ============================================================================== --- camel/branches/camel-2.9.x/components/camel-cache/src/test/java/org/apache/camel/component/cache/CacheRegistryRefTest.java (original) +++ camel/branches/camel-2.9.x/components/camel-cache/src/test/java/org/apache/camel/component/cache/CacheRegistryRefTest.java Fri Jan 11 05:57:47 2013 @@ -56,9 +56,9 @@ public class CacheRegistryRefTest extend @Override public void setUp() throws Exception { - super.setUp(); eventListenerRegistry.addCacheEventListener(new TestCacheEventListener()); loaderRegistry.addCacheLoader(new TestLoader()); + super.setUp(); } @Override @@ -90,7 +90,7 @@ public class CacheRegistryRefTest extend in.setBody("Hello World"); } }); - + CacheManager cm = cacheEndpoint.getCacheManagerFactory().getInstance(); Cache cache = cm.getCache(cacheEndpoint.getConfig().getCacheName()); Set<CacheEventListener> ehcacheEventListners = cache.getCacheEventNotificationService().getCacheEventListeners();
