You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by js...@apache.org on 2009/01/09 17:43:49 UTC

svn commit: r733079 - 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/file/ camel-core/src/main/java/org/apache/camel/com...

Author: jstrachan
Date: Fri Jan  9 08:43:48 2009
New Revision: 733079

URL: http://svn.apache.org/viewvc?rev=733079&view=rev
Log:
add a fromEndpoint property to Exchange so that we can see where an exchange comes from if it is part of a route - for example in the Tracer - for CAMEL-1243. Also added a constructor for Exchange taking the Endpoint and switched the custom Exchange classes to prefer to use it

Modified:
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Exchange.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/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/impl/DefaultEndpoint.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.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/language/FileLanguageTest.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/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-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-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-quartz/src/main/java/org/apache/camel/component/quartz/QuartzEndpoint.java
    activemq/camel/trunk/components/camel-rmi/src/main/java/org/apache/camel/component/rmi/RmiEndpoint.java
    activemq/camel/trunk/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/SpringIntegrationEndpoint.java
    activemq/camel/trunk/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/SpringIntegrationExchange.java
    activemq/camel/trunk/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/adapter/CamelTargetAdapter.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/Exchange.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Exchange.java?rev=733079&r1=733078&r2=733079&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Exchange.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Exchange.java Fri Jan  9 08:43:48 2009
@@ -207,6 +207,21 @@
      */
     void copyFrom(Exchange source);
 
+
+    /**
+     * Returns the endpoint which originated this message exchange if a consumer on an endpoint created the message exchange
+     * otherwise this property will be null
+     */
+    Endpoint getFromEndpoint();
+
+    /**
+     * Sets the endpoint which originated this message exchange. This method
+     * should typically only be called by {@link org.apache.camel.Endpoint} implementations
+     *
+     * @param fromEndpoint the endpoint which is originating this message exchange
+     */
+    void setFromEndpoint(Endpoint fromEndpoint);
+    
     /**
      * Returns the unit of work that this exchange belongs to; which may map to
      * zero, one or more physical transactions

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=733079&r1=733078&r2=733079&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 Fri Jan  9 08:43:48 2009
@@ -50,7 +50,7 @@
         if (methodInfo != null) {
             pattern = methodInfo.getPattern();
         }
-        Exchange exchange = new DefaultExchange(endpoint.getCamelContext(), pattern);
+        Exchange exchange = new DefaultExchange(endpoint, pattern);
         exchange.getIn().setBody(invocation);
 
         producer.process(exchange);

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=733079&r1=733078&r2=733079&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 Fri Jan  9 08:43:48 2009
@@ -135,7 +135,7 @@
      * @return the created exchange
      */
     public FileExchange createExchange(File file) {
-        return new FileExchange(getCamelContext(), getExchangePattern(), file);
+        return new FileExchange(this, getExchangePattern(), file);
     }
 
     @Override
