Fix GERONIMO-4594. From this commit javamail 1.4 spec 1.7.2 or later is required.

git-svn-id: https://svn.apache.org/repos/asf/geronimo/javamail/trunk@1641698 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/geronimo-javamail_1.4/geronimo-javamail_1.4_provider/pom.xml b/geronimo-javamail_1.4/geronimo-javamail_1.4_provider/pom.xml
index fdc271c..2b012af 100644
--- a/geronimo-javamail_1.4/geronimo-javamail_1.4_provider/pom.xml
+++ b/geronimo-javamail_1.4/geronimo-javamail_1.4_provider/pom.xml
@@ -103,7 +103,8 @@
                             javax.imageio*;resolution:="optional",
                             javax.net.ssl*;resolution:="optional",
                             javax.security.sasl*;resolution:="optional",
-                            javax.security.auth.callback*;resolution:="optional"
+                            javax.security.auth.callback*;resolution:="optional",
+                            org.apache.geronimo.mail.james.mime4j.codec
                         </Import-Package>
                     </instructions>
                     <unpackBundle>true</unpackBundle>
diff --git a/geronimo-javamail_1.4/geronimo-javamail_1.4_provider/src/main/java/org/apache/geronimo/javamail/store/imap/IMAPMimeBodyPart.java b/geronimo-javamail_1.4/geronimo-javamail_1.4_provider/src/main/java/org/apache/geronimo/javamail/store/imap/IMAPMimeBodyPart.java
index 4a0859f..9370451 100644
--- a/geronimo-javamail_1.4/geronimo-javamail_1.4_provider/src/main/java/org/apache/geronimo/javamail/store/imap/IMAPMimeBodyPart.java
+++ b/geronimo-javamail_1.4/geronimo-javamail_1.4_provider/src/main/java/org/apache/geronimo/javamail/store/imap/IMAPMimeBodyPart.java
@@ -19,19 +19,18 @@
 
 import java.io.InputStream;
 import java.io.UnsupportedEncodingException;
-import java.util.Enumeration; 
+import java.util.Enumeration;
 
-import javax.activation.DataHandler;   
-
-import javax.mail.IllegalWriteException; 
+import javax.activation.DataHandler;
+import javax.mail.IllegalWriteException;
 import javax.mail.MessagingException;
 import javax.mail.Multipart;
-
 import javax.mail.internet.MimeBodyPart;
 import javax.mail.internet.MimeUtility;
 
 import org.apache.geronimo.javamail.store.imap.connection.IMAPBodyStructure;
 import org.apache.geronimo.javamail.store.imap.connection.IMAPConnection;
+import org.apache.geronimo.mail.util.SessionUtil;
 
 
 public class IMAPMimeBodyPart extends MimeBodyPart {
@@ -179,6 +178,16 @@
         if (filename == null) {
             filename = bodyStructure.mimeType.getParameter("name");
         }
+        
+        // if we have a name, we might need to decode this if an additional property is set.
+        if (filename != null && SessionUtil.getBooleanProperty(MIME_DECODEFILENAME, false)) {
+            try {
+                filename = MimeUtility.decodeText(filename);
+            } catch (UnsupportedEncodingException e) {
+                throw new MessagingException("Unable to decode filename", e);
+            }
+        }
+        
         return filename;
     }
 
diff --git a/geronimo-javamail_1.4/geronimo-javamail_1.4_provider/src/main/java/org/apache/geronimo/javamail/util/TraceInputStream.java b/geronimo-javamail_1.4/geronimo-javamail_1.4_provider/src/main/java/org/apache/geronimo/javamail/util/TraceInputStream.java
index 05ef8c0..037585f 100644
--- a/geronimo-javamail_1.4/geronimo-javamail_1.4_provider/src/main/java/org/apache/geronimo/javamail/util/TraceInputStream.java
+++ b/geronimo-javamail_1.4/geronimo-javamail_1.4_provider/src/main/java/org/apache/geronimo/javamail/util/TraceInputStream.java
@@ -24,7 +24,7 @@
 import java.io.InputStream;
 import java.io.OutputStream;
 
-import org.apache.geronimo.mail.util.QuotedPrintableEncoderStream;
+import org.apache.geronimo.mail.james.mime4j.codec.QuotedPrintableOutputStream;
 
 /**
  * @version $Rev$ $Date$
@@ -50,7 +50,7 @@
         super(in);
         this.debug = debug;
         if (encode) {
-            this.traceStream = new QuotedPrintableEncoderStream(traceStream);
+            this.traceStream = new QuotedPrintableOutputStream(traceStream, false);
         } else {
             this.traceStream = traceStream;
         }
diff --git a/geronimo-javamail_1.4/geronimo-javamail_1.4_provider/src/main/java/org/apache/geronimo/javamail/util/TraceOutputStream.java b/geronimo-javamail_1.4/geronimo-javamail_1.4_provider/src/main/java/org/apache/geronimo/javamail/util/TraceOutputStream.java
index f5aefe5..57ce0d4 100644
--- a/geronimo-javamail_1.4/geronimo-javamail_1.4_provider/src/main/java/org/apache/geronimo/javamail/util/TraceOutputStream.java
+++ b/geronimo-javamail_1.4/geronimo-javamail_1.4_provider/src/main/java/org/apache/geronimo/javamail/util/TraceOutputStream.java
@@ -23,7 +23,7 @@
 import java.io.IOException;
 import java.io.OutputStream;
 
-import org.apache.geronimo.mail.util.QuotedPrintableEncoderStream;
+import org.apache.geronimo.mail.james.mime4j.codec.QuotedPrintableOutputStream;
 
 /**
  * @version $Rev$ $Date$
@@ -49,7 +49,7 @@
         super(out);
         this.debug = debug;
         if (encode) {
-            this.traceStream = new QuotedPrintableEncoderStream(traceStream);
+            this.traceStream = new QuotedPrintableOutputStream(traceStream, false);
         } else {
             this.traceStream = traceStream;
         }
diff --git a/geronimo-javamail_1.4/pom.xml b/geronimo-javamail_1.4/pom.xml
index 7e601bc..1e4cd5c 100644
--- a/geronimo-javamail_1.4/pom.xml
+++ b/geronimo-javamail_1.4/pom.xml
@@ -72,7 +72,7 @@
             <dependency>
                 <groupId>org.apache.geronimo.specs</groupId>
                 <artifactId>geronimo-javamail_1.4_spec</artifactId>
-                <version>1.7.1</version>
+                <version>1.7.2-SNAPSHOT</version>
             </dependency>
 
             <dependency>