[
https://issues.apache.org/jira/browse/LANG-1478?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16915106#comment-16915106
]
Bruno P. Kinoshita commented on LANG-1478:
------------------------------------------
Oh, I see what you mean.
{code:java}
System.out.println(ClassUtils.getAbbreviatedName("ab.de.Ghij",
className.length())); // 10
// prints a.de.Ghij {code}
So when you get the abbreviated name passing the exact length of the class
name, it is indeed one character short. I agree it is annoying having to use
`className.length() + 1`... but I suspect we could have some users using it.
I will approve the PR, but will ask in the mailing list before merging it
first, to check whether we will need to wait for a major release - as this
could break someone else's code.
> ClassUtils getAbbreviatedName uses len one character shorter
> ------------------------------------------------------------
>
> Key: LANG-1478
> URL: https://issues.apache.org/jira/browse/LANG-1478
> Project: Commons Lang
> Issue Type: Bug
> Reporter: Peter Verhas
> Priority: Minor
> Time Spent: 0.5h
> Remaining Estimate: 0h
>
> The {{ClassUtils}} method {{getAbbreviatedName}} calculates the required
> lenght one character short. That way
> {code}
> final String ANY_CLASS_FULL_NAME = "....";
> assertEquals("ANY_CLASS_FULL_NAME ",
> ClassUtils.getAbbreviatedName(ANY_CLASS_FULL_NAME , ANY_CLASS_FULL_NAME
> .length()));
> {code}
> will abbreviate the class name, although we are asking exactly the same
> number of characters as they are there. The solution is that
> {code}
> if (availableSpace > 0) {
> {code}
> has to be modified to
> {code}
> if (availableSpace >= 0) {
> {code}
> since the value zero means that we exactly used up the available character
> width.
> This is just a quick fix for this issue, but generally, the algorithm is
> faulty. It runs many times out of the desired length. It actually uses the
> len parameter, not as the desired final length but rather a length for which
> what is out of the range on the left that has to be abbreviated. For that,
> the code could be much simpler. (See LANG-1480.)
--
This message was sent by Atlassian Jira
(v8.3.2#803003)