[ 
https://issues.apache.org/jira/browse/LANG-1478?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Peter Verhas updated LANG-1478:
-------------------------------
    Description: 
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.)

  was:
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.


> 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)

Reply via email to