Merge remote-tracking branch 'dmak/MIME4J-280'
diff --git a/dom/src/main/java/org/apache/james/mime4j/field/ContentDispositionFieldImpl.java b/dom/src/main/java/org/apache/james/mime4j/field/ContentDispositionFieldImpl.java
index fcccd70..345df49 100644
--- a/dom/src/main/java/org/apache/james/mime4j/field/ContentDispositionFieldImpl.java
+++ b/dom/src/main/java/org/apache/james/mime4j/field/ContentDispositionFieldImpl.java
@@ -224,7 +224,7 @@
         } catch (ParseException e) {
             parseException = e;
         } catch (TokenMgrError e) {
-            parseException = new ParseException(e.getMessage());
+            parseException = new ParseException(e);
         }
 
         final String dispositionType = parser.getDispositionType();
diff --git a/dom/src/main/java/org/apache/james/mime4j/field/ContentTypeFieldImpl.java b/dom/src/main/java/org/apache/james/mime4j/field/ContentTypeFieldImpl.java
index eb5a7a4..01a9f81 100644
--- a/dom/src/main/java/org/apache/james/mime4j/field/ContentTypeFieldImpl.java
+++ b/dom/src/main/java/org/apache/james/mime4j/field/ContentTypeFieldImpl.java
@@ -197,7 +197,7 @@
         } catch (ParseException e) {
             parseException = e;
         } catch (TokenMgrError e) {
-            parseException = new ParseException(e.getMessage());
+            parseException = new ParseException(e);
         }
 
         mediaType = parser.getType();
diff --git a/dom/src/main/java/org/apache/james/mime4j/field/DateTimeFieldImpl.java b/dom/src/main/java/org/apache/james/mime4j/field/DateTimeFieldImpl.java
index cc854ed..6a76200 100644
--- a/dom/src/main/java/org/apache/james/mime4j/field/DateTimeFieldImpl.java
+++ b/dom/src/main/java/org/apache/james/mime4j/field/DateTimeFieldImpl.java
@@ -73,7 +73,7 @@
         } catch (ParseException e) {
             parseException = e;
         } catch (TokenMgrError e) {
-            parseException = new ParseException(e.getMessage());
+            parseException = new ParseException(e);
         }
 
         parsed = true;
diff --git a/dom/src/main/java/org/apache/james/mime4j/field/address/Builder.java b/dom/src/main/java/org/apache/james/mime4j/field/address/Builder.java
index 0b6ae66..d796c82 100644
--- a/dom/src/main/java/org/apache/james/mime4j/field/address/Builder.java
+++ b/dom/src/main/java/org/apache/james/mime4j/field/address/Builder.java
@@ -70,16 +70,16 @@
                 try {
                     name = DecoderUtil.decodeEncodedWords(name, monitor);
                 } catch (IllegalArgumentException e) {
-                    throw new ParseException(e.getMessage());
+                    throw new ParseException(e);
                 }
                 Mailbox mb = buildAngleAddr((ASTangle_addr) n2);
                 return new Mailbox(name, mb.getRoute(), mb.getLocalPart(),
                         mb.getDomain());
             } else {
-                throw new ParseException();
+                throw new ParseException("Address \"group_body\" or \"angle_addr\" is expected but got \"" + n + "\"");
             }
         } else {
-            throw new ParseException();
+            throw new ParseException("Address \"phrase\" is expected but got \"" + n + "\"");
         }
     }
 
@@ -91,7 +91,7 @@
             if (n instanceof ASTmailbox)
                 results.add(buildMailbox((ASTmailbox) n, monitor));
             else
-                throw new ParseException();
+                throw new ParseException("Address \"mailbox\" is expected but got \"" + n + "\"");
         }
         return new MailboxList(results, true);
     }
@@ -106,7 +106,7 @@
         } else if (n instanceof ASTname_addr) {
             return buildNameAddr((ASTname_addr) n, monitor);
         } else {
-            throw new ParseException();
+            throw new ParseException("Address \"addr_spec\" or \"angle_addr\" or \"name_addr\" is expected but got \"" + n + "\"");
         }
     }
 
