You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2017/01/09 10:06:59 UTC

camel git commit: camel-ehcache: add some example to configure ehcache via xml

Repository: camel
Updated Branches:
  refs/heads/master 00bb43fe9 -> 34d92293b


camel-ehcache: add some example to configure ehcache via xml


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/34d92293
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/34d92293
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/34d92293

Branch: refs/heads/master
Commit: 34d92293bc52fcf9cea9b6713695f09acd0d1c8c
Parents: 00bb43f
Author: lburgazzoli <lb...@gmail.com>
Authored: Mon Jan 9 11:06:23 2017 +0100
Committer: lburgazzoli <lb...@gmail.com>
Committed: Mon Jan 9 11:06:23 2017 +0100

----------------------------------------------------------------------
 components/camel-ehcache/pom.xml                |  7 +-
 .../ehcache/EhcacheConfigurationTest.java       | 37 +++++++---
 .../EhcacheSpringConfigurationFactory.java      | 61 ++++++++++++++++
 .../ehcache/EhcacheSpringConfigurationTest.java | 77 ++++++++++++++++++++
 .../resources/ehcache/ehcache-file-config.xml   | 33 +++++++++
 .../ehcache/EhcacheSpringConfigurationTest.xml  | 41 +++++++++++
 6 files changed, 245 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/34d92293/components/camel-ehcache/pom.xml
----------------------------------------------------------------------
diff --git a/components/camel-ehcache/pom.xml b/components/camel-ehcache/pom.xml
index 5f12c75..ebf66be 100644
--- a/components/camel-ehcache/pom.xml
+++ b/components/camel-ehcache/pom.xml
@@ -55,7 +55,12 @@
       <groupId>org.apache.camel</groupId>
       <artifactId>camel-test</artifactId>
       <scope>test</scope>
-    </dependency>       
+    </dependency>
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-test-spring</artifactId>
+      <scope>test</scope>
+    </dependency>
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-api</artifactId>

