[
https://issues.apache.org/jira/browse/LANG-1771?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Dianshu Liao updated LANG-1771:
-------------------------------
Description:
In org.apache.commons.lang3.ClassUtils, the method "private static String
getCanonicalName(String className)" returns an incorrect result when given
certain malformed array class name strings. Specifically, for the input
{{{}"[String"{}}}, it incorrectly returns {{"short[]"}} instead of the expected
{{{}"String[]"{}}}.
This issue seems only occurs with input "[String".
Other inputs like: "[I" → returns "int[]" (correct)
"Ljava.lang.String;" → returns "java.lang.String" (correct)
*Version Affected:* {{3.18.0-SNAPSHOT}}
was:
In org.apache.commons.lang3.ClassUtils, the method "private static String
getCanonicalName(String className)" returns an incorrect result when given
certain malformed array class name strings. Specifically, for the input
{{{}"[String"{}}}, it incorrectly returns {{"short[]"}} instead of the expected
{{{}"String[]"{}}}.
Steps to Reproduce:
package org.apache.commons.lang3;
import org.apache.commons.lang3.ClassUtils;
import org.apache.commons.lang3.StringUtils;
import org.junit.Test;
import java.lang.reflect.Method;
import static org.junit.Assert.assertEquals;
public class testClassUtils {
@Test(timeout = 4000)
public void testGetCanonicalName() {
try {
// Accessing the private static method using reflection
Method method = ClassUtils.class.getDeclaredMethod("getCanonicalName",
String.class);
method.setAccessible(true);
String input2 = "[String";
String expectedOutput2 = "String[]";
String actualOutput2 = (String) method.invoke(null, input2);
assertEquals(expectedOutput2, actualOutput2);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Expected Result:
actualOutput2 is "String[]"
Actual Results:
actualOutput2 is "short[]"
Additional Information:
This issue seems only occurs with input "[String".
Other inputs like: "[I" → returns "int[]" (correct)
"Ljava.lang.String;" → returns "java.lang.String" (correct)
*Version Affected:* {{3.18.0-SNAPSHOT}}
> Incorrect output from ClassUtils.getCanonicalName when input is "[String" in
> version 3.18.0-SNAPSHOT
> -----------------------------------------------------------------------------------------------------
>
> Key: LANG-1771
> URL: https://issues.apache.org/jira/browse/LANG-1771
> Project: Commons Lang
> Issue Type: Bug
> Components: lang.*
> Affects Versions: 3.18.0
> Environment: MacOS Sequoia Version 15.3.2
> JDK 8
>
> Reporter: Dianshu Liao
> Priority: Major
> Attachments: Screenshot 2025-05-01 at 5.43.19 pm.png
>
> Original Estimate: 1h
> Remaining Estimate: 1h
>
> In org.apache.commons.lang3.ClassUtils, the method "private static String
> getCanonicalName(String className)" returns an incorrect result when given
> certain malformed array class name strings. Specifically, for the input
> {{{}"[String"{}}}, it incorrectly returns {{"short[]"}} instead of the
> expected {{{}"String[]"{}}}.
> This issue seems only occurs with input "[String".
>
> Other inputs like: "[I" → returns "int[]" (correct)
> "Ljava.lang.String;" → returns "java.lang.String" (correct)
>
> *Version Affected:* {{3.18.0-SNAPSHOT}}
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)