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
The following commit(s) were added to refs/heads/master by this push: new ac81a5d4 DefaultBodyDescriptorBuilder: Allow to customize standard charset (#94) ac81a5d4 is described below commit ac81a5d45204bfdbfc43cc1eef73ae3238f53cee Author: Benoit TELLIER <btell...@linagora.com> AuthorDate: Thu Feb 1 07:35:27 2024 +0100 DefaultBodyDescriptorBuilder: Allow to customize standard charset (#94) --- .../james/mime4j/message/DefaultBodyDescriptorBuilder.java | 13 +++++++++++-- .../james/mime4j/message/MaximalBodyDescriptorTest.java | 8 ++++---- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/dom/src/main/java/org/apache/james/mime4j/message/DefaultBodyDescriptorBuilder.java b/dom/src/main/java/org/apache/james/mime4j/message/DefaultBodyDescriptorBuilder.java index f44cea99..e0cd112a 100644 --- a/dom/src/main/java/org/apache/james/mime4j/message/DefaultBodyDescriptorBuilder.java +++ b/dom/src/main/java/org/apache/james/mime4j/message/DefaultBodyDescriptorBuilder.java @@ -19,6 +19,8 @@ package org.apache.james.mime4j.message; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Locale; import java.util.Map; @@ -56,6 +58,7 @@ public class DefaultBodyDescriptorBuilder implements BodyDescriptorBuilder { private final DecodeMonitor monitor; private final FieldParser<? extends ParsedField> fieldParser; private final Map<String, ParsedField> fields; + private Charset defaultCharset = StandardCharsets.US_ASCII; /** * Creates a new root <code>BodyDescriptor</code> instance. @@ -82,6 +85,10 @@ public class DefaultBodyDescriptorBuilder implements BodyDescriptorBuilder { this.fields = new HashMap<String, ParsedField>(); } + public void setDefaultCharset(Charset charset) { + this.defaultCharset = charset; + } + public void reset() { fields.clear(); } @@ -128,7 +135,7 @@ public class DefaultBodyDescriptorBuilder implements BodyDescriptorBuilder { } } if (actualCharset == null && MEDIA_TYPE_TEXT.equals(actualMediaType)) { - actualCharset = US_ASCII; + actualCharset = defaultCharset.name(); } if (!MimeUtil.isMultipart(actualMimeType)) { actualBoundary = null; @@ -150,7 +157,9 @@ public class DefaultBodyDescriptorBuilder implements BodyDescriptorBuilder { actualMimeType = DEFAULT_MIME_TYPE; } } - return new DefaultBodyDescriptorBuilder(actualMimeType, fieldParser, monitor); + DefaultBodyDescriptorBuilder child = new DefaultBodyDescriptorBuilder(actualMimeType, fieldParser, monitor); + child.setDefaultCharset(defaultCharset); + return child; } } diff --git a/dom/src/test/java/org/apache/james/mime4j/message/MaximalBodyDescriptorTest.java b/dom/src/test/java/org/apache/james/mime4j/message/MaximalBodyDescriptorTest.java index 76ffa7ac..7591b05f 100644 --- a/dom/src/test/java/org/apache/james/mime4j/message/MaximalBodyDescriptorTest.java +++ b/dom/src/test/java/org/apache/james/mime4j/message/MaximalBodyDescriptorTest.java @@ -126,17 +126,17 @@ public class MaximalBodyDescriptorTest { * Test charset. */ BodyDescriptor bd = builder.build(); - Assert.assertEquals("us-ascii", bd.getCharset()); + Assert.assertEquals("US-ASCII", bd.getCharset()); builder.addField(new RawField("Content-Type ", "text/type; charset=ISO-8859-1")); bd = builder.build(); Assert.assertEquals("ISO-8859-1", bd.getCharset()); builder.reset(); bd = builder.build(); - Assert.assertEquals("us-ascii", bd.getCharset()); + Assert.assertEquals("US-ASCII", bd.getCharset()); builder.addField(new RawField("Content-Type ", "text/type")); bd = builder.build(); - Assert.assertEquals("us-ascii", bd.getCharset()); + Assert.assertEquals("US-ASCII", bd.getCharset()); /* * Test boundary. @@ -189,7 +189,7 @@ public class MaximalBodyDescriptorTest { BodyDescriptorBuilder builder = new DefaultBodyDescriptorBuilder(); builder.addField(new RawField("To", "m...@example.org")); BodyDescriptor bd = builder.build(); - Assert.assertEquals("us-ascii", bd.getCharset()); + Assert.assertEquals("US-ASCII", bd.getCharset()); } @Test --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org