diff --git a/src/main/java/org/apache/commons/beanutils2/converters/AbstractConverter.java b/src/main/java/org/apache/commons/beanutils2/converters/AbstractConverter.java index 84a92abc7..b1f524776 100644 --- a/src/main/java/org/apache/commons/beanutils2/converters/AbstractConverter.java +++ b/src/main/java/org/apache/commons/beanutils2/converters/AbstractConverter.java @@ -23,7 +23,6 @@ import org.apache.commons.beanutils2.ConversionException; import org.apache.commons.beanutils2.ConvertUtils; import org.apache.commons.beanutils2.Converter; -import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -59,16 +58,6 @@ public abstract class AbstractConverter implements Converter { // private static final String PACKAGE = AbstractConverter.class.getPackage().getName() + "."; private static final String PACKAGE = "org.apache.commons.beanutils2.converters."; - /** - * Converts the given object to a lower-case string. - * - * @param value the input string. - * @return the given string trimmed and converter to lower-case. - */ - protected static String toLowerCase(final Object value) { - return StringUtils.toRootLowerCase(toString(value)); - } - /** * Converts the given object to a lower-case string. * diff --git a/src/main/java/org/apache/commons/beanutils2/converters/BooleanConverter.java b/src/main/java/org/apache/commons/beanutils2/converters/BooleanConverter.java index 797499c32..30cb1ee41 100644 --- a/src/main/java/org/apache/commons/beanutils2/converters/BooleanConverter.java +++ b/src/main/java/org/apache/commons/beanutils2/converters/BooleanConverter.java @@ -43,20 +43,6 @@ */ public final class BooleanConverter extends AbstractConverter { - /** - * Copies the provided array, and ensures that all the strings in the newly created array contain only lower-case letters. - *

- * Using this method to copy string arrays means that changes to the src array do not modify the dst array. - *

- */ - private static String[] copyStrings(final String[] src) { - final String[] dst = new String[src.length]; - for (int i = 0; i < src.length; ++i) { - dst[i] = toLowerCase(src[i]); - } - return dst; - } - /** * The set of strings that are known to map to Boolean.TRUE. */ @@ -97,8 +83,8 @@ public BooleanConverter(final Boolean defaultValue) { * @since 1.8.0 */ public BooleanConverter(final String[] trueStrings, final String[] falseStrings) { - this.trueStrings = copyStrings(trueStrings); - this.falseStrings = copyStrings(falseStrings); + this.trueStrings = trueStrings.clone(); + this.falseStrings = falseStrings.clone(); } /** @@ -115,8 +101,8 @@ public BooleanConverter(final String[] trueStrings, final String[] falseStrings) */ public BooleanConverter(final String[] trueStrings, final String[] falseStrings, final Boolean defaultValue) { super(defaultValue); - this.trueStrings = copyStrings(trueStrings); - this.falseStrings = copyStrings(falseStrings); + this.trueStrings = trueStrings.clone(); + this.falseStrings = falseStrings.clone(); } /** @@ -136,20 +122,16 @@ public BooleanConverter(final String[] trueStrings, final String[] falseStrings, @Override protected T convertToType(final Class type, final Object value) throws Throwable { if (Boolean.class.equals(type) || Boolean.TYPE.equals(type)) { - // All the values in the trueStrings and falseStrings arrays are - // guaranteed to be lower-case. By converting the input value - // to lowercase too, we can use the efficient String.equals method - // instead of the less-efficient String.equalsIgnoreCase method. - final String stringValue = toLowerCase(value); + final String stringValue = toString(value); for (final String trueString : trueStrings) { - if (trueString.equals(stringValue)) { + if (trueString.equalsIgnoreCase(stringValue)) { return type.cast(Boolean.TRUE); } } for (final String falseString : falseStrings) { - if (falseString.equals(stringValue)) { + if (falseString.equalsIgnoreCase(stringValue)) { return type.cast(Boolean.FALSE); } } diff --git a/src/main/java/org/apache/commons/beanutils2/converters/ColorConverter.java b/src/main/java/org/apache/commons/beanutils2/converters/ColorConverter.java index 867233846..ba7f9cf06 100644 --- a/src/main/java/org/apache/commons/beanutils2/converters/ColorConverter.java +++ b/src/main/java/org/apache/commons/beanutils2/converters/ColorConverter.java @@ -90,42 +90,38 @@ protected T convertToType(final Class type, final Object value) throws Th if (Color.class.isAssignableFrom(type)) { final String stringValue = toString(value); - switch (toLowerCase(stringValue)) { - case "black": + if (stringValue.equalsIgnoreCase("black")) { return type.cast(Color.BLACK); - case "blue": + } else if (stringValue.equalsIgnoreCase("blue")) { return type.cast(Color.BLUE); - case "cyan": + } else if (stringValue.equalsIgnoreCase("cyan")) { return type.cast(Color.CYAN); - case "darkgray": - case "darkgrey": - case "dark_gray": - case "dark_grey": + } else if (stringValue.equalsIgnoreCase("darkgray") + || stringValue.equalsIgnoreCase("darkgrey") + || stringValue.equalsIgnoreCase("dark_gray") + || stringValue.equalsIgnoreCase("dark_grey")) { return type.cast(Color.DARK_GRAY); - case "gray": - case "grey": + } else if (stringValue.equalsIgnoreCase("gray") || stringValue.equalsIgnoreCase("grey")) { return type.cast(Color.GRAY); - case "green": + } else if (stringValue.equalsIgnoreCase("green")) { return type.cast(Color.GREEN); - case "lightgray": - case "lightgrey": - case "light_gray": - case "light_grey": + } else if (stringValue.equalsIgnoreCase("lightgray") + || stringValue.equalsIgnoreCase("lightgrey") + || stringValue.equalsIgnoreCase("light_gray") + || stringValue.equalsIgnoreCase("light_grey")) { return type.cast(Color.LIGHT_GRAY); - case "magenta": + } else if (stringValue.equalsIgnoreCase("magenta")) { return type.cast(Color.MAGENTA); - case "orange": + } else if (stringValue.equalsIgnoreCase("orange")) { return type.cast(Color.ORANGE); - case "pink": + } else if (stringValue.equalsIgnoreCase("pink")) { return type.cast(Color.PINK); - case "red": + } else if (stringValue.equalsIgnoreCase("red")) { return type.cast(Color.RED); - case "white": + } else if (stringValue.equalsIgnoreCase("white")) { return type.cast(Color.WHITE); - case "yellow": + } else if (stringValue.equalsIgnoreCase("yellow")) { return type.cast(Color.YELLOW); - default: - // Do nothing. } if (stringValue.startsWith(HEX_COLOR_PREFIX)) { diff --git a/src/test/java/org/apache/commons/beanutils2/converters/BooleanConverterTest.java b/src/test/java/org/apache/commons/beanutils2/converters/BooleanConverterTest.java index 80567e87a..9fe952750 100644 --- a/src/test/java/org/apache/commons/beanutils2/converters/BooleanConverterTest.java +++ b/src/test/java/org/apache/commons/beanutils2/converters/BooleanConverterTest.java @@ -35,10 +35,10 @@ class BooleanConverterTest { @Test void testAdditionalStrings() { - final String[] trueStrings = { "sure" }; - final String[] falseStrings = { "nope" }; + final String[] trueStrings = { "sure", "ναι" }; + final String[] falseStrings = { "nope", "hayır" }; final AbstractConverter converter = new BooleanConverter(trueStrings, falseStrings); - testConversionValues(converter, new String[] { "sure", "Sure" }, new String[] { "nope", "nOpE" }); + testConversionValues(converter, new String[] { "sure", "Sure", "ναι", "Ναι" }, new String[] { "nope", "nOpE", "hayır", "Hayır" }); assertThrows(ConversionException.class, () -> converter.convert(Boolean.class, "true")); assertThrows(ConversionException.class, () -> converter.convert(Boolean.class, "bogus"));