You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2018/11/07 23:10:39 UTC
[text] [TEXT-138] TextStringBuilder append sub-sequence not
consistent with Appendable.
Repository: commons-text
Updated Branches:
refs/heads/master f0ae79e46 -> 70c080b14
[TEXT-138] TextStringBuilder append sub-sequence not consistent with
Appendable.
Project: http://git-wip-us.apache.org/repos/asf/commons-text/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-text/commit/70c080b1
Tree: http://git-wip-us.apache.org/repos/asf/commons-text/tree/70c080b1
Diff: http://git-wip-us.apache.org/repos/asf/commons-text/diff/70c080b1
Branch: refs/heads/master
Commit: 70c080b146e8e6fb79cd97f780b65f863d4ec6d8
Parents: f0ae79e
Author: Don Jeba <do...@yahoo.com>
Authored: Wed Nov 7 16:10:36 2018 -0700
Committer: Gary Gregory <ga...@gmail.com>
Committed: Wed Nov 7 16:10:36 2018 -0700
----------------------------------------------------------------------
src/changes/changes.xml | 1 +
.../apache/commons/text/StringSubstitutor.java | 2 +-
.../apache/commons/text/TextStringBuilder.java | 14 ++++++---
.../text/TextStringBuilderAppendInsertTest.java | 30 +++++++++++++++++++-
4 files changed, 41 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-text/blob/70c080b1/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 06409d3..e664c37 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -48,6 +48,7 @@ The <action> type attribute can be add,update,fix,remove.
<release version="1.7" date="2018-MM-DD" description="Release 1.7">
<action issue="TEXT-148" type="add" dev="ggregory">Add an enum to the lookup package that lists all StringLookups</action>
<action issue="TEXT-127" type="add" dev="ggregory" due-to="Jean-Baptiste REICH, Sebb, Don Jeba, Gary Gregory">Add a toggle to throw an exception when a variable is unknown in StringSubstitutor</action>
+ <action issue="TEXT-138" type="add" dev="ggregory" due-to="Neal Johnson, Don Jeba">TextStringBuilder append sub-sequence not consistent with Appendable.</action>
</release>
<release version="1.6" date="2018-10-12" description="Release 1.6">
http://git-wip-us.apache.org/repos/asf/commons-text/blob/70c080b1/src/main/java/org/apache/commons/text/StringSubstitutor.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/text/StringSubstitutor.java b/src/main/java/org/apache/commons/text/StringSubstitutor.java
index 87da0d6..f4b53ee 100644
--- a/src/main/java/org/apache/commons/text/StringSubstitutor.java
+++ b/src/main/java/org/apache/commons/text/StringSubstitutor.java
@@ -720,7 +720,7 @@ public class StringSubstitutor {
if (source == null) {
return null;
}
- final TextStringBuilder buf = new TextStringBuilder(length).append(source, offset, length);
+ final TextStringBuilder buf = new TextStringBuilder(length).append(source.toString(), offset, length);
substitute(buf, 0, length);
return buf.toString();
}
http://git-wip-us.apache.org/repos/asf/commons-text/blob/70c080b1/src/main/java/org/apache/commons/text/TextStringBuilder.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/text/TextStringBuilder.java b/src/main/java/org/apache/commons/text/TextStringBuilder.java
index 6c151d6..c2a431e 100644
--- a/src/main/java/org/apache/commons/text/TextStringBuilder.java
+++ b/src/main/java/org/apache/commons/text/TextStringBuilder.java
@@ -571,16 +571,22 @@ public class TextStringBuilder implements CharSequence, Appendable, Serializable
* the CharSequence to append
* @param startIndex
* the start index, inclusive, must be valid
- * @param length
- * the length to append, must be valid
+ * @param endIndex
+ * the end index, exclusive, must be valid
* @return this, to enable chaining
*/
@Override
- public TextStringBuilder append(final CharSequence seq, final int startIndex, final int length) {
+ public TextStringBuilder append(final CharSequence seq, final int startIndex, final int endIndex) {
if (seq == null) {
return appendNull();
}
- return append(seq.toString(), startIndex, length);
+ if (endIndex <= 0) {
+ throw new StringIndexOutOfBoundsException("endIndex must be valid");
+ }
+ if (startIndex >= endIndex) {
+ throw new StringIndexOutOfBoundsException("endIndex must be greater than startIndex");
+ }
+ return append(seq.toString(), startIndex, endIndex - startIndex);
}
/**
http://git-wip-us.apache.org/repos/asf/commons-text/blob/70c080b1/src/test/java/org/apache/commons/text/TextStringBuilderAppendInsertTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/text/TextStringBuilderAppendInsertTest.java b/src/test/java/org/apache/commons/text/TextStringBuilderAppendInsertTest.java
index 3551f63..f51bdb5 100644
--- a/src/test/java/org/apache/commons/text/TextStringBuilderAppendInsertTest.java
+++ b/src/test/java/org/apache/commons/text/TextStringBuilderAppendInsertTest.java
@@ -207,13 +207,41 @@ public class TextStringBuilderAppendInsertTest {
// expected
}
+ try {
+ sb.append((CharSequence) "bar", 2, 1);
+ fail("append(char[], 2, 1) expected IndexOutOfBoundsException");
+ } catch (final IndexOutOfBoundsException e) {
+ // expected
+ }
+
+ try {
+ sb.append((CharSequence) "bar", 2, 2);
+ fail("append(char[], 2, 2) expected IndexOutOfBoundsException");
+ } catch (final IndexOutOfBoundsException e) {
+ // expected
+ }
+
+ try {
+ sb.append((CharSequence) "bar", 2, -2);
+ fail("append(char[], 2, -2) expected IndexOutOfBoundsException");
+ } catch (final IndexOutOfBoundsException e) {
+ // expected
+ }
+
+ try {
+ sb.append((CharSequence) "bar", 2, 0);
+ fail("append(char[], 2, 0) expected IndexOutOfBoundsException");
+ } catch (final IndexOutOfBoundsException e) {
+ // expected
+ }
+
sb.append("bar", 3, 0);
assertThat(sb.toString()).isEqualTo("foo");
sb.append("abcbardef", 3, 3);
assertThat(sb.toString()).isEqualTo("foobar");
- sb.append((CharSequence) "abcbardef", 4, 3);
+ sb.append((CharSequence) "abcbardef", 4, 7);
assertThat(sb.toString()).isEqualTo("foobarard");
}