Author: davsclaus
Date: Fri Aug  7 06:24:17 2009
New Revision: 801892

URL: http://svn.apache.org/viewvc?rev=801892&view=rev
Log:
More tuning updates to let more components work.

Modified:
    
camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/Message.java
    
camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/impl/CopyOnWriteMessageFacade.java
    
camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
    
camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
    
camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/impl/ImmutableMessage.java
    
camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/processor/Pipeline.java
    
camel/sandbox/tuning-experiment/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpRoundtripHeaderTest.java
    
camel/sandbox/tuning-experiment/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailMessage.java

Modified: 
camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/Message.java
URL: 
http://svn.apache.org/viewvc/camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/Message.java?rev=801892&r1=801891&r2=801892&view=diff
==============================================================================
--- 
camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/Message.java
 (original)
+++ 
camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/Message.java
 Fri Aug  7 06:24:17 2009
@@ -48,6 +48,13 @@
     Exchange getExchange();
 
     /**
+     * Sets the exchange this message is related to
+     *
+     * @param exchange the exchange
+     */
+    void setExchange(Exchange exchange);
+
+    /**
      * Returns true if this message represents a fault
      */
     boolean isFault();

Modified: 
camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/impl/CopyOnWriteMessageFacade.java
URL: 
http://svn.apache.org/viewvc/camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/impl/CopyOnWriteMessageFacade.java?rev=801892&r1=801891&r2=801892&view=diff
==============================================================================
--- 
camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/impl/CopyOnWriteMessageFacade.java
 (original)
+++ 
camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/impl/CopyOnWriteMessageFacade.java
 Fri Aug  7 06:24:17 2009
@@ -45,9 +45,8 @@
     protected Message ensureCopied() {
         if (copiedMessage == null) {
             copiedMessage = readOnly.copy();
-            if (copiedMessage instanceof MessageSupport) {
-                ((MessageSupport) 
copiedMessage).setExchange(readOnly.getExchange());
-            }
+            // must also set the exchange
+            copiedMessage.setExchange(readOnly.getExchange());
         }
         return copiedMessage;
     }
@@ -61,6 +60,10 @@
         }
     }
 
+    public void setExchange(Exchange exchange) {
+        // noop
+    }
+
     public void copyFrom(Message message) {
         ensureCopied().copyFrom(message);
     }

Modified: 
camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
URL: 
http://svn.apache.org/viewvc/camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java?rev=801892&r1=801891&r2=801892&view=diff
==============================================================================
--- 
camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
 (original)
+++ 
camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
 Fri Aug  7 06:24:17 2009
@@ -163,6 +163,7 @@
     public Message getIn() {
         if (in == null) {
             in = new DefaultMessage();
+            in.setExchange(this);
             configureMessage(in);
         }
         return in;
@@ -171,6 +172,7 @@
     public void setIn(Message in) {
         this.in = in;
         if (in != null) {
+            in.setExchange(this);
             configureMessage(in);
         }
     }
@@ -180,6 +182,7 @@
         if (out == null) {
             out = (in != null && in instanceof MessageSupport)
                 ? ((MessageSupport)in).newInstance() : new DefaultMessage();
+            out.setExchange(this);
             configureMessage(out);
         }
         return out;
@@ -192,6 +195,7 @@
     public void setOut(Message out) {
         this.out = out;
         if (out != null) {
+            out.setExchange(this);
             configureMessage(out);
         }
     }
@@ -297,10 +301,6 @@
      * Configures the message after it has been set on the exchange
      */
     protected void configureMessage(Message message) {
-        if (message instanceof MessageSupport) {
-            MessageSupport messageSupport = (MessageSupport)message;
-            messageSupport.setExchange(this);
-        }
     }
 
     protected String createExchangeId() {

Modified: 
camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
URL: 
http://svn.apache.org/viewvc/camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java?rev=801892&r1=801891&r2=801892&view=diff
==============================================================================
--- 
camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
 (original)
+++ 
camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
 Fri Aug  7 06:24:17 2009
@@ -31,7 +31,7 @@
  * @version $Revision$
  */
 public class DefaultMessage extends MessageSupport {
-    private boolean fault; 
+    private boolean fault;
     private Map<String, Object> headers;
     private Map<String, DataHandler> attachments;
 
@@ -71,7 +71,7 @@
         if (e != null) {
             return e.getContext().getTypeConverter().convertTo(type, e, value);
         } else {
-            return (T) value;
+            return type.cast(value);
         }
     }
 
@@ -102,6 +102,10 @@
     }
 
     public boolean hasHeaders() {
+        if (!hasPopulatedHeaders()) {
+            // force creating headers
+            getHeaders();
+        }
         return headers != null && !headers.isEmpty();
     }
 

Modified: 
camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/impl/ImmutableMessage.java
URL: 
http://svn.apache.org/viewvc/camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/impl/ImmutableMessage.java?rev=801892&r1=801891&r2=801892&view=diff
==============================================================================
--- 
camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/impl/ImmutableMessage.java
 (original)
+++ 
camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/impl/ImmutableMessage.java
 Fri Aug  7 06:24:17 2009
@@ -55,6 +55,10 @@
         return getDelegate().getExchange();
     }
 
+    public void setExchange(Exchange exchange) {
+        throwImmutableError();
+    }
+
     public boolean isFault() {
         return getDelegate().isFault();
     }

Modified: 
camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/processor/Pipeline.java
URL: 
http://svn.apache.org/viewvc/camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/processor/Pipeline.java?rev=801892&r1=801891&r2=801892&view=diff
==============================================================================
--- 
camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/processor/Pipeline.java
 (original)
