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