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


Reply via email to