@@ -145,7 +145,7 @@
 
     @Override
     public Exchange createExchange(ExchangePattern pattern) {
-        return new FileExchange(getCamelContext(), pattern, file);
+        return new FileExchange(this, pattern, file);
     }
 
     /**

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=733079&r1=733078&r2=733079&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 Fri Jan  9 08:43:48 2009
@@ -33,8 +33,8 @@
 public class FileExchange extends DefaultExchange {
     private File file;
 
-    public FileExchange(CamelContext camelContext, ExchangePattern pattern, File file) {
-        super(camelContext, pattern);
+    public FileExchange(FileEndpoint endpoint, ExchangePattern pattern, File file) {
+        super(endpoint, pattern);
         setFile(file);
     }
 

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=733079&r1=733078&r2=733079&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 Fri Jan  9 08:43:48 2009
@@ -93,19 +93,11 @@
     }
 
     public Exchange createExchange(Notification notification) {
-        Exchange exchange = new DefaultExchange(getCamelContext(), getExchangePattern());
+        Exchange exchange = createExchange();
         exchange.setIn(new JMXMessage(notification));
         return exchange;
     }
 
-    public Exchange createExchange() {
-        return createExchange(getExchangePattern());
-    }
-
-    public Exchange createExchange(ExchangePattern pattern) {
-        return new DefaultExchange(getCamelContext(), pattern);
-    }
-
     public String getAttributeName() {
         return attributeName;
     }

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=733079&r1=733078&r2=733079&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 Fri Jan  9 08:43:48 2009
@@ -169,7 +169,7 @@
     }
 
     public Exchange createExchange(ExchangePattern pattern) {
-        return new DefaultExchange(getCamelContext(), pattern);
+        return new DefaultExchange(this, pattern);
     }
 
     public ExchangePattern getExchangePattern() {

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java?rev=733079&r1=733078&r2=733079&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java Fri Jan  9 08:43:48 2009
@@ -25,6 +25,7 @@
 import org.apache.camel.ExchangeProperty;
 import org.apache.camel.Message;
 import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.Endpoint;
 import org.apache.camel.spi.UnitOfWork;
 import org.apache.camel.util.UuidGenerator;
 import static org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException;
@@ -46,6 +47,7 @@
     private String exchangeId;
     private UnitOfWork unitOfWork;
     private ExchangePattern pattern;
+    private Endpoint fromEndpoint;
 
     public DefaultExchange(CamelContext context) {
         this(context, ExchangePattern.InOnly);
@@ -61,6 +63,16 @@
         this.unitOfWork = parent.getUnitOfWork();
     }
 
+    public DefaultExchange(Endpoint fromEndpoint) {
+        this(fromEndpoint, ExchangePattern.InOnly);
+    }
+    
+    public DefaultExchange(Endpoint fromEndpoint, ExchangePattern pattern) {
+        this.context = fromEndpoint.getCamelContext();
+        this.fromEndpoint = fromEndpoint;
+        this.pattern = pattern;
+    }
+
     @Override
     public String toString() {
         return "Exchange[" + in + "]";
@@ -92,6 +104,7 @@
 
         unitOfWork = exchange.getUnitOfWork();
         pattern = exchange.getPattern();
+        setFromEndpoint(exchange.getFromEndpoint());
     }
 
     private static void safeCopy(Message message, Exchange exchange, Message that) {
@@ -237,6 +250,14 @@
         this.pattern = pattern;
     }
 
+    public Endpoint getFromEndpoint() {
+        return fromEndpoint;
+    }
+
+    public void setFromEndpoint(Endpoint fromEndpoint) {
+        this.fromEndpoint = fromEndpoint;
+    }
+
     public void throwException() throws Exception {
         if (exception == null) {
             return;

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=733079&r1=733078&r2=733079&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 Fri Jan  9 08:43:48 2009
@@ -30,10 +30,11 @@
  */
 public class FileExchangeTest extends ContextTestSupport {
     protected File file;
+    protected FileEndpoint endpoint;
     protected ExchangePattern pattern = ExchangePattern.InOnly;
 
     public void testCopy() {
-        FileExchange fileExchange = new FileExchange(context, pattern, file);
+        FileExchange fileExchange = new FileExchange(endpoint, pattern, file);
         Exchange exchange = fileExchange.copy();
         FileExchange copy = assertIsInstanceOf(FileExchange.class, exchange);
         assertEquals("File", file, copy.getFile());
@@ -42,7 +43,7 @@
     }
 
     public void testCopyAfterBodyChanged() throws Exception {
-        FileExchange original = new FileExchange(context, pattern, file);
+        FileExchange original = new FileExchange(endpoint, pattern, file);
         Object expectedBody = 1234;
         original.getIn().setBody(expectedBody);
         Exchange exchange = original.copy();
@@ -62,7 +63,7 @@
         };
 
         Pipeline pipeline = new Pipeline(Collections.singletonList(myProcessor));
-        FileExchange exchange = new FileExchange(context, pattern, file);
+        FileExchange exchange = new FileExchange(endpoint, pattern, file);
         pipeline.process(exchange.copy());
     }
 
