You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by wt...@apache.org on 2009/01/29 21:35:55 UTC

svn commit: r738999 - in /camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf: CxfEndpoint.java CxfExchange.java CxfMessage.java converter/CxfConverter.java

Author: wtam
Date: Thu Jan 29 20:35:54 2009
New Revision: 738999

URL: http://svn.apache.org/viewvc?rev=738999&view=rev
Log:
use FallbackConverter in camel-cxf component, which means we can get rid of CxfMessage and CxfExchange class.  Very cool.

Removed:
    camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfExchange.java
    camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfMessage.java
Modified:
    camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
    camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfConverter.java

Modified: camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java?rev=738999&r1=738998&r2=738999&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java (original)
+++ camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java Thu Jan 29 20:35:54 2009
@@ -25,8 +25,6 @@
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelException;
 import org.apache.camel.Consumer;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
 import org.apache.camel.HeaderFilterStrategyAware;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
@@ -97,11 +95,6 @@
         return new CxfConsumer(this, processor);
     }
     
-    @Override
-    public Exchange createExchange(ExchangePattern pattern) {
-        return new CxfExchange(this, pattern);
-    }
-    
     public boolean isSingleton() {
         return true;
     }

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=738999&r1=738998&r2=738999&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 Thu Jan 29 20:35:54 2009
@@ -22,9 +22,13 @@
 
 import org.apache.camel.Converter;
 import org.apache.camel.Endpoint;
+import org.apache.camel.Exchange;
+import org.apache.camel.FallbackConverter;
+import org.apache.camel.TypeConverter;
 import org.apache.camel.component.cxf.CxfSpringEndpoint;
 import org.apache.camel.component.cxf.DataFormat;
 import org.apache.camel.component.cxf.spring.CxfEndpointBeanDefinitionParser.CxfSpringEndpointBean;
+import org.apache.camel.spi.TypeConverterRegistry;
 import org.apache.camel.spring.SpringCamelContext;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -89,4 +93,41 @@
         return DataFormat.valueOf(name.toUpperCase());
     }
 
+    /**
+     * Use a fallback type converter so we can convert the embedded list element 
+     * if the value is MessageContentsList.  The algorithm of this converter
+     * finds the first non-null list element from the list and applies convertion
+     * to the list element.
+     * 
+     * @param type the desired type to be converted to
+     * @param exchange optional exchange which can be null
+     * @param value the object to be converted
+     * @param registry type converter registry
+     * @return the converted value of the desired type or null if no suitable converter found
+     */
+    @FallbackConverter
+    public static <T> T convertTo(Class<T> type, Exchange exchange, Object value, 
+            TypeConverterRegistry registry) {
+        
+        if (MessageContentsList.class.isAssignableFrom(value.getClass())) {
+            MessageContentsList list = (MessageContentsList)value;
+            
+            for (int i = 0; i < list.size(); i++) {
+                Object embedded = list.get(i);
+                
+                if (embedded != null) {
+                    if (type.isInstance(embedded)) {
+                        return (T)embedded;
+                    } else {
+                        TypeConverter tc = registry.lookup(type, embedded.getClass());
+                        if (tc != null) {
+                            return tc.convertTo(type, exchange, embedded);
+                        }
+                    }
+                }
+            }
+        }
+        
+        return null;
+    }
 }



Re: svn commit: r738999 - in /camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf: CxfEndpoint.java CxfExchange.java CxfMessage.java converter/CxfConverter.java

Posted by Claus Ibsen <cl...@gmail.com>.
On Fri, Jan 30, 2009 at 7:04 AM, William Tam <em...@gmail.com> wrote:
> Hi Claus,
>
> The code in CxfMessage#getBody was checking if a message body was a
> org.apache.cxf.message.MessageContentList.  If so, it extracted the
> first element and applied converter to the first element.  That piece
> of logic now resides in the CxfConverter.convertTo, which is a
> FallbackConverter.   Let me know if I am missing something,
>
> Thanks,
> William
Great I kinda forgot from the commit log that you deleted 2 files. The
content of these files is not logged :)
And I just wanted to raise a flag in case there was still something in
the CXF that should be looked at.




