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

Reply via email to