@@ -70,5 +71,6 @@
     protected void setUp() throws Exception {
         super.setUp();
         file = new File(FileExchangeTest.class.getResource("FileExchangeTest.class").getFile());
+        endpoint = getMandatoryEndpoint(file.toURL().toString(), FileEndpoint.class);
     }
 }
\ No newline at end of file

Modified: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/language/FileLanguageTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/language/FileLanguageTest.java?rev=733079&r1=733078&r2=733079&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/language/FileLanguageTest.java (original)
+++ activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/language/FileLanguageTest.java Fri Jan  9 08:43:48 2009
@@ -27,6 +27,7 @@
 import org.apache.camel.LanguageTestSupport;
 import org.apache.camel.component.file.FileComponent;
 import org.apache.camel.component.file.FileExchange;
+import org.apache.camel.component.file.FileEndpoint;
 import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.language.simple.FileLanguage;
 
@@ -105,11 +106,13 @@
 
     public Exchange createExchange() {
         // create the file
-        template.sendBodyAndHeader("file://target/filelanguage", "Hello World", FileComponent.HEADER_FILE_NAME, "hello.txt");
+        String uri = "file://target/filelanguage";
+        template.sendBodyAndHeader(uri, "Hello World", FileComponent.HEADER_FILE_NAME, "hello.txt");
 
         // get the file handle
         file = new File("target/filelanguage/hello.txt");
-        Exchange answer = new FileExchange(context, ExchangePattern.InOut, file);
+        FileEndpoint endpoint = getMandatoryEndpoint(uri, FileEndpoint.class);
+        Exchange answer = new FileExchange(endpoint, ExchangePattern.InOut, file);
 
         Calendar cal = GregorianCalendar.getInstance();
         cal.set(1974, Calendar.APRIL, 20);

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=733079&r1=733078&r2=733079&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 Fri Jan  9 08:43:48 2009
@@ -78,15 +78,15 @@
     }
 
     public Exchange createExchange() {
-        return new CxfExchange(getCamelContext(), getExchangePattern());
+        return new CxfExchange(this, getExchangePattern());
     }
 
     public Exchange createExchange(ExchangePattern pattern) {
-        return new CxfExchange(getCamelContext(), pattern);
+        return new CxfExchange(this, pattern);
     }
 
     public CxfExchange createExchange(Message inMessage) {
-        return new CxfExchange(getCamelContext(), getExchangePattern(), inMessage);
+        return new CxfExchange(this, getExchangePattern(), inMessage);
     }
     
     /* Override the defaultEndpoint exchange create method */

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=733079&r1=733078&r2=733079&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 Fri Jan  9 08:43:48 2009
@@ -52,8 +52,8 @@
         }
     }
 
