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 {