Return-Path: Delivered-To: apmail-camel-commits-archive@www.apache.org Received: (qmail 74434 invoked from network); 7 Aug 2009 12:51:21 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 7 Aug 2009 12:51:21 -0000 Received: (qmail 78639 invoked by uid 500); 7 Aug 2009 12:51:28 -0000 Delivered-To: apmail-camel-commits-archive@camel.apache.org Received: (qmail 78590 invoked by uid 500); 7 Aug 2009 12:51:28 -0000 Mailing-List: contact commits-help@camel.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@camel.apache.org Delivered-To: mailing list commits@camel.apache.org Received: (qmail 78581 invoked by uid 99); 7 Aug 2009 12:51:28 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 07 Aug 2009 12:51:28 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 07 Aug 2009 12:51:24 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 95EDD2388853; Fri, 7 Aug 2009 12:51:03 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r801980 - in /camel/sandbox/tuning-experiment: camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java components/camel-velocity/src/main/java/org/apache/camel/component/velocity/VelocityEndpoint.java Date: Fri, 07 Aug 2009 12:51:03 -0000 To: commits@camel.apache.org From: davsclaus@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20090807125103.95EDD2388853@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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 synchronizations; private List routeNodes; private Map routeIndex = new HashMap(); - 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()); } }