>
> On Fri, Jan 30, 2009 at 12:23 AM, Claus Ibsen <cl...@gmail.com> wrote:
>> Hi Willem
>>
>> There might be some left overs still there. I remember Jiang added
>> something to CxfMessage#getBody (or someplace like that) that would
>> kinda do something like that below.
>>
>> Maybe that code is still there?
>>
>> There is a ticket in JIRA somewhere about it, I can find it if you
>> need it. Ticket reported by me on camel-cxf and fixed by Jiang.
>>
>>
>>
>> On Thu, Jan 29, 2009 at 9:35 PM,  <wt...@apache.org> wrote:
>>> Author: wtam
>>> Date: Thu Jan 29 20:35:54 2009
>>> New Revision: 738999
>>>
>>> URL: http://svn.apache.org/viewvc?rev=738999&view=rev
>>> Log:
>>> use FallbackConverter in camel-cxf component, which means we can get rid of CxfMessage and CxfExchange class.  Very cool.
>>>
>>> Removed:
>>>    camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfExchange.java
>>>    camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfMessage.java
>>> Modified:
>>>    camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
>>>    camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfConverter.java
>>>
>>> Modified: camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
>>> URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java?rev=738999&r1=738998&r2=738999&view=diff
>>> ==============================================================================
>>> --- camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java (original)
>>> +++ camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java Thu Jan 29 20:35:54 2009
>>> @@ -25,8 +25,6 @@
>>>  import org.apache.camel.CamelContext;
>>>  import org.apache.camel.CamelException;
>>>  import org.apache.camel.Consumer;
>>> -import org.apache.camel.Exchange;
>>> -import org.apache.camel.ExchangePattern;
>>>  import org.apache.camel.HeaderFilterStrategyAware;
>>>  import org.apache.camel.Processor;
>>>  import org.apache.camel.Producer;
>>> @@ -97,11 +95,6 @@
>>>         return new CxfConsumer(this, processor);
>>>     }
>>>
>>> -    @Override
>>> -    public Exchange createExchange(ExchangePattern pattern) {
>>> -        return new CxfExchange(this, pattern);
>>> -    }
>>> -
>>>     public boolean isSingleton() {
>>>         return true;
>>>     }
>>>
>>> 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=738999&r1=738998&r2=738999&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 Thu Jan 29 20:35:54 2009
>>> @@ -22,9 +22,13 @@
>>>
>>>  import org.apache.camel.Converter;
>>>  import org.apache.camel.Endpoint;
>>> +import org.apache.camel.Exchange;
>>> +import org.apache.camel.FallbackConverter;
>>> +import org.apache.camel.TypeConverter;
>>>  import org.apache.camel.component.cxf.CxfSpringEndpoint;
>>>  import org.apache.camel.component.cxf.DataFormat;
>>>  import org.apache.camel.component.cxf.spring.CxfEndpointBeanDefinitionParser.CxfSpringEndpointBean;
>>> +import org.apache.camel.spi.TypeConverterRegistry;
>>>  import org.apache.camel.spring.SpringCamelContext;
>>>  import org.apache.commons.logging.Log;
>>>  import org.apache.commons.logging.LogFactory;
>>> @@ -89,4 +93,41 @@
>>>         return DataFormat.valueOf(name.toUpperCase());
>>>     }
>>>
>>> +    /**
>>> +     * Use a fallback type converter so we can convert the embedded list element
>>> +     * if the value is MessageContentsList.  The algorithm of this converter
>>> +     * finds the first non-null list element from the list and applies convertion
>>> +     * to the list element.
>>> +     *
>>> +     * @param type the desired type to be converted to
>>> +     * @param exchange optional exchange which can be null
>>> +     * @param value the object to be converted
>>> +     * @param registry type converter registry
>>> +     * @return the converted value of the desired type or null if no suitable converter found
>>> +     */
>>> +    @FallbackConverter
>>> +    public static <T> T convertTo(Class<T> type, Exchange exchange, Object value,
>>> +            TypeConverterRegistry registry) {
>>> +
>>> +        if (MessageContentsList.class.isAssignableFrom(value.getClass())) {
>>> +            MessageContentsList list = (MessageContentsList)value;
>>> +
>>> +            for (int i = 0; i < list.size(); i++) {
>>> +                Object embedded = list.get(i);
>>> +
>>> +                if (embedded != null) {
>>> +                    if (type.isInstance(embedded)) {
>>> +                        return (T)embedded;
>>> +                    } else {
>>> +                        TypeConverter tc = registry.lookup(type, embedded.getClass());
>>> +                        if (tc != null) {
>>> +                            return tc.convertTo(type, exchange, embedded);
>>> +                        }
>>> +                    }
>>> +                }
>>> +            }
>>> +        }
>>> +
>>> +        return null;
>>> +    }
>>>  }
>>>
>>>
>>>
>>
>>
>>
>> --
>> Claus Ibsen
>> Apache Camel Committer
>>
>> Open Source Integration: http://fusesource.com
>> Blog: http://davsclaus.blogspot.com/
>>
>



-- 
Claus Ibsen
Apache Camel Committer

Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/

Re: svn commit: r738999 - in /camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf: CxfEndpoint.java CxfExchange.java CxfMessage.java converter/CxfConverter.java

Posted by William Tam <em...@gmail.com>.
Hi Claus,

