You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@camel.apache.org by Claus Ibsen <cl...@gmail.com> on 2012/06/14 05:34:45 UTC
Re: svn commit: r1349901 - in /camel/trunk/components/camel-cxf/src:
main/java/org/apache/camel/component/cxf/converter/ test/java/org/apache/camel/component/cxf/
test/resources/org/apache/camel/component/cxf/
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, <ni...@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: cibsen@fusesource.com
Web: http://fusesource.com
Twitter: davsclaus, fusenews
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen
Re: svn commit: r1349901 - in /camel/trunk/components/camel-cxf/src:
main/java/org/apache/camel/component/cxf/converter/ test/java/org/apache/camel/component/cxf/
test/resources/org/apache/camel/component/cxf/
Posted by Willem Jiang <wi...@gmail.com>.
Hi Claus,
Thanks for the review, I just update the code by removing the try ...
catch codes.
On Thu Jun 14 11:34:45 2012, Claus Ibsen wrote:
> 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,<ni...@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>
>>
>>
>>
>
>
--
Willem
----------------------------------
FuseSource
Web: http://www.fusesource.com
Blog: http://willemjiang.blogspot.com (English)
http://jnn.javaeye.com (Chinese)
Twitter: willemjiang
Weibo: willemjiang