Le mar. 11 janv. 2022 à 14:21, <[email protected]> a écrit :
>
> 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 <[email protected]>
> 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();
> + }
What's the use-case for such a function?
void userFunction(CharsetEncoder charsetEncoder) { /* ... */ }
Not using Commons IO:
---CUT---
userFunction(csEnc == null ? Charset.defaultCharset().newEncoder() : csEnc);
---CUT---
vs using Commons IO:
---CUT---
userFunction(CharsetEncoders.toCharsetEncoder(csEnc));
---CUT---
IMO, the former call is clearer (self-documenting) and safer (explicit request
for a default).
> [...]
Gilles
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]