Author: rdonkin
Date: Sun Jul 6 12:52:58 2008
New Revision: 674338
URL: http://svn.apache.org/viewvc?rev=674338&view=rev
Log:
Fix changing recursion mode half way through an operation
Modified:
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/MimeTokenStream.java
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/MimeTokenNoRecurseTest.java
Modified:
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/MimeTokenStream.java
URL:
http://svn.apache.org/viewvc/james/mime4j/trunk/src/main/java/org/apache/james/mime4j/MimeTokenStream.java?rev=674338&r1=674337&r2=674338&view=diff
==============================================================================
---
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/MimeTokenStream.java
(original)
+++
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/MimeTokenStream.java
Sun Jul 6 12:52:58 2008
@@ -364,6 +364,7 @@
currentStateMachine = null;
} else {
currentStateMachine = (EntityStateMachine) entities.getLast();
+ currentStateMachine.setRecursionMode(recursionMode);
}
}
state = T_END_OF_STREAM;
Modified:
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/MimeTokenNoRecurseTest.java
URL:
http://svn.apache.org/viewvc/james/mime4j/trunk/src/test/java/org/apache/james/mime4j/MimeTokenNoRecurseTest.java?rev=674338&r1=674337&r2=674338&view=diff
==============================================================================
---
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/MimeTokenNoRecurseTest.java
(original)
+++
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/MimeTokenNoRecurseTest.java
Sun Jul 6 12:52:58 2008
@@ -170,6 +170,37 @@
}
assertEquals(INNER_MAIL.length()-2, i);
}
+
+ public void testSetNoRecurseSoInputStreamShouldContainInnerMail() throws
Exception {
+ nextIs(MimeTokenStream.T_START_HEADER);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_END_HEADER);
+
+ nextIs(MimeTokenStream.T_START_MULTIPART);
+ nextIs(MimeTokenStream.T_PREAMBLE);
+ nextShouldBeStandardPart(false);
+
+ nextShouldBeStandardPart(true);
+ stream.setRecursionMode(MimeTokenStream.M_NO_RECURSE);
+ nextIs(MimeTokenStream.T_START_BODYPART);
+ nextIs(MimeTokenStream.T_START_HEADER);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_END_HEADER);
+ nextIs(MimeTokenStream.T_BODY);
+ InputStream inputStream = stream.getInputStream();
+ int next = inputStream.read();
+ int i=0;
+ while (next != -1) {
+ assertEquals("@" + i, INNER_MAIL.charAt(i++), (char) next);
+ next = inputStream.read();
+ }
+ assertEquals(INNER_MAIL.length()-2, i);
+ }
private void nextShouldBeStandardPart(boolean withHeader) throws Exception
{
nextIs(MimeTokenStream.T_START_BODYPART);
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]