You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2015/05/17 09:48:23 UTC

camel git commit: CAMEL-8779: camel-mail - Message copy can be optimized if mapMessage=false

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 <da...@apache.org>
Authored: Sun May 17 09:52:38 2015 +0200
Committer: Claus Ibsen <da...@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 {