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