You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mime4j-dev@james.apache.org by ol...@apache.org on 2011/05/15 20:37:40 UTC
svn commit: r1103501 - in /james/mime4j/trunk:
core/src/main/java/org/apache/james/mime4j/parser/
core/src/main/java/org/apache/james/mime4j/stream/
core/src/test/java/org/apache/james/mime4j/parser/
dom/src/main/java/org/apache/james/mime4j/dom/ dom/s...
Author: olegk
Date: Sun May 15 18:37:39 2011
New Revision: 1103501
URL: http://svn.apache.org/viewvc?rev=1103501&view=rev
Log:
MIME4J-116: Groundwork to resolve duplicate parsing of header field: moved Field interface back to core; RawField changed to implement Field; ContentHandler changed to accept Fields instead of RawFields
Added:
james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/Field.java
- copied, changed from r1103485, james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/field/Field.java
Removed:
james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/field/Field.java
james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/field/FieldRawData.java
Modified:
james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/parser/AbstractContentHandler.java
james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/parser/ContentHandler.java
james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/AbstractEntity.java
james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/DefaultBodyDescriptor.java
james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/EntityStateMachine.java
james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/MimeTokenStream.java
james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/MutableBodyDescriptor.java
james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/RawField.java
james/mime4j/trunk/core/src/test/java/org/apache/james/mime4j/parser/MimeStreamParserTest.java
james/mime4j/trunk/core/src/test/java/org/apache/james/mime4j/parser/TestHandler.java
james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/Header.java
james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/field/ParsedField.java
james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/AbstractField.java
james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/DefaultFieldParser.java
james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/Fields.java
james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/AbstractEntity.java
james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/AbstractHeader.java
james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/AbstractMessage.java
james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/EntityBuilder.java
james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MaximalBodyDescriptor.java
james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MimeBuilder.java
james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MimeWriter.java
james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/SimpleContentHandler.java
james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/HeaderTest.java
james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MessageParserTest.java
james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MimeBuilderCopyTest.java
james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/field/FieldTest.java
james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/field/FieldsTest.java
james/mime4j/trunk/examples/src/main/java/org/apache/james/mime4j/samples/tree/MessageTree.java
Modified: james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/parser/AbstractContentHandler.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/parser/AbstractContentHandler.java?rev=1103501&r1=1103500&r2=1103501&view=diff
==============================================================================
--- james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/parser/AbstractContentHandler.java (original)
+++ james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/parser/AbstractContentHandler.java Sun May 15 18:37:39 2011
@@ -21,7 +21,7 @@ package org.apache.james.mime4j.parser;
import org.apache.james.mime4j.MimeException;
import org.apache.james.mime4j.stream.BodyDescriptor;
-import org.apache.james.mime4j.stream.RawField;
+import org.apache.james.mime4j.stream.Field;
import java.io.IOException;
import java.io.InputStream;
@@ -56,7 +56,7 @@ public abstract class AbstractContentHan
public void epilogue(InputStream is) throws MimeException, IOException {
}
- public void field(RawField field) throws MimeException {
+ public void field(Field field) throws MimeException {
}
public void preamble(InputStream is) throws MimeException, IOException {
Modified: james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/parser/ContentHandler.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/parser/ContentHandler.java?rev=1103501&r1=1103500&r2=1103501&view=diff
==============================================================================
--- james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/parser/ContentHandler.java (original)
+++ james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/parser/ContentHandler.java Sun May 15 18:37:39 2011
@@ -21,7 +21,7 @@ package org.apache.james.mime4j.parser;
import org.apache.james.mime4j.MimeException;
import org.apache.james.mime4j.stream.BodyDescriptor;
-import org.apache.james.mime4j.stream.RawField;
+import org.apache.james.mime4j.stream.Field;
import java.io.IOException;
import java.io.InputStream;
@@ -125,7 +125,7 @@ public interface ContentHandler {
* @param rawField the MIME field.
* @throws MimeException on processing errors
*/
- void field(RawField rawField) throws MimeException;
+ void field(Field rawField) throws MimeException;
/**
* Called when there are no more header fields in a message or body part.
Modified: james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/AbstractEntity.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/AbstractEntity.java?rev=1103501&r1=1103500&r2=1103501&view=diff
==============================================================================
--- james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/AbstractEntity.java (original)
+++ james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/AbstractEntity.java Sun May 15 18:37:39 2011
@@ -47,7 +47,7 @@ abstract class AbstractEntity implements
private int lineCount;
private boolean endOfHeader;
private int headerCount;
- private RawField field;
+ private Field field;
AbstractEntity(
MimeEntityConfig config,
@@ -140,11 +140,12 @@ abstract class AbstractEntity implements
fieldBuilder.reset();
readRawField();
try {
- field = fieldBuilder.build();
- if (field == null) {
+ RawField rawfield = fieldBuilder.build();
+ field = rawfield;
+ if (rawfield == null) {
continue;
}
- if (field.getDelimiterIdx() != field.getName().length()) {
+ if (rawfield.getDelimiterIdx() != rawfield.getName().length()) {
monitor(Event.OBSOLETE_HEADER);
}
body.addField(field);
@@ -194,7 +195,7 @@ abstract class AbstractEntity implements
* @throws IllegalStateException {@link #getState()} returns another
* value than {@link EntityState#T_FIELD}.
*/
- public RawField getField() {
+ public Field getField() {
switch (getState()) {
case T_FIELD:
return field;
Modified: james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/DefaultBodyDescriptor.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/DefaultBodyDescriptor.java?rev=1103501&r1=1103500&r2=1103501&view=diff
==============================================================================
--- james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/DefaultBodyDescriptor.java (original)
+++ james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/DefaultBodyDescriptor.java Sun May 15 18:37:39 2011
@@ -101,7 +101,7 @@ public class DefaultBodyDescriptor imple
*
* @param field the MIME field.
*/
- public void addField(RawField field) throws MimeException {
+ public void addField(Field field) throws MimeException {
String name = field.getName().toLowerCase(Locale.US);
if (name.equals("content-transfer-encoding") && !contentTransferEncSet) {
@@ -131,9 +131,15 @@ public class DefaultBodyDescriptor imple
}
}
- private void parseContentType(RawField field) throws MimeException {
+ private void parseContentType(Field field) throws MimeException {
contentTypeSet = true;
- RawBody body = RawFieldParser.DEFAULT.parseRawBody(field);
+ RawField rawfield;
+ if (field instanceof RawField) {
+ rawfield = ((RawField) field);
+ } else {
+ rawfield = new RawField(field.getName(), field.getBody());
+ }
+ RawBody body = RawFieldParser.DEFAULT.parseRawBody(rawfield);
String main = body.getValue();
Map<String, String> params = new HashMap<String, String>();
for (NameValuePair nmp: body.getParams()) {
Modified: james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/EntityStateMachine.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/EntityStateMachine.java?rev=1103501&r1=1103500&r2=1103501&view=diff
==============================================================================
--- james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/EntityStateMachine.java (original)
+++ james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/EntityStateMachine.java Sun May 15 18:37:39 2011
@@ -107,6 +107,6 @@ public interface EntityStateMachine {
* @throws IllegalStateException if a header field cannot be
* obtained at the current stage of the parsing process.
*/
- RawField getField() throws IllegalStateException;
+ Field getField() throws IllegalStateException;
}
Copied: james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/Field.java (from r1103485, james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/field/Field.java)
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/Field.java?p2=james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/Field.java&p1=james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/field/Field.java&r1=1103485&r2=1103501&rev=1103501&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/field/Field.java (original)
+++ james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/Field.java Sun May 15 18:37:39 2011
@@ -17,7 +17,9 @@
* under the License. *
****************************************************************/
-package org.apache.james.mime4j.dom.field;
+package org.apache.james.mime4j.stream;
+
+import org.apache.james.mime4j.util.ByteSequence;
/**
* Abstract MIME field.
@@ -38,4 +40,10 @@ public interface Field {
*/
String getBody();
+ /**
+ * Gets original (raw) representation of the field, if available,
+ * <code>null</code> otherwise.
+ */
+ ByteSequence getRaw();
+
}
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=1103501&r1=1103500&r2=1103501&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 Sun May 15 18:37:39 2011
@@ -344,7 +344,7 @@ public class MimeTokenStream {
* @throws IllegalStateException {@link #getState()} returns another
* value than {@link #T_FIELD}.
*/
- public RawField getField() {
+ public Field getField() {
return currentStateMachine.getField();
}
Modified: james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/MutableBodyDescriptor.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/MutableBodyDescriptor.java?rev=1103501&r1=1103500&r2=1103501&view=diff
==============================================================================
--- james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/MutableBodyDescriptor.java (original)
+++ james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/MutableBodyDescriptor.java Sun May 15 18:37:39 2011
@@ -31,7 +31,7 @@ public interface MutableBodyDescriptor e
* Adds a field to the body descriptor.
* @param field the MIME field.
*/
- void addField(RawField field) throws MimeException;
+ void addField(Field field) throws MimeException;
MutableBodyDescriptor newChild();
Modified: james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/RawField.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/RawField.java?rev=1103501&r1=1103500&r2=1103501&view=diff
==============================================================================
--- james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/RawField.java (original)
+++ james/mime4j/trunk/core/src/main/java/org/apache/james/mime4j/stream/RawField.java Sun May 15 18:37:39 2011
@@ -26,7 +26,7 @@ import org.apache.james.mime4j.util.Mime
/**
* The basic immutable MIME field.
*/
-public final class RawField {
+public final class RawField implements Field {
private final ByteSequence raw;
private final int delimiterIdx;
Modified: james/mime4j/trunk/core/src/test/java/org/apache/james/mime4j/parser/MimeStreamParserTest.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/core/src/test/java/org/apache/james/mime4j/parser/MimeStreamParserTest.java?rev=1103501&r1=1103500&r2=1103501&view=diff
==============================================================================
--- james/mime4j/trunk/core/src/test/java/org/apache/james/mime4j/parser/MimeStreamParserTest.java (original)
+++ james/mime4j/trunk/core/src/test/java/org/apache/james/mime4j/parser/MimeStreamParserTest.java Sun May 15 18:37:39 2011
@@ -29,7 +29,7 @@ import junit.framework.TestCase;
import org.apache.james.mime4j.parser.AbstractContentHandler;
import org.apache.james.mime4j.parser.MimeStreamParser;
import org.apache.james.mime4j.stream.BodyDescriptor;
-import org.apache.james.mime4j.stream.RawField;
+import org.apache.james.mime4j.stream.Field;
import org.apache.james.mime4j.util.ByteSequence;
import org.apache.james.mime4j.util.ContentUtil;
@@ -92,7 +92,7 @@ public class MimeStreamParserTest extend
MimeStreamParser parser = new MimeStreamParser();
parser.setContentHandler(new AbstractContentHandler() {
@Override
- public void field(RawField field) {
+ public void field(Field field) {
assertEquals(expected.removeFirst(), decode(field.getRaw()));
}
});
@@ -116,7 +116,7 @@ public class MimeStreamParserTest extend
MimeStreamParser parser = new MimeStreamParser();
parser.setContentHandler(new AbstractContentHandler() {
@Override
- public void field(RawField field) {
+ public void field(Field field) {
assertEquals(expected.removeFirst(), decode(field.getRaw()));
}
});
@@ -140,7 +140,7 @@ public class MimeStreamParserTest extend
MimeStreamParser parser = new MimeStreamParser();
parser.setContentHandler(new AbstractContentHandler() {
@Override
- public void field(RawField field) {
+ public void field(Field field) {
assertEquals(expected.removeFirst(), decode(field.getRaw()));
}
});
@@ -201,7 +201,7 @@ public class MimeStreamParserTest extend
MimeStreamParser parser = new MimeStreamParser();
parser.setContentHandler(new AbstractContentHandler() {
@Override
- public void field(RawField field) {
+ public void field(Field field) {
assertEquals(expected.removeFirst(), decode(field.getRaw()));
}
});
@@ -250,7 +250,7 @@ public class MimeStreamParserTest extend
}
@Override
- public void field(RawField field) {
+ public void field(Field field) {
fail("field shouldn't be called for empty stream");
}
@@ -293,7 +293,7 @@ public class MimeStreamParserTest extend
MimeStreamParser parser = new MimeStreamParser();
parser.setContentHandler(new AbstractContentHandler() {
@Override
- public void field(RawField field) {
+ public void field(Field field) {
fail("No fields should be reported");
}
@Override
@@ -324,7 +324,7 @@ public class MimeStreamParserTest extend
MimeStreamParser parser = new MimeStreamParser();
parser.setContentHandler(new AbstractContentHandler() {
@Override
- public void field(RawField field) {
+ public void field(Field field) {
assertEquals(expected.removeFirst(), decode(field.getRaw()));
}
@Override
@@ -352,7 +352,7 @@ public class MimeStreamParserTest extend
MimeStreamParser parser = new MimeStreamParser();
parser.setContentHandler(new AbstractContentHandler() {
@Override
- public void field(RawField field) {
+ public void field(Field field) {
assertEquals(expected.removeFirst(), decode(field.getRaw()));
}
});
@@ -371,7 +371,7 @@ public class MimeStreamParserTest extend
parser = new MimeStreamParser();
parser.setContentHandler(new AbstractContentHandler() {
@Override
- public void field(RawField field) {
+ public void field(Field field) {
assertEquals(expected.removeFirst(), decode(field.getRaw()));
}
});
Modified: james/mime4j/trunk/core/src/test/java/org/apache/james/mime4j/parser/TestHandler.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/core/src/test/java/org/apache/james/mime4j/parser/TestHandler.java?rev=1103501&r1=1103500&r2=1103501&view=diff
==============================================================================
--- james/mime4j/trunk/core/src/test/java/org/apache/james/mime4j/parser/TestHandler.java (original)
+++ james/mime4j/trunk/core/src/test/java/org/apache/james/mime4j/parser/TestHandler.java Sun May 15 18:37:39 2011
@@ -24,7 +24,7 @@ import java.io.InputStream;
import org.apache.james.mime4j.parser.ContentHandler;
import org.apache.james.mime4j.stream.BodyDescriptor;
-import org.apache.james.mime4j.stream.RawField;
+import org.apache.james.mime4j.stream.Field;
import org.apache.james.mime4j.util.ContentUtil;
/**
@@ -92,7 +92,7 @@ class TestHandler implements ContentHand
public void startHeader() {
sb.append("<header>\r\n");
}
- public void field(RawField field) {
+ public void field(Field field) {
sb.append("<field>\r\n"
+ escape(ContentUtil.decode(field.getRaw()))
+ "</field>\r\n");
Modified: james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/Header.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/Header.java?rev=1103501&r1=1103500&r2=1103501&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/Header.java (original)
+++ james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/Header.java Sun May 15 18:37:39 2011
@@ -22,7 +22,7 @@ package org.apache.james.mime4j.dom;
import java.util.Iterator;
import java.util.List;
-import org.apache.james.mime4j.dom.field.Field;
+import org.apache.james.mime4j.stream.Field;
/**
* The header of an entity (see RFC 2045).
Modified: james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/field/ParsedField.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/field/ParsedField.java?rev=1103501&r1=1103500&r2=1103501&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/field/ParsedField.java (original)
+++ james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/dom/field/ParsedField.java Sun May 15 18:37:39 2011
@@ -19,6 +19,8 @@
package org.apache.james.mime4j.dom.field;
+import org.apache.james.mime4j.stream.Field;
+
public interface ParsedField extends Field {
Modified: james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/AbstractField.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/AbstractField.java?rev=1103501&r1=1103500&r2=1103501&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/AbstractField.java (original)
+++ james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/AbstractField.java Sun May 15 18:37:39 2011
@@ -20,7 +20,6 @@
package org.apache.james.mime4j.field;
import org.apache.james.mime4j.codec.DecodeMonitor;
-import org.apache.james.mime4j.dom.field.FieldRawData;
import org.apache.james.mime4j.dom.field.ParseException;
import org.apache.james.mime4j.dom.field.ParsedField;
import org.apache.james.mime4j.util.ByteSequence;
@@ -28,7 +27,7 @@ import org.apache.james.mime4j.util.Byte
/**
* The base class of all field classes.
*/
-public abstract class AbstractField implements ParsedField, FieldRawData {
+public abstract class AbstractField implements ParsedField {
private final String name;
private final String body;
Modified: james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/DefaultFieldParser.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/DefaultFieldParser.java?rev=1103501&r1=1103500&r2=1103501&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/DefaultFieldParser.java (original)
+++ james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/DefaultFieldParser.java Sun May 15 18:37:39 2011
@@ -23,6 +23,7 @@ import org.apache.james.mime4j.MimeExcep
import org.apache.james.mime4j.codec.DecodeMonitor;
import org.apache.james.mime4j.dom.field.FieldName;
import org.apache.james.mime4j.dom.field.ParsedField;
+import org.apache.james.mime4j.stream.Field;
import org.apache.james.mime4j.stream.RawField;
import org.apache.james.mime4j.stream.RawFieldParser;
import org.apache.james.mime4j.util.ByteSequence;
@@ -57,7 +58,7 @@ public class DefaultFieldParser extends
public static ParsedField parse(
final ByteSequence raw,
final DecodeMonitor monitor) throws MimeException {
- RawField rawField = RawFieldParser.DEFAULT.parseField(raw);
+ Field rawField = RawFieldParser.DEFAULT.parseField(raw);
return PARSER.parse(rawField.getName(), rawField.getBody(), raw, monitor);
}
@@ -73,7 +74,7 @@ public class DefaultFieldParser extends
* @throws MimeException if the raw string cannot be split into field name and body.
*/
public static ParsedField parse(
- final RawField rawField,
+ final Field rawField,
final DecodeMonitor monitor) throws MimeException {
return PARSER.parse(rawField.getName(), rawField.getBody(), rawField.getRaw(), monitor);
}
Modified: james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/Fields.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/Fields.java?rev=1103501&r1=1103500&r2=1103501&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/Fields.java (original)
+++ james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/field/Fields.java Sun May 15 18:37:39 2011
@@ -36,13 +36,13 @@ import org.apache.james.mime4j.dom.field
import org.apache.james.mime4j.dom.field.ContentTransferEncodingField;
import org.apache.james.mime4j.dom.field.ContentTypeField;
import org.apache.james.mime4j.dom.field.DateTimeField;
-import org.apache.james.mime4j.dom.field.Field;
import org.apache.james.mime4j.dom.field.FieldName;
import org.apache.james.mime4j.dom.field.MailboxField;
import org.apache.james.mime4j.dom.field.MailboxListField;
import org.apache.james.mime4j.dom.field.ParsedField;
import org.apache.james.mime4j.dom.field.UnstructuredField;
import org.apache.james.mime4j.field.address.AddressFormatter;
+import org.apache.james.mime4j.stream.Field;
import org.apache.james.mime4j.stream.RawField;
import org.apache.james.mime4j.util.MimeUtil;
Modified: james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/AbstractEntity.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/AbstractEntity.java?rev=1103501&r1=1103500&r2=1103501&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/AbstractEntity.java (original)
+++ james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/AbstractEntity.java Sun May 15 18:37:39 2011
@@ -34,8 +34,8 @@ import org.apache.james.mime4j.dom.TextB
import org.apache.james.mime4j.dom.field.ContentDispositionField;
import org.apache.james.mime4j.dom.field.ContentTransferEncodingField;
import org.apache.james.mime4j.dom.field.ContentTypeField;
-import org.apache.james.mime4j.dom.field.Field;
import org.apache.james.mime4j.dom.field.FieldName;
+import org.apache.james.mime4j.stream.Field;
/**
* MIME entity. An entity has a header and a body (see RFC 2045).
Modified: james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/AbstractHeader.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/AbstractHeader.java?rev=1103501&r1=1103500&r2=1103501&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/AbstractHeader.java (original)
+++ james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/AbstractHeader.java Sun May 15 18:37:39 2011
@@ -27,7 +27,7 @@ import java.util.List;
import java.util.Map;
import org.apache.james.mime4j.dom.Header;
-import org.apache.james.mime4j.dom.field.Field;
+import org.apache.james.mime4j.stream.Field;
/**
* The header of an entity (see RFC 2045).
Modified: james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/AbstractMessage.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/AbstractMessage.java?rev=1103501&r1=1103500&r2=1103501&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/AbstractMessage.java (original)
+++ james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/AbstractMessage.java Sun May 15 18:37:39 2011
@@ -33,11 +33,11 @@ import org.apache.james.mime4j.dom.addre
import org.apache.james.mime4j.dom.address.MailboxList;
import org.apache.james.mime4j.dom.field.AddressListField;
import org.apache.james.mime4j.dom.field.DateTimeField;
-import org.apache.james.mime4j.dom.field.Field;
import org.apache.james.mime4j.dom.field.FieldName;
import org.apache.james.mime4j.dom.field.MailboxField;
import org.apache.james.mime4j.dom.field.MailboxListField;
import org.apache.james.mime4j.dom.field.UnstructuredField;
+import org.apache.james.mime4j.stream.Field;
public abstract class AbstractMessage extends AbstractEntity implements Message {
Modified: james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/EntityBuilder.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/EntityBuilder.java?rev=1103501&r1=1103500&r2=1103501&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/EntityBuilder.java (original)
+++ james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/EntityBuilder.java Sun May 15 18:37:39 2011
@@ -30,10 +30,10 @@ import org.apache.james.mime4j.dom.Entit
import org.apache.james.mime4j.dom.Header;
import org.apache.james.mime4j.dom.Message;
import org.apache.james.mime4j.dom.Multipart;
-import org.apache.james.mime4j.dom.field.Field;
import org.apache.james.mime4j.field.DefaultFieldParser;
import org.apache.james.mime4j.parser.ContentHandler;
import org.apache.james.mime4j.stream.BodyDescriptor;
+import org.apache.james.mime4j.stream.Field;
import org.apache.james.mime4j.stream.RawField;
import org.apache.james.mime4j.util.ByteArrayBuffer;
import org.apache.james.mime4j.util.ByteSequence;
@@ -103,7 +103,7 @@ class EntityBuilder implements ContentHa
/**
* @see org.apache.james.mime4j.parser.ContentHandler#field(RawField)
*/
- public void field(RawField field) throws MimeException {
+ public void field(Field field) throws MimeException {
expect(Header.class);
Field parsedField = DefaultFieldParser.parse(field, monitor);
((Header) stack.peek()).addField(parsedField);
Modified: james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MaximalBodyDescriptor.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MaximalBodyDescriptor.java?rev=1103501&r1=1103500&r2=1103501&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MaximalBodyDescriptor.java (original)
+++ james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MaximalBodyDescriptor.java Sun May 15 18:37:39 2011
@@ -39,6 +39,7 @@ import org.apache.james.mime4j.stream.De
import org.apache.james.mime4j.stream.RawBody;
import org.apache.james.mime4j.stream.MutableBodyDescriptor;
import org.apache.james.mime4j.stream.NameValuePair;
+import org.apache.james.mime4j.stream.Field;
import org.apache.james.mime4j.stream.RawField;
import org.apache.james.mime4j.stream.RawFieldParser;
import org.apache.james.mime4j.util.MimeUtil;
@@ -119,7 +120,7 @@ public class MaximalBodyDescriptor exten
}
@Override
- public void addField(RawField field) throws MimeException {
+ public void addField(Field field) throws MimeException {
String name = field.getName().toLowerCase(Locale.US);;
if (MimeUtil.MIME_HEADER_MIME_VERSION.equals(name) && !isMimeVersionSet) {
parseMimeVersion(field);
@@ -140,7 +141,7 @@ public class MaximalBodyDescriptor exten
}
}
- private void parseMD5(final RawField field) {
+ private void parseMD5(final Field field) {
String value = field.getBody();
isContentMD5Set = true;
if (value != null) {
@@ -148,7 +149,7 @@ public class MaximalBodyDescriptor exten
}
}
- private void parseLocation(final RawField field) {
+ private void parseLocation(final Field field) {
isContentLocationSet = true;
String value = field.getBody();
if (value != null) {
@@ -169,7 +170,7 @@ public class MaximalBodyDescriptor exten
}
}
- private void parseLanguage(final RawField field) {
+ private void parseLanguage(final Field field) {
isContentLanguageSet = true;
String value = field.getBody();
if (value != null) {
@@ -182,9 +183,15 @@ public class MaximalBodyDescriptor exten
}
}
- private void parseContentDisposition(final RawField field) throws MimeException {
+ private void parseContentDisposition(final Field field) throws MimeException {
isContentDispositionSet = true;
- RawBody body = RawFieldParser.DEFAULT.parseRawBody(field);
+ RawField rawfield;
+ if (field instanceof RawField) {
+ rawfield = ((RawField) field);
+ } else {
+ rawfield = new RawField(field.getName(), field.getBody());
+ }
+ RawBody body = RawFieldParser.DEFAULT.parseRawBody(rawfield);
Map<String, String> params = new HashMap<String, String>();
for (NameValuePair nmp: body.getParams()) {
String name = nmp.getName().toLowerCase(Locale.US);
@@ -242,7 +249,7 @@ public class MaximalBodyDescriptor exten
return result;
}
- private void parseContentDescription(final RawField field) {
+ private void parseContentDescription(final Field field) {
String value = field.getBody();
if (value == null) {
contentDescription = "";
@@ -252,7 +259,7 @@ public class MaximalBodyDescriptor exten
isContentDescriptionSet = true;
}
- private void parseContentId(final RawField field) {
+ private void parseContentId(final Field field) {
String value = field.getBody();
if (value == null) {
contentId = "";
@@ -262,7 +269,7 @@ public class MaximalBodyDescriptor exten
isContentIdSet = true;
}
- private void parseMimeVersion(RawField field) {
+ private void parseMimeVersion(Field field) {
final StringReader reader = new StringReader(field.getBody());
final MimeVersionParser parser = new MimeVersionParser(reader);
try {
Modified: james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MimeBuilder.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MimeBuilder.java?rev=1103501&r1=1103500&r2=1103501&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MimeBuilder.java (original)
+++ james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MimeBuilder.java Sun May 15 18:37:39 2011
@@ -32,13 +32,12 @@ import org.apache.james.mime4j.dom.Heade
import org.apache.james.mime4j.dom.Message;
import org.apache.james.mime4j.dom.Multipart;
import org.apache.james.mime4j.dom.SingleBody;
-import org.apache.james.mime4j.dom.field.Field;
import org.apache.james.mime4j.field.DefaultFieldParser;
import org.apache.james.mime4j.parser.AbstractContentHandler;
import org.apache.james.mime4j.parser.MimeStreamParser;
+import org.apache.james.mime4j.stream.Field;
import org.apache.james.mime4j.stream.MimeEntityConfig;
import org.apache.james.mime4j.stream.MutableBodyDescriptorFactory;
-import org.apache.james.mime4j.stream.RawField;
/**
* Utility class for copying message and parsing message elements.
@@ -212,8 +211,8 @@ public class MimeBuilder {
parser.stop();
}
@Override
- public void field(RawField field) throws MimeException {
- Field parsedField = DefaultFieldParser.parse(field.getRaw(), monitor);
+ public void field(Field field) throws MimeException {
+ Field parsedField = DefaultFieldParser.parse(field, monitor);
header.addField(parsedField);
}
});
Modified: james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MimeWriter.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MimeWriter.java?rev=1103501&r1=1103500&r2=1103501&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MimeWriter.java (original)
+++ james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/MimeWriter.java Sun May 15 18:37:39 2011
@@ -31,9 +31,8 @@ import org.apache.james.mime4j.dom.Messa
import org.apache.james.mime4j.dom.Multipart;
import org.apache.james.mime4j.dom.SingleBody;
import org.apache.james.mime4j.dom.field.ContentTypeField;
-import org.apache.james.mime4j.dom.field.Field;
import org.apache.james.mime4j.dom.field.FieldName;
-import org.apache.james.mime4j.dom.field.FieldRawData;
+import org.apache.james.mime4j.stream.Field;
import org.apache.james.mime4j.util.ByteArrayBuffer;
import org.apache.james.mime4j.util.ByteSequence;
import org.apache.james.mime4j.util.ContentUtil;
@@ -195,10 +194,7 @@ public class MimeWriter {
* if an I/O error occurs.
*/
public void writeField(Field field, OutputStream out) throws IOException {
- ByteSequence raw = null;
- if (field instanceof FieldRawData) {
- raw = ((FieldRawData) field).getRaw();
- }
+ ByteSequence raw = field.getRaw();
if (raw == null) {
StringBuilder buf = new StringBuilder();
buf.append(field.getName());
Modified: james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/SimpleContentHandler.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/SimpleContentHandler.java?rev=1103501&r1=1103500&r2=1103501&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/SimpleContentHandler.java (original)
+++ james/mime4j/trunk/dom/src/main/java/org/apache/james/mime4j/message/SimpleContentHandler.java Sun May 15 18:37:39 2011
@@ -22,9 +22,9 @@ package org.apache.james.mime4j.message;
import org.apache.james.mime4j.MimeException;
import org.apache.james.mime4j.codec.DecodeMonitor;
import org.apache.james.mime4j.dom.Header;
-import org.apache.james.mime4j.dom.field.Field;
import org.apache.james.mime4j.field.DefaultFieldParser;
import org.apache.james.mime4j.parser.AbstractContentHandler;
+import org.apache.james.mime4j.stream.Field;
import org.apache.james.mime4j.stream.RawField;
/**
@@ -68,8 +68,8 @@ public abstract class SimpleContentHandl
* @see org.apache.james.mime4j.parser.AbstractContentHandler#field(RawField)
*/
@Override
- public final void field(RawField field) throws MimeException {
- Field parsedField = DefaultFieldParser.parse(field.getRaw(), monitor);
+ public final void field(Field field) throws MimeException {
+ Field parsedField = DefaultFieldParser.parse(field, monitor);
currHeader.addField(parsedField);
}
Modified: james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/HeaderTest.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/HeaderTest.java?rev=1103501&r1=1103500&r2=1103501&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/HeaderTest.java (original)
+++ james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/HeaderTest.java Sun May 15 18:37:39 2011
@@ -23,10 +23,10 @@ import junit.framework.TestCase;
import org.apache.commons.io.output.ByteArrayOutputStream;
import org.apache.james.mime4j.dom.Header;
-import org.apache.james.mime4j.dom.field.Field;
import org.apache.james.mime4j.field.DefaultFieldParser;
import org.apache.james.mime4j.message.HeaderImpl;
import org.apache.james.mime4j.message.MimeWriter;
+import org.apache.james.mime4j.stream.Field;
import org.apache.james.mime4j.util.ByteArrayBuffer;
import org.apache.james.mime4j.util.ContentUtil;
Modified: james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MessageParserTest.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MessageParserTest.java?rev=1103501&r1=1103500&r2=1103501&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MessageParserTest.java (original)
+++ james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MessageParserTest.java Sun May 15 18:37:39 2011
@@ -43,10 +43,10 @@ import org.apache.james.mime4j.dom.Body;
import org.apache.james.mime4j.dom.Entity;
import org.apache.james.mime4j.dom.Multipart;
import org.apache.james.mime4j.dom.TextBody;
-import org.apache.james.mime4j.dom.field.Field;
import org.apache.james.mime4j.field.FieldsTest;
import org.apache.james.mime4j.message.MessageImpl;
import org.apache.james.mime4j.message.MimeBuilder;
+import org.apache.james.mime4j.stream.Field;
import org.apache.james.mime4j.stream.MimeEntityConfig;
public class MessageParserTest extends TestCase {
Modified: james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MimeBuilderCopyTest.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MimeBuilderCopyTest.java?rev=1103501&r1=1103500&r2=1103501&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MimeBuilderCopyTest.java (original)
+++ james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/dom/MimeBuilderCopyTest.java Sun May 15 18:37:39 2011
@@ -26,7 +26,6 @@ import org.apache.james.mime4j.dom.Body;
import org.apache.james.mime4j.dom.Entity;
import org.apache.james.mime4j.dom.Header;
import org.apache.james.mime4j.dom.Multipart;
-import org.apache.james.mime4j.dom.field.Field;
import org.apache.james.mime4j.field.DefaultFieldParser;
import org.apache.james.mime4j.message.BasicBodyFactory;
import org.apache.james.mime4j.message.BodyPart;
@@ -34,6 +33,7 @@ import org.apache.james.mime4j.message.H
import org.apache.james.mime4j.message.MessageImpl;
import org.apache.james.mime4j.message.MimeBuilder;
import org.apache.james.mime4j.message.MultipartImpl;
+import org.apache.james.mime4j.stream.Field;
import junit.framework.TestCase;
Modified: james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/field/FieldTest.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/field/FieldTest.java?rev=1103501&r1=1103500&r2=1103501&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/field/FieldTest.java (original)
+++ james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/field/FieldTest.java Sun May 15 18:37:39 2011
@@ -22,9 +22,9 @@ package org.apache.james.mime4j.field;
import org.apache.james.mime4j.MimeException;
import org.apache.james.mime4j.dom.field.ContentTransferEncodingField;
import org.apache.james.mime4j.dom.field.ContentTypeField;
-import org.apache.james.mime4j.dom.field.Field;
import org.apache.james.mime4j.dom.field.UnstructuredField;
import org.apache.james.mime4j.field.DefaultFieldParser;
+import org.apache.james.mime4j.stream.Field;
import junit.framework.TestCase;
Modified: james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/field/FieldsTest.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/field/FieldsTest.java?rev=1103501&r1=1103500&r2=1103501&view=diff
==============================================================================
--- james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/field/FieldsTest.java (original)
+++ james/mime4j/trunk/dom/src/test/java/org/apache/james/mime4j/field/FieldsTest.java Sun May 15 18:37:39 2011
@@ -35,12 +35,11 @@ import org.apache.james.mime4j.dom.field
import org.apache.james.mime4j.dom.field.ContentTransferEncodingField;
import org.apache.james.mime4j.dom.field.ContentTypeField;
import org.apache.james.mime4j.dom.field.DateTimeField;
-import org.apache.james.mime4j.dom.field.Field;
-import org.apache.james.mime4j.dom.field.FieldRawData;
import org.apache.james.mime4j.dom.field.MailboxField;
import org.apache.james.mime4j.dom.field.MailboxListField;
import org.apache.james.mime4j.field.Fields;
import org.apache.james.mime4j.field.address.AddressBuilder;
+import org.apache.james.mime4j.stream.Field;
import org.apache.james.mime4j.util.ByteSequence;
import org.apache.james.mime4j.util.ContentUtil;
import org.apache.james.mime4j.util.MimeUtil;
@@ -386,11 +385,9 @@ public class FieldsTest extends TestCase
public static String decode(Field f) throws IOException {
String s = null;
- if (f instanceof FieldRawData) {
- ByteSequence raw = ((FieldRawData) f).getRaw();
- if (raw != null) {
- s = ContentUtil.decode(raw);
- }
+ ByteSequence raw = f.getRaw();
+ if (raw != null) {
+ s = ContentUtil.decode(raw);
}
if (s == null) {
StringBuilder buf = new StringBuilder();
Modified: james/mime4j/trunk/examples/src/main/java/org/apache/james/mime4j/samples/tree/MessageTree.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/examples/src/main/java/org/apache/james/mime4j/samples/tree/MessageTree.java?rev=1103501&r1=1103500&r2=1103501&view=diff
==============================================================================
--- james/mime4j/trunk/examples/src/main/java/org/apache/james/mime4j/samples/tree/MessageTree.java (original)
+++ james/mime4j/trunk/examples/src/main/java/org/apache/james/mime4j/samples/tree/MessageTree.java Sun May 15 18:37:39 2011
@@ -52,12 +52,12 @@ import org.apache.james.mime4j.dom.addre
import org.apache.james.mime4j.dom.field.AddressListField;
import org.apache.james.mime4j.dom.field.ContentTypeField;
import org.apache.james.mime4j.dom.field.DateTimeField;
-import org.apache.james.mime4j.dom.field.Field;
import org.apache.james.mime4j.dom.field.UnstructuredField;
import org.apache.james.mime4j.field.address.AddressFormatter;
import org.apache.james.mime4j.message.BodyPart;
import org.apache.james.mime4j.message.MessageImpl;
import org.apache.james.mime4j.message.MimeBuilder;
+import org.apache.james.mime4j.stream.Field;
/**
* Displays a parsed Message in a window. The window will be divided into