Author: hadrian
Date: Wed Sep 24 23:04:24 2008
New Revision: 698831

URL: http://svn.apache.org/viewvc?rev=698831&view=rev
Log:
CAMEL-84.  Exception on TypeConverter not available.

Modified:
    
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanProcessor.java
    
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/ConstantBeanHolder.java
    
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/RegistryBean.java
    
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogFormatter.java
    
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java
    
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/DefaultTypeConverter.java
    
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/StreamCachingInterceptor.java
    
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceFormatter.java
    
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/ExchangeHelper.java
    
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/IntrospectionSupport.java
    
activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfBinding.java
    
activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfMessage.java
    
activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfSoapBinding.java
    
activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/component/event/EventEndpoint.java
    
activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java

Modified: 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanProcessor.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanProcessor.java?rev=698831&r1=698830&r2=698831&view=diff
==============================================================================
--- 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanProcessor.java
 (original)
+++ 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanProcessor.java
 Wed Sep 24 23:04:24 2008
@@ -22,6 +22,7 @@
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
+import org.apache.camel.NoTypeConversionAvailableException;
 import org.apache.camel.Processor;
 import org.apache.camel.impl.ServiceSupport;
 import org.apache.camel.util.ObjectHelper;
@@ -85,10 +86,14 @@
             in.setHeader(MULTI_PARAMETER_ARRAY, isMultiParameterArray());
         }
 
