Author: davsclaus
Date: Fri Aug  7 12:51:03 2009
New Revision: 801980

URL: http://svn.apache.org/viewvc?rev=801980&view=rev
Log:
Tuning now more works and we got the use original body to use the facade as 
well and it works nicely with JMS that used to be pesky.

Modified:
    
camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java
    
camel/sandbox/tuning-experiment/components/camel-velocity/src/main/java/org/apache/camel/component/velocity/VelocityEndpoint.java

Modified: 
camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java
URL: 
http://svn.apache.org/viewvc/camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java?rev=801980&r1=801979&r2=801980&view=diff
==============================================================================
--- 
camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java
 (original)
+++ 
camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java
 Fri Aug  7 12:51:03 2009
@@ -47,19 +47,13 @@
     private List<Synchronization> synchronizations;
     private List<RouteNode> routeNodes;
     private Map<ProcessorDefinition, AtomicInteger> routeIndex = new 
HashMap<ProcessorDefinition, AtomicInteger>();
-    private Message originalInMessage;
+    private CopyOnWriteMessageFacade originalInMessage;
 
     public DefaultUnitOfWork(Exchange exchange) {
-        // TODO: optimize to only copy original message if enabled to do so in 
the route
-
-        // special for JmsMessage as it can cause it to loose headers later. 
Yeah JMS suchs
-        if (exchange.getIn().getClass().getSimpleName().equals("JmsMessage")) {
-            this.originalInMessage = new DefaultMessage();
-            this.originalInMessage.setBody(exchange.getIn().getBody());
-            // cannot copy headers with a JmsMessage as the underlying 
javax.jms.Message object goes nuts 
-        } else {
-            this.originalInMessage = exchange.getIn().copy();
-        }
+        // wrap in facade
+        CopyOnWriteMessageFacade facade = new 
CopyOnWriteMessageFacade(exchange.getIn());
+        originalInMessage = facade;
+        exchange.setIn(facade);
     }
 
     public void start() throws Exception {
@@ -155,7 +149,8 @@
     }
 
     public Message getOriginalInMessage() {
-        return originalInMessage;
+        // return the read only view of the original message
+        return originalInMessage.getReadOnlyDelegate();
     }
 
     public int getAndIncrement(ProcessorDefinition node) {

Modified: 
camel/sandbox/tuning-experiment/components/camel-velocity/src/main/java/org/apache/camel/component/velocity/VelocityEndpoint.java
URL: 
http://svn.apache.org/viewvc/camel/sandbox/tuning-experiment/components/camel-velocity/src/main/java/org/apache/camel/component/velocity/VelocityEndpoint.java?rev=801980&r1=801979&r2=801980&view=diff
==============================================================================
--- 
camel/sandbox/tuning-experiment/components/camel-velocity/src/main/java/org/apache/camel/component/velocity/VelocityEndpoint.java
 (original)
+++ 
camel/sandbox/tuning-experiment/components/camel-velocity/src/main/java/org/apache/camel/component/velocity/VelocityEndpoint.java
 Fri Aug  7 12:51:03 2009
@@ -132,6 +132,8 @@
         for (String key : headers.keySet()) {
             out.setHeader(key, headers.get(key));
         }
+        // and copy headers from in as they can have been mutated directly by 
velocity engine
+        out.getHeaders().putAll(exchange.getIn().getHeaders());
     }
 
 }


Reply via email to