Repository: camel Updated Branches: refs/heads/master e76575f4a -> bb4d11db8
CAMEL-8779: camel-mail - Message copy can be optimized if mapMessage=false Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/bb4d11db Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/bb4d11db Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/bb4d11db Branch: refs/heads/master Commit: bb4d11db8a539bc302749cba068f1a0b18c32559 Parents: e76575f Author: Claus Ibsen <davscl...@apache.org> Authored: Sun May 17 09:52:38 2015 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Sun May 17 09:52:38 2015 +0200 ---------------------------------------------------------------------- .../org/apache/camel/component/mail/MailMessage.java | 12 ++++++++++-- .../component/mail/MailCommitOnCompletionTest.java | 2 +- .../apache/camel/component/mail/RawMailMessageTest.java | 8 ++++++++ 3 files changed, 19 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/bb4d11db/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailMessage.java ---------------------------------------------------------------------- diff --git a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailMessage.java b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailMessage.java index b148970..949b0aa 100644 --- a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailMessage.java +++ b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailMessage.java @@ -93,7 +93,7 @@ public class MailMessage extends DefaultMessage { @Override public MailMessage newInstance() { - return new MailMessage(); + return new MailMessage(null, this.mapMailMessage); } @Override @@ -134,7 +134,15 @@ public class MailMessage extends DefaultMessage { } public void copyFrom(org.apache.camel.Message that) { - super.copyFrom(that); + // only do a deep copy if we need to (yes when that is not a mail message, or if the mapMailMessage is true) + boolean needCopy = !(that instanceof MailMessage) || (((MailMessage) that).mapMailMessage); + if (needCopy) { + super.copyFrom(that); + } else { + // no deep copy needed, but copy message id + setMessageId(that.getMessageId()); + setFault(that.isFault()); + } if (that instanceof MailMessage) { MailMessage mailMessage = (MailMessage) that; this.originalMailMessage = mailMessage.originalMailMessage; http://git-wip-us.apache.org/repos/asf/camel/blob/bb4d11db/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailCommitOnCompletionTest.java ---------------------------------------------------------------------- diff --git a/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailCommitOnCompletionTest.java b/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailCommitOnCompletionTest.java index 2435a8f..5daba56 100644 --- a/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailCommitOnCompletionTest.java +++ b/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailCommitOnCompletionTest.java @@ -30,7 +30,7 @@ import org.junit.Test; import org.jvnet.mock_javamail.Mailbox; /** - * Unit test for fetch size. + * Unit test for delete mail runs as an onCompletion. */ public class MailCommitOnCompletionTest extends CamelTestSupport { http://git-wip-us.apache.org/repos/asf/camel/blob/bb4d11db/components/camel-mail/src/test/java/org/apache/camel/component/mail/RawMailMessageTest.java ---------------------------------------------------------------------- diff --git a/components/camel-mail/src/test/java/org/apache/camel/component/mail/RawMailMessageTest.java b/components/camel-mail/src/test/java/org/apache/camel/component/mail/RawMailMessageTest.java index 2881bbf..619506c 100644 --- a/components/camel-mail/src/test/java/org/apache/camel/component/mail/RawMailMessageTest.java +++ b/components/camel-mail/src/test/java/org/apache/camel/component/mail/RawMailMessageTest.java @@ -95,6 +95,10 @@ public class RawMailMessageTest extends CamelTestSupport { Message mailMessage = mock.getExchanges().get(0).getIn().getBody(Message.class); assertNotNull("mail subject should not be null", mailMessage.getSubject()); assertEquals("mail subject should be hurz", "hurz", mailMessage.getSubject()); + + Map<String, Object> headers = mock.getExchanges().get(0).getIn().getHeaders(); + assertNotNull(headers); + assertTrue(!headers.isEmpty()); } @Test @@ -120,6 +124,10 @@ public class RawMailMessageTest extends CamelTestSupport { MimeMessage mm = new MimeMessage(null, new ByteArrayInputStream(body.getBytes())); String subject = mm.getSubject(); assertNull("mail subject should not be available", subject); + + Map<String, Object> headers = mock.getExchanges().get(0).getIn().getHeaders(); + assertNotNull(headers); + assertTrue(!headers.isEmpty()); } private void prepareMailbox(String user, String type) throws Exception {