Rick,
If you're updating javamail, you need to update the version number for the javamail spec.
--kevan
On Jun 7, 2006, at 11:21 AM, [EMAIL PROTECTED] wrote:

Author: rickmcguire
Date: Wed Jun  7 08:21:46 2006
New Revision: 412426

URL: http://svn.apache.org/viewvc?rev=412426&view=rev
Log:
GERONIMO-2087 MimeUtility.encodeWord()/encodeText() have some errors.


Modified:
geronimo/specs/trunk/geronimo-spec-javamail/src/main/java/javax/ mail/internet/MimeUtility.java geronimo/specs/trunk/geronimo-spec-javamail/src/main/java/org/ apache/geronimo/mail/util/Base64Encoder.java geronimo/specs/trunk/geronimo-spec-javamail/src/main/java/org/ apache/geronimo/mail/util/RFC2231Encoder.java geronimo/specs/trunk/geronimo-spec-javamail/src/test/java/javax/ mail/internet/MimeUtilityTest.java

Modified: geronimo/specs/trunk/geronimo-spec-javamail/src/main/java/ javax/mail/internet/MimeUtility.java URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo- spec-javamail/src/main/java/javax/mail/internet/MimeUtility.java? rev=412426&r1=412425&r2=412426&view=diff ====================================================================== ======== --- geronimo/specs/trunk/geronimo-spec-javamail/src/main/java/javax/ mail/internet/MimeUtility.java (original) +++ geronimo/specs/trunk/geronimo-spec-javamail/src/main/java/javax/ mail/internet/MimeUtility.java Wed Jun 7 08:21:46 2006
@@ -554,7 +554,7 @@
             if (encoding.equalsIgnoreCase("B")) {
                 encoder = "base64";
             }
