From 7c19a1ff4c217f03c0be62baf1169d689f566825 Mon Sep 17 00:00:00 2001 From: duncan Date: Mon, 22 May 2017 13:16:29 +0100 Subject: [PATCH] Deprecate CharEncoding and direct users to Java 7 classes Java 7 introduced java.nio.charset.StandardCharsets, which negates the need for our CharEncoding method. Additionally, the constants in the class now point to the constants defined in Java 7. Fixes: LANG-1334 --- src/changes/changes.xml | 1 + .../apache/commons/lang3/CharEncoding.java | 19 +++++++++++++------ .../commons/lang3/CharEncodingTest.java | 1 + 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 9f52a9b87..69b95d70d 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -46,6 +46,7 @@ The type attribute can be add,update,fix,remove. + Deprecate CharEncoding in favour of java.nio.charset.StandardCharsets MultilineRecursiveToStringStyle StackOverflowError when object is an array Increase test coverage of ToStringBuilder class to 100% Add a method in StringUtils to extract only digits out of input string diff --git a/src/main/java/org/apache/commons/lang3/CharEncoding.java b/src/main/java/org/apache/commons/lang3/CharEncoding.java index 7fe9296a3..65dca331f 100644 --- a/src/main/java/org/apache/commons/lang3/CharEncoding.java +++ b/src/main/java/org/apache/commons/lang3/CharEncoding.java @@ -19,6 +19,7 @@ package org.apache.commons.lang3; import java.nio.charset.Charset; import java.nio.charset.IllegalCharsetNameException; +import java.nio.charset.StandardCharsets; /** *

Character encoding names required of every implementation of the Java platform.

@@ -32,7 +33,11 @@ import java.nio.charset.IllegalCharsetNameException; * * @see JRE character encoding names * @since 2.1 + * @deprecated Java 7 introduced {@link StandardCharsets}, which defines these constants as + * {@link Charset} objects. Use {@link Charset#name()} to get the string values provided in this class. + * This class will be removed in a future release. */ +@Deprecated public class CharEncoding { /** @@ -40,7 +45,7 @@ public class CharEncoding { * *

Every implementation of the Java platform is required to support this character encoding.

*/ - public static final String ISO_8859_1 = "ISO-8859-1"; + public static final String ISO_8859_1 = StandardCharsets.ISO_8859_1.name(); /** *

Seven-bit ASCII, also known as ISO646-US, also known as the Basic Latin block @@ -48,7 +53,7 @@ public class CharEncoding { * *

Every implementation of the Java platform is required to support this character encoding.

*/ - public static final String US_ASCII = "US-ASCII"; + public static final String US_ASCII = StandardCharsets.US_ASCII.name(); /** *

Sixteen-bit Unicode Transformation Format, byte order specified by a mandatory initial @@ -56,28 +61,28 @@ public class CharEncoding { * *

Every implementation of the Java platform is required to support this character encoding.

*/ - public static final String UTF_16 = "UTF-16"; + public static final String UTF_16 = StandardCharsets.UTF_16.name(); /** *

Sixteen-bit Unicode Transformation Format, big-endian byte order.

* *

Every implementation of the Java platform is required to support this character encoding.

*/ - public static final String UTF_16BE = "UTF-16BE"; + public static final String UTF_16BE = StandardCharsets.UTF_16BE.name(); /** *

Sixteen-bit Unicode Transformation Format, little-endian byte order.

* *

Every implementation of the Java platform is required to support this character encoding.

*/ - public static final String UTF_16LE = "UTF-16LE"; + public static final String UTF_16LE = StandardCharsets.UTF_16LE.name(); /** *

Eight-bit Unicode Transformation Format.

* *

Every implementation of the Java platform is required to support this character encoding.

*/ - public static final String UTF_8 = "UTF-8"; + public static final String UTF_8 = StandardCharsets.UTF_8.name(); /** *

Returns whether the named charset is supported.

@@ -88,6 +93,8 @@ public class CharEncoding { * * @param name the name of the requested charset; may be either a canonical name or an alias, null returns false * @return {@code true} if the charset is available in the current Java virtual machine + * @deprecated Please use {@link Charset#isSupported(String)} instead, although be aware that {@code null} + * values are not accepted by that method and an {@link IllegalCharsetNameException} may be thrown. */ public static boolean isSupported(final String name) { if (name == null) { diff --git a/src/test/java/org/apache/commons/lang3/CharEncodingTest.java b/src/test/java/org/apache/commons/lang3/CharEncodingTest.java index 4324c6fad..9e8e5402e 100644 --- a/src/test/java/org/apache/commons/lang3/CharEncodingTest.java +++ b/src/test/java/org/apache/commons/lang3/CharEncodingTest.java @@ -27,6 +27,7 @@ import org.junit.Test; * * @see CharEncoding */ +@SuppressWarnings("deprecation") public class CharEncodingTest { private void assertSupportedEncoding(final String name) {