This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-mime4j.git

commit 639e74d1dced1efadefc9b44f1951c2557c2e897
Author: Benoit Tellier <btell...@linagora.com>
AuthorDate: Mon Jun 27 13:38:47 2022 +0700

    MIME4J-318 Fields: rely on lenient parsers
    
    JMH proves this to be an order of magnitude faster than default 
implementation.
    
    This provides a 25% boost on message writing. (benchmark7)
---
 .../java/org/apache/james/mime4j/field/Fields.java | 24 +++++++++++-----------
 .../org/apache/james/mime4j/field/FieldsTest.java  |  1 -
 2 files changed, 12 insertions(+), 13 deletions(-)

diff --git a/dom/src/main/java/org/apache/james/mime4j/field/Fields.java 
b/dom/src/main/java/org/apache/james/mime4j/field/Fields.java
index 72722a1d..c24b0c1b 100644
--- a/dom/src/main/java/org/apache/james/mime4j/field/Fields.java
+++ b/dom/src/main/java/org/apache/james/mime4j/field/Fields.java
@@ -75,7 +75,7 @@ public class Fields {
      * @return the newly created <i>Content-Type</i> field.
      */
     public static ContentTypeField contentType(String contentType) {
-        return parse(ContentTypeFieldImpl.PARSER, FieldName.CONTENT_TYPE,
+        return parse(ContentTypeFieldLenientImpl.PARSER, 
FieldName.CONTENT_TYPE,
                 contentType);
     }
 
@@ -97,7 +97,7 @@ public class Fields {
             throw new IllegalArgumentException();
 
         if (parameters == null || parameters.isEmpty()) {
-            return parse(ContentTypeFieldImpl.PARSER, FieldName.CONTENT_TYPE,
+            return parse(ContentTypeFieldLenientImpl.PARSER, 
FieldName.CONTENT_TYPE,
                     mimeType);
         } else {
             StringBuilder sb = new StringBuilder(mimeType);
@@ -128,7 +128,7 @@ public class Fields {
             throw new IllegalArgumentException(mimeType + " is not a valid 
MIME type");
         }
         if (parameters == null) {
-            return parse(ContentTypeFieldImpl.PARSER, FieldName.CONTENT_TYPE,
+            return parse(ContentTypeFieldLenientImpl.PARSER, 
FieldName.CONTENT_TYPE,
                     mimeType);
         } else {
             StringBuilder sb = new StringBuilder(mimeType);
@@ -319,22 +319,22 @@ public class Fields {
             Date creationDate, Date modificationDate, Date readDate) {
         Map<String, String> parameters = new HashMap<String, String>();
         if (filename != null) {
-            parameters.put(ContentDispositionFieldImpl.PARAM_FILENAME, 
filename);
+            parameters.put(ContentDispositionFieldLenientImpl.PARAM_FILENAME, 
filename);
         }
         if (size >= 0) {
-            parameters.put(ContentDispositionFieldImpl.PARAM_SIZE, Long
+            parameters.put(ContentDispositionFieldLenientImpl.PARAM_SIZE, Long
                     .toString(size));
         }
         if (creationDate != null) {
-            parameters.put(ContentDispositionFieldImpl.PARAM_CREATION_DATE,
+            
parameters.put(ContentDispositionFieldLenientImpl.PARAM_CREATION_DATE,
                     MimeUtil.formatDate(creationDate, null));
         }
         if (modificationDate != null) {
-            parameters.put(ContentDispositionFieldImpl.PARAM_MODIFICATION_DATE,
+            
parameters.put(ContentDispositionFieldLenientImpl.PARAM_MODIFICATION_DATE,
                     MimeUtil.formatDate(modificationDate, null));
         }
         if (readDate != null) {
-            parameters.put(ContentDispositionFieldImpl.PARAM_READ_DATE, 
MimeUtil
+            parameters.put(ContentDispositionFieldLenientImpl.PARAM_READ_DATE, 
MimeUtil
                     .formatDate(readDate, null));
         }
         return contentDisposition(dispositionType, parameters);
@@ -664,24 +664,24 @@ public class Fields {
     private static DateTimeField date0(String fieldName, Date date,
             TimeZone zone) {
         final String formattedDate = MimeUtil.formatDate(date, zone);
-        return parse(DateTimeFieldImpl.PARSER, fieldName, formattedDate);
+        return parse(DateTimeFieldLenientImpl.PARSER, fieldName, 
formattedDate);
     }
 
     private static MailboxField mailbox0(String fieldName, Mailbox mailbox) {
         String fieldValue = encodeAddresses(Collections.singleton(mailbox));
-        return parse(MailboxFieldImpl.PARSER, fieldName, fieldValue);
+        return parse(MailboxFieldLenientImpl.PARSER, fieldName, fieldValue);
     }
 
     private static MailboxListField mailboxList0(String fieldName,
             Iterable<Mailbox> mailboxes) {
         String fieldValue = encodeAddresses(mailboxes);
-        return parse(MailboxListFieldImpl.PARSER, fieldName, fieldValue);
+        return parse(MailboxListFieldLenientImpl.PARSER, fieldName, 
fieldValue);
     }
 
     private static AddressListField addressList0(String fieldName,
             Iterable<? extends Address> addresses) {
         String fieldValue = encodeAddresses(addresses);
-        return parse(AddressListFieldImpl.PARSER, fieldName, fieldValue);
+        return parse(AddressListFieldLenientImpl.PARSER, fieldName, 
fieldValue);
     }
 
     private static void checkValidFieldName(String fieldName) {
diff --git a/dom/src/test/java/org/apache/james/mime4j/field/FieldsTest.java 
b/dom/src/test/java/org/apache/james/mime4j/field/FieldsTest.java
index 60eac649..63364791 100644
--- a/dom/src/test/java/org/apache/james/mime4j/field/FieldsTest.java
+++ b/dom/src/test/java/org/apache/james/mime4j/field/FieldsTest.java
@@ -100,7 +100,6 @@ public class FieldsTest {
         ContentTypeField field = Fields.contentType("multipart/mixed; "
                 + "boundary=-=Part.0.37877968dd4f6595.11eccf0271c"
                 + ".2dce5678cbc933d5=-");
-        Assert.assertFalse(field.isValidField());
 
         Assert.assertEquals("multipart/mixed", field.getMimeType());
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to