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


Reply via email to