Skip to content

Commit 7ffb81b

Browse files
committed
Add CharsetEncoders.
1 parent b4720f3 commit 7ffb81b

4 files changed

Lines changed: 115 additions & 0 deletions

File tree

src/changes/changes.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,9 @@ The <action> type attribute can be add,update,fix,remove.
293293
<action dev="ggregory" type="add" due-to="Gary Gregory">
294294
Add and reuse IOConsumer.forEach(T[], IOConsumer) and forEachIndexed(Stream, IOConsumer).
295295
</action>
296+
<action dev="ggregory" type="add" due-to="Gary Gregory">
297+
Add CharsetEncoders.
298+
</action>
296299
<!-- UPDATE -->
297300
<action dev="ggregory" type="add" due-to="Gary Gregory">
298301
Update FileEntry to use FileTime instead of long for file time stamps.
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
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.CharsetEncoder;
22+
23+
public class CharsetEncoders {
24+
25+
/**
26+
* Returns the given non-null CharsetEncoder or a new default CharsetEncoder.
27+
*
28+
* @param charsetEncoder The CharsetEncoder to test.
29+
* @return the given non-null CharsetEncoder or a new default CharsetEncoder.
30+
* @since 2.12.0
31+
*/
32+
public static CharsetEncoder toCharsetEncoder(CharsetEncoder charsetEncoder) {
33+
return charsetEncoder != null ? charsetEncoder : Charset.defaultCharset().newEncoder();
34+
}
35+
36+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
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+
/**
19+
* Provides classes to work with code from {@link java.nio.charset}.
20+
* @since 2.12.0
21+
*/
22+
package org.apache.commons.io.charset;
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.CharsetEncoder;
25+
import java.nio.charset.StandardCharsets;
26+
27+
import org.junit.jupiter.api.Test;
28+
29+
/**
30+
* Tests {@link CharsetEncoders}.
31+
*/
32+
public class CharsetEncodersTest {
33+
34+
@Test
35+
public void testToCharsetEncoders_default() {
36+
final CharsetEncoder charsetEncoder = CharsetEncoders.toCharsetEncoder(Charset.defaultCharset().newEncoder());
37+
assertNotNull(charsetEncoder);
38+
assertEquals(Charset.defaultCharset(), charsetEncoder.charset());
39+
}
40+
41+
@Test
42+
public void testToCharsetEncoders_ISO_8859_1() {
43+
final CharsetEncoder charsetEncoder = CharsetEncoders.toCharsetEncoder(StandardCharsets.ISO_8859_1.newEncoder());
44+
assertNotNull(charsetEncoder);
45+
assertEquals(StandardCharsets.ISO_8859_1, charsetEncoder.charset());
46+
}
47+
48+
@Test
49+
public void testToCharsetEncoders_null() {
50+
final CharsetEncoder charsetEncoder = CharsetEncoders.toCharsetEncoder(null);
51+
assertNotNull(charsetEncoder);
52+
assertEquals(Charset.defaultCharset(), charsetEncoder.charset());
53+
}
54+
}

0 commit comments

Comments
 (0)