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]

Reply via email to