Author: ningjiang
Date: Wed Jun 13 15:20:35 2012
New Revision: 1349901
URL: http://svn.apache.org/viewvc?rev=1349901&view=rev
Log:
CAMEL-5365 Added SOAPMessage to InputStream coverter
Added:
camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/SoapMessageProviderStreamContext.xml
Modified:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfConverter.java
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/SoapTargetBean.java
Modified:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfConverter.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfConverter.java?rev=1349901&r1=1349900&r2=1349901&view=diff
==============================================================================
---
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfConverter.java
(original)
+++
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfConverter.java
Wed Jun 13 15:20:35 2012
@@ -28,6 +28,7 @@ import org.apache.camel.Exchange;
import org.apache.camel.FallbackConverter;
import org.apache.camel.TypeConverter;
import org.apache.camel.component.cxf.DataFormat;
+import org.apache.camel.converter.stream.CachedOutputStream;
import org.apache.camel.spi.TypeConverterRegistry;
import org.apache.cxf.message.MessageContentsList;
import org.slf4j.Logger;
@@ -89,6 +90,19 @@ public final class CxfConverter {
}
@Converter
+ public static InputStream soapMessageToInputStream(final SOAPMessage
soapMessage, Exchange exchange) {
+ CachedOutputStream cos = new CachedOutputStream(exchange);
+ InputStream in = null;
+ try {
+ soapMessage.writeTo(cos);
+ in = cos.getInputStream();
+ } catch (Exception e) {
+ LOG.error("Get the exception when converting the SOAPMessage into
InputStream, the exception is " + e);
+ }
+ return in;
+ }
+
+ @Converter
public static DataFormat toDataFormat(final String name) {
return DataFormat.valueOf(name.toUpperCase());
}
Modified:
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/SoapTargetBean.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/SoapTargetBean.java?rev=1349901&r1=1349900&r2=1349901&view=diff
==============================================================================
---
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/SoapTargetBean.java
(original)
+++
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/SoapTargetBean.java
Wed Jun 13 15:20:35 2012
@@ -23,11 +23,14 @@ import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPMessage;
+import org.w3c.dom.Document;
import org.w3c.dom.Node;
+import org.apache.cxf.helpers.XMLUtils;
+
public class SoapTargetBean {
- private static QName sayHi = new
QName("http://apache.org/hello_world_soap_http", "sayHi");
- private static QName greetMe = new
QName("http://apache.org/hello_world_soap_http", "greetMe");
+ private static QName sayHi = new
QName("http://apache.org/hello_world_soap_http/types", "sayHi");
+ private static QName greetMe = new
QName("http://apache.org/hello_world_soap_http/types", "greetMe");
private SOAPMessage sayHiResponse;
private SOAPMessage greetMeResponse;
@@ -76,4 +79,21 @@ public class SoapTargetBean {
return response;
}
+ //Simulates a stream based processor or producer (e.g., file EP)
+ public SOAPMessage invokeStream(InputStream in) {
+ SOAPMessage response = null;
+ try {
+ Document doc = XMLUtils.parse(in);
+ if (doc.getElementsByTagNameNS(greetMe.getNamespaceURI(),
+ sayHi.getLocalPart()).getLength()
== 1) {
+ response = sayHiResponse;
+ } else if (doc.getElementsByTagNameNS(greetMe.getNamespaceURI(),
+
greetMe.getLocalPart()).getLength() == 1) {
+ response = greetMeResponse;
+ }
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ return response;
+ }
}
Added:
camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/SoapMessageProviderStreamContext.xml
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/SoapMessageProviderStreamContext.xml?rev=1349901&view=auto
==============================================================================
---
camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/SoapMessageProviderStreamContext.xml
(added)
+++
camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/SoapMessageProviderStreamContext.xml
Wed Jun 13 15:20:35 2012
@@ -0,0 +1,52 @@
+<?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"/>
+
+ <!--
+ If you want to run this example in Tomcat container which need to used
servlet transoprt,
+ please repalce the cxf-extension-http-jetty.xml with cxf-servlet.xml
+ -->
+
+ <import resource="classpath:META-INF/cxf/cxf.xml"/>
+
+ <bean id = "targetBean"
class="org.apache.camel.component.cxf.SoapTargetBean" />
+
+ <cxf:cxfEndpoint id="soapMessageEndpoint"
+
serviceClass="org.apache.camel.component.cxf.SoapMessageProvider"
+
address="http://localhost:${CXFTestSupport.port1}/CxfSoapMessageProviderTest/SoapContext/SoapProviderPort">
+ </cxf:cxfEndpoint>
+
+
+ <camelContext id="test_context"
xmlns="http://camel.apache.org/schema/spring">
+ <route>
+ <from uri="cxf:bean:soapMessageEndpoint"/>
+ <to uri="bean:targetBean?method=invokeStream"/>
+ </route>
+ </camelContext>
+
+</beans>