Author: olegk
Date: Sun Dec 7 07:26:00 2008
New Revision: 724142
URL: http://svn.apache.org/viewvc?rev=724142&view=rev
Log:
MIME4J-90: Consistent parsing of header field names
Contributed by Markus Wiederkehr <markus.wiederkehr at gmail.com>
Modified:
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/field/Field.java
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/Header.java
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/SimpleContentHandler.java
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/parser/AbstractEntity.java
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/field/FieldTest.java
Modified:
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/field/Field.java
URL:
http://svn.apache.org/viewvc/james/mime4j/trunk/src/main/java/org/apache/james/mime4j/field/Field.java?rev=724142&r1=724141&r2=724142&view=diff
==============================================================================
--- james/mime4j/trunk/src/main/java/org/apache/james/mime4j/field/Field.java
(original)
+++ james/mime4j/trunk/src/main/java/org/apache/james/mime4j/field/Field.java
Sun Dec 7 07:26:00 2008
@@ -22,8 +22,6 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.apache.james.mime4j.MimeException;
-
/**
* The base class of all field classes.
*
@@ -52,7 +50,7 @@
"Content-Transfer-Encoding";
private static final String FIELD_NAME_PATTERN =
- "^([\\x21-\\x39\\x3b-\\x7e]+)[ \t]*:";
+ "^([\\x21-\\x39\\x3b-\\x7e]+):";
private static final Pattern fieldNamePattern =
Pattern.compile(FIELD_NAME_PATTERN);
@@ -82,9 +80,9 @@
*
* @param raw the string to parse.
* @return a <code>Field</code> instance.
- * @throws MimeException on parse errors.
+ * @throws IllegalArgumentException on parse errors.
*/
- public static Field parse(final String raw) throws MimeException {
+ public static Field parse(final String raw) {
/*
* Unfold the field.
@@ -96,7 +94,11 @@
*/
final Matcher fieldMatcher = fieldNamePattern.matcher(unfolded);
if (!fieldMatcher.find()) {
- throw new MimeException("Invalid field in string");
+ // We don't have to throw a MimeException because this error can
+ // never happen when Field.parse() is called by a ContentHandler.
+ // org.apache.james.mime4j.parser.AbstractEntity drops header
+ // lines that do not start with a valid field name.
+ throw new IllegalArgumentException("Invalid field in string");
}
final String name = fieldMatcher.group(1);
Modified:
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/Header.java
URL:
http://svn.apache.org/viewvc/james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/Header.java?rev=724142&r1=724141&r2=724142&view=diff
==============================================================================
---
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/Header.java
(original)
+++
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/Header.java
Sun Dec 7 07:26:00 2008
@@ -76,7 +76,7 @@
parser.stop();
}
@Override
- public void field(String fieldData) throws MimeException {
+ public void field(String fieldData) {
addField(Field.parse(fieldData));
}
});
Modified:
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/SimpleContentHandler.java
URL:
http://svn.apache.org/viewvc/james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/SimpleContentHandler.java?rev=724142&r1=724141&r2=724142&view=diff
==============================================================================
---
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/SimpleContentHandler.java
(original)
+++
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/SimpleContentHandler.java
Sun Dec 7 07:26:00 2008
@@ -19,7 +19,6 @@
package org.apache.james.mime4j.message;
-import org.apache.james.mime4j.MimeException;
import org.apache.james.mime4j.decoder.Base64InputStream;
import org.apache.james.mime4j.decoder.QuotedPrintableInputStream;
import org.apache.james.mime4j.descriptor.BodyDescriptor;
@@ -75,7 +74,7 @@
* @see
org.apache.james.mime4j.parser.AbstractContentHandler#field(java.lang.String)
*/
@Override
- public final void field(String fieldData) throws MimeException {
+ public final void field(String fieldData) {
currHeader.addField(Field.parse(fieldData));
}
Modified:
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/parser/AbstractEntity.java
URL:
http://svn.apache.org/viewvc/james/mime4j/trunk/src/main/java/org/apache/james/mime4j/parser/AbstractEntity.java?rev=724142&r1=724141&r2=724142&view=diff
==============================================================================
---
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/parser/AbstractEntity.java
(original)
+++
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/parser/AbstractEntity.java
Sun Dec 7 07:26:00 2008
@@ -193,7 +193,7 @@
boolean valid = true;
field = fieldbuf.toString();
int pos = fieldbuf.indexOf(':');
- if (pos == -1) {
+ if (pos <= 0) {
monitor(Event.INALID_HEADER);
valid = false;
} else {
Modified:
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/field/FieldTest.java
URL:
http://svn.apache.org/viewvc/james/mime4j/trunk/src/test/java/org/apache/james/mime4j/field/FieldTest.java?rev=724142&r1=724141&r2=724142&view=diff
==============================================================================
---
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/field/FieldTest.java
(original)
+++
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/field/FieldTest.java
Sun Dec 7 07:26:00 2008
@@ -19,7 +19,6 @@
package org.apache.james.mime4j.field;
-import org.apache.james.mime4j.MimeException;
import org.apache.james.mime4j.field.ContentTransferEncodingField;
import org.apache.james.mime4j.field.ContentTypeField;
import org.apache.james.mime4j.field.Field;
@@ -46,9 +45,9 @@
try {
f = Field.parse("Yada yada yada");
- fail("MimeException not thrown when using an invalid "
+ fail("IllegalArgumentException not thrown when using an invalid "
+ "field");
- } catch (MimeException e) {
+ } catch (IllegalArgumentException e) {
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]