Return-Path: Delivered-To: apmail-james-mime4j-dev-archive@minotaur.apache.org Received: (qmail 3738 invoked from network); 24 Apr 2010 19:41:29 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 24 Apr 2010 19:41:29 -0000 Received: (qmail 63239 invoked by uid 500); 24 Apr 2010 19:41:29 -0000 Delivered-To: apmail-james-mime4j-dev-archive@james.apache.org Received: (qmail 63215 invoked by uid 500); 24 Apr 2010 19:41:29 -0000 Mailing-List: contact mime4j-dev-help@james.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: mime4j-dev@james.apache.org Delivered-To: mailing list mime4j-dev@james.apache.org Received: (qmail 63207 invoked by uid 99); 24 Apr 2010 19:41:29 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 24 Apr 2010 19:41:29 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 24 Apr 2010 19:41:26 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 9A82023888CB; Sat, 24 Apr 2010 19:40:43 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r937685 - in /james/mime4j/trunk/core/src: main/java/org/apache/james/mime4j/parser/MimeStreamParser.java main/java/org/apache/james/mime4j/stream/MimeTokenStream.java test/java/org/apache/james/mime4j/stream/MultipartTokensTest.java Date: Sat, 24 Apr 2010 19:40:43 -0000 To: mime4j-dev@james.apache.org From: bago@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20100424194043.9A82023888CB@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: bago Date: Sat Apr 24 19:40:43 2010 New Revision: 937685 URL: http://svn.apache.org/viewvc?rev=937685&view=rev Log: Make sure headless parsing in MimeTokenStream starts from the first body token and not with the unexpected T_END_HEADER, also change MimeStreamParser to avoid waiting for that event (MIME4J-153 and MIME4J-128) Modified: james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/parser/MimeStreamParser.java james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/MimeTokenStream.java james/mime4j/trunk/core/src/test/java/org/apache/james/mime4j/stream/MultipartTokensTest.java Modified: james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/parser/MimeStreamParser.java URL: http://svn.apache.org/viewvc/james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/parser/MimeStreamParser.java?rev=937685&r1=937684&r2=937685&view=diff ============================================================================== --- james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/parser/MimeStreamParser.java (original) +++ james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/parser/MimeStreamParser.java Sat Apr 24 19:40:43 2010 @@ -119,6 +119,7 @@ public class MimeStreamParser { handler.startMessage(); handler.startHeader(); handler.field(new RawField("Content-Type", mimeEntityConfig.getDefaultContentType())); + handler.endHeader(); } else { mimeTokenStream.parse(inputStream); } Modified: james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/MimeTokenStream.java URL: http://svn.apache.org/viewvc/james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/MimeTokenStream.java?rev=937685&r1=937684&r2=937685&view=diff ============================================================================== --- james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/MimeTokenStream.java (original) +++ james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/MimeTokenStream.java Sat Apr 24 19:40:43 2010 @@ -146,6 +146,15 @@ public class MimeTokenStream implements throw new IllegalArgumentException(ex.getMessage()); } doParse(stream, newBodyDescriptor, T_END_HEADER); + try { + next(); + } catch (IOException e) { + // Should never happend: the first next after END_HEADER does not produce IO + throw new IllegalStateException(e); + } catch (MimeException e) { + // This should never happen + throw new IllegalStateException(e); + } } /** Modified: james/mime4j/trunk/core/src/test/java/org/apache/james/mime4j/stream/MultipartTokensTest.java URL: http://svn.apache.org/viewvc/james/mime4j/trunk/core/src/test/java/org/apache/james/mime4j/stream/MultipartTokensTest.java?rev=937685&r1=937684&r2=937685&view=diff ============================================================================== --- james/mime4j/trunk/core/src/test/java/org/apache/james/mime4j/stream/MultipartTokensTest.java (original) +++ james/mime4j/trunk/core/src/test/java/org/apache/james/mime4j/stream/MultipartTokensTest.java Sat Apr 24 19:40:43 2010 @@ -279,7 +279,12 @@ public class MultipartTokensTest extends "multipart/mixed;boundary=1729"); // see https://issues.apache.org/jira/browse/MIME4J-153 // checkState(MimeTokenStream.T_END_HEADER); - checkState(MimeTokenStream.T_START_MULTIPART); + + // see https://issues.apache.org/jira/browse/MIME4J-153 + // checkState(MimeTokenStream.T_START_MULTIPART); + + // actually T_START_MULTIPART is the first state, but the + // checkState method calls next() before checking. checkState(MimeTokenStream.T_PREAMBLE); checkState(MimeTokenStream.T_START_BODYPART); checkState(MimeTokenStream.T_START_HEADER);