You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ba...@apache.org on 2006/03/30 11:18:48 UTC

svn commit: r390042 - in /james/server/trunk/src: java/org/apache/james/core/MimeMessageWrapper.java test/org/apache/james/core/MimeMessageFromStreamTest.java test/org/apache/james/core/MimeMessageTest.java

Author: bago
Date: Thu Mar 30 01:18:46 2006
New Revision: 390042

URL: http://svn.apache.org/viewcvs?rev=390042&view=rev
Log:
Fix an NPE in message.getLineCount when there is no Encoding (javamail returns -1 while our wrapper try to count the lines for small messages) (JAMES-462)

Modified:
    james/server/trunk/src/java/org/apache/james/core/MimeMessageWrapper.java
    james/server/trunk/src/test/org/apache/james/core/MimeMessageFromStreamTest.java
    james/server/trunk/src/test/org/apache/james/core/MimeMessageTest.java

Modified: james/server/trunk/src/java/org/apache/james/core/MimeMessageWrapper.java
URL: http://svn.apache.org/viewcvs/james/server/trunk/src/java/org/apache/james/core/MimeMessageWrapper.java?rev=390042&r1=390041&r2=390042&view=diff
==============================================================================
--- james/server/trunk/src/java/org/apache/james/core/MimeMessageWrapper.java (original)
+++ james/server/trunk/src/java/org/apache/james/core/MimeMessageWrapper.java Thu Mar 30 01:18:46 2006
@@ -294,7 +294,12 @@
         //Wrap input stream in LineNumberReader
         //Not sure what encoding to use really...
         try {
-            LineNumberReader counter = new LineNumberReader(new InputStreamReader(in, getEncoding()));
+            LineNumberReader counter;
+            if (getEncoding() != null) {
+                counter = new LineNumberReader(new InputStreamReader(in, getEncoding()));
+            } else {
+                counter = new LineNumberReader(new InputStreamReader(in));
+            }
             //Read through all the data
             char[] block = new char[4096];
             while (counter.read(block) > -1) {

Modified: james/server/trunk/src/test/org/apache/james/core/MimeMessageFromStreamTest.java
URL: http://svn.apache.org/viewcvs/james/server/trunk/src/test/org/apache/james/core/MimeMessageFromStreamTest.java?rev=390042&r1=390041&r2=390042&view=diff
==============================================================================
--- james/server/trunk/src/test/org/apache/james/core/MimeMessageFromStreamTest.java (original)
+++ james/server/trunk/src/test/org/apache/james/core/MimeMessageFromStreamTest.java Thu Mar 30 01:18:46 2006
@@ -40,5 +40,9 @@
         return getMessageFromSources(getMissingEncodingAddHeaderSource());
     }
 
+    protected MimeMessage getMissingEncodingMessage() throws Exception {
+        return getMessageFromSources(getMissingEncodingMessageSource());
+    }
+
 
 }

Modified: james/server/trunk/src/test/org/apache/james/core/MimeMessageTest.java
URL: http://svn.apache.org/viewcvs/james/server/trunk/src/test/org/apache/james/core/MimeMessageTest.java?rev=390042&r1=390041&r2=390042&view=diff
==============================================================================
--- james/server/trunk/src/test/org/apache/james/core/MimeMessageTest.java (original)
+++ james/server/trunk/src/test/org/apache/james/core/MimeMessageTest.java Thu Mar 30 01:18:46 2006
@@ -60,7 +60,7 @@
     public void testSimpleMessage() throws Exception {
         assertEquals(getSimpleMessageCleanedSource(), getCleanedMessageSource(getSimpleMessage()));
     }
-
+    
     
     protected MimeMessage getMultipartMessage() throws Exception {
         MimeMessage mmCreated = new MimeMessage(Session.getDefaultInstance(new Properties()));
@@ -265,6 +265,42 @@
         System.out.println("-------------------");
     }
     
+
+    protected MimeMessage getMissingEncodingMessage() throws Exception {
+        MimeMessage mmCreated = new MimeMessage(Session.getDefaultInstance(new Properties()));
+        mmCreated.setSubject("test");
+        MimeMultipart mm = new MimeMultipart("alternative");
+        mm.addBodyPart(new MimeBodyPart(new InternetHeaders(new ByteArrayInputStream("X-header: test2\r\nContent-Type: text/plain; charset=Cp1252\r\nContent-Transfer-Encoding: quoted-printable\r\n".getBytes())),"second part =E8=E8".getBytes()));
+        mmCreated.setContent(mm);
+        mmCreated.saveChanges();
+        return mmCreated;
+    }
+    
+
+    protected String getMissingEncodingMessageSource() {
+        return "Subject: test\r\n"
+        +"MIME-Version: 1.0\r\n"
+        +"Content-Type: multipart/alternative; \r\n" 
+        +"\tboundary=\"----=_Part_0_XXXXXXXXXXX.XXXXXXXXXXX\"\r\n"
+        +"\r\n"
+        +"------=_Part_0_XXXXXXXXXXX.XXXXXXXXXXX\r\n"
+        +"X-header: test2\r\n"
+        +"Content-Type: text/plain; charset=Cp1252\r\n"
+        +"Content-Transfer-Encoding: quoted-printable\r\n"
+        +"\r\n"
+        +"second part =E8=E8\r\n"
+        +"------=_Part_0_XXXXXXXXXXX.XXXXXXXXXXX--\r\n";
+    }
     
+
+    public void testGetLineCount() throws Exception {
+        MimeMessage mm = getMissingEncodingMessage();
+        try {
+            int count = mm.getLineCount();
+            assertTrue(count == -1 || count == 7);
+        } catch (Exception e) {
+            fail("Unexpected exception in getLineCount");
+        }
+    }
     
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org