You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2013/09/03 03:42:16 UTC
git commit: CAMEL-6696 camel-cxf should not setup the holder and
wrapperClass interceptors in CXF_MESSAGE data format
Updated Branches:
refs/heads/camel-2.10.x 7c8059a09 -> 5de9332d8
CAMEL-6696 camel-cxf should not setup the holder and wrapperClass interceptors in CXF_MESSAGE data format
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/5de9332d
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/5de9332d
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/5de9332d
Branch: refs/heads/camel-2.10.x
Commit: 5de9332d874acefb3a0b8bf589f472a87915b676
Parents: 7c8059a
Author: Willem Jiang <ni...@apache.org>
Authored: Tue Sep 3 09:33:45 2013 +0800
Committer: Willem Jiang <ni...@apache.org>
Committed: Tue Sep 3 09:41:41 2013 +0800
----------------------------------------------------------------------
.../feature/CXFMessageDataFormatFeature.java | 23 ++++++
.../mtom/CxfMtomRouterCxfMessageModeTest.java | 46 ++++++++++++
.../CxfMtomRouterCxfMessageModeTest-context.xml | 79 ++++++++++++++++++++
3 files changed, 148 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/5de9332d/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/feature/CXFMessageDataFormatFeature.java
----------------------------------------------------------------------
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/feature/CXFMessageDataFormatFeature.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/feature/CXFMessageDataFormatFeature.java
index 1d24126..ad1147d 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/feature/CXFMessageDataFormatFeature.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/feature/CXFMessageDataFormatFeature.java
@@ -17,6 +17,9 @@
package org.apache.camel.component.cxf.feature;
+import java.util.ArrayList;
+import java.util.Collection;
+
import javax.xml.soap.SOAPMessage;
import javax.xml.transform.Source;
@@ -29,8 +32,13 @@ import org.apache.cxf.endpoint.Client;
import org.apache.cxf.endpoint.Endpoint;
import org.apache.cxf.endpoint.Server;
import org.apache.cxf.interceptor.AbstractInDatabindingInterceptor;
+import org.apache.cxf.interceptor.ClientFaultConverter;
+import org.apache.cxf.jaxws.interceptors.HolderInInterceptor;
+import org.apache.cxf.jaxws.interceptors.HolderOutInterceptor;
import org.apache.cxf.jaxws.interceptors.MessageModeInInterceptor;
import org.apache.cxf.jaxws.interceptors.MessageModeOutInterceptor;
+import org.apache.cxf.jaxws.interceptors.WrapperClassInInterceptor;
+import org.apache.cxf.jaxws.interceptors.WrapperClassOutInterceptor;
import org.apache.cxf.service.model.BindingMessageInfo;
import org.apache.cxf.service.model.BindingOperationInfo;
import org.apache.cxf.service.model.MessageInfo;
@@ -46,6 +54,18 @@ import org.slf4j.LoggerFactory;
public class CXFMessageDataFormatFeature extends AbstractDataFormatFeature {
private static final Logger LOG = LoggerFactory.getLogger(CXFMessageDataFormatFeature.class);
+ private static final Collection<Class<?>> REMOVING_IN_INTERCEPTORS;
+ private static final Collection<Class<?>> REMOVING_OUT_INTERCEPTORS;
+
+ static {
+ REMOVING_IN_INTERCEPTORS = new ArrayList<Class<?>>();
+ REMOVING_IN_INTERCEPTORS.add(HolderInInterceptor.class);
+ REMOVING_IN_INTERCEPTORS.add(WrapperClassInInterceptor.class);
+
+ REMOVING_OUT_INTERCEPTORS = new ArrayList<Class<?>>();
+ REMOVING_OUT_INTERCEPTORS.add(HolderOutInterceptor.class);
+ REMOVING_OUT_INTERCEPTORS.add(WrapperClassOutInterceptor.class);
+ }
@Override
public void initialize(Client client, Bus bus) {
@@ -72,6 +92,9 @@ public class CXFMessageDataFormatFeature extends AbstractDataFormatFeature {
}
ep.getInInterceptors().add(new MessageModeInInterceptor(fmt, ep.getBinding().getBindingInfo().getName()));
ep.put(AbstractInDatabindingInterceptor.NO_VALIDATE_PARTS, Boolean.TRUE);
+ // need to remove the wrapper class and holder interceptor
+ removeInterceptors(ep.getInInterceptors(), REMOVING_IN_INTERCEPTORS);
+ removeInterceptors(ep.getOutInterceptors(), REMOVING_OUT_INTERCEPTORS);
}
@Override
http://git-wip-us.apache.org/repos/asf/camel/blob/5de9332d/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/mtom/CxfMtomRouterCxfMessageModeTest.java
----------------------------------------------------------------------
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/mtom/CxfMtomRouterCxfMessageModeTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/mtom/CxfMtomRouterCxfMessageModeTest.java
new file mode 100644
index 0000000..62c5117
--- /dev/null
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/mtom/CxfMtomRouterCxfMessageModeTest.java
@@ -0,0 +1,46 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.cxf.mtom;
+
+import java.net.URL;
+
+import javax.xml.ws.BindingProvider;
+
+import org.apache.camel.cxf.mtom_feature.Hello;
+import org.apache.camel.cxf.mtom_feature.HelloService;
+import org.springframework.test.context.ContextConfiguration;
+
+import static org.junit.Assert.assertNotNull;
+
+
+@ContextConfiguration
+public class CxfMtomRouterCxfMessageModeTest extends CxfMtomRouterPayloadModeTest {
+ @Override
+ protected Hello getPort() {
+ URL wsdl = getClass().getResource("/mtom.wsdl");
+ assertNotNull("WSDL is null", wsdl);
+
+ HelloService service = new HelloService(wsdl, HelloService.SERVICE);
+ assertNotNull("Service is null ", service);
+ Hello port = service.getHelloPort();
+ ((BindingProvider)port).getRequestContext()
+ .put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
+ "http://localhost:" + port1 + "/CxfMtomRouterCxfMessageModeTest/jaxws-mtom/hello");
+ return port;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/5de9332d/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/mtom/CxfMtomRouterCxfMessageModeTest-context.xml
----------------------------------------------------------------------
diff --git a/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/mtom/CxfMtomRouterCxfMessageModeTest-context.xml b/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/mtom/CxfMtomRouterCxfMessageModeTest-context.xml
new file mode 100644
index 0000000..2855d9c
--- /dev/null
+++ b/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/mtom/CxfMtomRouterCxfMessageModeTest-context.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:cxf="http://camel.apache.org/schema/cxf"
+
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf.xsd
+ http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
+ ">
+ <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
+
+ <!-- START SNIPPET: enableMtom -->
+
+ <cxf:cxfEndpoint id="routerEndpoint" address="http://localhost:${CXFTestSupport.port1}/CxfMtomRouterCxfMessageModeTest/jaxws-mtom/hello"
+ wsdlURL="mtom.wsdl"
+ serviceName="ns:HelloService"
+ endpointName="ns:HelloPort"
+ serviceClass="org.apache.camel.cxf.mtom_feature.Hello"
+ xmlns:ns="http://apache.org/camel/cxf/mtom_feature">
+
+ <cxf:properties>
+ <!-- enable mtom by setting this property to true -->
+ <entry key="mtom-enabled" value="true"/>
+
+ <!-- set the camel-cxf endpoint data fromat to CXF_MESSAGE mode -->
+ <entry key="dataFormat" value="CXF_MESSAGE"/>
+ </cxf:properties>
+
+ <!-- END SNIPPET: enableMtom -->
+
+ </cxf:cxfEndpoint>
+
+ <cxf:cxfEndpoint id="serviceEndpoint" address="http://localhost:${CXFTestSupport.port2}/CxfMtomRouterCxfMessageModeTest/jaxws-mtom/hello"
+ wsdlURL="mtom.wsdl"
+ serviceName="ns:HelloService"
+ endpointName="ns:HelloPort"
+ serviceClass="org.apache.camel.cxf.mtom_feature.Hello"
+ xmlns:ns="http://apache.org/camel/cxf/mtom_feature">
+
+ <cxf:properties>
+ <entry key="mtom-enabled" value="true"/>
+ <entry key="dataFormat" value="CXF_MESSAGE"/>
+ </cxf:properties>
+
+
+ <cxf:inInterceptors>
+ <ref bean="logInbound"/>
+ </cxf:inInterceptors>
+ <cxf:outInterceptors>
+ <ref bean="logOutbound"/>
+ </cxf:outInterceptors>
+
+ </cxf:cxfEndpoint>
+
+ <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
+ <route>
+ <from uri="cxf:bean:routerEndpoint" />
+ <to uri="cxf:bean:serviceEndpoint" />
+ </route>
+ </camelContext>
+
+</beans>
\ No newline at end of file