You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Gary D. Gregory (Jira)" <ji...@apache.org> on 2022/09/14 18:53:00 UTC

[jira] [Commented] (LANG-1691) ClassUtils.getShortCanonicalName doesn't use the canonicalName

    [ https://issues.apache.org/jira/browse/LANG-1691?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17604922#comment-17604922 ] 

Gary D. Gregory commented on LANG-1691:
---------------------------------------

Hi [~thiyagu_7] 

Thank you for your report.

Please feel free to provide a PR on GitHub (with a test).

> ClassUtils.getShortCanonicalName doesn't use the canonicalName
> --------------------------------------------------------------
>
>                 Key: LANG-1691
>                 URL: https://issues.apache.org/jira/browse/LANG-1691
>             Project: Commons Lang
>          Issue Type: Bug
>          Components: lang.*
>    Affects Versions: 3.12.0
>            Reporter: Thiyagarajan
>            Priority: Major
>
> The [getShortCanonicalName|https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/ClassUtils.html#getShortCanonicalName-java.lang.Class-] should return the canonical name minus the package name from a Class.
> Also, the javadoc of an overloaded _getShortCanonicalName_ states,
> _If the class is an inner class then the result value will not contain the outer classes. This way the behavior of this method is different from getShortClassName(String). The argument in that case is class name and not canonical name and the return value retains the outer classes._
> But for inner class, its behaviour is similar to _getShortClassName._
> {code:java}
> Class<?> clazz = Map.Entry.class;
> System.out.println(ClassUtils.getShortCanonicalName(clazz)); {code}
> *Actual:* Map.Entry
> *Expected:* Entry
> Looking into the implementation, it calls *getShortCanonicalName(cls.getName()).* I believe it should have been *getShortCanonicalName(cls.getCanonicalName())*
> {code:java}
> public static String getShortCanonicalName(final Class<?> cls) {
>     if (cls == null) {
>         return StringUtils.EMPTY;
>     }
>     return getShortCanonicalName(cls.getName()); //<---
> }
> public static String getShortCanonicalName(final String canonicalName) {
>     return getShortClassName(getCanonicalName(canonicalName));
> } {code}
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)