Author: ffang
Date: Tue Mar 11 08:40:41 2014
New Revision: 1576231

URL: http://svn.apache.org/r1576231
Log:
[SMX4-1719]NMRDestination would miss return exception in OutInterceptorChain in 
some cases

Modified:
    
servicemix/smx4/features/branches/features-4.5.x/cxf/cxf-transport-nmr/src/main/java/org/apache/servicemix/cxf/transport/nmr/NMRDestinationOutputStream.java

Modified: 
servicemix/smx4/features/branches/features-4.5.x/cxf/cxf-transport-nmr/src/main/java/org/apache/servicemix/cxf/transport/nmr/NMRDestinationOutputStream.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/features/branches/features-4.5.x/cxf/cxf-transport-nmr/src/main/java/org/apache/servicemix/cxf/transport/nmr/NMRDestinationOutputStream.java?rev=1576231&r1=1576230&r2=1576231&view=diff
==============================================================================
--- 
servicemix/smx4/features/branches/features-4.5.x/cxf/cxf-transport-nmr/src/main/java/org/apache/servicemix/cxf/transport/nmr/NMRDestinationOutputStream.java
 (original)
+++ 
servicemix/smx4/features/branches/features-4.5.x/cxf/cxf-transport-nmr/src/main/java/org/apache/servicemix/cxf/transport/nmr/NMRDestinationOutputStream.java
 Tue Mar 11 08:40:41 2014
@@ -78,9 +78,25 @@ public class NMRDestinationOutputStream 
                 return;
             } else {
                 InputStream bais = getInputStream();
+                Exchange xchng = inMessage.get(Exchange.class);
+                if (inMessage.getExchange().getOutFaultMessage() != null
+                    && 
inMessage.getExchange().getOutFaultMessage().getContent(Exception.class) != 
null) {
+                    //check if there is an OutFaultMessage and Exception here 
first and return the Error fast
+                    Exception ex = 
inMessage.getExchange().getOutFaultMessage().getContent(Exception.class);
+                    if (ex instanceof org.apache.cxf.interceptor.Fault) {
+                        org.apache.cxf.interceptor.Fault f = 
(org.apache.cxf.interceptor.Fault)ex;
+                        if (!f.hasDetails()) {
+                            xchng.setError(f);
+                        }
+                    } else {
+                        xchng.setError(ex);
+                    }
+                    channel.send(xchng);
+                    return;
+                }
+
                 StreamSource ss = new StreamSource(bais);
                            
-                Exchange xchng = inMessage.get(Exchange.class);
                 LOG.fine(new 
org.apache.cxf.common.i18n.Message("CREATE.NORMALIZED.MESSAGE", 
LOG).toString());
                 if (inMessage.getExchange().getOutFaultMessage() != null) {
                     Exception ex = inMessage.getContent(Exception.class);


Reply via email to