Pierre Post created TEXT-236:
--------------------------------

             Summary: TextStringBuilder inserting at end throws 
StringIndexOutOfBoundsException
                 Key: TEXT-236
                 URL: https://issues.apache.org/jira/browse/TEXT-236
             Project: Commons Text
          Issue Type: Bug
    Affects Versions: 1.13.1, 1.13.0
            Reporter: Pierre Post


The methods

{{TextStringBuilder#insert(...)}}

throw a {{StringIndexOutOfBoundsException}} when you try to insert something at 
the end of the buffer. Nevertheless, the documentation of {{validateIndex()}} 
still states "{_}Validates that an index is in the range 0 <= index *<=* 
size.{_}"

I think this is really an unexpected behavior and also differs from the 
behavior from {{java.lang.StringBuilder}} and 
{{{}org.apache.commons.text.StrBuilder{}}}, as the following example shows:
{code:java}
StringBuilder stringBuilder = new StringBuilder();
// works as expected
stringBuilder.insert(0, "test");

StrBuilder strBuilder = new StrBuilder();
// works as expected
strBuilder.insert(0, "test");

TextStringBuilder textStringBuilder = new TextStringBuilder();
// throws java.lang.StringIndexOutOfBoundsException: String index out of range: 0
textStringBuilder.insert(0, "test");
{code}
However, care must be taken, as {{validateIndex()}} is also used by the various 
char methods (e.g. {{{}setCharAt(){}}}) where the current validation IS 
justified. Validation should be separated for these two use cases so that 
insertion at the end of the buffer is again possible.



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

Reply via email to