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/04 13:33:25 UTC

svn commit: r572625 - in /activemq/camel/trunk: camel-core/src/main/java/org/apache/camel/ 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/c...

Author: jstrachan
Date: Tue Sep  4 04:33:23 2007
New Revision: 572625

URL: http://svn.apache.org/viewvc?rev=572625&view=rev
Log:
further improvements for CAMEL-133, a client can now create an exchange on an endpoint specifying the ExchangePattern it wants to use for an Exchange via Endpoint.createExchange(pattern)

Modified:
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Endpoint.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanExchange.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/CamelInvocationHandler.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/direct/DirectEndpoint.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/file/FileExchange.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/jmx/JMXExchange.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/timer/TimerEndpoint.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/ProcessorEndpoint.java
    activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileExchangeTest.java
    activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/MyExchange.java
    activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/ProducerTest.java
    activemq/camel/trunk/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/JournalEndpoint.java
    activemq/camel/trunk/components/camel-atom/src/main/java/org/apache/camel/component/atom/AtomEndpoint.java
    activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
    activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfExchange.java
    activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileEndpoint.java
    activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileExchange.java
    activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/CamelServlet.java
    activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java
    activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpExchange.java
    activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcEndpoint.java
    activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcExchange.java
    activemq/camel/trunk/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcEndpoint.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/JmsEndpoint.java
    activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsExchange.java
    activemq/camel/trunk/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaEndpoint.java
    activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailEndpoint.java
    activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailExchange.java
    activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaEndpoint.java
    activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaExchange.java
    activemq/camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzEndpoint.java
    activemq/camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzExchange.java
    activemq/camel/trunk/components/camel-rmi/src/main/java/org/apache/camel/component/rmi/RmiEndpoint.java
    activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/component/event/EventEndpoint.java
    activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppEndpoint.java
    activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppExchange.java

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Endpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Endpoint.java?rev=572625&r1=572624&r2=572625&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Endpoint.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Endpoint.java Tue Sep  4 04:33:23 2007
@@ -47,6 +47,15 @@
     E createExchange();
 
     /**
+     * Create a new exchange for communicating with this endpoint
+     * with the specified {@link ExchangePattern} such as whether its going
+     * to be an {@link ExchangePattern#InOnly} or {@link ExchangePattern#InOut} exchange
+     *
+     * @param pattern the message exchange pattern for the exchange
+     */
+    E createExchange(ExchangePattern pattern);
+
+    /**
      * Creates a new exchange for communicating with this exchange using the
      * given exchange to pre-populate the values of the headers and messages
      */

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanExchange.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanExchange.java?rev=572625&r1=572624&r2=572625&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanExchange.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanExchange.java Tue Sep  4 04:33:23 2007
@@ -18,6 +18,7 @@
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
+import org.apache.camel.ExchangePattern;
 import org.apache.camel.impl.DefaultExchange;
 
 /**
@@ -25,8 +26,8 @@
  */
 public class BeanExchange extends DefaultExchange {
 
-    public BeanExchange(CamelContext context) {
-        super(context);
+    public BeanExchange(CamelContext context, ExchangePattern pattern) {
+        super(context, pattern);
     }
 
     public BeanInvocation getInvocation() {
@@ -39,6 +40,6 @@
 
     @Override
     public Exchange newInstance() {
-        return new BeanExchange(getContext());
+        return new BeanExchange(getContext(), getPattern());
     }
 }

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/CamelInvocationHandler.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/CamelInvocationHandler.java?rev=572625&r1=572624&r2=572625&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/CamelInvocationHandler.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/CamelInvocationHandler.java Tue Sep  4 04:33:23 2007
@@ -22,6 +22,7 @@
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.Producer;
+import org.apache.camel.ExchangePattern;
 
 /**
  * An {@link java.lang.reflect.InvocationHandler} which invokes a
@@ -40,7 +41,7 @@
 
     public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
         BeanInvocation invocation = new BeanInvocation(proxy, method, args);
-        BeanExchange exchange = new BeanExchange(endpoint.getContext());
+        BeanExchange exchange = new BeanExchange(endpoint.getContext(), ExchangePattern.InOut);
         exchange.setInvocation(invocation);
 
         producer.process(exchange);

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/direct/DirectEndpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/direct/DirectEndpoint.java?rev=572625&r1=572624&r2=572625&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/direct/DirectEndpoint.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/direct/DirectEndpoint.java Tue Sep  4 04:33:23 2007
@@ -22,6 +22,7 @@
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
+import org.apache.camel.ExchangePattern;
 import org.apache.camel.impl.DefaultConsumer;
 import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.impl.DefaultExchange;
@@ -81,12 +82,6 @@
                 consumers.remove(this);
             }
         };
-    }
-
-    public E createExchange() {
-        // How can we create a specific Exchange if we are generic??
-        // perhaps it would be better if we did not implement this.
-        return (E)new DefaultExchange(getContext());
     }
 
     public boolean isAllowMultipleConsumers() {

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=572625&r1=572624&r2=572625&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 Tue Sep  4 04:33:23 2007
@@ -19,6 +19,7 @@
 import org.apache.camel.Consumer;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
+import org.apache.camel.ExchangePattern;
 import org.apache.camel.component.file.strategy.DefaultFileRenamer;
 import org.apache.camel.component.file.strategy.DeleteFileProcessStrategy;
 import org.apache.camel.component.file.strategy.FileProcessStrategy;
@@ -85,7 +86,7 @@
      * @see org.apache.camel.Endpoint#createExchange()
      */
     public FileExchange createExchange(File file) {
-        return new FileExchange(getContext(), file);
+        return new FileExchange(getContext(), getDefaultPattern(), file);
     }
 
     /**
@@ -94,6 +95,10 @@
      */
     public FileExchange createExchange() {
         return createExchange(getFile());
+    }
+
+    public FileExchange createExchange(ExchangePattern pattern) {
+        return new FileExchange(getContext(), pattern, file);
     }
 
     public File getFile() {

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileExchange.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileExchange.java?rev=572625&r1=572624&r2=572625&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileExchange.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileExchange.java Tue Sep  4 04:33:23 2007
@@ -18,6 +18,7 @@
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
+import org.apache.camel.ExchangePattern;
 import org.apache.camel.impl.DefaultExchange;
 
 import java.io.File;
@@ -30,8 +31,8 @@
 public class FileExchange extends DefaultExchange {
     private File file;
 
-    public FileExchange(CamelContext camelContext, File file) {
-        super(camelContext);
+    public FileExchange(CamelContext camelContext, ExchangePattern pattern, File file) {
+        super(camelContext, pattern);
         setIn(new FileMessage(file));
         this.file = file;
     }
@@ -51,6 +52,6 @@
     }
 
     public Exchange newInstance() {
-        return new FileExchange(getContext(), getFile());
+        return new FileExchange(getContext(), getPattern(), getFile());
     }
 }

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=572625&r1=572624&r2=572625&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 Tue Sep  4 04:33:23 2007
@@ -23,6 +23,7 @@
 import org.apache.camel.Consumer;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
+import org.apache.camel.ExchangePattern;
 import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -91,11 +92,15 @@
     }
 
     public JMXExchange createExchange(Notification notification) {
-        return new JMXExchange(getContext(), notification);
+        return new JMXExchange(getContext(), getDefaultPattern(), notification);
     }
 
     public JMXExchange createExchange() {
-        return new JMXExchange(getContext(), null);
+        return new JMXExchange(getContext(), getDefaultPattern(), null);
+    }
+
+    public JMXExchange createExchange(ExchangePattern pattern) {
+        return new JMXExchange(getContext(), pattern, null);
     }
 
     public String getAttributeName() {

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/jmx/JMXExchange.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/jmx/JMXExchange.java?rev=572625&r1=572624&r2=572625&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/jmx/JMXExchange.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/jmx/JMXExchange.java Tue Sep  4 04:33:23 2007
@@ -16,10 +16,13 @@
  */
 package org.apache.camel.component.jmx;
 
-import javax.management.Notification;
 import org.apache.camel.CamelContext;
+import org.apache.camel.Exchange;
+import org.apache.camel.ExchangePattern;
 import org.apache.camel.impl.DefaultExchange;
 
+import javax.management.Notification;
+
 /**
  * A {@link Exchange} for a jmx notification
  * 
@@ -31,10 +34,10 @@
      * Constructor
      * 
      * @param camelContext
-     * @param file
+     * @param pattern
      */
-    public JMXExchange(CamelContext camelContext, Notification notification) {
-        super(camelContext);
+    public JMXExchange(CamelContext camelContext, ExchangePattern pattern, Notification notification) {
+        super(camelContext, pattern);
         setIn(new JMXMessage(notification));
     }
 }

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java?rev=572625&r1=572624&r2=572625&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java Tue Sep  4 04:33:23 2007
@@ -31,6 +31,7 @@
 import org.apache.camel.Message;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
+import org.apache.camel.ExchangePattern;
 import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.impl.DefaultExchange;
 import org.apache.camel.impl.DefaultProducer;
@@ -96,10 +97,6 @@
         for (MockEndpoint endpoint : endpoints) {
             endpoint.expectsMessageCount(count);
         }
-    }
-
-    public Exchange createExchange() {
-        return new DefaultExchange(getContext());
     }
 
     public Consumer<Exchange> createConsumer(Processor processor) throws Exception {

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java?rev=572625&r1=572624&r2=572625&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/seda/SedaEndpoint.java Tue Sep  4 04:33:23 2007
@@ -26,6 +26,7 @@
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
+import org.apache.camel.ExchangePattern;
 import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.impl.DefaultExchange;
 import org.apache.camel.impl.DefaultProducer;
@@ -93,10 +94,6 @@
 
     public Consumer createConsumer(Processor processor) throws Exception {
         return new SedaConsumer(this, processor);
-    }
-
-    public Exchange createExchange() {
-        return new DefaultExchange(getContext());
     }
 
     public BlockingQueue<Entry> getQueue() {

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/timer/TimerEndpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/timer/TimerEndpoint.java?rev=572625&r1=572624&r2=572625&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/timer/TimerEndpoint.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/timer/TimerEndpoint.java Tue Sep  4 04:33:23 2007
@@ -21,6 +21,7 @@
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.ExchangePattern;
 import org.apache.camel.component.bean.BeanExchange;
 import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.impl.DefaultExchange;
@@ -48,10 +49,6 @@
         super(fullURI, component);
         this.component = component;
         this.timerName = timerName;
-    }
-
-    public Exchange createExchange() {
-        return new DefaultExchange(getContext());
     }
 
     public Producer<Exchange> createProducer() throws Exception {

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=572625&r1=572624&r2=572625&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 Tue Sep  4 04:33:23 2007
@@ -16,18 +16,19 @@
  */
 package org.apache.camel.impl;
 
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledThreadPoolExecutor;
-
 import org.apache.camel.CamelContext;
 import org.apache.camel.Component;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
+import org.apache.camel.ExchangePattern;
 import org.apache.camel.PollingConsumer;
 import org.apache.camel.util.ObjectHelper;
 
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledThreadPoolExecutor;
+
 /**
  * A default endpoint useful for implementation inheritance
  *
@@ -38,6 +39,7 @@
     private CamelContext context;
     private Component component;
     private ScheduledExecutorService executorService;
+    private ExchangePattern defaultPattern = ExchangePattern.InOnly;
 
     protected DefaultEndpoint(String endpointUri, Component component) {
         this(endpointUri, component.getCamelContext());
@@ -146,6 +148,22 @@
             }
         }
         return null;
+    }
+
+    public E createExchange() {
+        return createExchange(getDefaultPattern());
+    }
+
+    public E createExchange(ExchangePattern pattern) {
+        return (E) new DefaultExchange(getContext(), getDefaultPattern());
+    }
+
+    public ExchangePattern getDefaultPattern() {
+        return defaultPattern;
+    }
+
+    public void setDefaultPattern(ExchangePattern defaultPattern) {
+        this.defaultPattern = defaultPattern;
     }
 
     protected ScheduledThreadPoolExecutor createExecutorService() {

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ProcessorEndpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ProcessorEndpoint.java?rev=572625&r1=572624&r2=572625&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ProcessorEndpoint.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ProcessorEndpoint.java Tue Sep  4 04:33:23 2007
@@ -22,6 +22,7 @@
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
+import org.apache.camel.ExchangePattern;
 
 /**
  * An endpoint which allows exchanges to be sent into it which just invokes a
@@ -43,9 +44,6 @@
         this.processor = processor;
     }
 
-    public Exchange createExchange() {
-        return new DefaultExchange(getContext());
-    }
 
     public Producer<Exchange> createProducer() throws Exception {
         return new DefaultProducer<Exchange>(this) {

Modified: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileExchangeTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileExchangeTest.java?rev=572625&r1=572624&r2=572625&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileExchangeTest.java (original)
+++ activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileExchangeTest.java Tue Sep  4 04:33:23 2007
@@ -20,6 +20,7 @@
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
+import org.apache.camel.ExchangePattern;
 import org.apache.camel.processor.Pipeline;
 
 import java.io.File;
@@ -30,9 +31,10 @@
  */
 public class FileExchangeTest extends ContextTestSupport {
     protected File file;
+    protected ExchangePattern pattern = ExchangePattern.InOnly;
 
     public void testCopy() {
-        FileExchange fileExchange = new FileExchange(context, file);
+        FileExchange fileExchange = new FileExchange(context, pattern, file);
         Exchange exchange = fileExchange.copy();
         FileExchange copy = assertIsInstanceOf(FileExchange.class, exchange);
         assertEquals("File", file, copy.getFile());
@@ -41,7 +43,7 @@
     }
 
     public void testCopyAfterBodyChanged() throws Exception {
-        FileExchange original = new FileExchange(context, file);
+        FileExchange original = new FileExchange(context, pattern, file);
         Object expectedBody = 1234;
         original.getIn().setBody(expectedBody);
         Exchange exchange = original.copy();
@@ -61,7 +63,7 @@
         };
 
         Pipeline pipeline = new Pipeline(Collections.singletonList(myProcessor));
-        FileExchange exchange = new FileExchange(context, file);
+        FileExchange exchange = new FileExchange(context, pattern, file);
         pipeline.process(exchange.copy());            
     }
 

Modified: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/MyExchange.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/MyExchange.java?rev=572625&r1=572624&r2=572625&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/MyExchange.java (original)
+++ activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/MyExchange.java Tue Sep  4 04:33:23 2007
@@ -17,13 +17,14 @@
 package org.apache.camel.impl;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.ExchangePattern;
 
 /**
  * @version $Revision: 1.1 $
  */
 public class MyExchange extends DefaultExchange {
 
-    public MyExchange(CamelContext context) {
-        super(context);
+    public MyExchange(CamelContext context, ExchangePattern pattern) {
+        super(context, pattern);
     }
 }

Modified: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/ProducerTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/ProducerTest.java?rev=572625&r1=572624&r2=572625&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/ProducerTest.java (original)
+++ activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/ProducerTest.java Tue Sep  4 04:33:23 2007
@@ -25,12 +25,14 @@
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.TestSupport;
+import org.apache.camel.ExchangePattern;
 
 /**
  * @version $Revision: 1.1 $
  */
 public class ProducerTest extends TestSupport {
-    private CamelContext context = new DefaultCamelContext();
+    protected CamelContext context = new DefaultCamelContext();
+    protected ExchangePattern pattern = ExchangePattern.InOnly;
 
     public void testUsingADerivedExchange() throws Exception {
         DefaultEndpoint<MyExchange> endpoint = new DefaultEndpoint<MyExchange>("foo", new DefaultComponent() {
@@ -44,8 +46,9 @@
                 return null;
             }
 
-            public MyExchange createExchange() {
-                return new MyExchange(getContext());
+
+            public MyExchange createExchange(ExchangePattern pattern) {
+                return new MyExchange(getContext(), pattern);
             }
 
             public Producer<MyExchange> createProducer() throws Exception {
@@ -75,7 +78,7 @@
         assertNotNull(actual);
         assertTrue("Not same exchange", actual != exchange);
 
-        MyExchange expected = new MyExchange(context);
+        MyExchange expected = new MyExchange(context, pattern);
         actual = endpoint.createExchange(expected);
 
         assertSame("Should not copy an exchange when of the correct type", expected, actual);

Modified: activemq/camel/trunk/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/JournalEndpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/JournalEndpoint.java?rev=572625&r1=572624&r2=572625&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/JournalEndpoint.java (original)
+++ activemq/camel/trunk/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/JournalEndpoint.java Tue Sep  4 04:33:23 2007
@@ -30,6 +30,7 @@
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.ExchangePattern;
 import org.apache.camel.impl.DefaultConsumer;
 import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.impl.DefaultExchange;
@@ -55,10 +56,6 @@
     public JournalEndpoint(String uri, JournalComponent journalComponent, File directory) {
         super(uri, journalComponent.getCamelContext());
         this.directory = directory;
-    }
-
-    public Exchange createExchange() {
-        return new DefaultExchange(getContext());
     }
 
     public boolean isSingleton() {

Modified: activemq/camel/trunk/components/camel-atom/src/main/java/org/apache/camel/component/atom/AtomEndpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-atom/src/main/java/org/apache/camel/component/atom/AtomEndpoint.java?rev=572625&r1=572624&r2=572625&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-atom/src/main/java/org/apache/camel/component/atom/AtomEndpoint.java (original)
+++ activemq/camel/trunk/components/camel-atom/src/main/java/org/apache/camel/component/atom/AtomEndpoint.java Tue Sep  4 04:33:23 2007
@@ -26,6 +26,7 @@
 import org.apache.camel.Exchange;
 import org.apache.camel.PollingConsumer;
 import org.apache.camel.Producer;
+import org.apache.camel.ExchangePattern;
 import org.apache.camel.impl.DefaultExchange;
 import org.apache.camel.impl.DefaultPollingEndpoint;
 
@@ -53,10 +54,6 @@
 
     public boolean isSingleton() {
         return true;
-    }
-
-    public Exchange createExchange() {
-        return new DefaultExchange(getContext());
     }
 
     public Producer createProducer() throws Exception {

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=572625&r1=572624&r2=572625&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 Tue Sep  4 04:33:23 2007
@@ -21,6 +21,7 @@
 import org.apache.camel.Consumer;
 import org.apache.camel.Processor;
 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;
@@ -57,11 +58,15 @@
     }
 
     public CxfExchange createExchange() {
-        return new CxfExchange(getContext(), getBinding());
+        return new CxfExchange(getContext(), getDefaultPattern(), getBinding());
+    }
+
+    public CxfExchange createExchange(ExchangePattern pattern) {
+        return new CxfExchange(getContext(), pattern, getBinding());
     }
 
     public CxfExchange createExchange(Message inMessage) {
-        return new CxfExchange(getContext(), getBinding(), inMessage);
+        return new CxfExchange(getContext(), getDefaultPattern(), getBinding(), inMessage);
     }
     
     public boolean isInvoker() {

Modified: activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfExchange.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfExchange.java?rev=572625&r1=572624&r2=572625&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfExchange.java (original)
+++ activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfExchange.java Tue Sep  4 04:33:23 2007
@@ -17,6 +17,7 @@
 package org.apache.camel.component.cxf;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.ExchangePattern;
 import org.apache.camel.impl.DefaultExchange;
 import org.apache.cxf.message.Exchange;
 import org.apache.cxf.message.Message;
@@ -34,11 +35,6 @@
     private final CxfBinding binding;
     private Exchange exchange;
 
-    public CxfExchange(CamelContext context, CxfBinding binding) {
-        super(context);
-        this.binding = binding;
-    }
-
     public CxfExchange(CamelContext context, CxfBinding binding, Exchange exchange) {
         super(context);
         this.binding = binding;
@@ -49,9 +45,13 @@
         setFault(new CxfMessage(exchange.getInFaultMessage()));
     }
 
-    public CxfExchange(CamelContext context, CxfBinding binding, Message inMessage) {
-        super(context);
+    public CxfExchange(CamelContext context, ExchangePattern pattern, CxfBinding binding) {
+        super(context, pattern);
         this.binding = binding;
+    }
+
+    public CxfExchange(CamelContext context, ExchangePattern pattern, CxfBinding binding, Message inMessage) {
+        this(context, pattern, binding);
         this.exchange = inMessage.getExchange();
 
         setIn(new CxfMessage(inMessage));

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=572625&r1=572624&r2=572625&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 Tue Sep  4 04:33:23 2007
@@ -19,6 +19,7 @@
 import java.io.ByteArrayOutputStream;
 
 import org.apache.camel.impl.ScheduledPollEndpoint;
+import org.apache.camel.ExchangePattern;
 
 public abstract class RemoteFileEndpoint<T extends RemoteFileExchange> extends ScheduledPollEndpoint<T> {
     private RemoteFileBinding binding;
@@ -34,11 +35,15 @@
     }
 
     public T createExchange() {
-        return (T) new RemoteFileExchange(getContext(), getBinding());
+        return (T) new RemoteFileExchange(getContext(), getDefaultPattern(), getBinding());
+    }
+
+    public T createExchange(ExchangePattern pattern) {
+        return (T) new RemoteFileExchange(getContext(), pattern, getBinding());
     }
 
     public T createExchange(String fullFileName, ByteArrayOutputStream outputStream) {
-        return (T) new RemoteFileExchange(getContext(), getBinding(), getConfiguration().getHost(), fullFileName, outputStream);
+        return (T) new RemoteFileExchange(getContext(), getDefaultPattern(), getBinding(), getConfiguration().getHost(), fullFileName, outputStream);
     }
 
     public RemoteFileBinding getBinding() {

Modified: activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileExchange.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileExchange.java?rev=572625&r1=572624&r2=572625&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileExchange.java (original)
+++ activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileExchange.java Tue Sep  4 04:33:23 2007
@@ -19,18 +19,19 @@
 import java.io.ByteArrayOutputStream;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.ExchangePattern;
 import org.apache.camel.impl.DefaultExchange;
 
 public class RemoteFileExchange<T extends RemoteFileBinding> extends DefaultExchange {
     private T binding;
 
-    public RemoteFileExchange(CamelContext context, T binding) {
-        super(context);
+    public RemoteFileExchange(CamelContext context, ExchangePattern pattern, T binding) {
+        super(context, pattern);
         this.binding = binding;
     }
 
-    public RemoteFileExchange(CamelContext context, T binding, String host, String fullFileName, ByteArrayOutputStream outputStream) {
-        this(context, binding);
+    public RemoteFileExchange(CamelContext context, ExchangePattern pattern, T binding, String host, String fullFileName, ByteArrayOutputStream outputStream) {
+        this(context, pattern, binding);
         setIn(new RemoteFileMessage(host, fullFileName, outputStream));
     }
 

Modified: activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/CamelServlet.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/CamelServlet.java?rev=572625&r1=572624&r2=572625&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/CamelServlet.java (original)
+++ activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/CamelServlet.java Tue Sep  4 04:33:23 2007
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.component.http;
 
+import org.apache.camel.ExchangePattern;
+
 import java.io.IOException;
 import java.util.concurrent.ConcurrentHashMap;
 

Modified: activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java?rev=572625&r1=572624&r2=572625&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java (original)
+++ activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java Tue Sep  4 04:33:23 2007
@@ -18,6 +18,7 @@
 
 import org.apache.camel.PollingConsumer;
 import org.apache.camel.Producer;
+import org.apache.camel.ExchangePattern;
 import org.apache.camel.impl.DefaultPollingEndpoint;
 
 import javax.servlet.http.HttpServletRequest;
@@ -52,8 +53,8 @@
         return new HttpPollingConsumer(this);
     }
 
-    public HttpExchange createExchange() {
-        return new HttpExchange(this);
+    public HttpExchange createExchange(ExchangePattern pattern) {
+        return new HttpExchange(this, pattern);
     }
 
     public HttpExchange createExchange(HttpServletRequest request, HttpServletResponse response) {

Modified: activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpExchange.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpExchange.java?rev=572625&r1=572624&r2=572625&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpExchange.java (original)
+++ activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpExchange.java Tue Sep  4 04:33:23 2007
@@ -20,6 +20,7 @@
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.camel.impl.DefaultExchange;
+import org.apache.camel.ExchangePattern;
 
 /**
  * Represents a HTTP exchange which exposes the underlying HTTP abtractions via
@@ -32,19 +33,18 @@
     private HttpServletRequest request;
     private HttpServletResponse response;
 
-    public HttpExchange(HttpEndpoint endpoint) {
-        super(endpoint.getContext());
+    public HttpExchange(HttpEndpoint endpoint, ExchangePattern pattern) {
+        super(endpoint.getContext(), pattern);
         this.endpoint = endpoint;
     }
 
     public HttpExchange(HttpEndpoint endpoint, HttpServletRequest request, HttpServletResponse response) {
-        this(endpoint);
+        this(endpoint, getPatternFromRequest(request));
         this.request = request;
         this.response = response;
         setIn(new HttpMessage(this, request));
     }
 
-
     /**
      * Returns the underlying Servlet request for inbound HTTP requests
      *
@@ -65,5 +65,10 @@
 
     public HttpEndpoint getEndpoint() {
         return endpoint;
+    }
+
+    protected static ExchangePattern getPatternFromRequest(HttpServletRequest request) {
+        // TODO for now just default to InOut?
+        return ExchangePattern.InOut;
     }
 }

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=572625&r1=572624&r2=572625&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 Tue Sep  4 04:33:23 2007
@@ -17,6 +17,7 @@
 package org.apache.camel.component.irc;
 
 import org.apache.camel.Processor;
+import org.apache.camel.ExchangePattern;
 import org.apache.camel.impl.DefaultEndpoint;
 import org.schwering.irc.lib.IRCModeParser;
 import org.schwering.irc.lib.IRCUser;
@@ -41,40 +42,40 @@
         return true;
     }
 
-    public IrcExchange createExchange() {
-        return new IrcExchange(getContext(), getBinding());
+    public IrcExchange createExchange(ExchangePattern pattern) {
+        return new IrcExchange(getContext(), pattern, getBinding());
     }
 
     public IrcExchange createOnPrivmsgExchange(String target, IRCUser user, String msg) {
-        return new IrcExchange(getContext(), getBinding(), new IrcMessage("PRIVMSG", target, user, msg));
+        return new IrcExchange(getContext(), getDefaultPattern(), getBinding(), new IrcMessage("PRIVMSG", target, user, msg));
     }
 
     public IrcExchange createOnNickExchange(IRCUser user, String newNick) {
-        return new IrcExchange(getContext(), getBinding(), new IrcMessage("NICK", user, newNick));
+        return new IrcExchange(getContext(), getDefaultPattern(), getBinding(), new IrcMessage("NICK", user, newNick));
     }
 
     public IrcExchange createOnQuitExchange(IRCUser user, String msg) {
-        return new IrcExchange(getContext(), getBinding(), new IrcMessage("QUIT", user, msg));
+        return new IrcExchange(getContext(), getDefaultPattern(), getBinding(), new IrcMessage("QUIT", user, msg));
     }
 
     public IrcExchange createOnJoinExchange(String channel, IRCUser user) {
-        return new IrcExchange(getContext(), getBinding(), new IrcMessage("JOIN", channel, user));
+        return new IrcExchange(getContext(), getDefaultPattern(), getBinding(), new IrcMessage("JOIN", channel, user));
     }
 
     public IrcExchange createOnKickExchange(String channel, IRCUser user, String whoWasKickedNick, String msg) {
-        return new IrcExchange(getContext(), getBinding(), new IrcMessage("KICK", channel, user, whoWasKickedNick, msg));
+        return new IrcExchange(getContext(), getDefaultPattern(), getBinding(), new IrcMessage("KICK", channel, user, whoWasKickedNick, msg));
     }
 
     public IrcExchange createOnModeExchange(String channel, IRCUser user, IRCModeParser modeParser) {
-        return new IrcExchange(getContext(), getBinding(), new IrcMessage("MODE", channel, user, modeParser.getLine()));
+        return new IrcExchange(getContext(), getDefaultPattern(), getBinding(), new IrcMessage("MODE", channel, user, modeParser.getLine()));
     }
 
     public IrcExchange createOnPartExchange(String channel, IRCUser user, String msg) {
-        return new IrcExchange(getContext(), getBinding(), new IrcMessage("PART", channel, user, msg));
+        return new IrcExchange(getContext(), getDefaultPattern(), getBinding(), new IrcMessage("PART", channel, user, msg));
     }
 
     public IrcExchange createOnTopicExchange(String channel, IRCUser user, String topic) {
-        return new IrcExchange(getContext(), getBinding(), new IrcMessage("TOPIC", channel, user, topic));
+        return new IrcExchange(getContext(), getDefaultPattern(), getBinding(), new IrcMessage("TOPIC", channel, user, topic));
     }
 
     public IrcProducer createProducer() throws Exception {

Modified: activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcExchange.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcExchange.java?rev=572625&r1=572624&r2=572625&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcExchange.java (original)
+++ activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcExchange.java Tue Sep  4 04:33:23 2007
@@ -17,18 +17,19 @@
 package org.apache.camel.component.irc;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.ExchangePattern;
 import org.apache.camel.impl.DefaultExchange;
 
 public class IrcExchange extends DefaultExchange {
     private IrcBinding binding;
 
-    public IrcExchange(CamelContext context, IrcBinding binding) {
-        super(context);
+    public IrcExchange(CamelContext context, ExchangePattern pattern, IrcBinding binding) {
+        super(context, pattern);
         this.binding = binding;
     }
 
-    public IrcExchange(CamelContext context, IrcBinding binding, IrcMessage inMessage) {
-        this(context, binding);
+    public IrcExchange(CamelContext context, ExchangePattern pattern, IrcBinding binding, IrcMessage inMessage) {
+        this(context, pattern, binding);
         setIn(inMessage);
     }
 
@@ -62,7 +63,7 @@
 
     @Override
     public IrcExchange newInstance() {
-        return new IrcExchange(getContext(), getBinding());
+        return new IrcExchange(getContext(), getPattern(), getBinding());
     }
 
     @Override

Modified: activemq/camel/trunk/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcEndpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcEndpoint.java?rev=572625&r1=572624&r2=572625&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcEndpoint.java (original)
+++ activemq/camel/trunk/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcEndpoint.java Tue Sep  4 04:33:23 2007
@@ -23,6 +23,7 @@
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.ExchangePattern;
 import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.impl.DefaultExchange;
 
@@ -43,10 +44,6 @@
 
     public boolean isSingleton() {
         return false;
-    }
-
-    public DefaultExchange createExchange() {
-        return new DefaultExchange(getContext());
     }
 
     public Consumer<DefaultExchange> createConsumer(Processor processor) throws Exception {

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=572625&r1=572624&r2=572625&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 Tue Sep  4 04:33:23 2007
@@ -34,12 +34,12 @@
  */
 public class EndpointMessageListener<E extends Exchange> implements MessageListener {
     private static final transient Log LOG = LogFactory.getLog(EndpointMessageListener.class);
-    private Endpoint<E> endpoint;
+    private JmsEndpoint endpoint;
     private Processor processor;
     private JmsBinding binding;
     private boolean eagerLoadingOfProperties;
 
-    public EndpointMessageListener(Endpoint<E> endpoint, Processor processor) {
+    public EndpointMessageListener(JmsEndpoint endpoint, Processor processor) {
         this.endpoint = endpoint;
         this.processor = processor;
     }
@@ -62,7 +62,7 @@
     }
 
     public JmsExchange createExchange(Message message) {
-        return new JmsExchange(endpoint.getContext(), getBinding(), message);
+        return new JmsExchange(endpoint.getContext(), endpoint.getDefaultPattern(), getBinding(), message);
     }
 
     // Properties

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=572625&r1=572624&r2=572625&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 Tue Sep  4 04:33:23 2007
@@ -20,6 +20,7 @@
 
 import org.apache.camel.PollingConsumer;
 import org.apache.camel.Processor;
+import org.apache.camel.ExchangePattern;
 import org.apache.camel.impl.DefaultEndpoint;
 
 import org.springframework.jms.core.JmsOperations;
@@ -90,12 +91,13 @@
         return new JmsPollingConsumer(this, template);
     }
 
-    public JmsExchange createExchange() {
-        return new JmsExchange(getContext(), getBinding());
+    @Override
+    public JmsExchange createExchange(ExchangePattern pattern) {
+        return new JmsExchange(getContext(), pattern, getBinding());
     }
 
     public JmsExchange createExchange(Message message) {
-        return new JmsExchange(getContext(), getBinding(), message);
+        return new JmsExchange(getContext(), getDefaultPattern(), getBinding(), message);
     }
 
     // Properties

Modified: activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsExchange.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsExchange.java?rev=572625&r1=572624&r2=572625&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsExchange.java (original)
+++ activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsExchange.java Tue Sep  4 04:33:23 2007
@@ -16,28 +16,29 @@
  */
 package org.apache.camel.component.jms;
 
-import javax.jms.Message;
-
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
+import org.apache.camel.ExchangePattern;
 import org.apache.camel.impl.DefaultExchange;
 
+import javax.jms.Message;
+
 /**
  * Represents an {@ilnk Exchange} for working with JMS messages while exposing the inbound and outbound JMS {@link Message}
- * objects via {@link #getInMessage()} and {@link #getOutMessage()} 
+ * objects via {@link #getInMessage()} and {@link #getOutMessage()}
  *
  * @version $Revision:520964 $
  */
 public class JmsExchange extends DefaultExchange {
     private JmsBinding binding;
 
-    public JmsExchange(CamelContext context, JmsBinding binding) {
-        super(context);
+    public JmsExchange(CamelContext context, ExchangePattern pattern, JmsBinding binding) {
+        super(context, pattern);
         this.binding = binding;
     }
 
-    public JmsExchange(CamelContext context, JmsBinding binding, Message message) {
-        this(context, binding);
+    public JmsExchange(CamelContext context, ExchangePattern pattern, JmsBinding binding, Message message) {
+        this(context, pattern, binding);
         setIn(new JmsMessage(message));
     }
 
@@ -67,7 +68,7 @@
 
     @Override
     public Exchange newInstance() {
-        return new JmsExchange(getContext(), binding);
+        return new JmsExchange(getContext(), getPattern(), binding);
     }
 
     // Expose JMS APIs

Modified: activemq/camel/trunk/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaEndpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaEndpoint.java?rev=572625&r1=572624&r2=572625&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaEndpoint.java (original)
+++ activemq/camel/trunk/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaEndpoint.java Tue Sep  4 04:33:23 2007
@@ -54,10 +54,6 @@
         entityManagerFactory = component.getEntityManagerFactory();
     }
 
-    public Exchange createExchange() {
-        return new DefaultExchange(getContext());
-    }
-
     public Producer<Exchange> createProducer() throws Exception {
         return new JpaProducer(this, getProducerExpression());
     }

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=572625&r1=572624&r2=572625&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 Tue Sep  4 04:33:23 2007
@@ -22,6 +22,7 @@
 import org.apache.camel.Consumer;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
+import org.apache.camel.ExchangePattern;
 import org.apache.camel.impl.ScheduledPollEndpoint;
 
 import org.springframework.mail.javamail.JavaMailSender;
@@ -78,12 +79,13 @@
         return answer;
     }
 
-    public MailExchange createExchange() {
-        return new MailExchange(getContext(), getBinding());
+    @Override
+    public MailExchange createExchange(ExchangePattern pattern) {
+        return new MailExchange(getContext(), pattern, getBinding());
     }
 
     public MailExchange createExchange(Message message) {
-        return new MailExchange(getContext(), getBinding(), message);
+        return new MailExchange(getContext(), getDefaultPattern(), getBinding(), message);
     }
 
     // Properties

Modified: activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailExchange.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailExchange.java?rev=572625&r1=572624&r2=572625&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailExchange.java (original)
+++ activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailExchange.java Tue Sep  4 04:33:23 2007
@@ -20,6 +20,7 @@
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
+import org.apache.camel.ExchangePattern;
 import org.apache.camel.impl.DefaultExchange;
 
 /**
@@ -30,13 +31,13 @@
 public class MailExchange extends DefaultExchange {
     private MailBinding binding;
 
-    public MailExchange(CamelContext context, MailBinding binding) {
-        super(context);
+    public MailExchange(CamelContext context, ExchangePattern pattern, MailBinding binding) {
+        super(context, pattern);
         this.binding = binding;
     }
 
-    public MailExchange(CamelContext context, MailBinding binding, Message message) {
-        this(context, binding);
+    public MailExchange(CamelContext context, ExchangePattern pattern, MailBinding binding, Message message) {
+        this(context, pattern, binding);
         setIn(new MailMessage(message));
     }
 
@@ -66,7 +67,7 @@
 
     @Override
     public Exchange newInstance() {
-        return new MailExchange(getContext(), binding);
+        return new MailExchange(getContext(), getPattern(), binding);
     }
 
     // Expose Email APIs

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=572625&r1=572624&r2=572625&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 Tue Sep  4 04:33:23 2007
@@ -21,6 +21,7 @@
 import org.apache.camel.Consumer;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
+import org.apache.camel.ExchangePattern;
 import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.mina.common.IoAcceptor;
 import org.apache.mina.common.IoConnector;
@@ -52,12 +53,13 @@
         return new MinaConsumer(this, processor);
     }
 
-    public MinaExchange createExchange() {
-        return new MinaExchange(getContext());
+    @Override
+    public MinaExchange createExchange(ExchangePattern pattern) {
+        return new MinaExchange(getContext(), pattern);
     }
 
     public MinaExchange createExchange(IoSession session, Object object) {
-        MinaExchange exchange = new MinaExchange(getContext());
+        MinaExchange exchange = new MinaExchange(getContext(), getDefaultPattern());
         exchange.getIn().setBody(object);
         // TODO store session in exchange?
         return exchange;

Modified: activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaExchange.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaExchange.java?rev=572625&r1=572624&r2=572625&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaExchange.java (original)
+++ activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaExchange.java Tue Sep  4 04:33:23 2007
@@ -18,6 +18,7 @@
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
+import org.apache.camel.ExchangePattern;
 import org.apache.camel.impl.DefaultExchange;
 
 /**
@@ -27,7 +28,7 @@
  */
 public class MinaExchange extends DefaultExchange {
 
-    public MinaExchange(CamelContext camelContext) {
+    public MinaExchange(CamelContext camelContext, ExchangePattern pattern) {
         super(camelContext);
     }
 }

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=572625&r1=572624&r2=572625&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 Tue Sep  4 04:33:23 2007
@@ -22,6 +22,7 @@
 
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
+import org.apache.camel.ExchangePattern;
 import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.processor.loadbalancer.LoadBalancer;
 import org.apache.camel.processor.loadbalancer.RoundRobinLoadBalancer;
@@ -117,12 +118,13 @@
         }
     }
 
-    public QuartzExchange createExchange() {
-        return new QuartzExchange(getContext(), null);
+    @Override
+    public QuartzExchange createExchange(ExchangePattern pattern) {
+        return new QuartzExchange(getContext(), pattern, null);
     }
 
     public QuartzExchange createExchange(JobExecutionContext jobExecutionContext) {
-        return new QuartzExchange(getContext(), jobExecutionContext);
+        return new QuartzExchange(getContext(), getDefaultPattern(), jobExecutionContext);
     }
 
     public Producer<QuartzExchange> createProducer() throws Exception {

Modified: activemq/camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzExchange.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzExchange.java?rev=572625&r1=572624&r2=572625&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzExchange.java (original)
+++ activemq/camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzExchange.java Tue Sep  4 04:33:23 2007
@@ -17,6 +17,7 @@
 package org.apache.camel.component.quartz;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.ExchangePattern;
 import org.apache.camel.impl.DefaultExchange;
 import org.quartz.JobExecutionContext;
 
@@ -24,8 +25,8 @@
  * @version $Revision: 1.1 $
  */
 public class QuartzExchange extends DefaultExchange {
-    public QuartzExchange(CamelContext context, JobExecutionContext jobExecutionContext) {
-        super(context);
+    public QuartzExchange(CamelContext context, ExchangePattern pattern, JobExecutionContext jobExecutionContext) {
+        super(context, pattern);
         setIn(new QuartzMessage(this, jobExecutionContext));
     }
 

Modified: activemq/camel/trunk/components/camel-rmi/src/main/java/org/apache/camel/component/rmi/RmiEndpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-rmi/src/main/java/org/apache/camel/component/rmi/RmiEndpoint.java?rev=572625&r1=572624&r2=572625&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-rmi/src/main/java/org/apache/camel/component/rmi/RmiEndpoint.java (original)
+++ activemq/camel/trunk/components/camel-rmi/src/main/java/org/apache/camel/component/rmi/RmiEndpoint.java Tue Sep  4 04:33:23 2007
@@ -28,6 +28,7 @@
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.ExchangePattern;
 import org.apache.camel.component.bean.BeanExchange;
 import org.apache.camel.impl.DefaultEndpoint;
 
@@ -50,8 +51,9 @@
         return false;
     }
 
-    public BeanExchange createExchange() {
-        return new BeanExchange(getContext());
+    @Override
+    public BeanExchange createExchange(ExchangePattern pattern) {
+        return new BeanExchange(getContext(), pattern);
     }
 
     public Consumer<BeanExchange> createConsumer(Processor processor) throws Exception {

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=572625&r1=572624&r2=572625&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 Tue Sep  4 04:33:23 2007
@@ -57,10 +57,6 @@
         return true;
     }
 
-    public Exchange createExchange() {
-        return new DefaultExchange(getContext());
-    }
-
     public Producer<Exchange> createProducer() throws Exception {
         return new DefaultProducer<Exchange>(this) {
             public void process(Exchange exchange) throws Exception {

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=572625&r1=572624&r2=572625&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 Tue Sep  4 04:33:23 2007
@@ -19,6 +19,7 @@
 import org.apache.camel.Consumer;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
+import org.apache.camel.ExchangePattern;
 import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -77,12 +78,13 @@
         return new XmppConsumer(this, processor);
     }
 
-    public XmppExchange createExchange() {
-        return new XmppExchange(getContext(), getBinding());
+    @Override
+    public XmppExchange createExchange(ExchangePattern pattern) {
+        return new XmppExchange(getContext(), pattern, getBinding());
     }
 
     public XmppExchange createExchange(Message message) {
-        return new XmppExchange(getContext(), getBinding(), message);
+        return new XmppExchange(getContext(), getDefaultPattern(), getBinding(), message);
     }
 
     // Properties

Modified: activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppExchange.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppExchange.java?rev=572625&r1=572624&r2=572625&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppExchange.java (original)
+++ activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppExchange.java Tue Sep  4 04:33:23 2007
@@ -18,6 +18,7 @@
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
+import org.apache.camel.ExchangePattern;
 import org.apache.camel.impl.DefaultExchange;
 
 import org.jivesoftware.smack.packet.Message;
@@ -30,13 +31,13 @@
 public class XmppExchange extends DefaultExchange {
     private XmppBinding binding;
 
-    public XmppExchange(CamelContext context, XmppBinding binding) {
-        super(context);
+    public XmppExchange(CamelContext context, ExchangePattern pattern, XmppBinding binding) {
+        super(context, pattern);
         this.binding = binding;
     }
 
-    public XmppExchange(CamelContext context, XmppBinding binding, Message message) {
-        this(context, binding);
+    public XmppExchange(CamelContext context, ExchangePattern pattern, XmppBinding binding, Message message) {
+        this(context, pattern, binding);
         setIn(new XmppMessage(message));
     }
 
@@ -66,7 +67,7 @@
 
     @Override
     public Exchange newInstance() {
-        return new XmppExchange(getContext(), binding);
+        return new XmppExchange(getContext(), getPattern(), binding);
     }
 
     // Expose the underlying XMPP APIs