Author: davsclaus
Date: Wed Aug 25 12:08:44 2010
New Revision: 989045

URL: http://svn.apache.org/viewvc?rev=989045&view=rev
Log:
CAMEL-3078: Setting memory store eviction policy is now possible from endpoint 
uri, due type converter.

Added:
    
camel/trunk/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheConverter.java
   (with props)
    
camel/trunk/components/camel-cache/src/main/resources/META-INF/services/org/apache/camel/TypeConverter
    
camel/trunk/components/camel-cache/src/test/java/org/apache/camel/component/cache/CacheConsumerFIFOTest.java
   (with props)
Modified:
    
camel/trunk/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheConfiguration.java
    
camel/trunk/components/camel-cache/src/test/java/org/apache/camel/component/cache/CacheConsumerTest.java

Modified: 
camel/trunk/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheConfiguration.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheConfiguration.java?rev=989045&r1=989044&r2=989045&view=diff
==============================================================================
--- 
camel/trunk/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheConfiguration.java
 (original)
+++ 
camel/trunk/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheConfiguration.java
 Wed Aug 25 12:08:44 2010
@@ -20,10 +20,7 @@ import java.net.URI;
 import java.util.Map;
 
 import net.sf.ehcache.store.MemoryStoreEvictionPolicy;
-
 import org.apache.camel.util.URISupport;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 
 public class CacheConfiguration {
     private String cacheName;
@@ -78,7 +75,12 @@ public class CacheConfiguration {
         if (cacheSettings.containsKey("diskExpiryThreadIntervalSeconds")) {
             setDiskExpiryThreadIntervalSeconds(Long.valueOf((String) 
cacheSettings.get("diskExpiryThreadIntervalSeconds")).longValue());
         }
-        
+        if (cacheSettings.containsKey("memoryStoreEvictionPolicy")) {
+            String policy = (String) 
cacheSettings.get("memoryStoreEvictionPolicy");
+            // remove leading if any given as fromString uses LRU, LFU or FIFO
+            policy = policy.replace("MemoryStoreEvictionPolicy.", "");
+            
setMemoryStoreEvictionPolicy(MemoryStoreEvictionPolicy.fromString(policy));
+        }
     }
     
     public String getCacheName() {

Added: 
camel/trunk/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheConverter.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheConverter.java?rev=989045&view=auto
==============================================================================
--- 
camel/trunk/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheConverter.java
 (added)
+++ 
camel/trunk/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheConverter.java
 Wed Aug 25 12:08:44 2010
@@ -0,0 +1,41 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.cache;
+
+import net.sf.ehcache.store.MemoryStoreEvictionPolicy;
+import org.apache.camel.Converter;
+
+/**
+ * @version $Revision$
+ */
+...@converter
+public final class CacheConverter {
+
+    private CacheConverter() {
+    }
+
+    @Converter
+    public static MemoryStoreEvictionPolicy toPolicy(String s) {
+        if (s == null) {
+            return null;
+        }
+
+        s = s.replace("MemoryStoreEvictionPolicy.", "");
+        return MemoryStoreEvictionPolicy.fromString(s);
+    }
+
+}

Propchange: 
camel/trunk/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheConverter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
camel/trunk/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheConverter.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: 
camel/trunk/components/camel-cache/src/main/resources/META-INF/services/org/apache/camel/TypeConverter
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-cache/src/main/resources/META-INF/services/org/apache/camel/TypeConverter?rev=989045&view=auto
==============================================================================
--- 
camel/trunk/components/camel-cache/src/main/resources/META-INF/services/org/apache/camel/TypeConverter
 (added)
+++ 
camel/trunk/components/camel-cache/src/main/resources/META-INF/services/org/apache/camel/TypeConverter
 Wed Aug 25 12:08:44 2010
@@ -0,0 +1,18 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+org.apache.camel.component.cache
\ No newline at end of file

Added: 
camel/trunk/components/camel-cache/src/test/java/org/apache/camel/component/cache/CacheConsumerFIFOTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-cache/src/test/java/org/apache/camel/component/cache/CacheConsumerFIFOTest.java?rev=989045&view=auto
==============================================================================
--- 
camel/trunk/components/camel-cache/src/test/java/org/apache/camel/component/cache/CacheConsumerFIFOTest.java
 (added)
+++ 
camel/trunk/components/camel-cache/src/test/java/org/apache/camel/component/cache/CacheConsumerFIFOTest.java
 Wed Aug 25 12:08:44 2010
@@ -0,0 +1,54 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.camel.component.cache;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.builder.RouteBuilder;
+
+public class CacheConsumerFIFOTest extends CacheConsumerTest {
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() {
+                
from("cache://TestCache1?memoryStoreEvictionPolicy=FIFO").process(new 
Processor() {
+                    public void process(Exchange exchange) throws Exception {
+                        String operation = (String) 
exchange.getIn().getHeader(CacheConstants.CACHE_OPERATION);
+                        String key = (String) 
exchange.getIn().getHeader(CacheConstants.CACHE_KEY);
+                        Object body = exchange.getIn().getBody();
+                        String data = 
exchange.getContext().getTypeConverter().convertTo(String.class, body);
+
+                        if (LOG.isDebugEnabled()) {
+                            LOG.debug("------- Cache Event Notification 
---------");
+                            LOG.debug("Received notification for the following 
activity in cache TestCache1:");
+                            LOG.debug("Operation = " + operation);
+                            LOG.debug("key = " + key);
+                            LOG.debug("value = " + data);
+                            LOG.debug("------ End Cache Event Notification 
------");
+                        }
+                    }
+
+                }).to("mock:result");
+
+                from("direct:start").to("cache://TestCache1");
+            }
+        };
+    }
+
+}

Propchange: 
camel/trunk/components/camel-cache/src/test/java/org/apache/camel/component/cache/CacheConsumerFIFOTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
camel/trunk/components/camel-cache/src/test/java/org/apache/camel/component/cache/CacheConsumerFIFOTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: 
camel/trunk/components/camel-cache/src/test/java/org/apache/camel/component/cache/CacheConsumerTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-cache/src/test/java/org/apache/camel/component/cache/CacheConsumerTest.java?rev=989045&r1=989044&r2=989045&view=diff
==============================================================================
--- 
camel/trunk/components/camel-cache/src/test/java/org/apache/camel/component/cache/CacheConsumerTest.java
 (original)
+++ 
camel/trunk/components/camel-cache/src/test/java/org/apache/camel/component/cache/CacheConsumerTest.java
 Wed Aug 25 12:08:44 2010
@@ -34,7 +34,7 @@ import org.apache.commons.logging.LogFac
 import org.junit.Test;
 
 public class CacheConsumerTest extends CamelTestSupport {
-    private static final transient Log LOG = 
LogFactory.getLog(CacheConsumerTest.class);
+    protected static final transient Log LOG = 
LogFactory.getLog(CacheConsumerTest.class);
 
     @EndpointInject(uri = "mock:result")
     protected MockEndpoint resultEndpoint;


Reply via email to