Skip to content

Commit da09365

Browse files
committed
Add CharsetDecoders.
1 parent 5444ad3 commit da09365

4 files changed

Lines changed: 102 additions & 1 deletion

File tree

src/changes/changes.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,9 @@ The <action> type attribute can be add,update,fix,remove.
302302
<action dev="ggregory" type="add" due-to="Gary Gregory">
303303
Add CharsetEncoders.
304304
</action>
305+
<action dev="ggregory" type="add" due-to="Gary Gregory">
306+
Add CharsetDecoders.
307+
</action>
305308
<!-- UPDATE -->
306309
<action dev="ggregory" type="add" due-to="Gary Gregory">
307310
Update FileEntry to use FileTime instead of long for file time stamps.
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one or more
3+
* contributor license agreements. See the NOTICE file distributed with
4+
* this work for additional information regarding copyright ownership.
5+
* The ASF licenses this file to You under the Apache License, Version 2.0
6+
* (the "License"); you may not use this file except in compliance with
7+
* the License. You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*/
17+
18+
package org.apache.commons.io.charset;
19+
20+
import java.nio.charset.Charset;
21+
import java.nio.charset.CharsetDecoder;
22+
23+
/**
24+
* Works with {@link CharsetDecoder}.
25+
*
26+
* @since 2.12.0
27+
*/
28+
public class CharsetDecoders {
29+
30+
/**
31+
* Returns the given non-null CharsetDecoder or a new default CharsetDecoder.
32+
*
33+
* @param charsetDecoder The CharsetDecoder to test.
34+
* @return the given non-null CharsetDecoder or a new default CharsetDecoder.
35+
*/
36+
public static CharsetDecoder toCharsetDecoder(CharsetDecoder charsetDecoder) {
37+
return charsetDecoder != null ? charsetDecoder : Charset.defaultCharset().newDecoder();
38+
}
39+
40+
}

src/main/java/org/apache/commons/io/charset/CharsetEncoders.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,18 @@
2020
import java.nio.charset.Charset;
2121
import java.nio.charset.CharsetEncoder;
2222

23+
/**
24+
* Works with {@link CharsetEncoder}.
25+
*
26+
* @since 2.12.0
27+
*/
2328
public class CharsetEncoders {
2429

2530
/**
2631
* Returns the given non-null CharsetEncoder or a new default CharsetEncoder.
2732
*
2833
* @param charsetEncoder The CharsetEncoder to test.
2934
* @return the given non-null CharsetEncoder or a new default CharsetEncoder.
30-
* @since 2.12.0
3135
*/
3236
public static CharsetEncoder toCharsetEncoder(CharsetEncoder charsetEncoder) {
3337
return charsetEncoder != null ? charsetEncoder : Charset.defaultCharset().newEncoder();
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one or more
3+
* contributor license agreements. See the NOTICE file distributed with
4+
* this work for additional information regarding copyright ownership.
5+
* The ASF licenses this file to You under the Apache License, Version 2.0
6+
* (the "License"); you may not use this file except in compliance with
7+
* the License. You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*/
17+
18+
package org.apache.commons.io.charset;
19+
20+
import static org.junit.jupiter.api.Assertions.assertEquals;
21+
import static org.junit.jupiter.api.Assertions.assertNotNull;
22+
23+
import java.nio.charset.Charset;
24+
import java.nio.charset.CharsetDecoder;
25+
import java.nio.charset.StandardCharsets;
26+
27+
import org.junit.jupiter.api.Test;
28+
29+
/**
30+
* Tests {@link CharsetDecoders}.
31+
*/
32+
public class CharsetDecdersTest {
33+
34+
@Test
35+
public void testToCharsetDecoders_default() {
36+
final CharsetDecoder charsetEncoder = CharsetDecoders.toCharsetDecoder(Charset.defaultCharset().newDecoder());
37+
assertNotNull(charsetEncoder);
38+
assertEquals(Charset.defaultCharset(), charsetEncoder.charset());
39+
}
40+
41+
@Test
42+
public void testToCharsetDecoders_ISO_8859_1() {
43+
final CharsetDecoder charsetEncoder = CharsetDecoders.toCharsetDecoder(StandardCharsets.ISO_8859_1.newDecoder());
44+
assertNotNull(charsetEncoder);
45+
assertEquals(StandardCharsets.ISO_8859_1, charsetEncoder.charset());
46+
}
47+
48+
@Test
49+
public void testToCharsetDecoders_null() {
50+
final CharsetDecoder charsetEncoder = CharsetDecoders.toCharsetDecoder(null);
51+
assertNotNull(charsetEncoder);
52+
assertEquals(Charset.defaultCharset(), charsetEncoder.charset());
53+
}
54+
}

0 commit comments

Comments
 (0)