-    public CxfExchange(CamelContext context, ExchangePattern pattern) {
-        super(context, pattern);
+    public CxfExchange(CxfEndpoint endpoint, ExchangePattern pattern) {
+        super(endpoint, pattern);
     }
     
     public CxfExchange(CxfExchange exchange) {
@@ -61,8 +61,8 @@
         this.exchange = exchange.getExchange();      
     }
 
-    public CxfExchange(CamelContext context, ExchangePattern pattern, Message inMessage) {
-        this(context, pattern);
+    public CxfExchange(CxfEndpoint endpoint, ExchangePattern pattern, Message inMessage) {
+        this(endpoint, pattern);
         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=733079&r1=733078&r2=733079&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 Fri Jan  9 08:43:48 2009
@@ -78,11 +78,11 @@
     }
 
     public RemoteFileExchange createExchange() {
-        return new RemoteFileExchange(getCamelContext(), getExchangePattern(), null);
+        return new RemoteFileExchange(this, getExchangePattern(), null);
     }
 
     public RemoteFileExchange createExchange(RemoteFile remote) {
-        return new RemoteFileExchange(getCamelContext(), getExchangePattern(), remote);
+        return new RemoteFileExchange(this, getExchangePattern(), remote);
     }
 
     public RemoteFileProducer createProducer() throws Exception {

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=733079&r1=733078&r2=733079&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 Fri Jan  9 08:43:48 2009
@@ -24,8 +24,8 @@
 public class RemoteFileExchange extends DefaultExchange {
     private RemoteFile remoteFile;
 
-    public RemoteFileExchange(CamelContext context, ExchangePattern pattern, RemoteFile remoteFile) {
-        super(context, pattern);
+    public RemoteFileExchange(RemoteFileEndpoint endpoint, ExchangePattern pattern, RemoteFile remoteFile) {
+        super(endpoint, pattern);
         setRemoteFile(remoteFile);
     }
 

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=733079&r1=733078&r2=733079&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 Fri Jan  9 08:43:48 2009
@@ -34,7 +34,7 @@
     private HttpServletResponse response;
 
     public HttpExchange(HttpEndpoint endpoint, ExchangePattern pattern) {
-        super(endpoint.getCamelContext(), pattern);
+        super(endpoint, pattern);
         this.endpoint = 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=733079&r1=733078&r2=733079&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 Fri Jan  9 08:43:48 2009
@@ -44,39 +44,39 @@
     }
 
     public Exchange createExchange(ExchangePattern pattern) {
-        return new IrcExchange(getCamelContext(), pattern, getBinding());
+        return new IrcExchange(this, pattern, getBinding());
     }
 
     public IrcExchange createOnPrivmsgExchange(String target, IRCUser user, String msg) {
-        return new IrcExchange(getCamelContext(), getExchangePattern(), getBinding(), new IrcMessage("PRIVMSG", target, user, msg));
+        return new IrcExchange(this, getExchangePattern(), getBinding(), new IrcMessage("PRIVMSG", target, user, msg));
     }
 
     public IrcExchange createOnNickExchange(IRCUser user, String newNick) {
-        return new IrcExchange(getCamelContext(), getExchangePattern(), getBinding(), new IrcMessage("NICK", user, newNick));
+        return new IrcExchange(this, getExchangePattern(), getBinding(), new IrcMessage("NICK", user, newNick));
     }
 
     public IrcExchange createOnQuitExchange(IRCUser user, String msg) {
-        return new IrcExchange(getCamelContext(), getExchangePattern(), getBinding(), new IrcMessage("QUIT", user, msg));
+        return new IrcExchange(this, getExchangePattern(), getBinding(), new IrcMessage("QUIT", user, msg));
     }
 
     public IrcExchange createOnJoinExchange(String channel, IRCUser user) {
-        return new IrcExchange(getCamelContext(), getExchangePattern(), getBinding(), new IrcMessage("JOIN", channel, user));
+        return new IrcExchange(this, getExchangePattern(), getBinding(), new IrcMessage("JOIN", channel, user));
     }
 
     public IrcExchange createOnKickExchange(String channel, IRCUser user, String whoWasKickedNick, String msg) {
-        return new IrcExchange(getCamelContext(), getExchangePattern(), getBinding(), new IrcMessage("KICK", channel, user, whoWasKickedNick, msg));
+        return new IrcExchange(this, getExchangePattern(), getBinding(), new IrcMessage("KICK", channel, user, whoWasKickedNick, msg));
     }
 
     public IrcExchange createOnModeExchange(String channel, IRCUser user, IRCModeParser modeParser) {
-        return new IrcExchange(getCamelContext(), getExchangePattern(), getBinding(), new IrcMessage("MODE", channel, user, modeParser.getLine()));
+        return new IrcExchange(this, getExchangePattern(), getBinding(), new IrcMessage("MODE", channel, user, modeParser.getLine()));
     }
 
     public IrcExchange createOnPartExchange(String channel, IRCUser user, String msg) {
-        return new IrcExchange(getCamelContext(), getExchangePattern(), getBinding(), new IrcMessage("PART", channel, user, msg));
+        return new IrcExchange(this, getExchangePattern(), getBinding(), new IrcMessage("PART", channel, user, msg));
     }
 
     public IrcExchange createOnTopicExchange(String channel, IRCUser user, String topic) {
-        return new IrcExchange(getCamelContext(), getExchangePattern(), getBinding(), new IrcMessage("TOPIC", channel, user, topic));
+        return new IrcExchange(this, getExchangePattern(), 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=733079&r1=733078&r2=733079&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 Fri Jan  9 08:43:48 2009
@@ -23,13 +23,13 @@
 public class IrcExchange extends DefaultExchange {
     private IrcBinding binding;
 
-    public IrcExchange(CamelContext context, ExchangePattern pattern, IrcBinding binding) {
-        super(context, pattern);
+    public IrcExchange(IrcEndpoint endpoint, ExchangePattern pattern, IrcBinding binding) {
+        super(endpoint, pattern);
         this.binding = binding;
     }
 
-    public IrcExchange(CamelContext context, ExchangePattern pattern, IrcBinding binding, IrcMessage inMessage) {
-        this(context, pattern, binding);
+    public IrcExchange(IrcEndpoint endpoint, ExchangePattern pattern, IrcBinding binding, IrcMessage inMessage) {
+        this(endpoint, pattern, binding);
         setIn(inMessage);
     }
 

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=733079&r1=733078&r2=733079&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 Fri Jan  9 08:43:48 2009
@@ -102,7 +102,7 @@
     }
 
     public JmsExchange createExchange(Message message, Destination replyDestination) {
-        JmsExchange exchange = new JmsExchange(endpoint.getCamelContext(), endpoint.getExchangePattern(), getBinding(), message);
+        JmsExchange exchange = new JmsExchange(endpoint, endpoint.getExchangePattern(), getBinding(), message);
         // lets set to an InOut if we have some kind of reply-to destination
         if (replyDestination != null && !disableReplyTo) {
             exchange.setProperty("org.apache.camel.jms.replyDestination", replyDestination);

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=733079&r1=733078&r2=733079&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 Fri Jan  9 08:43:48 2009
@@ -156,11 +156,11 @@
 
     @Override
     public Exchange createExchange(ExchangePattern pattern) {
-        return new JmsExchange(getCamelContext(), pattern, getBinding());
+        return new JmsExchange(this, pattern, getBinding());
     }
 
     public JmsExchange createExchange(Message message) {
-        return new JmsExchange(getCamelContext(), getExchangePattern(), getBinding(), message);
+        return new JmsExchange(this, getExchangePattern(), getBinding(), message);
     }
 
     /**

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=733079&r1=733078&r2=733079&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 Fri Jan  9 08:43:48 2009
@@ -32,13 +32,19 @@
 public class JmsExchange extends DefaultExchange {
     private JmsBinding binding;
 
-    public JmsExchange(CamelContext context, ExchangePattern pattern, JmsBinding binding) {
-        super(context, pattern);
+    public JmsExchange(JmsEndpoint endpoint, ExchangePattern pattern, JmsBinding binding) {
+        super(endpoint, pattern);
         this.binding = binding;
     }
 
     public JmsExchange(CamelContext context, ExchangePattern pattern, JmsBinding binding, Message message) {
-        this(context, pattern, binding);
+        super(context, pattern);
+        this.binding = binding;
+        setIn(new JmsMessage(message));
+    }
+
+    public JmsExchange(JmsEndpoint endpoint, ExchangePattern pattern, JmsBinding binding, Message message) {
+        this(endpoint, pattern, binding);
         setIn(new JmsMessage(message));
     }
 

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=733079&r1=733078&r2=733079&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 Fri Jan  9 08:43:48 2009
@@ -90,11 +90,11 @@
 
     @Override
     public Exchange createExchange(ExchangePattern pattern) {
-        return new MailExchange(getCamelContext(), pattern, getBinding());
+        return new MailExchange(this, pattern, getBinding());
     }
 
     public MailExchange createExchange(Message message) {
-        return new MailExchange(getCamelContext(), getExchangePattern(), getBinding(), message);
+        return new MailExchange(this, getExchangePattern(), 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=733079&r1=733078&r2=733079&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 Fri Jan  9 08:43:48 2009
@@ -31,13 +31,13 @@
 public class MailExchange extends DefaultExchange {
     private MailBinding binding;
 
-    public MailExchange(CamelContext context, ExchangePattern pattern, MailBinding binding) {
-        super(context, pattern);
+    public MailExchange(MailEndpoint endpoint, ExchangePattern pattern, MailBinding binding) {
+        super(endpoint, pattern);
         this.binding = binding;
     }
 
-    public MailExchange(CamelContext context, ExchangePattern pattern, MailBinding binding, Message message) {
-        this(context, pattern, binding);
+    public MailExchange(MailEndpoint endpoint, ExchangePattern pattern, MailBinding binding, Message message) {
+        this(endpoint, pattern, binding);
         setIn(new MailMessage(message));
     }
 

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=733079&r1=733078&r2=733079&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 Fri Jan  9 08:43:48 2009
@@ -79,13 +79,8 @@
         return new MinaConsumer(this, processor);
     }
 
-    @Override
-    public Exchange createExchange(ExchangePattern pattern) {
-        return new DefaultExchange(getCamelContext(), pattern);
-    }
-
     public Exchange createExchange(IoSession session, Object payload) {
-        Exchange exchange = new DefaultExchange(getCamelContext(), getExchangePattern());
+        Exchange exchange = createExchange();
         MinaPayloadHelper.setIn(exchange, payload);
         return exchange;
     }

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=733079&r1=733078&r2=733079&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 Fri Jan  9 08:43:48 2009
@@ -124,13 +124,8 @@
         }
     }
 
-    @Override
-    public Exchange createExchange(ExchangePattern pattern) {
-        return new DefaultExchange(getCamelContext(), pattern);
-    }
-
     public Exchange createExchange(JobExecutionContext jobExecutionContext) {
-        Exchange exchange = new DefaultExchange(getCamelContext(), getExchangePattern());
+        Exchange exchange = createExchange();
         exchange.setIn(new QuartzMessage(exchange, jobExecutionContext));
         return exchange;
     }

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=733079&r1=733078&r2=733079&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 Fri Jan  9 08:43:48 2009
@@ -58,11 +58,6 @@
         return false;
     }
 
-    @Override
-    public Exchange createExchange(ExchangePattern pattern) {
-        return new DefaultExchange(getCamelContext(), pattern);
-    }
-
     public Consumer createConsumer(Processor processor) throws Exception {
         if (remoteInterfaces == null || remoteInterfaces.size() == 0) {
             throw new RuntimeCamelException("To create a RMI consumer, the RMI endpoint's remoteInterfaces property must be be configured.");

Modified: activemq/camel/trunk/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/SpringIntegrationEndpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/SpringIntegrationEndpoint.java?rev=733079&r1=733078&r2=733079&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/SpringIntegrationEndpoint.java (original)
+++ activemq/camel/trunk/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/SpringIntegrationEndpoint.java Fri Jan  9 08:43:48 2009
@@ -68,7 +68,7 @@
     }
 
     public Exchange createExchange(ExchangePattern pattern) {
-        return new SpringIntegrationExchange(getCamelContext(), pattern);
+        return new SpringIntegrationExchange(this, pattern);
     }
 
     public void setInputChannel(String input) {

Modified: activemq/camel/trunk/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/SpringIntegrationExchange.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/SpringIntegrationExchange.java?rev=733079&r1=733078&r2=733079&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/SpringIntegrationExchange.java (original)
+++ activemq/camel/trunk/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/SpringIntegrationExchange.java Fri Jan  9 08:43:48 2009
@@ -17,31 +17,40 @@
 
 package org.apache.camel.component.spring.integration;
 
-import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.Message;
+import org.apache.camel.component.spring.integration.adapter.CamelTargetAdapter;
 import org.apache.camel.impl.DefaultExchange;
 
 /**
  * An {@link Exchange} for working with Spring Integration endpoints which exposes the underlying
- * Spring messages via {@link #getInMessage()} and {@link #getOutMessage()}
+ * Spring messages via {@link #getIn()} and {@link #getOut()}
  *
  * @version $Revision$
  */
-public class SpringIntegrationExchange  extends DefaultExchange {
+public class SpringIntegrationExchange extends DefaultExchange {
 
-    public SpringIntegrationExchange(CamelContext context) {
-        super(context);
+    public SpringIntegrationExchange(SpringIntegrationEndpoint endpoint) {
+        super(endpoint);
     }
 
-    public SpringIntegrationExchange(CamelContext context, ExchangePattern pattern) {
-        super(context, pattern);
+    public SpringIntegrationExchange(SpringIntegrationEndpoint endpoint, ExchangePattern pattern) {
+        super(endpoint, pattern);
+    }
+
+    public SpringIntegrationExchange(CamelTargetAdapter adapter, ExchangePattern pattern) {
+        super(adapter.getCamelContext(), pattern);
+    }
+
+    public SpringIntegrationEndpoint getFromSpringIntegrationEndpoint() {
+        return (SpringIntegrationEndpoint) super.getFromEndpoint();
+
     }
 
     @Override
     public Exchange newInstance() {
-        return new SpringIntegrationExchange(this.getContext());
+        return new SpringIntegrationExchange(getFromSpringIntegrationEndpoint());
     }
 
     @Override

Modified: activemq/camel/trunk/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/adapter/CamelTargetAdapter.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/adapter/CamelTargetAdapter.java?rev=733079&r1=733078&r2=733079&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/adapter/CamelTargetAdapter.java (original)
+++ activemq/camel/trunk/components/camel-spring-integration/src/main/java/org/apache/camel/component/spring/integration/adapter/CamelTargetAdapter.java Fri Jan  9 08:43:48 2009
@@ -74,7 +74,7 @@
         } else {
             pattern = ExchangePattern.InOnly;
         }
-        Exchange inExchange = new SpringIntegrationExchange(getCamelContext(), pattern);
+        Exchange inExchange = new SpringIntegrationExchange(this, pattern);
         SpringIntegrationBinding.storeToCamelMessage(message, inExchange.getIn());
         Exchange outExchange = getCamelTemplate().send(getCamelEndpointUri(), inExchange);
         if (outExchange.getFault() != null) {

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=733079&r1=733078&r2=733079&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 Fri Jan  9 08:43:48 2009
@@ -90,11 +90,11 @@
 
     @Override
     public Exchange createExchange(ExchangePattern pattern) {
-        return new XmppExchange(getCamelContext(), pattern, getBinding());
+        return new XmppExchange(this, pattern, getBinding());
     }
 
     public XmppExchange createExchange(Message message) {
-        return new XmppExchange(getCamelContext(), getExchangePattern(), getBinding(), message);
+        return new XmppExchange(this, getExchangePattern(), 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=733079&r1=733078&r2=733079&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 Fri Jan  9 08:43:48 2009
@@ -31,13 +31,13 @@
 public class XmppExchange extends DefaultExchange {
     private XmppBinding binding;
 
-    public XmppExchange(CamelContext context, ExchangePattern pattern, XmppBinding binding) {
-        super(context, pattern);
+    public XmppExchange(XmppEndpoint endpoint, ExchangePattern pattern, XmppBinding binding) {
+        super(endpoint, pattern);
         this.binding = binding;
     }
 
-    public XmppExchange(CamelContext context, ExchangePattern pattern, XmppBinding binding, Message message) {
-        this(context, pattern, binding);
+    public XmppExchange(XmppEndpoint endpoint, ExchangePattern pattern, XmppBinding binding, Message message) {
+        this(endpoint, pattern, binding);
         setIn(new XmppMessage(message));
     }