http://git-wip-us.apache.org/repos/asf/camel/blob/34d92293/components/camel-ehcache/src/test/java/org/apache/camel/component/ehcache/EhcacheConfigurationTest.java
----------------------------------------------------------------------
diff --git a/components/camel-ehcache/src/test/java/org/apache/camel/component/ehcache/EhcacheConfigurationTest.java b/components/camel-ehcache/src/test/java/org/apache/camel/component/ehcache/EhcacheConfigurationTest.java
index f1e9df2..8a77fff 100644
--- a/components/camel-ehcache/src/test/java/org/apache/camel/component/ehcache/EhcacheConfigurationTest.java
+++ b/components/camel-ehcache/src/test/java/org/apache/camel/component/ehcache/EhcacheConfigurationTest.java
@@ -30,20 +30,18 @@ import org.ehcache.config.builders.ResourcePoolsBuilder;
 import org.ehcache.config.units.EntryUnit;
 import org.ehcache.config.units.MemoryUnit;
 import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class EhcacheConfigurationTest extends CamelTestSupport {
-    public static final Logger LOGGER = LoggerFactory.getLogger(EhcacheConfigurationTest.class);
-
-    @EndpointInject(uri = "ehcache://myCacheConf?configuration=#myConf")
+    @EndpointInject(uri = "ehcache://myProgrammaticCacheConf?configuration=#myProgrammaticConfiguration")
     private EhcacheEndpoint ehcacheConf;
+    @EndpointInject(uri = "ehcache://myFileCacheConf?keyType=java.lang.String&valueType=java.lang.String&configUri=classpath:ehcache/ehcache-file-config.xml")
+    private EhcacheEndpoint ehcacheFileConf;
 
     @Override
     protected JndiRegistry createRegistry() throws Exception {
         JndiRegistry registry = super.createRegistry();
         registry.bind(
-            "myConf",
+            "myProgrammaticConfiguration",
             CacheConfigurationBuilder.newCacheConfigurationBuilder(
                 String.class,
                 String.class,
@@ -56,11 +54,13 @@ public class EhcacheConfigurationTest extends CamelTestSupport {
         return registry;
     }
 
+    // *****************************
+    // Test
+    // *****************************
+
     @Test
     public void testProgrammaticConfiguration() throws Exception {
-        EhcacheManager manager = ehcacheConf.getManager();
-        Cache<String, String> cache = manager.getCache("myCacheConf", String.class, String.class);
-
+        Cache<String, String> cache = getCache(ehcacheConf, "myProgrammaticCacheConf");
         ResourcePools pools = cache.getRuntimeConfiguration().getResourcePools();
 
         SizedResourcePool h = pools.getPoolForResource(ResourceType.Core.HEAP);
@@ -74,6 +74,21 @@ public class EhcacheConfigurationTest extends CamelTestSupport {
         assertEquals(MemoryUnit.MB, o.getUnit());
     }
 
+    @Test
+    public void testFileConfiguration() throws Exception {
+        Cache<String, String> cache = getCache(ehcacheFileConf, "myFileCacheConf");
+        ResourcePools pools = cache.getRuntimeConfiguration().getResourcePools();
+
+        SizedResourcePool h = pools.getPoolForResource(ResourceType.Core.HEAP);
+        assertNotNull(h);
+        assertEquals(150, h.getSize());
+        assertEquals(EntryUnit.ENTRIES, h.getUnit());
+    }
+
+    protected Cache<String, String> getCache(EhcacheEndpoint endpoint, String cacheName) throws Exception {
+        return endpoint.getManager().getCache(cacheName, String.class, String.class);
+    }
+
     // ****************************
     // Route
     // ****************************
@@ -82,7 +97,9 @@ public class EhcacheConfigurationTest extends CamelTestSupport {
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
             public void configure() {
-                from("direct://start").to(ehcacheConf);
+                from("direct://start")
+                    //.to(ehcacheConf)
+                    .to(ehcacheFileConf);
             }
         };
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/34d92293/components/camel-ehcache/src/test/java/org/apache/camel/component/ehcache/EhcacheSpringConfigurationFactory.java
----------------------------------------------------------------------
diff --git a/components/camel-ehcache/src/test/java/org/apache/camel/component/ehcache/EhcacheSpringConfigurationFactory.java b/components/camel-ehcache/src/test/java/org/apache/camel/component/ehcache/EhcacheSpringConfigurationFactory.java
new file mode 100644
index 0000000..47bef1e
--- /dev/null
+++ b/components/camel-ehcache/src/test/java/org/apache/camel/component/ehcache/EhcacheSpringConfigurationFactory.java
@@ -0,0 +1,61 @@
+/**
+ * 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.ehcache;
+
+import org.ehcache.config.CacheConfiguration;
+import org.ehcache.config.builders.CacheConfigurationBuilder;
+import org.ehcache.config.builders.ResourcePoolsBuilder;
+import org.ehcache.config.units.EntryUnit;
+import org.ehcache.config.units.MemoryUnit;
+import org.springframework.beans.factory.config.AbstractFactoryBean;
+
+public class EhcacheSpringConfigurationFactory extends AbstractFactoryBean<CacheConfiguration> {
+    private Class<?> keyType = Object.class;
+    private Class<?> valueType = Object.class;
+
+    public Class<?> getKeyType() {
+        return keyType;
+    }
+
+    public void setKeyType(Class<?> keyType) {
+        this.keyType = keyType;
+    }
+
+    public Class<?> getValueType() {
+        return valueType;
+    }
+
+    public void setValueType(Class<?> valueType) {
+        this.valueType = valueType;
+    }
+
+    @Override
+    public Class<?> getObjectType() {
+        return CacheConfiguration.class;
+    }
+
+    @Override
+    protected CacheConfiguration createInstance() throws Exception {
+        return CacheConfigurationBuilder.newCacheConfigurationBuilder(
+            keyType,
+            valueType,
+            ResourcePoolsBuilder.newResourcePoolsBuilder()
+                .heap(100, EntryUnit.ENTRIES)
+                .offheap(1, MemoryUnit.MB))
+            .build();
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/34d92293/components/camel-ehcache/src/test/java/org/apache/camel/component/ehcache/EhcacheSpringConfigurationTest.java
----------------------------------------------------------------------
diff --git a/components/camel-ehcache/src/test/java/org/apache/camel/component/ehcache/EhcacheSpringConfigurationTest.java b/components/camel-ehcache/src/test/java/org/apache/camel/component/ehcache/EhcacheSpringConfigurationTest.java
new file mode 100644
index 0000000..b76cf42
--- /dev/null
+++ b/components/camel-ehcache/src/test/java/org/apache/camel/component/ehcache/EhcacheSpringConfigurationTest.java
@@ -0,0 +1,77 @@
+/**
+ * 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.ehcache;
+
+import org.apache.camel.EndpointInject;
+import org.apache.camel.test.spring.CamelSpringTestSupport;
+import org.ehcache.Cache;
+import org.ehcache.config.ResourcePools;
+import org.ehcache.config.ResourceType;
+import org.ehcache.config.SizedResourcePool;
+import org.ehcache.config.units.EntryUnit;
+import org.ehcache.config.units.MemoryUnit;
+import org.junit.Test;
+import org.springframework.context.support.AbstractApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class EhcacheSpringConfigurationTest extends CamelSpringTestSupport {
+
+    @EndpointInject(uri = "ehcache://myProgrammaticCacheConf?configuration=#myProgrammaticConfiguration")
+    private EhcacheEndpoint ehcacheConf;
+    @EndpointInject(uri = "ehcache://myFileCacheConf?keyType=java.lang.String&valueType=java.lang.String&configUri=classpath:ehcache/ehcache-file-config.xml")
+    private EhcacheEndpoint ehcacheFileConf;
+
+    @Override
+    protected AbstractApplicationContext createApplicationContext() {
+        return new ClassPathXmlApplicationContext("org/apache/camel/component/ehcache/EhcacheSpringConfigurationTest.xml");
+    }
+
+    // *****************************
+    // Test
+    // *****************************
+
+    @Test
+    public void testProgrammaticConfiguration() throws Exception {
+        Cache<String, String> cache = getCache(ehcacheConf, "myProgrammaticCacheConf");
+        ResourcePools pools = cache.getRuntimeConfiguration().getResourcePools();
+
+        SizedResourcePool h = pools.getPoolForResource(ResourceType.Core.HEAP);
+        assertNotNull(h);
+        assertEquals(100, h.getSize());
+        assertEquals(EntryUnit.ENTRIES, h.getUnit());
+
+        SizedResourcePool o = pools.getPoolForResource(ResourceType.Core.OFFHEAP);
+        assertNotNull(o);
+        assertEquals(1, o.getSize());
+        assertEquals(MemoryUnit.MB, o.getUnit());
+    }
+
+    @Test
+    public void testFileConfiguration() throws Exception {
+        Cache<String, String> cache = getCache(ehcacheFileConf, "myFileCacheConf");
+        ResourcePools pools = cache.getRuntimeConfiguration().getResourcePools();
+
+        SizedResourcePool h = pools.getPoolForResource(ResourceType.Core.HEAP);
+        assertNotNull(h);
+        assertEquals(150, h.getSize());
+        assertEquals(EntryUnit.ENTRIES, h.getUnit());
+    }
+
+    protected Cache<String, String> getCache(EhcacheEndpoint endpoint, String cacheName) throws Exception {
+        return endpoint.getManager().getCache(cacheName, String.class, String.class);
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/34d92293/components/camel-ehcache/src/test/resources/ehcache/ehcache-file-config.xml
----------------------------------------------------------------------
diff --git a/components/camel-ehcache/src/test/resources/ehcache/ehcache-file-config.xml b/components/camel-ehcache/src/test/resources/ehcache/ehcache-file-config.xml
new file mode 100644
index 0000000..7af9a42
--- /dev/null
+++ b/components/camel-ehcache/src/test/resources/ehcache/ehcache-file-config.xml
@@ -0,0 +1,33 @@
+<!--
+  ~ 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.
+  -->
+<ehcache:config
+    xmlns:ehcache="http://www.ehcache.org/v3"
+    xmlns:jcache="http://www.ehcache.org/v3/jsr107">
+
+  <ehcache:cache alias="myFileCacheConf" uses-template="default-template">
+    <ehcache:key-type>java.lang.String</ehcache:key-type>
+    <ehcache:value-type>java.lang.String</ehcache:value-type>
+    <ehcache:heap unit="entries">150</ehcache:heap>
+  </ehcache:cache>
+
+  <ehcache:cache-template name="default-template">
+    <ehcache:expiry>
+      <ehcache:none/>
+    </ehcache:expiry>
+  </ehcache:cache-template>
+
+</ehcache:config>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/34d92293/components/camel-ehcache/src/test/resources/org/apache/camel/component/ehcache/EhcacheSpringConfigurationTest.xml
----------------------------------------------------------------------
diff --git a/components/camel-ehcache/src/test/resources/org/apache/camel/component/ehcache/EhcacheSpringConfigurationTest.xml b/components/camel-ehcache/src/test/resources/org/apache/camel/component/ehcache/EhcacheSpringConfigurationTest.xml
new file mode 100644
index 0000000..8316113
--- /dev/null
+++ b/components/camel-ehcache/src/test/resources/org/apache/camel/component/ehcache/EhcacheSpringConfigurationTest.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ 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.
+  -->
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="
+         http://www.springframework.org/schema/beans
+         http://www.springframework.org/schema/beans/spring-beans.xsd
+         http://camel.apache.org/schema/spring
+         http://camel.apache.org/schema/spring/camel-spring.xsd">
+
+  <bean id="myProgrammaticConfiguration" class="org.apache.camel.component.ehcache.EhcacheSpringConfigurationFactory">
+    <property name="keyType" value="java.lang.String"/>
+    <property name="valueType" value="java.lang.String"/>
+  </bean>
+
+  <camelContext xmlns="http://camel.apache.org/schema/spring">
+    <route>
+      <from uri="direct:programmatic"/>
+      <to uri="ehcache://myProgrammaticCacheConf?configuration=#myProgrammaticConfiguration"/>
+    </route>
+    <route>
+      <from uri="direct:file"/>
+        <to uri="ehcache://myFileCacheConf?keyType=java.lang.String&amp;valueType=java.lang.String&amp;configUri=classpath:ehcache/ehcache-file-config.xml"/>
+    </route>
+  </camelContext>
+</beans>