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

Neal Johnson commented on TEXT-138:
-----------------------------------

The simplest way to show that this class is broke from an Appendable 
perspective is:

StringBuilder sb = new StringBuilder().append("abc", 1, 2);
TextStringBuilder textb = new TextStringBuilder().append("abc", 1, 2);

System.err.println(sb);     // result: "b"
System.err.println(textb); // result: "bc"


The TextStringBuilder behaviour can also be seen in StrBuilder from both 
text and lang packages.

Fixing this issue is not simple as the append methods 'length' behaviour is 
expected by some methods for example 'replace' in StringSubstitutor.

Probable the simplest solution would be to remove 'Appendable' from implements.

> TextStringBuilder append sub-sequence not consistant with Appendable
> --------------------------------------------------------------------
>
>                 Key: TEXT-138
>                 URL: https://issues.apache.org/jira/browse/TEXT-138
>             Project: Commons Text
>          Issue Type: Bug
>    Affects Versions: 1.4
>            Reporter: Neal Johnson
>            Priority: Minor
>              Labels: usability
>
> The method:
> {{append(final CharSequence seq, final int startIndex, final int length)}}
> Overrides the method defined by Appendable. However the behavior of the 
> TextStringBuilder implementation is not consistent with the definition in 
> Appendable. As the class defines "that some edge cases, with invalid indices 
> or null input, have been altered - see individual methods" this would not 
> normally be an issue. However as the implementation states that it overrides 
> Appendable the class cannot be used as an Appendable as the last argument is 
> expected to be an end index and not a length.
>  
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to