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()));
     }
 
     /**

Reply via email to