Author: davsclaus Date: Wed Oct 5 09:46:31 2011 New Revision: 1179126 URL: http://svn.apache.org/viewvc?rev=1179126&view=rev Log: CAMEL-4509: Marshal/unmarshal should clear OUT message case of exception thrown.
Added: camel/branches/camel-2.8.x/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelSetHeaderTest.java - copied unchanged from r1179125, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelSetHeaderTest.java camel/branches/camel-2.8.x/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelUnmarshalSetHeaderTest.java - copied unchanged from r1179125, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelUnmarshalSetHeaderTest.java Modified: camel/branches/camel-2.8.x/ (props changed) camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/processor/MarshalProcessor.java camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/processor/UnmarshalProcessor.java Propchange: camel/branches/camel-2.8.x/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Oct 5 09:46:31 2011 @@ -1 +1 @@ -/camel/trunk:1178509 +/camel/trunk:1178509,1179125 Propchange: camel/branches/camel-2.8.x/ ------------------------------------------------------------------------------ Binary property 'svnmerge-integrated' - no diff available. Modified: camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/processor/MarshalProcessor.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/processor/MarshalProcessor.java?rev=1179126&r1=1179125&r2=1179126&view=diff ============================================================================== --- camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/processor/MarshalProcessor.java (original) +++ camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/processor/MarshalProcessor.java Wed Oct 5 09:46:31 2011 @@ -54,9 +54,15 @@ public class MarshalProcessor extends Se Message out = exchange.getOut(); out.copyFrom(in); - dataFormat.marshal(exchange, body, buffer); - byte[] data = buffer.toByteArray(); - out.setBody(data); + try { + dataFormat.marshal(exchange, body, buffer); + byte[] data = buffer.toByteArray(); + out.setBody(data); + } catch (Exception e) { + // remove OUT message, as an exception occurred + exchange.setOut(null); + throw e; + } } @Override Modified: camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/processor/UnmarshalProcessor.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/processor/UnmarshalProcessor.java?rev=1179126&r1=1179125&r2=1179126&view=diff ============================================================================== --- camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/processor/UnmarshalProcessor.java (original) +++ camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/processor/UnmarshalProcessor.java Wed Oct 5 09:46:31 2011 @@ -26,6 +26,7 @@ import org.apache.camel.Processor; import org.apache.camel.impl.ServiceSupport; import org.apache.camel.spi.DataFormat; import org.apache.camel.util.ExchangeHelper; +import org.apache.camel.util.IOHelper; import org.apache.camel.util.ObjectHelper; import org.apache.camel.util.ServiceHelper; @@ -55,10 +56,12 @@ public class UnmarshalProcessor extends Object result = dataFormat.unmarshal(exchange, stream); out.setBody(result); + } catch (Exception e) { + // remove OUT message, as an exception occurred + exchange.setOut(null); + throw e; } finally { - if (stream != null) { - stream.close(); - } + IOHelper.close(stream, "input stream"); } }