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 2007/09/05 10:45:10 UTC

svn commit: r572899 - in /activemq/camel/trunk: camel-core/src/main/java/org/apache/camel/component/bean/ camel-core/src/main/java/org/apache/camel/component/direct/ camel-core/src/main/java/org/apache/camel/component/file/ camel-core/src/main/java/org...

Author: jstrachan
Date: Wed Sep  5 01:45:02 2007
New Revision: 572899

URL: http://svn.apache.org/viewvc?rev=572899&view=rev
Log:
added better error handling when introspecting endpoints with URI parameters and also now support enums so we can do foo:bar?exchangePattern=InOut

Added:
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/EnumTypeConverter.java
      - copied, changed from r572881, activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/ArrayTypeConverter.java
Modified:
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanComponent.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/direct/DirectComponent.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileComponent.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileEndpoint.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/jmx/JMXComponent.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/jmx/JMXEndpoint.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/timer/TimerComponent.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ScheduledPollEndpoint.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/impl/converter/PropertyEditorTypeConverter.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/IntrospectionSupport.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/jndi/CamelInitialContextFactory.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/jndi/JndiContext.java
    activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/converter/ConverterTest.java
    activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/CustomExchangePatternTest.java
    activemq/camel/trunk/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/JournalComponent.java
    activemq/camel/trunk/components/camel-atom/src/main/java/org/apache/camel/component/atom/AtomComponent.java
    activemq/camel/trunk/components/camel-bam/src/main/java/org/apache/camel/bam/processor/BamProcessorSupport.java
    activemq/camel/trunk/components/camel-bam/src/main/java/org/apache/camel/bam/processor/JpaBamProcessorSupport.java
    activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfComponent.java
    activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
    activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileComponent.java
    activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileEndpoint.java
    activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcComponent.java
    activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcEndpoint.java
    activemq/camel/trunk/components/camel-jing/src/main/java/org/apache/camel/component/validator/jing/JingComponent.java
    activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/EndpointMessageListener.java
    activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java
    activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java
    activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailComponent.java
    activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailEndpoint.java
    activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaEndpoint.java
    activemq/camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzComponent.java
    activemq/camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzEndpoint.java
    activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/component/validator/ValidatorComponent.java
    activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppEndpoint.java

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanComponent.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanComponent.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanComponent.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanComponent.java Wed Sep  5 01:45:02 2007
@@ -57,7 +57,7 @@
     protected Endpoint createEndpoint(String uri, String remaining, Map parameters) throws Exception {
         Object bean = getBean(remaining);
         BeanProcessor processor = new BeanProcessor(bean, getCamelContext(), getParameterMappingStrategy());
-        IntrospectionSupport.setProperties(processor, parameters);
+        setProperties(processor, parameters);
         return new ProcessorEndpoint(uri, this, processor);
     }
 

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/direct/DirectComponent.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/direct/DirectComponent.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/direct/DirectComponent.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/direct/DirectComponent.java Wed Sep  5 01:45:02 2007
@@ -16,17 +16,11 @@
  */
 package org.apache.camel.component.direct;
 
-import java.net.URI;
-import java.util.Map;
-import java.util.concurrent.ScheduledExecutorService;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.Component;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
-import org.apache.camel.util.IntrospectionSupport;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.URISupport;
+import org.apache.camel.impl.DefaultComponent;
+
+import java.util.Map;
 
 /**
  * Represents the component that manages {@link DirectEndpoint}. It holds the
@@ -34,33 +28,11 @@
  *
  * @version $Revision: 519973 $
  */
