Author: ningjiang
Date: Tue Nov  8 14:30:46 2011
New Revision: 1199260

URL: http://svn.apache.org/viewvc?rev=1199260&view=rev
Log:
CAMEL-4644 MessageDataFormatFeature should keep the LoggingOutInterceptor

Modified:
    
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/feature/MessageDataFormatFeature.java
    
camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/GreeterEndpointBeans.xml

Modified: 
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/feature/MessageDataFormatFeature.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/feature/MessageDataFormatFeature.java?rev=1199260&r1=1199259&r2=1199260&view=diff
==============================================================================
--- 
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/feature/MessageDataFormatFeature.java
 (original)
+++ 
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/feature/MessageDataFormatFeature.java
 Tue Nov  8 14:30:46 2011
@@ -24,6 +24,7 @@ import org.apache.cxf.Bus;
 import org.apache.cxf.endpoint.Client;
 import org.apache.cxf.endpoint.Server;
 import org.apache.cxf.interceptor.Interceptor;
+import org.apache.cxf.interceptor.LoggingOutInterceptor;
 import org.apache.cxf.message.Message;
 import org.apache.cxf.phase.Phase;
 import org.slf4j.Logger;
@@ -54,15 +55,21 @@ public class MessageDataFormatFeature ex
 
     @Override
     public void initialize(Client client, Bus bus) {
-
+        //check if there is logging interceptor
+        
         removeInterceptorWhichIsOutThePhases(client.getInInterceptors(), 
REMAINING_IN_PHASES);
         
removeInterceptorWhichIsOutThePhases(client.getEndpoint().getInInterceptors(), 
REMAINING_IN_PHASES);
         client.getEndpoint().getBinding().getInInterceptors().clear();
 
+        //we need to keep the LoggingOutputInterceptor
+        Interceptor<? extends Message> loggingOutputInterceptor =  
getLoggingOutInterceptor(client);
         removeInterceptorWhichIsOutThePhases(client.getOutInterceptors(), 
REMAINING_OUT_PHASES);
         
removeInterceptorWhichIsOutThePhases(client.getEndpoint().getOutInterceptors(), 
REMAINING_OUT_PHASES);
         client.getEndpoint().getBinding().getOutInterceptors().clear();
         client.getEndpoint().getOutInterceptors().add(new 
RawMessageContentRedirectInterceptor());
+        if (loggingOutputInterceptor != null) {
+            
client.getEndpoint().getOutInterceptors().add(loggingOutputInterceptor);
+        }
     }
 
     @Override
@@ -81,6 +88,9 @@ public class MessageDataFormatFeature ex
             server.getEndpoint().getInInterceptors().add(wsdlGetInterceptor);
         }
         
+        //we need to keep the LoggingOutputInterceptor
+        Interceptor<? extends Message> loggingOutputInterceptor =  
getLoggingOutInterceptor(server);
+        
         // Do not using the binding interceptor any more
         server.getEndpoint().getBinding().getInInterceptors().clear();
 
@@ -90,6 +100,10 @@ public class MessageDataFormatFeature ex
         // Do not use the binding interceptor any more
         server.getEndpoint().getBinding().getOutInterceptors().clear();
         server.getEndpoint().getOutInterceptors().add(new 
RawMessageContentRedirectInterceptor());
+        
+        if (loggingOutputInterceptor != null) {
+            
server.getEndpoint().getOutInterceptors().add(loggingOutputInterceptor);
+        }
     }
 
     @Override
@@ -105,5 +119,21 @@ public class MessageDataFormatFeature ex
         } 
         return null;
     }
+    
+    protected Interceptor<? extends Message> getLoggingOutInterceptor(Client 
client) {
+        Interceptor<? extends Message> result = 
getInterceptorByName(client.getOutInterceptors(), 
LoggingOutInterceptor.class.getName());
+        if (result == null) {
+            result = 
getInterceptorByName(client.getEndpoint().getOutInterceptors(), 
LoggingOutInterceptor.class.getName());
+        }
+        return result;
+    }
+    
+    protected Interceptor<? extends Message> getLoggingOutInterceptor(Server 
server) {
+        Interceptor<? extends Message> result = 
getInterceptorByName(server.getEndpoint().getOutInterceptors(), 
LoggingOutInterceptor.class.getName());
+        if (result == null) {
+            result = 
getInterceptorByName(server.getEndpoint().getService().getOutInterceptors(), 
LoggingOutInterceptor.class.getName());
+        }
+        return result;
+    }
 
 }

Modified: 
camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/GreeterEndpointBeans.xml
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/GreeterEndpointBeans.xml?rev=1199260&r1=1199259&r2=1199260&view=diff
==============================================================================
--- 
camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/GreeterEndpointBeans.xml
 (original)
+++ 
camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/GreeterEndpointBeans.xml
 Tue Nov  8 14:30:46 2011
@@ -32,13 +32,21 @@
 
 
    <cxf:cxfEndpoint id="routerEndpoint" 
address="http://localhost:${CXFTestSupport.port2}/CxfGreeterMessageRouterTest/CamelContext/RouterPort";
-               serviceClass="org.apache.hello_world_soap_http.GreeterImpl"/>
+               serviceClass="org.apache.hello_world_soap_http.GreeterImpl">
+        <cxf:features>
+                       <bean class="org.apache.cxf.feature.LoggingFeature"/>
+               </cxf:features>
+   </cxf:cxfEndpoint>
 
    <cxf:cxfEndpoint id="serviceEndpoint" 
address="http://localhost:${CXFTestSupport.port1}/CxfGreeterMessageRouterTest/SoapContext/SoapPort";
                wsdlURL="testutils/hello_world.wsdl"
                serviceClass="org.apache.hello_world_soap_http.Greeter"
                endpointName="s:SoapPort"
                serviceName="s:SOAPService"
-       xmlns:s="http://apache.org/hello_world_soap_http"; />
+       xmlns:s="http://apache.org/hello_world_soap_http"; >
+       <cxf:features>
+                       <bean class="org.apache.cxf.feature.LoggingFeature"/>
+               </cxf:features>
+   </cxf:cxfEndpoint>
 
 </beans>
\ No newline at end of file


Reply via email to