This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 54dcd85  CAMEL-16878: camel-mail - Fix class cast exception in 
MailBinding.
54dcd85 is described below

commit 54dcd85e85e0175d7bff94909df0d0f0beb105da
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Sat Aug 21 12:41:02 2021 +0200

    CAMEL-16878: camel-mail - Fix class cast exception in MailBinding.
---
 .../java/org/apache/camel/component/mail/MailBinding.java  | 14 +++++++++++---
 .../java/org/apache/camel/component/mail/MailEndpoint.java |  3 ++-
 .../mail/MailBindingAttachmentEncodedFilenameTest.java     |  2 +-
 3 files changed, 14 insertions(+), 5 deletions(-)

diff --git 
a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailBinding.java
 
b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailBinding.java
index f051399..936dd05 100644
--- 
a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailBinding.java
+++ 
b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailBinding.java
@@ -68,19 +68,27 @@ import org.slf4j.LoggerFactory;
 public class MailBinding {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(MailBinding.class);
-    private HeaderFilterStrategy headerFilterStrategy;
+    private final HeaderFilterStrategy headerFilterStrategy;
     private ContentTypeResolver contentTypeResolver;
     private boolean decodeFilename;
+    private boolean mapMailMessage = true;
 
     public MailBinding() {
         headerFilterStrategy = new DefaultHeaderFilterStrategy();
     }
 
+    @Deprecated
     public MailBinding(HeaderFilterStrategy headerFilterStrategy, 
ContentTypeResolver contentTypeResolver,
                        boolean decodeFilename) {
+        this(headerFilterStrategy, contentTypeResolver, decodeFilename, true);
+    }
+
+    public MailBinding(HeaderFilterStrategy headerFilterStrategy, 
ContentTypeResolver contentTypeResolver,
+                       boolean decodeFilename, boolean mapMailMessage) {
         this.headerFilterStrategy = headerFilterStrategy;
         this.contentTypeResolver = contentTypeResolver;
         this.decodeFilename = decodeFilename;
+        this.mapMailMessage = mapMailMessage;
     }
 
     public void populateMailMessage(MailEndpoint endpoint, MimeMessage 
mimeMessage, Exchange exchange)
@@ -255,7 +263,7 @@ public class MailBinding {
     public Object extractBodyFromMail(Exchange exchange, MailMessage 
mailMessage) {
         Message message = mailMessage.getMessage();
         try {
-            if (((MailEndpoint) 
exchange.getFromEndpoint()).getConfiguration().isMapMailMessage()) {
+            if (mapMailMessage) {
                 return message.getContent();
             }
             return message; // raw message
@@ -655,7 +663,7 @@ public class MailBinding {
             }
         }
         // if the message is a multipart message, do not set the content type 
to multipart/*
-        if (mailConfiguration.isMapMailMessage()) {
+        if (mapMailMessage) {
             Object content = mailMessage.getContent();
             if (content instanceof MimeMultipart) {
                 MimeMultipart multipart = (MimeMultipart) content;
diff --git 
a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailEndpoint.java
 
b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailEndpoint.java
index a630fa66..b2e1847 100644
--- 
a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailEndpoint.java
+++ 
b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailEndpoint.java
@@ -139,7 +139,8 @@ public class MailEndpoint extends ScheduledPollEndpoint 
implements HeaderFilterS
     public MailBinding getBinding() {
         if (binding == null) {
             boolean decode = getConfiguration() != null && 
getConfiguration().isDecodeFilename();
-            binding = new MailBinding(headerFilterStrategy, 
contentTypeResolver, decode);
+            boolean mapMailMessage = getConfiguration() != null && 
getConfiguration().isMapMailMessage();
+            binding = new MailBinding(headerFilterStrategy, 
contentTypeResolver, decode, mapMailMessage);
         }
         return binding;
     }
diff --git 
a/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailBindingAttachmentEncodedFilenameTest.java
 
b/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailBindingAttachmentEncodedFilenameTest.java
index 3ebd6b6..857c5c4 100644
--- 
a/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailBindingAttachmentEncodedFilenameTest.java
+++ 
b/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailBindingAttachmentEncodedFilenameTest.java
@@ -40,7 +40,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 public class MailBindingAttachmentEncodedFilenameTest {
 
     // enable file decoding
-    private final MailBinding binding = new MailBinding(new 
DefaultHeaderFilterStrategy(), null, true);
+    private final MailBinding binding = new MailBinding(new 
DefaultHeaderFilterStrategy(), null, true, true);
 
     @Test
     public void shouldNotBreakEncodedFileNamesWithSlashes() throws Exception {

Reply via email to