-public class DirectComponent<E extends Exchange> implements Component<E> {
-
-    private CamelContext context;
-
-    public CamelContext getCamelContext() {
-        return context;
-    }
-
-    public ScheduledExecutorService getExecutorService() {
-        return null;
-    }
-
-    public Endpoint<E> createEndpoint(String uri) throws Exception {
-
-        ObjectHelper.notNull(getCamelContext(), "camelContext");
-        URI u = new URI(uri);
-        Map parameters = URISupport.parseParamters(u);
+public class DirectComponent<E extends Exchange> extends DefaultComponent<E> {
 
+    protected Endpoint<E> createEndpoint(String uri, String remaining, Map parameters) throws Exception {
         Endpoint<E> endpoint = new DirectEndpoint<E>(uri, this);
-        if (parameters != null) {
-            IntrospectionSupport.setProperties(endpoint, parameters);
-        }
+        setProperties(endpoint, parameters);
         return endpoint;
     }
-
-    public void setCamelContext(CamelContext context) {
-        this.context = context;
-    }
-
 }

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileComponent.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileComponent.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileComponent.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileComponent.java Wed Sep  5 01:45:02 2007
@@ -16,13 +16,12 @@
  */
 package org.apache.camel.component.file;
 
-import java.io.File;
-import java.util.Map;
-
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.impl.DefaultComponent;
-import org.apache.camel.util.IntrospectionSupport;
+
+import java.io.File;
+import java.util.Map;
 
 /**
  * The <a href="http://activemq.apache.org/camel/file.html">File Component</a>
@@ -43,7 +42,7 @@
     protected Endpoint<FileExchange> createEndpoint(String uri, String remaining, Map parameters) throws Exception {
         File file = new File(remaining);
         FileEndpoint result = new FileEndpoint(file, uri, this);
-        IntrospectionSupport.setProperties(result, parameters);
+        setProperties(result, parameters);
         return result;
     }
 }

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileEndpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileEndpoint.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileEndpoint.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileEndpoint.java Wed Sep  5 01:45:02 2007
@@ -86,7 +86,7 @@
      * @see org.apache.camel.Endpoint#createExchange()
      */
     public FileExchange createExchange(File file) {
-        return new FileExchange(getContext(), getDefaultPattern(), file);
+        return new FileExchange(getContext(), getExchangePattern(), file);
     }
 
     /**

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/jmx/JMXComponent.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/jmx/JMXComponent.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/jmx/JMXComponent.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/jmx/JMXComponent.java Wed Sep  5 01:45:02 2007
@@ -16,12 +16,12 @@
  */
 package org.apache.camel.component.jmx;
 
-import java.util.Map;
-import javax.management.MBeanServer;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.impl.DefaultComponent;
-import org.apache.camel.util.IntrospectionSupport;
+
+import javax.management.MBeanServer;
+import java.util.Map;
 
 /**
  * The <a href="http://activemq.apache.org/camel/jmx.html">JMX Component</a>
@@ -43,7 +43,7 @@
         throws Exception {
 
         JMXEndpoint result = new JMXEndpoint(remaining, this);
-        IntrospectionSupport.setProperties(result, parameters);
+        setProperties(result, parameters);
         result.setMbeanServer(getMbeanServer());
         return result;
     }

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/jmx/JMXEndpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/jmx/JMXEndpoint.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/jmx/JMXEndpoint.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/jmx/JMXEndpoint.java Wed Sep  5 01:45:02 2007
@@ -92,11 +92,11 @@
     }
 
     public JMXExchange createExchange(Notification notification) {
-        return new JMXExchange(getContext(), getDefaultPattern(), notification);
+        return new JMXExchange(getContext(), getExchangePattern(), notification);
     }
 
     public JMXExchange createExchange() {
-        return new JMXExchange(getContext(), getDefaultPattern(), null);
+        return new JMXExchange(getContext(), getExchangePattern(), null);
     }
 
     public JMXExchange createExchange(ExchangePattern pattern) {

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/timer/TimerComponent.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/timer/TimerComponent.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/timer/TimerComponent.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/timer/TimerComponent.java Wed Sep  5 01:45:02 2007
@@ -18,9 +18,7 @@
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
-import org.apache.camel.component.bean.BeanExchange;
 import org.apache.camel.impl.DefaultComponent;
-import org.apache.camel.util.IntrospectionSupport;
 
 import java.util.Collection;
 import java.util.HashMap;
@@ -53,7 +51,7 @@
     @Override
     protected Endpoint<Exchange> createEndpoint(String uri, String remaining, Map parameters) throws Exception {
         TimerEndpoint answer = new TimerEndpoint(uri, this, remaining);
-        IntrospectionSupport.setProperties(answer, parameters);
+        setProperties(answer, parameters);
         return answer;
     }
 

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java Wed Sep  5 01:45:02 2007
@@ -70,7 +70,7 @@
                 ScheduledPollEndpoint scheduledPollEndpoint = (ScheduledPollEndpoint)endpoint;
                 scheduledPollEndpoint.configureProperties(parameters);
             }
-            IntrospectionSupport.setProperties(endpoint, parameters);
+            setProperties(endpoint, parameters);
         }
         return endpoint;
     }
@@ -131,4 +131,11 @@
      */
     protected abstract Endpoint<E> createEndpoint(String uri, String remaining, Map parameters)
         throws Exception;
+
+    /**
+     * Sets the bean properties on the given bean
+     */
+    protected void setProperties(Object bean, Map parameters) throws Exception {
+        IntrospectionSupport.setProperties(getCamelContext().getTypeConverter(), bean, parameters);
+    }
 }

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultEndpoint.java Wed Sep  5 01:45:02 2007
@@ -39,7 +39,7 @@
     private CamelContext context;
     private Component component;
     private ScheduledExecutorService executorService;
-    private ExchangePattern defaultPattern = ExchangePattern.InOnly;
+    private ExchangePattern exchangePattern = ExchangePattern.InOnly;
 
     protected DefaultEndpoint(String endpointUri, Component component) {
         this(endpointUri, component.getCamelContext());
@@ -151,19 +151,19 @@
     }
 
     public E createExchange() {
-        return createExchange(getDefaultPattern());
+        return createExchange(getExchangePattern());
     }
 
     public E createExchange(ExchangePattern pattern) {
         return (E) new DefaultExchange(getContext(), pattern);
     }
 
-    public ExchangePattern getDefaultPattern() {
-        return defaultPattern;
+    public ExchangePattern getExchangePattern() {
+        return exchangePattern;
     }
 
-    public void setDefaultPattern(ExchangePattern defaultPattern) {
-        this.defaultPattern = defaultPattern;
+    public void setExchangePattern(ExchangePattern exchangePattern) {
+        this.exchangePattern = exchangePattern;
     }
 
     protected ScheduledThreadPoolExecutor createExecutorService() {

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ScheduledPollEndpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ScheduledPollEndpoint.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ScheduledPollEndpoint.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ScheduledPollEndpoint.java Wed Sep  5 01:45:02 2007
@@ -44,9 +44,10 @@
         this.consumerProperties = consumerProperties;
     }
 
-    protected void configureConsumer(Consumer<E> consumer) {
+    protected void configureConsumer(Consumer<E> consumer) throws Exception {
         if (consumerProperties != null) {
-            IntrospectionSupport.setProperties(consumer, consumerProperties);
+            // TODO pass in type converter
+            IntrospectionSupport.setProperties(getContext().getTypeConverter(), consumer, consumerProperties);
         }
     }
 

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=572899&r1=572898&r2=572899&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  5 01:45:02 2007
@@ -51,16 +51,12 @@
         addFallbackConverter(new PropertyEditorTypeConverter());
         addFallbackConverter(new ToStringTypeConverter());
         addFallbackConverter(new ArrayTypeConverter());
+        addFallbackConverter(new EnumTypeConverter());
     }
 
     public <T> T convertTo(Class<T> toType, Object value) {
         if (toType.isInstance(value)) {
             return toType.cast(value);
-        } else if (toType.isPrimitive()) {
-            Class primitiveType = ObjectHelper.convertPrimitiveTypeToWrapperType(toType);
-            if (primitiveType != toType) {
-                return (T)convertTo(primitiveType, value);
-            }
         }
         checkLoaded();
         TypeConverter converter = getOrFindTypeConverter(toType, value);
@@ -78,9 +74,14 @@
         // lets avoid NullPointerException when converting to boolean for null
         // values
         if (boolean.class.isAssignableFrom(toType)) {
-            return (T)Boolean.FALSE;
+            return (T) Boolean.FALSE;
+        }
+        if (toType.isPrimitive()) {
+            Class primitiveType = ObjectHelper.convertPrimitiveTypeToWrapperType(toType);
+            if (primitiveType != toType) {
+                return (T) convertTo(primitiveType, value);
+            }
         }
-
         return null;
     }
 

Copied: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/EnumTypeConverter.java (from r572881, activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/ArrayTypeConverter.java)
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/EnumTypeConverter.java?p2=activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/EnumTypeConverter.java&p1=activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/ArrayTypeConverter.java&r1=572881&r2=572899&rev=572899&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/ArrayTypeConverter.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/EnumTypeConverter.java Wed Sep  5 01:45:02 2007
@@ -16,58 +16,32 @@
  */
 package org.apache.camel.impl.converter;
 
-import java.lang.reflect.Array;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
+import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.TypeConverter;
+import org.apache.camel.util.ObjectHelper;
+
+import java.lang.reflect.Method;
 
 /**
  * A type converter which is used to convert to and from array types
  * particularly for derived types of array component types and dealing with
  * primitive array types.
- * 
+ *
  * @version $Revision: $
  */
-public class ArrayTypeConverter implements TypeConverter {
+public class EnumTypeConverter implements TypeConverter {
     public <T> T convertTo(Class<T> type, Object value) {
-        if (type.isArray()) {
-            if (value instanceof Collection) {
-                Collection collection = (Collection)value;
-                Object array = Array.newInstance(type.getComponentType(), collection.size());
-                if (array instanceof Object[]) {
-                    collection.toArray((Object[])array);
-                } else {
-                    int index = 0;
-                    for (Object element : collection) {
-                        Array.set(array, index++, element);
-                    }
-                }
-                return (T)array;
-            } else if (value != null && value.getClass().isArray()) {
-                int size = Array.getLength(value);
-                Object answer = Array.newInstance(type.getComponentType(), size);
-                for (int i = 0; i < size; i++) {
-                    Array.set(answer, i, Array.get(value, i));
-                }
-                return (T)answer;
+        if (type.isEnum() && value != null) {
+            String text = value.toString();
+            Method method = null;
+            try {
+                method = type.getMethod("valueOf", String.class);
             }
-        } else if (Collection.class.isAssignableFrom(type)) {
-            if (value != null) {
-                if (value instanceof Object[]) {
-                    return (T)Arrays.asList((Object[])value);
-                } else if (value.getClass().isArray()) {
-                    int size = Array.getLength(value);
-                    List answer = new ArrayList(size);
-                    for (int i = 0; i < size; i++) {
-                        answer.add(Array.get(value, i));
-                    }
-                    return (T)answer;
-                }
+            catch (NoSuchMethodException e) {
+                throw new RuntimeCamelException("Could not find valueOf method on enum type: " + type.getName());
             }
+            return (T) ObjectHelper.invokeMethod(method, null, text);
         }
         return null;
     }
-}
+}
\ No newline at end of file

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/PropertyEditorTypeConverter.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/PropertyEditorTypeConverter.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/PropertyEditorTypeConverter.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/PropertyEditorTypeConverter.java Wed Sep  5 01:45:02 2007
@@ -16,11 +16,12 @@
  */
 package org.apache.camel.impl.converter;
 
+import org.apache.camel.TypeConverter;
+import org.apache.camel.util.ObjectHelper;
+
 import java.beans.PropertyEditor;
 import java.beans.PropertyEditorManager;
 
-import org.apache.camel.TypeConverter;
-
 /**
  * Uses the java.beans.PropertyEditor conversion system to convert Objects to
  * and from String values.
@@ -37,17 +38,18 @@
             return null;
         }
 
+
         if (value.getClass() == String.class) {
 
             // No conversion needed.
             if (toType == String.class) {
-                return toType.cast(value);
+                return ObjectHelper.cast(toType, value);
             }
 
             PropertyEditor editor = PropertyEditorManager.findEditor(toType);
             if (editor != null) {
                 editor.setAsText(value.toString());
-                return toType.cast(editor.getValue());
+                return ObjectHelper.cast(toType, editor.getValue());
             }
 
         } else if (toType == String.class) {
@@ -55,9 +57,8 @@
             PropertyEditor editor = PropertyEditorManager.findEditor(value.getClass());
             if (editor != null) {
                 editor.setValue(value);
-                return toType.cast(editor.getAsText());
+                return ObjectHelper.cast(toType, editor.getAsText());
             }
-
         }
         return null;
     }

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=572899&r1=572898&r2=572899&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  5 01:45:02 2007
@@ -16,7 +16,8 @@
  */
 package org.apache.camel.util;
 
-import java.beans.Introspector;
+import org.apache.camel.TypeConverter;
+
 import java.beans.PropertyEditor;
 import java.beans.PropertyEditorManager;
 import java.lang.reflect.Field;
@@ -107,7 +108,7 @@
         return method;
     }
 
-    public static boolean setProperties(Object target, Map props, String optionPrefix) {
+    public static boolean setProperties(Object target, Map props, String optionPrefix) throws Exception {
         boolean rc = false;
         if (target == null) {
             throw new IllegalArgumentException("target was null.");
@@ -150,7 +151,7 @@
         return rc;
     }
 
-    public static boolean setProperties(Object target, Map props) {
+    public static boolean setProperties(TypeConverter typeConverter, Object target, Map props) throws Exception {
         boolean rc = false;
 
         if (target == null) {
@@ -162,7 +163,7 @@
 
         for (Iterator iter = props.entrySet().iterator(); iter.hasNext();) {
             Map.Entry entry = (Entry)iter.next();
-            if (setProperty(target, (String)entry.getKey(), entry.getValue())) {
+            if (setProperty(typeConverter, target, (String)entry.getKey(), entry.getValue())) {
                 iter.remove();
                 rc = true;
             }
@@ -171,10 +172,14 @@
         return rc;
     }
 
-    public static boolean setProperty(Object target, String name, Object value) {
+    public static boolean setProperties(Object target, Map props) throws Exception {
+        return setProperties(null, target, props);
+    }
+
+    public static boolean setProperty(TypeConverter typeConverter, Object target, String name, Object value) throws Exception {
         try {
             Class clazz = target.getClass();
-            Method setter = findSetterMethod(clazz, name);
+            Method setter = findSetterMethod(typeConverter, clazz, name);
             if (setter == null) {
                 return false;
             }
@@ -185,15 +190,37 @@
                 setter.invoke(target, new Object[] {value});
             } else {
                 // We need to convert it
-                setter.invoke(target, new Object[] {convert(value, setter.getParameterTypes()[0])});
+                Object convertedValue = convert(typeConverter, setter.getParameterTypes()[0], value);
+                setter.invoke(target, new Object[] {convertedValue});
             }
             return true;
-        } catch (Throwable ignore) {
-            return false;
         }
+        catch (InvocationTargetException e) {
+            Throwable throwable = e.getTargetException();
+            if (throwable instanceof Exception) {
+                Exception exception = (Exception) throwable;
+                throw exception;
+            }
+            else {
+                Error error = (Error) throwable;
+                throw error;
+            }
+        }
+    }
+
+
+    public static boolean setProperty(Object target, String name, Object value) throws Exception {
+        return setProperty(null, target, name, value);
     }
 
-    private static Object convert(Object value, Class type) throws URISyntaxException {
+    private static Object convert(TypeConverter typeConverter, Class type, Object value) throws URISyntaxException {
+        if (typeConverter != null) {
+            Object answer = typeConverter.convertTo(type, value);
+            if (answer == null) {
+                throw new IllegalArgumentException("Could not convert \"" + value + "\" to " + type.getName());
+            }
+            return answer;
+        }
         PropertyEditor editor = PropertyEditorManager.findEditor(type);
         if (editor != null) {
             editor.setAsText(value.toString());
@@ -217,16 +244,21 @@
         return null;
     }
 
-    private static Method findSetterMethod(Class clazz, String name) {
+    private static Method findSetterMethod(TypeConverter typeConverter, Class clazz, String name) {
         // Build the method name.
-        name = "set" + name.substring(0, 1).toUpperCase() + name.substring(1);
-        Method[] methods = clazz.getMethods();
-        for (int i = 0; i < methods.length; i++) {
-            Method method = methods[i];
-            Class params[] = method.getParameterTypes();
-            if (method.getName().equals(name) && params.length == 1 && isSettableType(params[0])) {
-                return method;
+        name = "set" + ObjectHelper.capitalize(name);
+        while (clazz != Object.class) {
+            Method[] methods = clazz.getMethods();
+            for (int i = 0; i < methods.length; i++) {
+                Method method = methods[i];
+                Class params[] = method.getParameterTypes();
+                if (method.getName().equals(name) && params.length == 1) {
+                    if (typeConverter != null || isSettableType(params[0])) {
+                        return method;
+                    }
+                }
             }
+            clazz = clazz.getSuperclass();
         }
         return null;
     }
@@ -318,5 +350,4 @@
         }
 
     }
-
 }

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java Wed Sep  5 01:45:02 2007
@@ -369,6 +369,10 @@
                 rc = Short.class;
             } else if (type == byte.class) {
                 rc = Byte.class;
+/*
+            } else if (type == boolean.class) {
+                rc = Boolean.class;
+*/
             }
         }
         return rc;
@@ -419,6 +423,27 @@
             catch (IOException e) {
                 log.warn("Could not close " + name + ". Reason: "+ e, e);
             }
+        }
+    }
+
+    /**
+     * Converts the given value to the required type or throw a meaningful exception
+     */
+    public static <T> T cast(Class<T> toType, Object value) {
+        if (toType == boolean.class) {
+            return (T) cast(Boolean.class, value);
+        }
+        else if (toType.isPrimitive()) {
+            Class newType = convertPrimitiveTypeToWrapperType(toType);
+            if (newType != toType) {
+                return (T) cast(newType, value);
+            }
+        }
+        try {
+            return toType.cast(value);
+        }
+        catch (ClassCastException e) {
+            throw new IllegalArgumentException("Failed to convert: " + value + " to type: " + toType.getName() + " due to: " + e, e);
         }
     }
 }

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/jndi/CamelInitialContextFactory.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/jndi/CamelInitialContextFactory.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/jndi/CamelInitialContextFactory.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/jndi/CamelInitialContextFactory.java Wed Sep  5 01:45:02 2007
@@ -32,6 +32,16 @@
 public class CamelInitialContextFactory implements InitialContextFactory {
 
     public Context getInitialContext(Hashtable environment) throws NamingException {
-        return new JndiContext(environment);
+        try {
+            return new JndiContext(environment);
+        }
+        catch (NamingException e) {
+            throw e;
+        }
+        catch (Exception e) {
+            NamingException exception = new NamingException(e.getMessage());
+            exception.initCause(e);
+            throw exception;
+        }
     }
 }

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/jndi/JndiContext.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/jndi/JndiContext.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/jndi/JndiContext.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/jndi/JndiContext.java Wed Sep  5 01:45:02 2007
@@ -63,11 +63,11 @@
     private boolean frozen;
     private String nameInNamespace = "";
 
-    public JndiContext() {
+    public JndiContext() throws Exception {
         this(new Hashtable());
     }
 
-    public JndiContext(Hashtable env) {
+    public JndiContext(Hashtable env) throws Exception {
         this(env, createBindingsMapFromEnvironment(env));
     }
 
@@ -102,7 +102,7 @@
      * properties using $foo.class to point to a class name with $foo.* being
      * properties set on the injected bean
      */
-    public static Map createBindingsMapFromEnvironment(Hashtable env) {
+    public static Map createBindingsMapFromEnvironment(Hashtable env) throws Exception {
         Map answer = new HashMap(env);
 
         for (Object object : env.entrySet()) {
@@ -192,7 +192,12 @@
     }
 
     protected JndiContext newContext() {
-        return new JndiContext();
+        try {
+            return new JndiContext();
+        }
+        catch (Exception e) {
+            throw new IllegalArgumentException(e);
+        }
     }
 
     public Object addToEnvironment(String propName, Object propVal) throws NamingException {
@@ -436,7 +441,7 @@
         }
     }
 
-    protected static Object createBean(Class<?> type, Map properties, String prefix) {
+    protected static Object createBean(Class<?> type, Map properties, String prefix) throws Exception {
         Object value = INJETOR.newInstance(type);
         IntrospectionSupport.setProperties(value, properties, prefix);
         return value;

Modified: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/converter/ConverterTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/converter/ConverterTest.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/converter/ConverterTest.java (original)
+++ activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/converter/ConverterTest.java Wed Sep  5 01:45:02 2007
@@ -29,6 +29,7 @@
 import junit.framework.TestCase;
 
 import org.apache.camel.TypeConverter;
+import org.apache.camel.util.IntrospectionSupport;
 import org.apache.camel.impl.ReflectionInjector;
 import org.apache.camel.impl.converter.DefaultTypeConverter;
 import org.apache.commons.logging.Log;
@@ -53,12 +54,6 @@
         }
     }
 
-
-    @Override
-    protected void setUp() throws Exception {
-        PropertyEditorManager.registerEditor(Integer.class, IntegerPropertyEditor.class);
-    }
-
     public void testIntegerPropertyEditorConversion() throws Exception {
         Integer value = converter.convertTo(Integer.class, "1000");
         assertNotNull(value);
@@ -160,4 +155,28 @@
         int value = converter.convertTo(int.class, 4);
         assertEquals("value", 4, value);
     }
+
+    public void testPrimitiveIntPropertySetter() throws Exception {
+        MyBean bean = new MyBean();
+        IntrospectionSupport.setProperty(converter, bean, "foo", "4");
+        assertEquals("bean.foo", 4, bean.getFoo());
+    }
+
+    public static class MyBean {
+        private int foo;
+
+        public int getFoo() {
+            return foo;
+        }
+
+        public void setFoo(int foo) {
+            this.foo = foo;
+        }
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        PropertyEditorManager.registerEditor(Integer.class, IntegerPropertyEditor.class);
+    }
+
 }

Modified: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/CustomExchangePatternTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/CustomExchangePatternTest.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/CustomExchangePatternTest.java (original)
+++ activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/CustomExchangePatternTest.java Wed Sep  5 01:45:02 2007
@@ -58,6 +58,20 @@
         assertReceivedExpectedPattern(expectedPattern);
     }
 
+    public void testInOutViaUri() throws Exception {
+        final ExchangePattern expectedPattern = ExchangePattern.InOut;
+
+        template.send("direct:start?exchangePattern=InOut", new Processor() {
+            public void process(Exchange exchange) throws Exception {
+                assertEquals("MEP", expectedPattern, exchange.getPattern());
+                exchange.getIn().setBody("<hello>world!</hello>");
+            }
+        });
+
+        resultEndpoint.assertIsSatisfied();
+        assertReceivedExpectedPattern(expectedPattern);
+    }
+
     @Override
     protected void setUp() throws Exception {
         super.setUp();
@@ -75,6 +89,7 @@
         return new RouteBuilder() {
             public void configure() {
                 from("direct:start").to("mock:result");
+                from("direct:start?exchangePattern=InOut").to("mock:result");
             }
         };
     }

Modified: activemq/camel/trunk/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/JournalComponent.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/JournalComponent.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/JournalComponent.java (original)
+++ activemq/camel/trunk/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/JournalComponent.java Wed Sep  5 01:45:02 2007
@@ -16,13 +16,12 @@
  */
 package org.apache.camel.component.activemq;
 
-import java.io.File;
-import java.util.Map;
-
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.impl.DefaultComponent;
-import org.apache.camel.util.IntrospectionSupport;
+
+import java.io.File;
+import java.util.Map;
 
 /**
  * The <a href="http://activemq.apache.org/camel/activemq.html">ActiveMQ Component</a>
@@ -34,7 +33,7 @@
     @Override
     protected Endpoint<Exchange> createEndpoint(String uri, String remaining, Map parameters) throws Exception {        
         JournalEndpoint endpoint = new JournalEndpoint(uri, this, new File(remaining));
-        IntrospectionSupport.setProperties(endpoint, parameters);
+        setProperties(endpoint, parameters);
         return endpoint;
     }
 }

Modified: activemq/camel/trunk/components/camel-atom/src/main/java/org/apache/camel/component/atom/AtomComponent.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-atom/src/main/java/org/apache/camel/component/atom/AtomComponent.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-atom/src/main/java/org/apache/camel/component/atom/AtomComponent.java (original)
+++ activemq/camel/trunk/components/camel-atom/src/main/java/org/apache/camel/component/atom/AtomComponent.java Wed Sep  5 01:45:02 2007
@@ -19,7 +19,6 @@
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.impl.DefaultComponent;
-import org.apache.camel.util.IntrospectionSupport;
 
 import java.util.Map;
 
@@ -31,7 +30,7 @@
 public class AtomComponent extends DefaultComponent {
     protected Endpoint createEndpoint(String uri, String remaining, Map parameters) throws Exception {
         AtomEndpoint answer = new AtomEndpoint(uri, this, remaining);
-        IntrospectionSupport.setProperties(answer, parameters);
+        setProperties(answer, parameters);
         return answer;
     }
 }

Modified: activemq/camel/trunk/components/camel-bam/src/main/java/org/apache/camel/bam/processor/BamProcessorSupport.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-bam/src/main/java/org/apache/camel/bam/processor/BamProcessorSupport.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-bam/src/main/java/org/apache/camel/bam/processor/BamProcessorSupport.java (original)
+++ activemq/camel/trunk/components/camel-bam/src/main/java/org/apache/camel/bam/processor/BamProcessorSupport.java Wed Sep  5 01:45:02 2007
@@ -139,7 +139,7 @@
     // -----------------------------------------------------------------------
     protected abstract void processEntity(Exchange exchange, T entity) throws Exception;
 
-    protected abstract T loadEntity(Exchange exchange, Object key);
+    protected abstract T loadEntity(Exchange exchange, Object key) throws Exception;
 
     protected abstract Class getKeyType();
 

Modified: activemq/camel/trunk/components/camel-bam/src/main/java/org/apache/camel/bam/processor/JpaBamProcessorSupport.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-bam/src/main/java/org/apache/camel/bam/processor/JpaBamProcessorSupport.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-bam/src/main/java/org/apache/camel/bam/processor/JpaBamProcessorSupport.java (original)
+++ activemq/camel/trunk/components/camel-bam/src/main/java/org/apache/camel/bam/processor/JpaBamProcessorSupport.java Wed Sep  5 01:45:02 2007
@@ -103,7 +103,7 @@
 
     // Implementatiom methods
     // -----------------------------------------------------------------------
-    protected T loadEntity(Exchange exchange, Object key) {
+    protected T loadEntity(Exchange exchange, Object key) throws Exception {
         T entity = findEntityByCorrelationKey(key);
         if (entity == null) {
             entity = createEntity(exchange, key);
@@ -148,11 +148,11 @@
     /**
      * Sets the key property on the new entity
      */
-    protected void setKeyProperty(T entity, Object key) {
+    protected void setKeyProperty(T entity, Object key) throws Exception {
         IntrospectionSupport.setProperty(entity, getKeyPropertyName(), key);
     }
 
-    protected void setProcessDefinitionProperty(T entity, ProcessDefinition processDefinition) {
+    protected void setProcessDefinitionProperty(T entity, ProcessDefinition processDefinition) throws Exception {
         IntrospectionSupport.setProperty(entity, "processDefinition", processDefinition);
     }
 

Modified: activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfComponent.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfComponent.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfComponent.java (original)
+++ activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfComponent.java Wed Sep  5 01:45:02 2007
@@ -16,12 +16,11 @@
  */
 package org.apache.camel.component.cxf;
 
-import java.util.Map;
-
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.impl.DefaultComponent;
-import org.apache.camel.util.IntrospectionSupport;
+
+import java.util.Map;
 
 
 /**
@@ -43,7 +42,7 @@
     protected Endpoint<CxfExchange> createEndpoint(String uri, String remaining, Map parameters) throws Exception {
         // now we need to add the address, endpoint name, wsdl url or the SEI to build up a endpoint
         CxfEndpoint result = new CxfEndpoint(uri, remaining, this);        
-        IntrospectionSupport.setProperties(result, parameters);
+        setProperties(result, parameters);
         return result;
     }
 

Modified: activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java (original)
+++ activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java Wed Sep  5 01:45:02 2007
@@ -23,7 +23,6 @@
 import org.apache.camel.Producer;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.impl.DefaultEndpoint;
-import org.apache.cxf.endpoint.Endpoint;
 import org.apache.cxf.message.Message;
 
 
@@ -58,7 +57,7 @@
     }
 
     public CxfExchange createExchange() {
-        return new CxfExchange(getContext(), getDefaultPattern(), getBinding());
+        return new CxfExchange(getContext(), getExchangePattern(), getBinding());
     }
 
     public CxfExchange createExchange(ExchangePattern pattern) {
@@ -66,7 +65,7 @@
     }
 
     public CxfExchange createExchange(Message inMessage) {
-        return new CxfExchange(getContext(), getDefaultPattern(), getBinding(), inMessage);
+        return new CxfExchange(getContext(), getExchangePattern(), getBinding(), inMessage);
     }
     
     public boolean isInvoker() {

Modified: activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileComponent.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileComponent.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileComponent.java (original)
+++ activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileComponent.java Wed Sep  5 01:45:02 2007
@@ -16,13 +16,12 @@
  */
 package org.apache.camel.component.file.remote;
 
-import java.net.URI;
-import java.util.Map;
-
 import org.apache.camel.CamelContext;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.impl.DefaultComponent;
-import org.apache.camel.util.IntrospectionSupport;
+
+import java.net.URI;
+import java.util.Map;
 
 public class RemoteFileComponent extends DefaultComponent<RemoteFileExchange> {
     private RemoteFileConfiguration configuration;
@@ -63,7 +62,7 @@
             throw new RuntimeCamelException("Unsupported protocol: " + config.getProtocol());
         }
 
-        IntrospectionSupport.setProperties(endpoint.getConfiguration(), parameters);
+        setProperties(endpoint.getConfiguration(), parameters);
         return endpoint;
     }
 

Modified: activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileEndpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileEndpoint.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileEndpoint.java (original)
+++ activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileEndpoint.java Wed Sep  5 01:45:02 2007
@@ -35,7 +35,7 @@
     }
 
     public T createExchange() {
-        return (T) new RemoteFileExchange(getContext(), getDefaultPattern(), getBinding());
+        return (T) new RemoteFileExchange(getContext(), getExchangePattern(), getBinding());
     }
 
     public T createExchange(ExchangePattern pattern) {
@@ -43,7 +43,7 @@
     }
 
     public T createExchange(String fullFileName, ByteArrayOutputStream outputStream) {
-        return (T) new RemoteFileExchange(getContext(), getDefaultPattern(), getBinding(), getConfiguration().getHost(), fullFileName, outputStream);
+        return (T) new RemoteFileExchange(getContext(), getExchangePattern(), getBinding(), getConfiguration().getHost(), fullFileName, outputStream);
     }
 
     public RemoteFileBinding getBinding() {

Modified: activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcComponent.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcComponent.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcComponent.java (original)
+++ activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcComponent.java Wed Sep  5 01:45:02 2007
@@ -16,19 +16,17 @@
  */
 package org.apache.camel.component.irc;
 
-import java.net.URI;
-import java.util.HashMap;
-import java.util.Map;
-
 import org.apache.camel.CamelContext;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.impl.DefaultComponent;
-import org.apache.camel.util.IntrospectionSupport;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-
 import org.schwering.irc.lib.IRCConnection;
 
+import java.net.URI;
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * Defines the <a href="http://activemq.apache.org/camel/irc.html">IRC Component</a>
  * 
@@ -64,7 +62,7 @@
         // customize its own version
         final IrcEndpoint endpoint = new IrcEndpoint(uri, this, config);
 
-        IntrospectionSupport.setProperties(endpoint.getConfiguration(), parameters);
+        setProperties(endpoint.getConfiguration(), parameters);
         return endpoint;
     }
 

Modified: activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcEndpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcEndpoint.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcEndpoint.java (original)
+++ activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcEndpoint.java Wed Sep  5 01:45:02 2007
@@ -47,35 +47,35 @@
     }
 
     public IrcExchange createOnPrivmsgExchange(String target, IRCUser user, String msg) {
-        return new IrcExchange(getContext(), getDefaultPattern(), getBinding(), new IrcMessage("PRIVMSG", target, user, msg));
+        return new IrcExchange(getContext(), getExchangePattern(), getBinding(), new IrcMessage("PRIVMSG", target, user, msg));
     }
 
     public IrcExchange createOnNickExchange(IRCUser user, String newNick) {
-        return new IrcExchange(getContext(), getDefaultPattern(), getBinding(), new IrcMessage("NICK", user, newNick));
+        return new IrcExchange(getContext(), getExchangePattern(), getBinding(), new IrcMessage("NICK", user, newNick));
     }
 
     public IrcExchange createOnQuitExchange(IRCUser user, String msg) {
-        return new IrcExchange(getContext(), getDefaultPattern(), getBinding(), new IrcMessage("QUIT", user, msg));
+        return new IrcExchange(getContext(), getExchangePattern(), getBinding(), new IrcMessage("QUIT", user, msg));
     }
 
     public IrcExchange createOnJoinExchange(String channel, IRCUser user) {
-        return new IrcExchange(getContext(), getDefaultPattern(), getBinding(), new IrcMessage("JOIN", channel, user));
+        return new IrcExchange(getContext(), getExchangePattern(), getBinding(), new IrcMessage("JOIN", channel, user));
     }
 
     public IrcExchange createOnKickExchange(String channel, IRCUser user, String whoWasKickedNick, String msg) {
-        return new IrcExchange(getContext(), getDefaultPattern(), getBinding(), new IrcMessage("KICK", channel, user, whoWasKickedNick, msg));
+        return new IrcExchange(getContext(), getExchangePattern(), getBinding(), new IrcMessage("KICK", channel, user, whoWasKickedNick, msg));
     }
 
     public IrcExchange createOnModeExchange(String channel, IRCUser user, IRCModeParser modeParser) {
-        return new IrcExchange(getContext(), getDefaultPattern(), getBinding(), new IrcMessage("MODE", channel, user, modeParser.getLine()));
+        return new IrcExchange(getContext(), getExchangePattern(), getBinding(), new IrcMessage("MODE", channel, user, modeParser.getLine()));
     }
 
     public IrcExchange createOnPartExchange(String channel, IRCUser user, String msg) {
-        return new IrcExchange(getContext(), getDefaultPattern(), getBinding(), new IrcMessage("PART", channel, user, msg));
+        return new IrcExchange(getContext(), getExchangePattern(), getBinding(), new IrcMessage("PART", channel, user, msg));
     }
 
     public IrcExchange createOnTopicExchange(String channel, IRCUser user, String topic) {
-        return new IrcExchange(getContext(), getDefaultPattern(), getBinding(), new IrcMessage("TOPIC", channel, user, topic));
+        return new IrcExchange(getContext(), getExchangePattern(), getBinding(), new IrcMessage("TOPIC", channel, user, topic));
     }
 
     public IrcProducer createProducer() throws Exception {

Modified: activemq/camel/trunk/components/camel-jing/src/main/java/org/apache/camel/component/validator/jing/JingComponent.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-jing/src/main/java/org/apache/camel/component/validator/jing/JingComponent.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-jing/src/main/java/org/apache/camel/component/validator/jing/JingComponent.java (original)
+++ activemq/camel/trunk/components/camel-jing/src/main/java/org/apache/camel/component/validator/jing/JingComponent.java Wed Sep  5 01:45:02 2007
@@ -16,16 +16,14 @@
  */
 package org.apache.camel.component.validator.jing;
 
-import java.util.Map;
-
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.component.ResourceBasedComponent;
 import org.apache.camel.impl.ProcessorEndpoint;
-import org.apache.camel.util.IntrospectionSupport;
-
 import org.springframework.core.io.Resource;
 
+import java.util.Map;
+
 /**
  * A component for validating XML payloads using the
  * <a href="http://www.thaiopensource.com/relaxng/jing.html">Jing library</a>
@@ -45,6 +43,6 @@
     }
 
     protected void configureValidator(JingValidator validator, String uri, String remaining, Map parameters) throws Exception {
-        IntrospectionSupport.setProperties(validator, parameters);
+        setProperties(validator, parameters);
     }
 }

Modified: activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/EndpointMessageListener.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/EndpointMessageListener.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/EndpointMessageListener.java (original)
+++ activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/EndpointMessageListener.java Wed Sep  5 01:45:02 2007
@@ -19,7 +19,6 @@
 import javax.jms.Message;
 import javax.jms.MessageListener;
 
-import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.RuntimeCamelException;
@@ -62,7 +61,7 @@
     }
 
     public JmsExchange createExchange(Message message) {
-        return new JmsExchange(endpoint.getContext(), endpoint.getDefaultPattern(), getBinding(), message);
+        return new JmsExchange(endpoint.getContext(), endpoint.getExchangePattern(), getBinding(), message);
     }
 
     // Properties

Modified: activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java (original)
+++ activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java Wed Sep  5 01:45:02 2007
@@ -16,23 +16,19 @@
  */
 package org.apache.camel.component.jms;
 
-import java.util.Map;
-
-import javax.jms.ConnectionFactory;
-import javax.jms.ExceptionListener;
-import javax.jms.Session;
-
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.impl.DefaultComponent;
-import org.apache.camel.util.IntrospectionSupport;
-
+import static org.apache.camel.util.ObjectHelper.removeStartingCharacters;
 import org.springframework.core.task.TaskExecutor;
 import org.springframework.jms.listener.serversession.ServerSessionFactory;
 import org.springframework.jms.support.converter.MessageConverter;
 import org.springframework.transaction.PlatformTransactionManager;
 
-import static org.apache.camel.util.ObjectHelper.removeStartingCharacters;
+import javax.jms.ConnectionFactory;
+import javax.jms.ExceptionListener;
+import javax.jms.Session;
+import java.util.Map;
 
 /**
  * A <a href="http://activemq.apache.org/jms.html">JMS Component</a>
@@ -130,7 +126,7 @@
         if (selector != null) {
             endpoint.setSelector(selector);
         }
-        IntrospectionSupport.setProperties(endpoint.getConfiguration(), parameters);
+        setProperties(endpoint.getConfiguration(), parameters);
         return endpoint;
     }
 

Modified: activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java (original)
+++ activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java Wed Sep  5 01:45:02 2007
@@ -97,7 +97,7 @@
     }
 
     public JmsExchange createExchange(Message message) {
-        return new JmsExchange(getContext(), getDefaultPattern(), getBinding(), message);
+        return new JmsExchange(getContext(), getExchangePattern(), getBinding(), message);
     }
 
     // Properties

Modified: activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailComponent.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailComponent.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailComponent.java (original)
+++ activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailComponent.java Wed Sep  5 01:45:02 2007
@@ -16,13 +16,12 @@
  */
 package org.apache.camel.component.mail;
 
-import java.net.URI;
-import java.util.Map;
-
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.impl.DefaultComponent;
-import org.apache.camel.util.IntrospectionSupport;
+
+import java.net.URI;
+import java.util.Map;
 
 /**
  * @version $Revision:520964 $
@@ -66,7 +65,7 @@
         // lets make sure we copy the configuration as each endpoint can customize its own version
         MailEndpoint endpoint = new MailEndpoint(uri, this, config);
 
-        IntrospectionSupport.setProperties(endpoint.getConfiguration(), parameters);
+        setProperties(endpoint.getConfiguration(), parameters);
         return endpoint;
     }
 

Modified: activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailEndpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailEndpoint.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailEndpoint.java (original)
+++ activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailEndpoint.java Wed Sep  5 01:45:02 2007
@@ -85,7 +85,7 @@
     }
 
     public MailExchange createExchange(Message message) {
-        return new MailExchange(getContext(), getDefaultPattern(), getBinding(), message);
+        return new MailExchange(getContext(), getExchangePattern(), getBinding(), message);
     }
 
     // Properties

Modified: activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaEndpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaEndpoint.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaEndpoint.java (original)
+++ activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaEndpoint.java Wed Sep  5 01:45:02 2007
@@ -59,7 +59,7 @@
     }
 
     public MinaExchange createExchange(IoSession session, Object object) {
-        MinaExchange exchange = new MinaExchange(getContext(), getDefaultPattern());
+        MinaExchange exchange = new MinaExchange(getContext(), getExchangePattern());
         exchange.getIn().setBody(object);
         // TODO store session in exchange?
         return exchange;

Modified: activemq/camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzComponent.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzComponent.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzComponent.java (original)
+++ activemq/camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzComponent.java Wed Sep  5 01:45:02 2007
@@ -16,15 +16,11 @@
  */
 package org.apache.camel.component.quartz;
 
-import java.net.URI;
-import java.util.Map;
-
 import org.apache.camel.CamelContext;
 import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.util.IntrospectionSupport;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-
 import org.quartz.CronTrigger;
 import org.quartz.JobDetail;
 import org.quartz.Scheduler;
@@ -33,6 +29,9 @@
 import org.quartz.Trigger;
 import org.quartz.impl.StdSchedulerFactory;
 
+import java.net.URI;
+import java.util.Map;
+
 /**
  * A <a href="http://activemq.apache.org/camel/quartz.html">Quartz Component</a>
  * 
@@ -98,8 +97,8 @@
         Map triggerParameters = IntrospectionSupport.extractProperties(parameters, "trigger.");
         Map jobParameters = IntrospectionSupport.extractProperties(parameters, "job.");
 
-        IntrospectionSupport.setProperties(trigger, triggerParameters);
-        IntrospectionSupport.setProperties(answer.getJobDetail(), jobParameters);
+        setProperties(trigger, triggerParameters);
+        setProperties(answer.getJobDetail(), jobParameters);
 
         return answer;
     }

Modified: activemq/camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzEndpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzEndpoint.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzEndpoint.java (original)
+++ activemq/camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzEndpoint.java Wed Sep  5 01:45:02 2007
@@ -124,7 +124,7 @@
     }
 
     public QuartzExchange createExchange(JobExecutionContext jobExecutionContext) {
-        return new QuartzExchange(getContext(), getDefaultPattern(), jobExecutionContext);
+        return new QuartzExchange(getContext(), getExchangePattern(), jobExecutionContext);
     }
 
     public Producer<QuartzExchange> createProducer() throws Exception {

Modified: activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/component/validator/ValidatorComponent.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/component/validator/ValidatorComponent.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/component/validator/ValidatorComponent.java (original)
+++ activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/component/validator/ValidatorComponent.java Wed Sep  5 01:45:02 2007
@@ -16,16 +16,14 @@
  */
 package org.apache.camel.component.validator;
 
-import java.util.Map;
-
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.component.ResourceBasedComponent;
 import org.apache.camel.impl.ProcessorEndpoint;
-import org.apache.camel.util.IntrospectionSupport;
-
 import org.springframework.core.io.Resource;
 
+import java.util.Map;
+
 /**
  * The <a href="http://activemq.apache.org/camel/validator.html">Validator Component</a>
  * for validating XML against some schema
@@ -46,6 +44,6 @@
     }
 
     protected void configureValidator(SpringValidator validator, String uri, String remaining, Map parameters) throws Exception {
-        IntrospectionSupport.setProperties(validator, parameters);
+        setProperties(validator, parameters);
     }
 }

Modified: activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppEndpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppEndpoint.java?rev=572899&r1=572898&r2=572899&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppEndpoint.java (original)
+++ activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppEndpoint.java Wed Sep  5 01:45:02 2007
@@ -84,7 +84,7 @@
     }
 
     public XmppExchange createExchange(Message message) {
-        return new XmppExchange(getContext(), getDefaultPattern(), getBinding(), message);
+        return new XmppExchange(getContext(), getExchangePattern(), getBinding(), message);
     }
 
     // Properties