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