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 f3aebc99ea CAUSEWAY-3404: de-duplicate camel case utils (2)
f3aebc99ea is described below
commit f3aebc99eabc8b84ea893b8dfc2c8096e9e23941
Author: Andi Huber <[email protected]>
AuthorDate: Thu May 11 16:34:54 2023 +0200
CAUSEWAY-3404: de-duplicate camel case utils (2)
---
.../commons/internal/base/_Strings_CamelCase.java | 7 +-
.../commons/internal/base/StringsTest.java | 13 ++++
.../core/metamodel/commons/StringExtensions.java | 67 ------------------
.../commons/StringUtils_SplitOnCommas.java | 81 ----------------------
.../commons/StringUtils_toLineSeparated.java | 51 --------------
.../commons/model/components/UiComponentType.java | 6 +-
6 files changed, 22 insertions(+), 203 deletions(-)
diff --git
a/commons/src/main/java/org/apache/causeway/commons/internal/base/_Strings_CamelCase.java
b/commons/src/main/java/org/apache/causeway/commons/internal/base/_Strings_CamelCase.java
index 46ccaf5e34..2c5e661234 100644
---
a/commons/src/main/java/org/apache/causeway/commons/internal/base/_Strings_CamelCase.java
+++
b/commons/src/main/java/org/apache/causeway/commons/internal/base/_Strings_CamelCase.java
@@ -32,6 +32,11 @@ import lombok.experimental.UtilityClass;
@UtilityClass
class _Strings_CamelCase {
+ /**
+ * Camel case is the practice of writing phrases without spaces or
punctuation and with capitalized words.
+ * The format indicates the first word starting with EITHER case,
+ * then the following words having an initial uppercase letter.
+ */
@Nullable
String camelCase(final @Nullable String input, final UnaryOperator<String>
firstTokenMapper) {
@@ -39,7 +44,7 @@ class _Strings_CamelCase {
if(input.length()==0) return input;
val sb = new StringBuffer(input.length());
- val tokenizer = new StringTokenizer(input);
+ val tokenizer = new StringTokenizer(input, " \t\n\r\f._,:;");
int tokenCount = 0;
while (tokenizer.hasMoreTokens()) {
diff --git
a/commons/src/test/java/org/apache/causeway/commons/internal/base/StringsTest.java
b/commons/src/test/java/org/apache/causeway/commons/internal/base/StringsTest.java
index 7763f30a97..dbfa2d0017 100644
---
a/commons/src/test/java/org/apache/causeway/commons/internal/base/StringsTest.java
+++
b/commons/src/test/java/org/apache/causeway/commons/internal/base/StringsTest.java
@@ -325,6 +325,19 @@ class StringsTest {
is("Next Available Date"));
}
+ @Test
+ void asCamelCase() {
+ assertThat(asCamelCase("An Upper Case"), is("AnUpperCase"));
+ assertThat(asCamelCase("An_Upper.Case"), is("AnUpperCase"));
+ assertThat(asCamelCase("a Lower Case"), is("aLowerCase"));
+ assertThat(asCamelCase("a_Lower.Case"), is("aLowerCase"));
+ // special use-case in
org.apache.causeway.viewer.commons.model.components.UiComponentType#getId()
+ assertThat(asCamelCase("OBJECT_EDIT".toLowerCase()), is("objectEdit"));
+ }
+ private String asCamelCase(final String string) {
+ return _Strings.asCamelCase.apply(string);
+ }
+
@Test
void asCamelCaseDecapitalized() {
assertThat(asCamelCaseDecapitalized("An Upper Case"),
is("anUpperCase"));
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/commons/StringExtensions.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/commons/StringExtensions.java
index 780bb8edab..fe0b3e8eb1 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/commons/StringExtensions.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/commons/StringExtensions.java
@@ -18,10 +18,6 @@
*/
package org.apache.causeway.core.metamodel.commons;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
import org.springframework.lang.Nullable;
import org.apache.causeway.applib.util.Enums;
@@ -34,69 +30,6 @@ import lombok.val;
public final class StringExtensions {
- // ////////////////////////////////////////////////////////////
- // in, combinePaths, splitOnCommas
- // ////////////////////////////////////////////////////////////
-
- public static boolean in(final String extendee, final String[] strings) {
- for (final String strCandidate : strings) {
- if (strCandidate.equals(extendee)) {
- return true;
- }
- }
- return false;
- }
-
- public static List<String> splitOnCommas(final String
commaSeparatedExtendee) {
- if (commaSeparatedExtendee == null) {
- return null;
- }
- final String removeLeadingWhiteSpace =
removeLeadingWhiteSpace(commaSeparatedExtendee);
- // special handling
- if (removeLeadingWhiteSpace.length() == 0) {
- return Collections.emptyList();
- }
- final String[] splitAsArray =
removeLeadingWhiteSpace.split("\\W*,\\W*");
- return Arrays.asList(splitAsArray);
- }
-
-
- private static final char CARRIAGE_RETURN = '\n';
- private static final char LINE_FEED = '\r';
-
- /**
- * Converts any <tt>\n</tt> to <tt>line.separator</tt>
- *
- * @param extendee
- */
- public static String lineSeparated(final String extendee) {
- final StringBuilder buf = new StringBuilder();
- final String lineSeparator = System.getProperty("line.separator");
- boolean lastWasLineFeed = false;
- for (final char c : extendee.toCharArray()) {
- final boolean isLineFeed = c == LINE_FEED;
- final boolean isCarriageReturn = c == CARRIAGE_RETURN;
- if (isCarriageReturn) {
- buf.append(lineSeparator);
- lastWasLineFeed = false;
- } else {
- if (lastWasLineFeed) {
- buf.append(LINE_FEED);
- }
- if (isLineFeed) {
- lastWasLineFeed = true;
- } else {
- buf.append(c);
- lastWasLineFeed = false;
- }
- }
- }
- if (lastWasLineFeed) {
- buf.append(LINE_FEED);
- }
- return buf.toString();
- }
-
// ////////////////////////////////////////////////////////////
// removeTabs, removeLeadingWhiteSpace, stripLeadingSlash, stripNewLines,
// normalize
diff --git
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/commons/StringUtils_SplitOnCommas.java
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/commons/StringUtils_SplitOnCommas.java
deleted file mode 100644
index e228dbdab1..0000000000
---
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/commons/StringUtils_SplitOnCommas.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.causeway.core.metamodel.commons;
-
-import java.util.List;
-
-import org.hamcrest.CoreMatchers;
-import org.junit.jupiter.api.Test;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-
-class StringUtils_SplitOnCommas {
-
- @Test
- void length() {
- final List<String> list = StringExtensions.splitOnCommas("foo,bar");
- assertThat(list.size(), CoreMatchers.is(2));
- }
-
- @Test
- void elements() {
- final List<String> list = StringExtensions.splitOnCommas("foo,bar");
- assertThat(list.get(0), CoreMatchers.is("foo"));
- assertThat(list.get(1), CoreMatchers.is("bar"));
- }
-
- @Test
- void whenHasWhiteSpaceAfterComma() {
- final List<String> list = StringExtensions.splitOnCommas("foo, bar");
- assertThat(list.get(0), CoreMatchers.is("foo"));
- assertThat(list.get(1), CoreMatchers.is("bar"));
- }
-
- @Test
- void whenHasLeadingWhiteSpace() {
- final List<String> list = StringExtensions.splitOnCommas(" foo, bar");
- assertThat(list.get(0), CoreMatchers.is("foo"));
- assertThat(list.get(1), CoreMatchers.is("bar"));
- }
-
- @Test
- void whenNull() {
- final List<String> list = StringExtensions.splitOnCommas(null);
- assertThat(list, CoreMatchers.is(CoreMatchers.nullValue()));
- }
-
- @Test
- void whenEmpty() {
- final List<String> list = StringExtensions.splitOnCommas("");
- assertThat(list.size(), CoreMatchers.is(0));
- }
-
- @Test
- void whenOnlyWhiteSpace() {
- final List<String> list = StringExtensions.splitOnCommas(" ");
- assertThat(list.size(), CoreMatchers.is(0));
- }
-
- @Test
- void whenOnlyWhiteSpaceTabs() {
- final List<String> list = StringExtensions.splitOnCommas("\t");
- assertThat(list.size(), CoreMatchers.is(0));
- }
-
-}
diff --git
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/commons/StringUtils_toLineSeparated.java
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/commons/StringUtils_toLineSeparated.java
deleted file mode 100644
index 101fb99375..0000000000
---
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/commons/StringUtils_toLineSeparated.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.causeway.core.metamodel.commons;
-
-import java.util.Objects;
-
-import org.junit.jupiter.api.Test;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-
-class StringUtils_toLineSeparated {
-
- @Test
- public void convertsCarriageReturnToLineSeparator() throws Exception {
- assertThat(StringExtensions.lineSeparated("ok\n"), is("ok" +
System.getProperty("line.separator")));
- }
-
- @Test
- public void windowsStyleCarriageReturnLeftUnchanged() throws Exception {
- if(!isRunningOnWindows()) return;
- assertThat(StringExtensions.lineSeparated("ok\r\n"), is("ok" +
System.getProperty("line.separator")));
- }
-
- @Test
- public void macStyleCarriageReturnLeftUnchanged() throws Exception {
- if(!isRunningOnWindows()) return;
- assertThat(StringExtensions.lineSeparated("ok\r"), is("ok\r"));
- }
-
- private static boolean isRunningOnWindows() {
- return Objects.equals(System.getProperty("file.separator"), "\\");
- }
-
-}
diff --git
a/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/components/UiComponentType.java
b/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/components/UiComponentType.java
index 771bba375e..1da0dd4cd4 100644
---
a/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/components/UiComponentType.java
+++
b/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/components/UiComponentType.java
@@ -21,7 +21,7 @@ package org.apache.causeway.viewer.commons.model.components;
import org.springframework.lang.Nullable;
import org.apache.causeway.applib.annotation.Optionality;
-import org.apache.causeway.core.metamodel.commons.StringExtensions;
+import org.apache.causeway.commons.internal.base._Strings;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@@ -169,13 +169,13 @@ public enum UiComponentType {
/**
* Returns the {@link #name()} formatted as
- * {@link StringExtensions#toCamelCase(String) case}.
+ * {@link _Strings#asCamelCase case}.
*
* <p>
* For example, <tt>OBJECT_EDIT</tt> becomes <tt>objectEdit</tt>.
*/
public String getId() {
- return StringExtensions.toCamelCase(name());
+ return _Strings.asCamelCase.apply(_Strings.lower(name()));
}
/**