This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-io.git


The following commit(s) were added to refs/heads/master by this push:
     new 7ffb81b  Add CharsetEncoders.
7ffb81b is described below

commit 7ffb81b956ff2c148cb27a1b05635a9ea7a98a6d
Author: Gary Gregory <garydgreg...@gmail.com>
AuthorDate: Tue Jan 11 08:21:54 2022 -0500

    Add CharsetEncoders.
---
 src/changes/changes.xml                            |  3 ++
 .../apache/commons/io/charset/CharsetEncoders.java | 36 +++++++++++++++
 .../apache/commons/io/charset/package-info.java    | 22 +++++++++
 .../commons/io/charset/CharsetEncodersTest.java    | 54 ++++++++++++++++++++++
 4 files changed, 115 insertions(+)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 5fd6789..c6d4778 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -293,6 +293,9 @@ The <action> type attribute can be add,update,fix,remove.
       <action dev="ggregory" type="add" due-to="Gary Gregory">
         Add and reuse IOConsumer.forEach(T[], IOConsumer) and 
forEachIndexed(Stream, IOConsumer).
       </action>
+      <action dev="ggregory" type="add" due-to="Gary Gregory">
+        Add CharsetEncoders.
+      </action>
       <!-- UPDATE -->
       <action dev="ggregory" type="add" due-to="Gary Gregory">
         Update FileEntry to use FileTime instead of long for file time stamps.
diff --git a/src/main/java/org/apache/commons/io/charset/CharsetEncoders.java 
b/src/main/java/org/apache/commons/io/charset/CharsetEncoders.java
new file mode 100644
index 0000000..815aaef
--- /dev/null
+++ b/src/main/java/org/apache/commons/io/charset/CharsetEncoders.java
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.commons.io.charset;
+
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetEncoder;
+
+public class CharsetEncoders {
+
+    /**
+     * Returns the given non-null CharsetEncoder or a new default 
CharsetEncoder.
+     *
+     * @param charsetEncoder The CharsetEncoder to test.
+     * @return the given non-null CharsetEncoder or a new default 
CharsetEncoder.
+     * @since 2.12.0
+     */
+    public static CharsetEncoder toCharsetEncoder(CharsetEncoder 
charsetEncoder) {
+        return charsetEncoder != null ? charsetEncoder : 
Charset.defaultCharset().newEncoder();
+    }
+
+}
diff --git a/src/main/java/org/apache/commons/io/charset/package-info.java 
b/src/main/java/org/apache/commons/io/charset/package-info.java
new file mode 100644
index 0000000..56ee6c0
--- /dev/null
+++ b/src/main/java/org/apache/commons/io/charset/package-info.java
@@ -0,0 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Provides classes to work with code from {@link java.nio.charset}.
+ * @since 2.12.0
+ */
+package org.apache.commons.io.charset;
diff --git 
a/src/test/java/org/apache/commons/io/charset/CharsetEncodersTest.java 
b/src/test/java/org/apache/commons/io/charset/CharsetEncodersTest.java
new file mode 100644
index 0000000..7288ba5
--- /dev/null
+++ b/src/test/java/org/apache/commons/io/charset/CharsetEncodersTest.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.commons.io.charset;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.StandardCharsets;
+
+import org.junit.jupiter.api.Test;
+
+/**
+ * Tests {@link CharsetEncoders}.
+ */
+public class CharsetEncodersTest {
+
+    @Test
+    public void testToCharsetEncoders_default() {
+        final CharsetEncoder charsetEncoder = 
CharsetEncoders.toCharsetEncoder(Charset.defaultCharset().newEncoder());
+        assertNotNull(charsetEncoder);
+        assertEquals(Charset.defaultCharset(), charsetEncoder.charset());
+    }
+
+    @Test
+    public void testToCharsetEncoders_ISO_8859_1() {
+        final CharsetEncoder charsetEncoder = 
CharsetEncoders.toCharsetEncoder(StandardCharsets.ISO_8859_1.newEncoder());
+        assertNotNull(charsetEncoder);
+        assertEquals(StandardCharsets.ISO_8859_1, charsetEncoder.charset());
+    }
+
+    @Test
+    public void testToCharsetEncoders_null() {
+        final CharsetEncoder charsetEncoder = 
CharsetEncoders.toCharsetEncoder(null);
+        assertNotNull(charsetEncoder);
+        assertEquals(Charset.defaultCharset(), charsetEncoder.charset());
+    }
+}

Reply via email to