@@ -117,7 +117,7 @@
         if (n instanceof ASTphrase) {
             name = buildString((ASTphrase) n, false);
         } else {
-            throw new ParseException();
+            throw new ParseException("Address \"phrase\" is expected but got \"" + n + "\"");
         }
 
         n = it.next();
@@ -125,13 +125,13 @@
             try {
                 name = DecoderUtil.decodeEncodedWords(name, monitor);
             } catch (IllegalArgumentException e) {
-                throw new ParseException(e.getMessage());
+                throw new ParseException(e);
             }
             Mailbox mb = buildAngleAddr((ASTangle_addr) n);
             return new Mailbox(name, mb.getRoute(), mb.getLocalPart(),
                     mb.getDomain());
         } else {
-            throw new ParseException();
+            throw new ParseException("Address \"angle_addr\" is expected but got \"" + n + "\"");
         }
     }
 
@@ -146,12 +146,12 @@
             // do nothing
         }
         else
-            throw new ParseException();
+            throw new ParseException("Address \"route\" or \"addr_spec\" is expected but got \"" + n + "\"");
 
         if (n instanceof ASTaddr_spec)
             return buildAddrSpec(route, (ASTaddr_spec) n);
         else
-            throw new ParseException();
+            throw new ParseException("Address \"addr_spec\" is expected but got \"" + n + "\"");
     }
 
     private DomainList buildRoute(ASTroute node) throws ParseException {
@@ -162,7 +162,7 @@
             if (n instanceof ASTdomain)
                 results.add(buildString((ASTdomain) n, true));
             else
-                throw new ParseException();
+                throw new ParseException("Address \"domain\" is expected but got \"" + n + "\"");
         }
         return new DomainList(results);
     }
diff --git a/dom/src/main/javacc/org/apache/james/mime4j/field/mimeversion/MimeVersionParser.jj b/dom/src/main/javacc/org/apache/james/mime4j/field/mimeversion/MimeVersionParser.jj
index 39b6bb5..54a25a4 100644
--- a/dom/src/main/javacc/org/apache/james/mime4j/field/mimeversion/MimeVersionParser.jj
+++ b/dom/src/main/javacc/org/apache/james/mime4j/field/mimeversion/MimeVersionParser.jj
@@ -84,7 +84,7 @@
 			this.major = Integer.parseInt(major.image);

 			this.minor = Integer.parseInt(minor.image);

 		} catch (NumberFormatException e) {

-			throw new ParseException(e.getMessage());

+			throw new ParseException(e);

 		}

 	}

 }

diff --git a/dom/src/main/jjtree/org/apache/james/mime4j/field/address/AddressListParser.jjt b/dom/src/main/jjtree/org/apache/james/mime4j/field/address/AddressListParser.jjt
index b6a7cd8..51feff1 100644
--- a/dom/src/main/jjtree/org/apache/james/mime4j/field/address/AddressListParser.jjt
+++ b/dom/src/main/jjtree/org/apache/james/mime4j/field/address/AddressListParser.jjt
@@ -77,7 +77,7 @@
             parseAddressList0();

             return (ASTaddress_list) jjtree.rootNode();

         } catch (TokenMgrError tme) {

-            throw new ParseException(tme.getMessage());

+            throw new ParseException(tme);

         }

     }

 

@@ -86,7 +86,7 @@
             parseAddress0();

             return (ASTaddress) jjtree.rootNode();

         } catch (TokenMgrError tme) {

-            throw new ParseException(tme.getMessage());

+            throw new ParseException(tme);

         }

     }

 

@@ -95,7 +95,7 @@
             parseMailbox0();

             return (ASTmailbox) jjtree.rootNode();

         } catch (TokenMgrError tme) {

-            throw new ParseException(tme.getMessage());

+            throw new ParseException(tme);

         }

     }