You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2013/10/01 13:47:39 UTC

svn commit: r1528051 - /cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java

Author: sergeyb
Date: Tue Oct  1 11:47:39 2013
New Revision: 1528051

URL: http://svn.apache.org/r1528051
Log:
[CXF-5300] CXF InInterceptor fault mapping is done by default on the trunk, optional in CXF 2.7.x

Modified:
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java?rev=1528051&r1=1528050&r2=1528051&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java Tue Oct  1 11:47:39 2013
@@ -252,30 +252,34 @@ public class JAXRSInInterceptor extends 
     public void handleFault(Message message) {
         super.handleFault(message);
         
-        Response r = JAXRSUtils.convertFaultToResponse(message.getContent(Exception.class), 
-                                                       message);
-        if (r != null) {
-            message.removeContent(Exception.class);
-            message.getInterceptorChain().setFaultObserver(null);
-            if (message.getContextualProperty(FaultListener.class.getName()) == null) {
-                message.put(FaultListener.class.getName(), new NoOpFaultListener());
-            }
-            
-            Endpoint e = message.getExchange().get(Endpoint.class);
-            Message mout = new MessageImpl();
-            mout.setContent(List.class, new MessageContentsList(r));
-            mout.setExchange(message.getExchange());
-            mout = e.getBinding().createMessage(mout);
-            mout.setInterceptorChain(OutgoingChainInterceptor.getOutInterceptorChain(message.getExchange()));
-            message.getExchange().setOutMessage(mout);
-            
-            
-            Iterator<Interceptor<? extends Message>> iterator = message.getInterceptorChain().iterator();
-            while (iterator.hasNext()) {
-                Interceptor<? extends Message> inInterceptor = iterator.next();
-                if (inInterceptor.getClass() == OutgoingChainInterceptor.class) {
-                    ((OutgoingChainInterceptor)inInterceptor).handleMessage(message);
-                    return;
+        Object mapProp = message.getContextualProperty("map.cxf.interceptor.fault");
+        if (mapProp == null || MessageUtils.isTrue(mapProp)) {
+        
+            Response r = JAXRSUtils.convertFaultToResponse(message.getContent(Exception.class), 
+                                                           message);
+            if (r != null) {
+                message.removeContent(Exception.class);
+                message.getInterceptorChain().setFaultObserver(null);
+                if (message.getContextualProperty(FaultListener.class.getName()) == null) {
+                    message.put(FaultListener.class.getName(), new NoOpFaultListener());
+                }
+                
+                Endpoint e = message.getExchange().get(Endpoint.class);
+                Message mout = new MessageImpl();
+                mout.setContent(List.class, new MessageContentsList(r));
+                mout.setExchange(message.getExchange());
+                mout = e.getBinding().createMessage(mout);
+                mout.setInterceptorChain(OutgoingChainInterceptor.getOutInterceptorChain(message.getExchange()));
+                message.getExchange().setOutMessage(mout);
+                
+                
+                Iterator<Interceptor<? extends Message>> iterator = message.getInterceptorChain().iterator();
+                while (iterator.hasNext()) {
+                    Interceptor<? extends Message> inInterceptor = iterator.next();
+                    if (inInterceptor.getClass() == OutgoingChainInterceptor.class) {
+                        ((OutgoingChainInterceptor)inInterceptor).handleMessage(message);
+                        return;
+                    }
                 }
             }
         }