JAMES-2429 Helper for iterating multipart content
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/c04fd750 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/c04fd750 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/c04fd750 Branch: refs/heads/master Commit: c04fd750442c942570133a183b5a50875392d700 Parents: 380721c Author: benwa <[email protected]> Authored: Thu Jun 14 11:25:33 2018 +0700 Committer: benwa <[email protected]> Committed: Tue Jun 19 16:52:40 2018 +0700 ---------------------------------------------------------------------- javax-mail-extension/pom.xml | 4 +++ .../org/apache/james/javax/MultipartUtil.java | 38 ++++++++++++++++++++ .../transport/mailets/StripAttachment.java | 11 ++---- .../mailets/remote/delivery/Converter7Bit.java | 10 +++--- 4 files changed, 50 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/c04fd750/javax-mail-extension/pom.xml ---------------------------------------------------------------------- diff --git a/javax-mail-extension/pom.xml b/javax-mail-extension/pom.xml index fa9c00e..97cd119 100644 --- a/javax-mail-extension/pom.xml +++ b/javax-mail-extension/pom.xml @@ -36,5 +36,9 @@ <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> </dependency> + <dependency> + <groupId>com.google.guava</groupId> + <artifactId>guava</artifactId> + </dependency> </dependencies> </project> http://git-wip-us.apache.org/repos/asf/james-project/blob/c04fd750/javax-mail-extension/src/main/java/org/apache/james/javax/MultipartUtil.java ---------------------------------------------------------------------- diff --git a/javax-mail-extension/src/main/java/org/apache/james/javax/MultipartUtil.java b/javax-mail-extension/src/main/java/org/apache/james/javax/MultipartUtil.java new file mode 100644 index 0000000..b92e1e3 --- /dev/null +++ b/javax-mail-extension/src/main/java/org/apache/james/javax/MultipartUtil.java @@ -0,0 +1,38 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + +package org.apache.james.javax; + +import java.util.List; + +import javax.mail.BodyPart; +import javax.mail.MessagingException; +import javax.mail.Multipart; + +import com.google.common.collect.ImmutableList; + +public class MultipartUtil { + public static List<BodyPart> retrieveBodyParts(Multipart multipart) throws MessagingException { + ImmutableList.Builder<BodyPart> builder = ImmutableList.builder(); + for (int i = 0; i < multipart.getCount(); i++) { + builder.add(multipart.getBodyPart(i)); + } + return builder.build(); + } +} http://git-wip-us.apache.org/repos/asf/james-project/blob/c04fd750/mailet/standard/src/main/java/org/apache/james/transport/mailets/StripAttachment.java ---------------------------------------------------------------------- diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/StripAttachment.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/StripAttachment.java index 891c448..2a82413 100644 --- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/StripAttachment.java +++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/StripAttachment.java @@ -45,6 +45,7 @@ import javax.mail.internet.MimeUtility; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; +import org.apache.james.javax.MultipartUtil; import org.apache.james.mime4j.codec.DecodeMonitor; import org.apache.james.mime4j.codec.DecoderUtil; import org.apache.mailet.Mail; @@ -271,7 +272,7 @@ public class StripAttachment extends GenericMailet { Multipart multipart = (Multipart) part.getContent(); boolean atLeastOneRemoved = false; boolean subpartHasBeenChanged = false; - List<BodyPart> bodyParts = retrieveBodyParts(multipart); + List<BodyPart> bodyParts = MultipartUtil.retrieveBodyParts(multipart); for (BodyPart bodyPart: bodyParts) { if (isMultipart(bodyPart)) { if (processMultipartPartMessage(bodyPart, mail)) { @@ -301,14 +302,6 @@ public class StripAttachment extends GenericMailet { } } - private List<BodyPart> retrieveBodyParts(Multipart multipart) throws MessagingException { - ImmutableList.Builder<BodyPart> builder = ImmutableList.builder(); - for (int i = 0; i < multipart.getCount(); i++) { - builder.add(multipart.getBodyPart(i)); - } - return builder.build(); - } - private boolean shouldBeRemoved(BodyPart bodyPart, Mail mail) throws MessagingException, Exception { String fileName = getFilename(bodyPart); http://git-wip-us.apache.org/repos/asf/james-project/blob/c04fd750/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remote/delivery/Converter7Bit.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remote/delivery/Converter7Bit.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remote/delivery/Converter7Bit.java index 63b17f6..2eb44f4 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remote/delivery/Converter7Bit.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remote/delivery/Converter7Bit.java @@ -20,11 +20,14 @@ package org.apache.james.transport.mailets.remote.delivery; import java.io.IOException; +import java.util.List; +import javax.mail.BodyPart; import javax.mail.MessagingException; import javax.mail.internet.MimeMultipart; import javax.mail.internet.MimePart; +import org.apache.james.javax.MultipartUtil; import org.apache.mailet.MailetContext; public class Converter7Bit { @@ -37,10 +40,9 @@ public class Converter7Bit { public MimePart convertTo7Bit(MimePart part) throws MessagingException, IOException { if (part.isMimeType("multipart/*")) { - MimeMultipart parts = (MimeMultipart) part.getContent(); - int count = parts.getCount(); - for (int i = 0; i < count; i++) { - convertTo7Bit((MimePart) parts.getBodyPart(i)); + List<BodyPart> bodyParts = MultipartUtil.retrieveBodyParts((MimeMultipart) part.getContent()); + for (BodyPart bodyPart : bodyParts) { + convertTo7Bit((MimePart) bodyPart); } } else if ("8bit".equals(part.getEncoding())) { // The content may already be in encoded the form (likely with mail --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
