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 <[email protected]>
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", "[email protected]"));
BodyDescriptor bd = builder.build();
- Assert.assertEquals("us-ascii", bd.getCharset());
+ Assert.assertEquals("US-ASCII", bd.getCharset());
}
@Test
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]