You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2011/10/05 11:46:31 UTC

svn commit: r1179126 - in /camel/branches/camel-2.8.x: ./ camel-core/src/main/java/org/apache/camel/processor/ camel-core/src/test/java/org/apache/camel/processor/

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