Author: davsclaus Date: Tue Feb 10 17:43:02 2009 New Revision: 743031 URL: http://svn.apache.org/viewvc?rev=743031&view=rev Log: CAMEL-1291: content cache is default for Velocity. Fixed using @deprecated stuff from Velocity.
Modified: camel/trunk/components/camel-velocity/src/main/java/org/apache/camel/component/velocity/VelocityComponent.java camel/trunk/components/camel-velocity/src/main/java/org/apache/camel/component/velocity/VelocityEndpoint.java camel/trunk/components/camel-velocity/src/test/java/org/apache/camel/component/velocity/VelocityContentCacheTest.java Modified: camel/trunk/components/camel-velocity/src/main/java/org/apache/camel/component/velocity/VelocityComponent.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-velocity/src/main/java/org/apache/camel/component/velocity/VelocityComponent.java?rev=743031&r1=743030&r2=743031&view=diff ============================================================================== --- camel/trunk/components/camel-velocity/src/main/java/org/apache/camel/component/velocity/VelocityComponent.java (original) +++ camel/trunk/components/camel-velocity/src/main/java/org/apache/camel/component/velocity/VelocityComponent.java Tue Feb 10 17:43:02 2009 @@ -37,6 +37,9 @@ } protected Endpoint createEndpoint(String uri, String remaining, Map parameters) throws Exception { - return new VelocityEndpoint(uri, this, remaining, parameters); + boolean cache = getAndRemoveParameter(parameters, "contentCache", Boolean.class, Boolean.TRUE); + VelocityEndpoint answer = new VelocityEndpoint(uri, this, remaining, parameters); + answer.setContentCache(cache); + return answer; } } Modified: camel/trunk/components/camel-velocity/src/main/java/org/apache/camel/component/velocity/VelocityEndpoint.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-velocity/src/main/java/org/apache/camel/component/velocity/VelocityEndpoint.java?rev=743031&r1=743030&r2=743031&view=diff ============================================================================== --- camel/trunk/components/camel-velocity/src/main/java/org/apache/camel/component/velocity/VelocityEndpoint.java (original) +++ camel/trunk/components/camel-velocity/src/main/java/org/apache/camel/component/velocity/VelocityEndpoint.java Tue Feb 10 17:43:02 2009 @@ -26,11 +26,12 @@ import org.apache.camel.Message; import org.apache.camel.component.ResourceBasedEndpoint; import org.apache.camel.util.ExchangeHelper; +import org.apache.camel.util.ObjectHelper; import org.apache.velocity.VelocityContext; import org.apache.velocity.app.Velocity; import org.apache.velocity.app.VelocityEngine; import org.apache.velocity.context.Context; -import org.apache.velocity.runtime.log.SimpleLog4JLogSystem; +import org.apache.velocity.runtime.log.Log4JLogChute; import org.springframework.core.io.Resource; /** @@ -61,8 +62,8 @@ if (velocityEngine == null) { velocityEngine = component.getVelocityEngine(); velocityEngine.setProperty(Velocity.FILE_RESOURCE_LOADER_CACHE, isLoaderCache() ? Boolean.TRUE : Boolean.FALSE); - velocityEngine.setProperty(Velocity.RUNTIME_LOG_LOGSYSTEM_CLASS, SimpleLog4JLogSystem.class.getName()); - velocityEngine.setProperty("runtime.log.logsystem.log4j.category", VelocityEndpoint.class.getName()); + velocityEngine.setProperty(Velocity.RUNTIME_LOG_LOGSYSTEM_CLASS, Log4JLogChute.class.getName()); + velocityEngine.setProperty(Log4JLogChute.RUNTIME_LOG_LOG4J_LOGGER, VelocityEndpoint.class.getName()); velocityEngine.init(); } return velocityEngine; @@ -97,6 +98,9 @@ @Override protected void onExchange(Exchange exchange) throws Exception { Resource resource = getResource(); + ObjectHelper.notNull(resource, "resource"); + String path = getResourceUri(); + ObjectHelper.notNull(path, "resourceUri"); // getResourceAsInputStream also considers the content cache Reader reader = encoding != null ? new InputStreamReader(getResourceAsInputStream(), encoding) : new InputStreamReader(getResourceAsInputStream()); @@ -116,6 +120,7 @@ Message out = exchange.getOut(true); out.setBody(buffer.toString()); out.setHeader("org.apache.camel.velocity.resource", resource); + out.setHeader("org.apache.camel.velocity.resourceUri", path); Map<String, Object> headers = (Map<String, Object>)velocityContext.get("headers"); for (String key : headers.keySet()) { out.setHeader(key, headers.get(key)); Modified: camel/trunk/components/camel-velocity/src/test/java/org/apache/camel/component/velocity/VelocityContentCacheTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-velocity/src/test/java/org/apache/camel/component/velocity/VelocityContentCacheTest.java?rev=743031&r1=743030&r2=743031&view=diff ============================================================================== --- camel/trunk/components/camel-velocity/src/test/java/org/apache/camel/component/velocity/VelocityContentCacheTest.java (original) +++ camel/trunk/components/camel-velocity/src/test/java/org/apache/camel/component/velocity/VelocityContentCacheTest.java Tue Feb 10 17:43:02 2009 @@ -68,12 +68,32 @@ mock.assertIsSatisfied(); } + public void testCachedIsDefault() 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 + template.sendBodyAndHeader("file://target/test-classes/org/apache/camel/component/velocity?append=false", "Bye $headers.name", FileComponent.HEADER_FILE_NAME, "hello.vm"); + + 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(); + } + protected RouteBuilder createRouteBuilder() throws Exception { return new RouteBuilder() { public void configure() throws Exception { from("direct:a").to("velocity://org/apache/camel/component/velocity/hello.vm?contentCache=false").to("mock:result"); from("direct:b").to("velocity://org/apache/camel/component/velocity/hello.vm?contentCache=true").to("mock:result"); + + from("direct:c").to("velocity://org/apache/camel/component/velocity/hello.vm").to("mock:result"); } }; }