You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2011/12/02 08:27:26 UTC

svn commit: r1209377 - in /camel/trunk/components/camel-freemarker/src: main/java/org/apache/camel/component/freemarker/FreemarkerComponent.java test/java/org/apache/camel/component/freemarker/FreemarkerContentCacheTest.java

Author: ningjiang
Date: Fri Dec  2 07:27:25 2011
New Revision: 1209377

URL: http://svn.apache.org/viewvc?rev=1209377&view=rev
Log:
CAMEL-4732 Allow camel-freemarker template cache duration to be specified

Modified:
    camel/trunk/components/camel-freemarker/src/main/java/org/apache/camel/component/freemarker/FreemarkerComponent.java
    camel/trunk/components/camel-freemarker/src/test/java/org/apache/camel/component/freemarker/FreemarkerContentCacheTest.java

Modified: camel/trunk/components/camel-freemarker/src/main/java/org/apache/camel/component/freemarker/FreemarkerComponent.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-freemarker/src/main/java/org/apache/camel/component/freemarker/FreemarkerComponent.java?rev=1209377&r1=1209376&r2=1209377&view=diff
==============================================================================
--- camel/trunk/components/camel-freemarker/src/main/java/org/apache/camel/component/freemarker/FreemarkerComponent.java (original)
+++ camel/trunk/components/camel-freemarker/src/main/java/org/apache/camel/component/freemarker/FreemarkerComponent.java Fri Dec  2 07:27:25 2011
@@ -47,6 +47,10 @@ public class FreemarkerComponent extends
         boolean cache = getAndRemoveParameter(parameters, "contentCache", Boolean.class, Boolean.TRUE);
         if (cache) {
             config = getConfiguration();
+            int templateUpdateDelay = getAndRemoveParameter(parameters, "templateUpdateDelay", Integer.class, 0);
+            if (templateUpdateDelay > 0) {
+                config.setTemplateUpdateDelay(templateUpdateDelay);
+            }
         } else {
             config = getNoCacheConfiguration();
         }

Modified: camel/trunk/components/camel-freemarker/src/test/java/org/apache/camel/component/freemarker/FreemarkerContentCacheTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-freemarker/src/test/java/org/apache/camel/component/freemarker/FreemarkerContentCacheTest.java?rev=1209377&r1=1209376&r2=1209377&view=diff
==============================================================================
--- camel/trunk/components/camel-freemarker/src/test/java/org/apache/camel/component/freemarker/FreemarkerContentCacheTest.java (original)
+++ camel/trunk/components/camel-freemarker/src/test/java/org/apache/camel/component/freemarker/FreemarkerContentCacheTest.java Fri Dec  2 07:27:25 2011
@@ -72,6 +72,36 @@ public class FreemarkerContentCacheTest 
         template.sendBodyAndHeader("direct:b", "Body", "name", "Paris");
         mock.assertIsSatisfied();
     }
+    
+    @Test
+    public void testTemplateUpdateDelay() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:result");
+        mock.expectedBodiesReceived("Hello London");
+
+        template.sendBodyAndHeader("direct:c", "Body", "name", "London");
+        mock.assertIsSatisfied();
+
+        // now change content in the file in the classpath and try again .... with no delay
+        template.sendBodyAndHeader("file://target/test-classes/org/apache/camel/component/freemarker?fileExist=Override", "Bye ${headers.name}", Exchange.FILE_NAME, "hello.ftl");
+
+        mock.reset();
+        // we must expected the original filecontent as the cache is enabled, so its Hello and not Bye
+        mock.expectedBodiesReceived("Hello Paris");
+
+        template.sendBodyAndHeader("direct:c", "Body", "name", "Paris");
+        mock.assertIsSatisfied();
+
+        // now change content in the file in the classpath and try again .... after delaying longer than the cache update delay
+        Thread.sleep(5000);
+        template.sendBodyAndHeader("file://target/test-classes/org/apache/camel/component/freemarker?fileExist=Override", "Bye ${headers.name}", Exchange.FILE_NAME, "hello.ftl");
+
+        mock.reset();
+        // we must expected the new content, because the cache has expired
+        mock.expectedBodiesReceived("Bye Paris");
+        template.sendBodyAndHeader("direct:c", "Body", "name", "Paris");
+        mock.assertIsSatisfied();
+    }
+
 
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
@@ -79,6 +109,8 @@ public class FreemarkerContentCacheTest 
                 from("direct:a").to("freemarker://org/apache/camel/component/freemarker/hello.ftl?contentCache=false").to("mock:result");
 
                 from("direct:b").to("freemarker://org/apache/camel/component/freemarker/hello.ftl?contentCache=true").to("mock:result");
+                
+                from("direct:c").to("freemarker://org/apache/camel/component/freemarker/hello.ftl?contentCache=true&templateUpdateDelay=4").to("mock:result");
             }
         };
     }