> On Jan 11, 2022, at 8:41 AM, Gilles Sadowski <gillese...@gmail.com> wrote: > > Le mar. 11 janv. 2022 à 14:21, <ggreg...@apache.org > <mailto:ggreg...@apache.org>> 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 <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(); >> + } > > 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).
If things are unclear in the code, why not check in comments as to why**** we’re doing what we’re doing. I’ve found that comments about what’s going on are over the top, but why comments are of great value. -Rob > >> [...] > > Gilles > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > <mailto:dev-unsubscr...@commons.apache.org> > For additional commands, e-mail: dev-h...@commons.apache.org > <mailto:dev-h...@commons.apache.org>