This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/causeway.git
The following commit(s) were added to refs/heads/master by this push:
new 342f705d52 CAUSEWAY-3404: TextUtils/StringDelimiter: adds
asDelimitedString() and withDelimiter(..)
342f705d52 is described below
commit 342f705d522f1d516a855e237732c18507b35f06
Author: Andi Huber <[email protected]>
AuthorDate: Thu May 11 10:16:11 2023 +0200
CAUSEWAY-3404: TextUtils/StringDelimiter: adds asDelimitedString() and
withDelimiter(..)
---
.../org/apache/causeway/commons/io/TextUtils.java | 24 ++++++++++++++++++++++
.../causeway/commons/util/StringDelimiterTest.java | 21 +++++++++++++++++++
2 files changed, 45 insertions(+)
diff --git
a/commons/src/main/java/org/apache/causeway/commons/io/TextUtils.java
b/commons/src/main/java/org/apache/causeway/commons/io/TextUtils.java
index 8540540658..d78626e87d 100644
--- a/commons/src/main/java/org/apache/causeway/commons/io/TextUtils.java
+++ b/commons/src/main/java/org/apache/causeway/commons/io/TextUtils.java
@@ -27,8 +27,10 @@ import java.io.OutputStreamWriter;
import java.net.URL;
import java.nio.charset.Charset;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Scanner;
import java.util.function.UnaryOperator;
+import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.springframework.lang.Nullable;
@@ -261,10 +263,32 @@ public class TextUtils {
: this;
}
+ /**
+ * Number of delimited {@link String} elements this {@link
StringDelimiter} is holding.
+ */
public int elementCount() {
return elements.length;
}
+ public String asDelimitedString() {
+ return stream().collect(Collectors.joining(delimiter));
+ }
+
+ @Override
+ public String toString() {
+ return String.format("StringDelimiter[delimiter=%s,elements=%s]",
+ delimiter,
+ Arrays.asList(elements));
+ }
+
+ /**
+ * Returns a new {@link StringDelimiter} instance that has all the
+ * delimited {@link String} elements of this but instead uses given
{@code newDelimiter}.
+ */
+ public StringDelimiter withDelimiter(final @NonNull String
newDelimiter) {
+ return new StringDelimiter(newDelimiter, elements);
+ }
+
}
// -- STRING CUTTER
diff --git
a/commons/src/test/java/org/apache/causeway/commons/util/StringDelimiterTest.java
b/commons/src/test/java/org/apache/causeway/commons/util/StringDelimiterTest.java
index a6e64043dd..f487a8085c 100644
---
a/commons/src/test/java/org/apache/causeway/commons/util/StringDelimiterTest.java
+++
b/commons/src/test/java/org/apache/causeway/commons/util/StringDelimiterTest.java
@@ -81,6 +81,27 @@ class StringDelimiterTest {
.join(delimiter.parse("d")), "a", "b", "c", "d");
}
+ @Test
+ void asDelimitedString() {
+ val delimiter = TextUtils.delimiter(".");
+ assertEquals("", delimiter.asDelimitedString());
+ assertEquals("a.b", delimiter.parse("a.b").asDelimitedString());
+ }
+
+ @Test
+ void withDelimiter() {
+ val delimiter = TextUtils.delimiter(".");
+ assertEquals("", delimiter.withDelimiter("/").asDelimitedString());
+ assertEquals("a/b",
delimiter.parse("a.b").withDelimiter("/").asDelimitedString());
+ }
+
+ @Test
+ void toStringMethod() {
+ val delimiter = TextUtils.delimiter(".");
+ assertEquals("StringDelimiter[delimiter=.,elements=[]]",
delimiter.toString());
+ assertEquals("StringDelimiter[delimiter=.,elements=[a, b]]",
delimiter.parse("a.b").toString());
+ }
+
// -- HELPER
private static void assertThatDelimiterEquals(final
TextUtils.StringDelimiter delimiter, final String...parts) {