-            else if (encoding.equalsIgnoreCase("G")) {
+            else if (encoding.equalsIgnoreCase("Q")) {
                 encoder = "quoted-printable";
             }
             else {

Modified: geronimo/specs/trunk/geronimo-spec-javamail/src/main/java/ org/apache/geronimo/mail/util/Base64Encoder.java URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo- spec-javamail/src/main/java/org/apache/geronimo/mail/util/ Base64Encoder.java?rev=412426&r1=412425&r2=412426&view=diff ====================================================================== ======== --- geronimo/specs/trunk/geronimo-spec-javamail/src/main/java/org/ apache/geronimo/mail/util/Base64Encoder.java (original) +++ geronimo/specs/trunk/geronimo-spec-javamail/src/main/java/org/ apache/geronimo/mail/util/Base64Encoder.java Wed Jun 7 08:21:46 2006
@@ -515,21 +515,22 @@
             int readCount = in.read(inBuffer);
             // did we get a full triplet?  that's an easy encoding.
             if (readCount == 3) {
-                byte a1 = (byte)(inBuffer[0] & 0xff);
-                byte a2 = (byte)(inBuffer[1] & 0xff);
-                byte a3 = (byte)(inBuffer[2] & 0xff);
+                int  a1 = inBuffer[0] & 0xff;
+                int  a2 = inBuffer[1] & 0xff;
+                int  a3 = inBuffer[2] & 0xff;

                 out.append((char)encodingTable[(a1 >>> 2) & 0x3f]);
out.append((char)encodingTable[((a1 << 4) | (a2 >>> 4)) & 0x3f]); out.append((char)encodingTable[((a2 << 2) | (a3 >>> 6)) & 0x3f]);
                 out.append((char)encodingTable[a3 & 0x3f]);
+
             }
             else if (readCount <= 0) {
                 // eof condition, don'e entirely.
                 return;
             }
             else if (readCount == 1) {
-                byte a1 = (byte)(inBuffer[0] & 0xff);
+                int  a1 = inBuffer[0] & 0xff;
                 out.append((char)encodingTable[(a1 >>> 2) & 0x3f]);
                 out.append((char)encodingTable[(a1 << 4) & 0x3f]);
                 out.append((char)padding);
@@ -537,8 +538,8 @@
                 return;
             }
             else if (readCount == 2) {
-                byte a1 = (byte)(inBuffer[0] & 0xff);
-                byte a2 = (byte)(inBuffer[1] & 0xff);
+                int  a1 = inBuffer[0] & 0xff;
+                int  a2 = inBuffer[1] & 0xff;

                 out.append((char)encodingTable[(a1 >>> 2) & 0x3f]);
out.append((char)encodingTable[((a1 << 4) | (a2 >>> 4)) & 0x3f]);

Modified: geronimo/specs/trunk/geronimo-spec-javamail/src/main/java/ org/apache/geronimo/mail/util/RFC2231Encoder.java URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo- spec-javamail/src/main/java/org/apache/geronimo/mail/util/ RFC2231Encoder.java?rev=412426&r1=412425&r2=412426&view=diff ====================================================================== ======== --- geronimo/specs/trunk/geronimo-spec-javamail/src/main/java/org/ apache/geronimo/mail/util/RFC2231Encoder.java (original) +++ geronimo/specs/trunk/geronimo-spec-javamail/src/main/java/org/ apache/geronimo/mail/util/RFC2231Encoder.java Wed Jun 7 08:21:46 2006
@@ -52,7 +52,7 @@
(byte)'8', (byte)'9', (byte)'A', (byte)'B', (byte)'C', (byte)'D', (byte)'E', (byte)'F'
         };

-    protected String DEFAULT_SPECIALS = " *\\%";
+    protected String DEFAULT_SPECIALS = " *'%";
     protected String specials = DEFAULT_SPECIALS;

     /*
@@ -92,11 +92,11 @@
         int bytesWritten = 0;
         for (int i = off; i < (off + length); i++)
         {
-            byte ch = data[i];
+            int ch = data[i] & 0xff;
// character tha must be encoded? Prefix with a '%' and encode in hex. if (ch <= 32 || ch >= 127 || specials.indexOf(ch) != -1) {
                 out.write((byte)'%');
-                out.write(encodingTable[(ch >> 4)]);
+                out.write(encodingTable[ch >> 4]);
                 out.write(encodingTable[ch & 0xf]);
                 bytesWritten += 3;
             }

Modified: geronimo/specs/trunk/geronimo-spec-javamail/src/test/java/ javax/mail/internet/MimeUtilityTest.java URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo- spec-javamail/src/test/java/javax/mail/internet/ MimeUtilityTest.java?rev=412426&r1=412425&r2=412426&view=diff ====================================================================== ======== --- geronimo/specs/trunk/geronimo-spec-javamail/src/test/java/javax/ mail/internet/MimeUtilityTest.java (original) +++ geronimo/specs/trunk/geronimo-spec-javamail/src/test/java/javax/ mail/internet/MimeUtilityTest.java Wed Jun 7 08:21:46 2006
@@ -83,4 +83,43 @@
         }
     }

+
+    public void testEncodeWord() throws Exception {
+        assertEquals("abc", MimeUtility.encodeWord("abc"));
+ // default code page dependent, hard to directly test the encoded results + assertEquals(" hé! àèôu !!!", MimeUtility.decodeWord (MimeUtility.encodeWord(" hé! àèôu !!!")));
+
+ String encoded = MimeUtility.encodeWord(" hé! àèôu !!!", "UTF-8", "Q"); + assertEquals("=?UTF-8?Q?_h=C3=A9!_=C3=A0=C3=A8=C3=B4u_!!!? =", encoded); + assertEquals(" hé! àèôu !!!", MimeUtility.decodeWord (encoded));
+
+ encoded = MimeUtility.encodeWord(" hé! àèôu !!!", "UTF-8", "B"); + assertEquals("=?UTF-8?B?IGjDqSEgw6DDqMO0dSAhISE=?=", encoded); + assertEquals(" hé! àèôu !!!", MimeUtility.decodeWord (encoded));
+    }
+
+
+    public void testEncodeText() throws Exception {
+        assertEquals("abc", MimeUtility.encodeWord("abc"));
+ // default code page dependent, hard to directly test the encoded results + assertEquals(" hé! àèôu !!!", MimeUtility.decodeText (MimeUtility.encodeText(" hé! àèôu !!!")));
+
+ String encoded = MimeUtility.encodeText(" hé! àèôu !!!", "UTF-8", "Q"); + assertEquals("=?UTF-8?Q?_h=C3=A9!_=C3=A0=C3=A8=C3=B4u_!!!? =", encoded); + assertEquals(" hé! àèôu !!!", MimeUtility.decodeText (encoded));
+
+ encoded = MimeUtility.encodeText(" hé! àèôu !!!", "UTF-8", "B"); + assertEquals("=?UTF-8?B?IGjDqSEgw6DDqMO0dSAhISE=?=", encoded); + assertEquals(" hé! àèôu !!!", MimeUtility.decodeText (encoded));
+    }
+
+
+    public void testQuote() throws Exception {
+        assertEquals("abc", MimeUtility.quote("abc", "&*%"));
+        assertEquals("\"abc&\"", MimeUtility.quote("abc&", "&*%"));
+ assertEquals("\"abc\\\"\"", MimeUtility.quote("abc\"", "&* %")); + assertEquals("\"abc\\\\\"", MimeUtility.quote("abc\\", "&* %")); + assertEquals("\"abc\\\r\"", MimeUtility.quote("abc\r", "&* %")); + assertEquals("\"abc\\\n\"", MimeUtility.quote("abc\n", "&* %"));
+    }
 }



Reply via email to