You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by js...@apache.org on 2009/02/27 14:11:23 UTC

svn commit: r748502 - in /camel/trunk/camel-core/src/main/java/org/apache/camel: impl/DefaultExchange.java util/ExchangeHelper.java

Author: jstrachan
Date: Fri Feb 27 13:11:22 2009
New Revision: 748502

URL: http://svn.apache.org/viewvc?rev=748502&view=rev
Log:
patch to allow type converters to work a bit more gracefully if you send to an endpoint which hasn't been configured to have a CamelContext

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/util/ExchangeHelper.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java?rev=748502&r1=748501&r2=748502&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java Fri Feb 27 13:11:22 2009
@@ -26,8 +26,10 @@
 import org.apache.camel.ExchangeProperty;
 import org.apache.camel.Message;
 import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.TypeConverter;
 import org.apache.camel.spi.UnitOfWork;
 import org.apache.camel.util.UuidGenerator;
+import org.apache.camel.util.ExchangeHelper;
 import static org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException;
 
 /**
@@ -146,7 +148,7 @@
             validateExchangePropertyIsExpectedType(property, type, value);
         }
 
-        return getContext().getTypeConverter().convertTo(type, this, value);
+        return ExchangeHelper.convertToType(this, type, value);
     }
 
     @SuppressWarnings("unchecked")

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/util/ExchangeHelper.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/util/ExchangeHelper.java?rev=748502&r1=748501&r2=748502&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/util/ExchangeHelper.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/util/ExchangeHelper.java Fri Feb 27 13:11:22 2009
@@ -30,6 +30,10 @@
 import org.apache.camel.NoSuchHeaderException;
 import org.apache.camel.NoSuchPropertyException;
 import org.apache.camel.NoTypeConversionAvailableException;
+import org.apache.camel.CamelContext;
+import org.apache.camel.TypeConverter;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 /**
  * Some helper methods for working with {@link Exchange} objects
@@ -37,6 +41,7 @@
  * @version $Revision$
  */
 public final class ExchangeHelper {
+    private static final transient Log LOG = LogFactory.getLog(ExchangeHelper.class);
 
     /**
      * Utility classes should not have a public constructor.
@@ -177,7 +182,19 @@
      * not be converted
      */
     public static <T> T convertToType(Exchange exchange, Class<T> type, Object value) {
-        return exchange.getContext().getTypeConverter().convertTo(type, exchange, value);
+        CamelContext camelContext = exchange.getContext();
+        if (camelContext != null) {
+            TypeConverter converter = camelContext.getTypeConverter();
+            if (converter != null) {
+                return converter.convertTo(type, exchange, value);
+            }
+        }
+        LOG.warn("No CamelContext and type converter available to convert types for exchange " + exchange);
+
+        if (type.isInstance(value)) {
+            return type.cast(value);
+        }
+        return null;
     }
 
     /**