+++ 
camel/sandbox/tuning-experiment/camel-core/src/main/java/org/apache/camel/processor/Pipeline.java
 Fri Aug  7 06:24:17 2009
@@ -146,40 +146,6 @@
         return exchange;
     }
 
-    // TODO: delete me
-    protected Exchange oldCreateNextExchange(Exchange previousExchange) {
-        Exchange answer = new DefaultExchange(previousExchange);
-        // we must use the same id as this is a snapshot strategy where Camel 
copies a snapshot
-        // before processing the next step in the pipeline, so we have a 
snapshot of the exchange
-        // just before. This snapshot is used if Camel should do redeliveries 
(re try) using
-        // DeadLetterChannel. That is why it's important the id is the same, 
as it is the *same*
-        // exchange being routed.
-        answer.setExchangeId(previousExchange.getExchangeId());
-
-        if (previousExchange.hasProperties()) {
-            answer.getProperties().putAll(previousExchange.getProperties());
-        }
-
-        // now lets set the input of the next exchange to the output of the
-        // previous message if it is not null
-        CopyOnWriteMessageFacade facade;
-        Message target = previousExchange.hasOut() ? previousExchange.getOut() 
: previousExchange.getIn();
-        if (target instanceof CopyOnWriteMessageFacade) {
-            // already a facade so just use it
-            facade = (CopyOnWriteMessageFacade) target;
-        } else {
-            // wrap message using a facade
-            facade = new CopyOnWriteMessageFacade(target);
-        }
-        answer.setIn(facade);
-
-        // now lets set the input of the next exchange to the output of the
-        // previous message if it is not null
-//        answer.setIn(previousExchange.hasOut()
-//                ? previousExchange.getOut().copy() : 
previousExchange.getIn().copy());
-        return answer;
-    }
-
     protected boolean continueRouting(Iterator<Processor> it, Exchange 
exchange) {
         Object stop = exchange.getProperty(Exchange.ROUTE_STOP);
         if (stop != null) {

Modified: 
camel/sandbox/tuning-experiment/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpRoundtripHeaderTest.java
URL: 
http://svn.apache.org/viewvc/camel/sandbox/tuning-experiment/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpRoundtripHeaderTest.java?rev=801892&r1=801891&r2=801892&view=diff
==============================================================================
--- 
camel/sandbox/tuning-experiment/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpRoundtripHeaderTest.java
 (original)
+++ 
camel/sandbox/tuning-experiment/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpRoundtripHeaderTest.java
 Fri Aug  7 06:24:17 2009
@@ -56,26 +56,6 @@
         assertEquals("response matches: " + expectedText, expectedText, 
lastLine);
     }
 
-    @Test
-    public void testHttpRoundTripHeadersWithNoIngoredHeaders() throws 
Exception {
-        MockEndpoint mockEndpoint = resolveMandatoryEndpoint("mock:results", 
MockEndpoint.class);
-        mockEndpoint.expectedMessageCount(1);
-
-        JettyHttpEndpoint endpoint = context.getEndpoint(jettyUri, 
JettyHttpEndpoint.class);
-        // override the default set of ignored headers which includes 
Content-Length
-        
((DefaultHeaderFilterStrategy)endpoint.getHeaderFilterStrategy()).setOutFilter(null);
-
-        // read the response data
-        InputStream answer = (InputStream) template.requestBody(uri, 
inputText);
-        verifyMockGotExpectedText(mockEndpoint, expectedText);
-
-        String lastLine = readLastLine(answer);
-        assertNotNull("last response line", lastLine);
-        
-        // Content-Length from request will truncate the output to just the 
inputText
-        assertEquals("response matches: " + inputText, inputText, lastLine);
-    }
-
     @Override
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {

Modified: 
camel/sandbox/tuning-experiment/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailMessage.java
URL: 
http://svn.apache.org/viewvc/camel/sandbox/tuning-experiment/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailMessage.java?rev=801892&r1=801891&r2=801892&view=diff
==============================================================================
--- 
camel/sandbox/tuning-experiment/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailMessage.java
 (original)
+++ 
camel/sandbox/tuning-experiment/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailMessage.java
 Fri Aug  7 06:24:17 2009
@@ -77,6 +77,8 @@
 
     @Override
     public Object getHeader(String name) {
+        ensureInitialHeaders();
+
         Object answer = super.getHeader(name);
         
         // mimic case insensitive search of mail message getHeader
@@ -85,7 +87,37 @@
         }
         return answer;
     }
-  
+
+    @Override
+    public Map<String, Object> getHeaders() {
+        ensureInitialHeaders();
+        return super.getHeaders();
+    }
+
+    @Override
+    public Object removeHeader(String name) {
+        ensureInitialHeaders();
+        return super.removeHeader(name);
+    }
+
+    @Override
+    public void setHeaders(Map<String, Object> headers) {
+        ensureInitialHeaders();
+        super.setHeaders(headers);
+    }
+
+    @Override
+    public void setHeader(String name, Object value) {
+        ensureInitialHeaders();
+        super.setHeader(name, value);
+    }
+
+    @Override
+    public boolean hasHeaders() {
+        ensureInitialHeaders();
+        return super.hasHeaders();
+    }
+
     @Override
     public MailMessage newInstance() {
         return new MailMessage();
@@ -134,6 +166,18 @@
     }
 
     /**
+     * Ensure that the headers have been populated from the underlying JMS 
message
+     * before we start mutating the headers
+     */
+    protected void ensureInitialHeaders() {
+        if (mailMessage != null && !hasPopulatedHeaders()) {
+            // we have not populated headers so force this by creating
+            // new headers and set it on super
+            super.setHeaders(createHeaders());
+        }
+    }
+
+    /**
      * Parses the attachments of the given mail message and adds them to the 
map
      *
      * @param  message  the mail message with attachments


Reply via email to