[
https://issues.apache.org/jira/browse/LANG-1771?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Dianshu Liao updated LANG-1771:
-------------------------------
Fix Version/s: (was: 3.18.0)
> 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[]"{}}}.
>
> 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}}
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)