The code in CxfMessage#getBody was checking if a message body was a
org.apache.cxf.message.MessageContentList.  If so, it extracted the
first element and applied converter to the first element.  That piece
of logic now resides in the CxfConverter.convertTo, which is a
FallbackConverter.   Let me know if I am missing something,

Thanks,
William

On Fri, Jan 30, 2009 at 12:23 AM, Claus Ibsen <cl...@gmail.com> wrote:
> Hi Willem
>
> There might be some left overs still there. I remember Jiang added
> something to CxfMessage#getBody (or someplace like that) that would
> kinda do something like that below.
>
> Maybe that code is still there?
>
> There is a ticket in JIRA somewhere about it, I can find it if you
> need it. Ticket reported by me on camel-cxf and fixed by Jiang.
>
>
>
> On Thu, Jan 29, 2009 at 9:35 PM,  <wt...@apache.org> wrote:
>> Author: wtam
>> Date: Thu Jan 29 20:35:54 2009
>> New Revision: 738999
>>
>> URL: http://svn.apache.org/viewvc?rev=738999&view=rev
>> Log:
>> use FallbackConverter in camel-cxf component, which means we can get rid of CxfMessage and CxfExchange class.  Very cool.
>>
>> Removed:
>>    camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfExchange.java
>>    camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfMessage.java
>> Modified:
>>    camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
>>    camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfConverter.java
>>
>> Modified: camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
>> URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java?rev=738999&r1=738998&r2=738999&view=diff
>> ==============================================================================
>> --- camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java (original)
>> +++ camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java Thu Jan 29 20:35:54 2009
>> @@ -25,8 +25,6 @@
>>  import org.apache.camel.CamelContext;
>>  import org.apache.camel.CamelException;
>>  import org.apache.camel.Consumer;
>> -import org.apache.camel.Exchange;
>> -import org.apache.camel.ExchangePattern;
>>  import org.apache.camel.HeaderFilterStrategyAware;
>>  import org.apache.camel.Processor;
>>  import org.apache.camel.Producer;
>> @@ -97,11 +95,6 @@
>>         return new CxfConsumer(this, processor);
>>     }
>>
>> -    @Override
>> -    public Exchange createExchange(ExchangePattern pattern) {
>> -        return new CxfExchange(this, pattern);
>> -    }
>> -
>>     public boolean isSingleton() {
>>         return true;
>>     }
>>
>> 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=738999&r1=738998&r2=738999&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 Thu Jan 29 20:35:54 2009
>> @@ -22,9 +22,13 @@
>>
>>  import org.apache.camel.Converter;
>>  import org.apache.camel.Endpoint;
>> +import org.apache.camel.Exchange;
>> +import org.apache.camel.FallbackConverter;
>> +import org.apache.camel.TypeConverter;
>>  import org.apache.camel.component.cxf.CxfSpringEndpoint;
>>  import org.apache.camel.component.cxf.DataFormat;
>>  import org.apache.camel.component.cxf.spring.CxfEndpointBeanDefinitionParser.CxfSpringEndpointBean;
>> +import org.apache.camel.spi.TypeConverterRegistry;
>>  import org.apache.camel.spring.SpringCamelContext;
>>  import org.apache.commons.logging.Log;
>>  import org.apache.commons.logging.LogFactory;
>> @@ -89,4 +93,41 @@
>>         return DataFormat.valueOf(name.toUpperCase());
>>     }
>>
>> +    /**
>> +     * Use a fallback type converter so we can convert the embedded list element
>> +     * if the value is MessageContentsList.  The algorithm of this converter
>> +     * finds the first non-null list element from the list and applies convertion
>> +     * to the list element.
>> +     *
>> +     * @param type the desired type to be converted to
>> +     * @param exchange optional exchange which can be null
>> +     * @param value the object to be converted
>> +     * @param registry type converter registry
>> +     * @return the converted value of the desired type or null if no suitable converter found
>> +     */
>> +    @FallbackConverter
>> +    public static <T> T convertTo(Class<T> type, Exchange exchange, Object value,
>> +            TypeConverterRegistry registry) {
>> +
>> +        if (MessageContentsList.class.isAssignableFrom(value.getClass())) {
>> +            MessageContentsList list = (MessageContentsList)value;
>> +
>> +            for (int i = 0; i < list.size(); i++) {
>> +                Object embedded = list.get(i);
>> +
>> +                if (embedded != null) {
>> +                    if (type.isInstance(embedded)) {
>> +                        return (T)embedded;
>> +                    } else {
>> +                        TypeConverter tc = registry.lookup(type, embedded.getClass());
>> +                        if (tc != null) {
>> +                            return tc.convertTo(type, exchange, embedded);
>> +                        }
>> +                    }
>> +                }
>> +            }
>> +        }
>> +
>> +        return null;
>> +    }
>>  }
>>
>>
>>
>
>
>
> --
> Claus Ibsen
> Apache Camel Committer
>
> Open Source Integration: http://fusesource.com
> Blog: http://davsclaus.blogspot.com/
>

