You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2022/10/17 03:12:00 UTC
[james-mime4j] 10/14: MIME4J-318 Fields: rely on lenient parsers
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 <bt...@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-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org