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