Re: svn commit: r738999 - in /camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf: CxfEndpoint.java CxfExchange.java CxfMessage.java converter/CxfConverter.java

Posted by Claus Ibsen <cl...@gmail.com>.
Hi Willem

There might be some left overs still there. I remember Jiang added
something to CxfMessage#getBody (or someplace like that) that would
kinda do something like that below.

Maybe that code is still there?

There is a ticket in JIRA somewhere about it, I can find it if you
need it. Ticket reported by me on camel-cxf and fixed by Jiang.



On Thu, Jan 29, 2009 at 9:35 PM,  <wt...@apache.org> wrote:
> Author: wtam
> Date: Thu Jan 29 20:35:54 2009
> New Revision: 738999
>
> URL: http://svn.apache.org/viewvc?rev=738999&view=rev
> Log:
> use FallbackConverter in camel-cxf component, which means we can get rid of CxfMessage and CxfExchange class.  Very cool.
>
> Removed:
>    camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfExchange.java
>    camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfMessage.java
> Modified:
>    camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
>    camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfConverter.java
>
> Modified: camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
> URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java?rev=738999&r1=738998&r2=738999&view=diff
> ==============================================================================
> --- camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java (original)
> +++ camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java Thu Jan 29 20:35:54 2009
> @@ -25,8 +25,6 @@
>  import org.apache.camel.CamelContext;
>  import org.apache.camel.CamelException;
>  import org.apache.camel.Consumer;
> -import org.apache.camel.Exchange;
> -import org.apache.camel.ExchangePattern;
>  import org.apache.camel.HeaderFilterStrategyAware;
>  import org.apache.camel.Processor;
>  import org.apache.camel.Producer;
> @@ -97,11 +95,6 @@
>         return new CxfConsumer(this, processor);
>     }
>
> -    @Override
> -    public Exchange createExchange(ExchangePattern pattern) {
> -        return new CxfExchange(this, pattern);
> -    }
> -
>     public boolean isSingleton() {
>         return true;
>     }
>
> 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=738999&r1=738998&r2=738999&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 Thu Jan 29 20:35:54 2009
> @@ -22,9 +22,13 @@
>
>  import org.apache.camel.Converter;
>  import org.apache.camel.Endpoint;
> +import org.apache.camel.Exchange;
> +import org.apache.camel.FallbackConverter;
> +import org.apache.camel.TypeConverter;
>  import org.apache.camel.component.cxf.CxfSpringEndpoint;
>  import org.apache.camel.component.cxf.DataFormat;
>  import org.apache.camel.component.cxf.spring.CxfEndpointBeanDefinitionParser.CxfSpringEndpointBean;
> +import org.apache.camel.spi.TypeConverterRegistry;
>  import org.apache.camel.spring.SpringCamelContext;
>  import org.apache.commons.logging.Log;
>  import org.apache.commons.logging.LogFactory;
> @@ -89,4 +93,41 @@
>         return DataFormat.valueOf(name.toUpperCase());
>     }
>
> +    /**
> +     * Use a fallback type converter so we can convert the embedded list element
> +     * if the value is MessageContentsList.  The algorithm of this converter
> +     * finds the first non-null list element from the list and applies convertion
> +     * to the list element.
> +     *
> +     * @param type the desired type to be converted to
> +     * @param exchange optional exchange which can be null
> +     * @param value the object to be converted
> +     * @param registry type converter registry
> +     * @return the converted value of the desired type or null if no suitable converter found
> +     */
> +    @FallbackConverter
> +    public static <T> T convertTo(Class<T> type, Exchange exchange, Object value,
> +            TypeConverterRegistry registry) {
> +
> +        if (MessageContentsList.class.isAssignableFrom(value.getClass())) {
> +            MessageContentsList list = (MessageContentsList)value;
> +
> +            for (int i = 0; i < list.size(); i++) {
> +                Object embedded = list.get(i);
> +
> +                if (embedded != null) {
> +                    if (type.isInstance(embedded)) {
> +                        return (T)embedded;
> +                    } else {
> +                        TypeConverter tc = registry.lookup(type, embedded.getClass());
> +                        if (tc != null) {
> +                            return tc.convertTo(type, exchange, embedded);
> +                        }
> +                    }
> +                }
> +            }
> +        }
> +
> +        return null;
> +    }
>  }
>
>
>



-- 
Claus Ibsen
Apache Camel Committer

Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/