-        BeanInvocation beanInvoke = in.getBody(BeanInvocation.class);
-        if (beanInvoke != null) {
-            beanInvoke.invoke(bean, exchange);
-            return;
+        try {
+            BeanInvocation beanInvoke = in.getBody(BeanInvocation.class);
+            if (beanInvoke != null) {
+                beanInvoke.invoke(bean, exchange);
+                return;
+            }
+        } catch (NoTypeConversionAvailableException ex) {
+            // ignore, body is not a BeanInvocation
         }
 
         boolean isExplicitMethod = false;
@@ -106,8 +111,8 @@
             invocation = beanInfo.createInvocation(bean, exchange);
         }
         if (invocation == null) {
-            throw new IllegalStateException("No method invocation could be 
created, "
-                                            + "no maching method could be 
found on: " + bean);
+            throw new IllegalStateException(
+                "No method invocation could be created, no maching method 
could be found on: " + bean);
         }
         try {
             Object value = invocation.proceed();

Modified: 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/ConstantBeanHolder.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/ConstantBeanHolder.java?rev=698831&r1=698830&r2=698831&view=diff
==============================================================================
--- 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/ConstantBeanHolder.java
 (original)
+++ 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/ConstantBeanHolder.java
 Wed Sep 24 23:04:24 2008
@@ -17,6 +17,7 @@
 package org.apache.camel.component.bean;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.NoTypeConversionAvailableException;
 import org.apache.camel.Processor;
 import org.apache.camel.util.CamelContextHelper;
 
@@ -33,7 +34,11 @@
     public ConstantBeanHolder(Object bean, BeanInfo beanInfo) {
         this.bean = bean;
         this.beanInfo = beanInfo;
-        this.processor = 
CamelContextHelper.convertTo(beanInfo.getCamelContext(), Processor.class, bean);
+        try {
+            this.processor = 
CamelContextHelper.convertTo(beanInfo.getCamelContext(), Processor.class, bean);
+        } catch (NoTypeConversionAvailableException ex) {
+            this.processor = null;
+        }
     }
 
     public ConstantBeanHolder(Object bean, CamelContext context) {

Modified: 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/RegistryBean.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/RegistryBean.java?rev=698831&r1=698830&r2=698831&view=diff
==============================================================================
--- 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/RegistryBean.java
 (original)
+++ 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/RegistryBean.java
 Wed Sep 24 23:04:24 2008
@@ -17,6 +17,7 @@
 package org.apache.camel.component.bean;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.NoTypeConversionAvailableException;
 import org.apache.camel.Processor;
 import org.apache.camel.spi.Registry;
 import org.apache.camel.util.CamelContextHelper;
@@ -74,7 +75,11 @@
 
     public Processor getProcessor() {
         if (processor == null && bean != null) {
-            processor = CamelContextHelper.convertTo(context, Processor.class, 
bean);
+            try {
+                processor = CamelContextHelper.convertTo(context, 
Processor.class, bean);
+            } catch (NoTypeConversionAvailableException ex) {
+                // ignore
+            }
         }
         return processor;
     }
@@ -122,4 +127,4 @@
     protected Object lookupBean() throws Exception {
         return registry.lookup(name);
     }
-}
\ No newline at end of file
+}

Modified: 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogFormatter.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogFormatter.java?rev=698831&r1=698830&r2=698831&view=diff
==============================================================================
--- 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogFormatter.java
 (original)
+++ 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogFormatter.java
 Wed Sep 24 23:04:24 2008
@@ -20,6 +20,7 @@
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
+import org.apache.camel.NoTypeConversionAvailableException;
 import org.apache.camel.converter.stream.StreamCache;
 import org.apache.camel.processor.interceptor.ExchangeFormatter;
 import org.apache.camel.util.ObjectHelper;
@@ -176,15 +177,22 @@
     // Implementation methods
     //-------------------------------------------------------------------------
     protected Object getBodyAsString(Message message) {
-
-        StreamCache newBody = message.getBody(StreamCache.class);
-        if (newBody != null) {
-            message.setBody(newBody);
-        }
-        Object answer = message.getBody(String.class);
-        if (answer == null) {
+       StreamCache newBody = null;
+        try {
+            newBody = message.getBody(StreamCache.class);
+            if (newBody != null) {
+                message.setBody(newBody);
+            }
+        } catch (NoTypeConversionAvailableException ex) {
+            // ignore
+        }
+        Object answer = null;
+        try {
+            answer = message.getBody(String.class);
+        } catch (NoTypeConversionAvailableException ex) {
             answer = message.getBody();
         }
+        
         if (newBody != null) {
             // Reset the StreamCache
             newBody.reset();

Modified: 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java?rev=698831&r1=698830&r2=698831&view=diff
==============================================================================
--- 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java
 (original)
+++ 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java
 Wed Sep 24 23:04:24 2008
@@ -19,6 +19,7 @@
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
+import org.apache.camel.NoTypeConversionAvailableException;
 import org.apache.camel.TypeConverter;
 import org.apache.camel.util.UuidGenerator;
 
@@ -56,15 +57,16 @@
             CamelContext camelContext = e.getContext();
             if (camelContext != null) {
                 TypeConverter converter = camelContext.getTypeConverter();
-                T answer = converter.convertTo(type, e, body);
-                if (answer == null) {
+                try {
                     // lets first try converting the message itself first
                     // as for some types like InputStream v Reader its more 
efficient to do the transformation
                     // from the Message itself as its got efficient 
implementations of them, before trying the
                     // payload
-                    answer = converter.convertTo(type, this);
+                    return converter.convertTo(type, e, body);
+                } catch (NoTypeConversionAvailableException ex) {
+                    // ignore
                 }
-                return answer;
+                return converter.convertTo(type, this);
             }
         }
         return (T)getBody();

Modified: 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/DefaultTypeConverter.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/DefaultTypeConverter.java?rev=698831&r1=698830&r2=698831&view=diff
==============================================================================
--- 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/DefaultTypeConverter.java
 (original)
+++ 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/DefaultTypeConverter.java
 Wed Sep 24 23:04:24 2008
@@ -24,6 +24,7 @@
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.camel.Exchange;
+import org.apache.camel.NoTypeConversionAvailableException;
 import org.apache.camel.TypeConverter;
 import org.apache.camel.spi.Injector;
 import org.apache.camel.spi.TypeConverterAware;
@@ -66,11 +67,19 @@
 
     @SuppressWarnings("unchecked")
     public <T> T convertTo(Class<T> type, Exchange exchange, Object value) {
-        if (LOG.isTraceEnabled()) {
+       if (LOG.isTraceEnabled()) {
             LOG.trace("Converting " + (value == null ? "null" : 
value.getClass().getCanonicalName())
                 + " -> " + type.getCanonicalName() + " with value: " + value);
         }
 
+        if (value == null) {
+            // lets avoid NullPointerException when converting to boolean for 
null values
+            if (boolean.class.isAssignableFrom(type)) {
+                return (T) Boolean.FALSE;
+            }
+            return null;
+        }
+
         // same instance type
         if (type.isInstance(value)) {
             return type.cast(value);
@@ -82,7 +91,10 @@
         // try to find a suitable type converter
         TypeConverter converter = getOrFindTypeConverter(type, value);
         if (converter != null) {
-            return converter.convertTo(type, exchange, value);
+            T rc = converter.convertTo(type, exchange, value);
+            if (rc != null) {
+                return rc;
+            }
         }
 
         // fallback converters
@@ -93,11 +105,6 @@
             }
         }
 
-        // lets avoid NullPointerException when converting to boolean for null 
values
-        if (boolean.class.isAssignableFrom(type)) {
-            return (T) Boolean.FALSE;
-        }
-
         // primitives
         if (type.isPrimitive()) {
             Class primitiveType = 
ObjectHelper.convertPrimitiveTypeToWrapperType(type);
@@ -107,13 +114,16 @@
         }
 
         boolean camelType = 
type.getCanonicalName().startsWith("org.apache.camel");
-        if (!camelType && value != null) {
+        if (!camelType) {
+            // TODO: as the next thing is an exception I suspect this warn is 
useless.  TB removed.
             // only log WARN level for non internal Camel convertions
             LOG.warn("Could not find a type converter for converting "
                 + value.getClass().getCanonicalName() + " -> "
                 + type.getCanonicalName() + " with value: " + value);
         }
-        return null;
+        
+        // Could not find suitable conversion
+        throw new NoTypeConversionAvailableException(value, type);
     }
 
     public void addTypeConverter(Class toType, Class fromType, TypeConverter 
typeConverter) {

Modified: 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/StreamCachingInterceptor.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/StreamCachingInterceptor.java?rev=698831&r1=698830&r2=698831&view=diff
==============================================================================
--- 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/StreamCachingInterceptor.java
 (original)
+++ 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/StreamCachingInterceptor.java
 Wed Sep 24 23:04:24 2008
@@ -19,6 +19,7 @@
 import java.util.List;
 
 import org.apache.camel.Exchange;
+import org.apache.camel.NoTypeConversionAvailableException;
 import org.apache.camel.Processor;
 import org.apache.camel.converter.stream.StreamCache;
 import org.apache.camel.model.InterceptorRef;
@@ -34,10 +35,14 @@
         super();
         setInterceptorLogic(new Processor() {
             public void process(Exchange exchange) throws Exception {
-                StreamCache newBody = 
exchange.getIn().getBody(StreamCache.class);
-                if (newBody != null) {
-                    newBody.reset();
-                    exchange.getIn().setBody(newBody);
+               try {
+                    StreamCache newBody = 
exchange.getIn().getBody(StreamCache.class);
+                    if (newBody != null) {
+                        newBody.reset();
+                        exchange.getIn().setBody(newBody);
+                    }
+               } catch (NoTypeConversionAvailableException ex) {
+                   // ignore if in is not of StreamCache type
                 }
                 proceed(exchange);
             }

Modified: 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceFormatter.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceFormatter.java?rev=698831&r1=698830&r2=698831&view=diff
==============================================================================
--- 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceFormatter.java
 (original)
+++ 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceFormatter.java
 Wed Sep 24 23:04:24 2008
@@ -20,6 +20,7 @@
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
+import org.apache.camel.NoTypeConversionAvailableException;
 import org.apache.camel.converter.stream.StreamCache;
 import org.apache.camel.converter.stream.StreamCacheConverter;
 import org.apache.camel.spi.UnitOfWork;
@@ -116,14 +117,23 @@
     }
 
     protected Object getBodyAsString(Message in) {
-        StreamCache newBody = in.getBody(StreamCache.class);
-        if (newBody != null) {
-            in.setBody(newBody);
+        StreamCache newBody = null;
+        try {
+            newBody = in.getBody(StreamCache.class);
+            if (newBody != null) {
+                in.setBody(newBody);
+            }
+        } catch (NoTypeConversionAvailableException ex) {
+            // ignore, in not of StreamCache type
         }
-        Object answer = in.getBody(String.class);
-        if (answer == null) {
+        
+        Object answer = null;
+        try {
+            answer = in.getBody(String.class);
+        } catch (NoTypeConversionAvailableException ex) {
             answer = in.getBody();
         }
+        
         if (newBody != null) {
             // Reset the InputStreamCache
             newBody.reset();
@@ -142,5 +152,4 @@
     protected String getNodeMessage(TraceInterceptor interceptor) {
         return interceptor.getNode().idOrCreate();
     }
-
 }

Modified: 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/ExchangeHelper.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/ExchangeHelper.java?rev=698831&r1=698830&r2=698831&view=diff
==============================================================================
--- 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/ExchangeHelper.java
 (original)
+++ 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/ExchangeHelper.java
 Wed Sep 24 23:04:24 2008
@@ -29,6 +29,7 @@
 import org.apache.camel.NoSuchEndpointException;
 import org.apache.camel.NoSuchHeaderException;
 import org.apache.camel.NoSuchPropertyException;
+import org.apache.camel.NoTypeConversionAvailableException;
 
 /**
  * Some helper methods for working with [EMAIL PROTECTED] Exchange} objects
@@ -89,11 +90,15 @@
 
     public static <T> T getMandatoryProperty(Exchange exchange, String 
propertyName, Class<T> type)
         throws NoSuchPropertyException {
-        T answer = exchange.getProperty(propertyName, type);
-        if (answer == null) {
-            throw new NoSuchPropertyException(exchange, propertyName, type);
+       try {
+            T result = exchange.getProperty(propertyName, type);
+            if (result != null) {
+                return result;
+            }
+        } catch (NoTypeConversionAvailableException ex) {
+            // will throw NoSuchPropertyException below
         }
-        return answer;
+        throw new NoSuchPropertyException(exchange, propertyName, type);
     }
 
     public static <T> T getMandatoryHeader(Exchange exchange, String 
propertyName, Class<T> type)

Modified: 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/IntrospectionSupport.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/IntrospectionSupport.java?rev=698831&r1=698830&r2=698831&view=diff
==============================================================================
--- 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/IntrospectionSupport.java
 (original)
+++ 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/IntrospectionSupport.java
 Wed Sep 24 23:04:24 2008
@@ -32,6 +32,7 @@
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.camel.NoTypeConversionAvailableException;
 import org.apache.camel.TypeConverter;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -235,11 +236,11 @@
 
     private static Object convert(TypeConverter typeConverter, Class type, 
Object value) throws URISyntaxException {
         if (typeConverter != null) {
-            Object answer = typeConverter.convertTo(type, value);
-            if (answer == null) {
+            try {
+                return typeConverter.convertTo(type, value);
+            } catch (NoTypeConversionAvailableException ex) {
                 throw new IllegalArgumentException("Could not convert \"" + 
value + "\" to " + type.getName());
             }
-            return answer;
         }
         PropertyEditor editor = PropertyEditorManager.findEditor(type);
         if (editor != null) {

Modified: 
activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfBinding.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfBinding.java?rev=698831&r1=698830&r2=698831&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfBinding.java
 (original)
+++ 
activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfBinding.java
 Wed Sep 24 23:04:24 2008
@@ -22,6 +22,7 @@
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.camel.NoTypeConversionAvailableException;
 import org.apache.camel.component.cxf.util.CxfHeaderHelper;
 import org.apache.camel.spi.HeaderFilterStrategy;
 import org.apache.cxf.endpoint.Client;
@@ -69,19 +70,21 @@
         CxfMessage in = exchange.getIn();
 
         // Check the body if the POJO parameter list first
-        Object body = in.getBody(List.class);
-        if (body instanceof List) {
+        try {
+            List body = in.getBody(List.class);
             // just set the operation's parameter
             answer.setContent(List.class, body);
             CxfHeaderHelper.propagateCamelToCxf(strategy, in.getHeaders(), 
answer);
-        } else {
+        } catch (NoTypeConversionAvailableException ex) {
             // CXF uses StAX which is based on the stream API to parse the XML,
             // so the CXF transport is also based on the stream API.
             // And the interceptors are also based on the stream API,
             // so let's use an InputStream to host the CXF on wire message.
-            body = in.getBody(InputStream.class);
-            if (body instanceof InputStream) {
+            try {
+                InputStream body = in.getBody(InputStream.class);
                 answer.setContent(InputStream.class, body);
+            } catch (NoTypeConversionAvailableException ex2) {
+                // ignore
             }
             // TODO do we propagate header the same way in non-POJO mode?
             // CxfHeaderHelper.propagateCamelToCxf(strategy, in.getHeaders(), 
answer);
@@ -137,19 +140,19 @@
     // Copy the Camel message to CXF message
     public static void copyMessage(HeaderFilterStrategy strategy,
             org.apache.camel.Message camelMessage, 
org.apache.cxf.message.Message cxfMessage) {
-        InputStream is = camelMessage.getBody(InputStream.class);
-
+        
         CxfHeaderHelper.propagateCamelToCxf(strategy, 
camelMessage.getHeaders(), cxfMessage);
-        if (is != null) {
-            cxfMessage.setContent(InputStream.class, is);
-        } else {
+        try {
+            InputStream is = camelMessage.getBody(InputStream.class);
+            if (is != null) {
+                cxfMessage.setContent(InputStream.class, is);
+            }
+        } catch (NoTypeConversionAvailableException ex) {
             Object result = camelMessage.getBody();
-            if (result != null) {
-                if (result instanceof InputStream) {
-                    cxfMessage.setContent(InputStream.class, result);
-                } else {
-                    cxfMessage.setContent(result.getClass(), result);
-                }
+            if (result instanceof InputStream) {
+                cxfMessage.setContent(InputStream.class, result);
+            } else {
+                cxfMessage.setContent(result.getClass(), result);
             }
         }
     }

Modified: 
activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfMessage.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfMessage.java?rev=698831&r1=698830&r2=698831&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfMessage.java
 (original)
+++ 
activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfMessage.java
 Wed Sep 24 23:04:24 2008
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.component.cxf;
 
+import org.apache.camel.NoTypeConversionAvailableException;
 import org.apache.camel.impl.DefaultMessage;
 import org.apache.cxf.message.Message;
 import org.apache.cxf.message.MessageContentsList;
@@ -108,9 +109,13 @@
             MessageContentsList list = (MessageContentsList)getBody();
             for (int i = 0; i < list.size(); i++) {
                 Object value = list.get(i);
-                T answer = getBody(type, value);
-                if (answer != null) {
-                    return answer;
+                try {
+                    T answer = getBody(type, value);
+                    if (answer != null) {
+                        return answer;
+                    }
+                } catch (NoTypeConversionAvailableException ex) {
+                    // ignore
                 }
             }
         }

Modified: 
activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfSoapBinding.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfSoapBinding.java?rev=698831&r1=698830&r2=698831&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfSoapBinding.java
 (original)
+++ 
activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfSoapBinding.java
 Wed Sep 24 23:04:24 2008
@@ -22,6 +22,7 @@
 
 import javax.xml.transform.Source;
 
+import org.apache.camel.NoTypeConversionAvailableException;
 import org.apache.camel.component.cxf.util.CxfHeaderHelper;
 import org.apache.camel.impl.DefaultHeaderFilterStrategy;
 import org.apache.camel.spi.HeaderFilterStrategy;
@@ -63,10 +64,10 @@
 
         CxfHeaderHelper.propagateCamelToCxf(headerFilterStrategy, 
message.getHeaders(), answer);
 
-        Object body = message.getBody(InputStream.class);
-        if (body instanceof InputStream) {
+        try {
+            InputStream body = message.getBody(InputStream.class);
             answer.setContent(InputStream.class, body);
-        } else {
+        } catch (NoTypeConversionAvailableException ex) {
             LOG.warn("Can't get right InputStream object here, the message 
body is " + message.getBody());
         }
 
@@ -101,10 +102,10 @@
         CxfHeaderHelper.propagateCamelToCxf(headerFilterStrategy, 
message.getHeaders(), outMessage);
 
         // send the body back
-        Object body = message.getBody(Source.class);
-        if (body instanceof Source) {
+        try {
+            Source body = message.getBody(Source.class);
             outMessage.setContent(Source.class, body);
-        } else {
+        } catch (NoTypeConversionAvailableException ex) {
             LOG.warn("Can't get right Source object here, the message body is 
" + message.getBody());
         }
         outMessage.putAll(message.getHeaders());

Modified: 
activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/component/event/EventEndpoint.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/component/event/EventEndpoint.java?rev=698831&r1=698830&r2=698831&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/component/event/EventEndpoint.java
 (original)
+++ 
activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/component/event/EventEndpoint.java
 Wed Sep 24 23:04:24 2008
@@ -17,6 +17,7 @@
 package org.apache.camel.component.event;
 
 import org.apache.camel.Exchange;
+import org.apache.camel.NoTypeConversionAvailableException;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.impl.DefaultEndpoint;
@@ -109,11 +110,14 @@
     }
 
     protected ApplicationEvent toApplicationEvent(Exchange exchange) {
-        ApplicationEvent event = 
exchange.getIn().getBody(ApplicationEvent.class);
-        if (event == null) {
-            event = new CamelEvent(this, exchange);
+        try {
+            ApplicationEvent event = 
exchange.getIn().getBody(ApplicationEvent.class);
+            if (event != null) {
+                return event;
+            }
+        } catch (NoTypeConversionAvailableException ex) {
+            // ignore, handled below
         }
-        return event;
+        return new CamelEvent(this, exchange);
     }
-
 }

Modified: 
activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java?rev=698831&r1=698830&r2=698831&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java
 (original)
+++ 
activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java
 Wed Sep 24 23:04:24 2008
@@ -17,6 +17,7 @@
 package org.apache.camel.spring;
 
 import org.apache.camel.Endpoint;
+import org.apache.camel.NoTypeConversionAvailableException;
 import org.apache.camel.Processor;
 import org.apache.camel.component.bean.BeanProcessor;
 import org.apache.camel.component.event.EventComponent;
@@ -187,14 +188,18 @@
     }
 
     protected Endpoint convertBeanToEndpoint(String uri, Object bean) {
-        //We will use the type convert to build the endpoint first
-        Endpoint endpoint = getTypeConverter().convertTo(Endpoint.class, bean);
-        if (endpoint != null) {
-            endpoint.setCamelContext(this);
-            return endpoint;
+        // We will use the type convert to build the endpoint first
+        try {
+            Endpoint endpoint = getTypeConverter().convertTo(Endpoint.class, 
bean);
+            if (endpoint != null) {
+                endpoint.setCamelContext(this);
+                return endpoint;
+            }
+        } catch (NoTypeConversionAvailableException ex) {
+            // ignore, handled below
         }
-        Processor processor = new BeanProcessor(bean, this);
-        return new ProcessorEndpoint(uri, this, processor);
+
+        return new ProcessorEndpoint(uri, this, new BeanProcessor(bean, this));
     }
 
     @Override


Reply via email to