Hi In the converter code, you do a try .. catch and then swallow the caused exception. You should not do this, but throw the exception. And remove the logging.
On Wed, Jun 13, 2012 at 5:20 PM, <ningji...@apache.org> wrote: > 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> > > > -- Claus Ibsen ----------------- FuseSource Email: cib...@fusesource.com Web: http://fusesource.com Twitter: davsclaus, fusenews Blog: http://davsclaus.com Author of Camel in Action: http://www.manning.com/ibsen