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