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

commit b681773376b3fa853fa2b2c724685aa600c04bbf
Author: Andi Huber <[email protected]>
AuthorDate: Thu May 11 16:09:46 2023 +0200

    CAUSEWAY-3404: de-duplicate camel case utils (1)
---
 .../causeway/commons/internal/base/_Strings.java   | 16 +++++-
 .../commons/internal/base/_Strings_CamelCase.java  | 60 ++++++++++++++++++++++
 ...NaturalNames.java => _Strings_NaturalName.java} |  2 +-
 .../commons/internal/base/StringsTest.java         | 31 ++++++++---
 .../core/metamodel/commons/StringExtensions.java   | 43 ----------------
 .../core/metamodel/facets/FacetedMethod.java       |  8 +--
 .../specimpl/_MixedInMemberNamingStrategy.java     |  3 +-
 .../commons/StringUtils_camelLowerFirst.java       | 37 -------------
 .../commons/StringUtils_toLowerDashed.java         | 35 -------------
 .../wicket/model/mementos/PageParameterNames.java  | 18 +++----
 .../wicket/ui/CollectionContentsAsFactory.java     |  4 +-
 .../CollectionPresentationSelectorPanel.java       |  4 +-
 12 files changed, 116 insertions(+), 145 deletions(-)

diff --git 
a/commons/src/main/java/org/apache/causeway/commons/internal/base/_Strings.java 
b/commons/src/main/java/org/apache/causeway/commons/internal/base/_Strings.java
index a9e0a700aa..ad87ef7d21 100644
--- 
a/commons/src/main/java/org/apache/causeway/commons/internal/base/_Strings.java
+++ 
b/commons/src/main/java/org/apache/causeway/commons/internal/base/_Strings.java
@@ -836,8 +836,22 @@ public final class _Strings {
             .andThen(s->_Strings.condenseWhitespaces(s, " "));
 
     public static final StringOperator asNaturalName = operator()
-            .andThen(s->_Strings_NaturalNames.naturalName(s, true));
+            .andThen(s->_Strings_NaturalName.naturalName(s, true));
 
+    /**
+     * 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.
+     */
+    public static final StringOperator asCamelCase = operator()
+            .andThen(s->_Strings_CamelCase.camelCase(s, 
firstToken->firstToken));
+
+    public static final StringOperator asCamelCaseDecapitalized = operator()
+            .andThen(s->_Strings_CamelCase.camelCase(s, 
firstToken->_Strings.decapitalize(firstToken)));
+
+    public static final StringOperator asCamelCaseCapitalized = operator()
+            .andThen(s->_Strings_CamelCase.camelCase(s, 
firstToken->_Strings.capitalize(firstToken)));
+    public static final StringOperator asPascalCase = asCamelCaseCapitalized; 
// synonym
 
     public static final String asFileNameWithExtension(final @NonNull String 
fileName, final @NonNull String fileExtension) {
         return suffix(fileName, prefix(fileExtension, "."));
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
new file mode 100644
index 0000000000..46ccaf5e34
--- /dev/null
+++ 
b/commons/src/main/java/org/apache/causeway/commons/internal/base/_Strings_CamelCase.java
@@ -0,0 +1,60 @@
+/*
+ *  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.commons.internal.base;
+
+import java.util.StringTokenizer;
+import java.util.function.UnaryOperator;
+
+import org.springframework.lang.Nullable;
+
+import lombok.val;
+import lombok.experimental.UtilityClass;
+
+/**
+ * package private utility for {@link _Strings}
+ */
+@UtilityClass
+class _Strings_CamelCase {
+
+    @Nullable
+    String camelCase(final @Nullable String input, final UnaryOperator<String> 
firstTokenMapper) {
+
+        if(input==null) return null;
+        if(input.length()==0) return input;
+
+        val sb = new StringBuffer(input.length());
+        val tokenizer = new StringTokenizer(input);
+        int tokenCount = 0;
+
+        while (tokenizer.hasMoreTokens()) {
+            final String token = tokenizer.nextToken();
+            ++tokenCount;
+
+            if(tokenCount==1) {
+                // convert first token/word using firstTokenMapper
+                sb.append(firstTokenMapper.apply(token));
+            } else {
+                // convert token/word to capitalized
+                sb.append(token.substring(0, 1).toUpperCase());
+                sb.append(token.substring(1));
+            }
+        }
+        return sb.toString();
+    }
+}
diff --git 
a/commons/src/main/java/org/apache/causeway/commons/internal/base/_Strings_NaturalNames.java
 
b/commons/src/main/java/org/apache/causeway/commons/internal/base/_Strings_NaturalName.java
similarity index 99%
rename from 
commons/src/main/java/org/apache/causeway/commons/internal/base/_Strings_NaturalNames.java
rename to 
commons/src/main/java/org/apache/causeway/commons/internal/base/_Strings_NaturalName.java
index 86c1467449..513c6e7d1b 100644
--- 
a/commons/src/main/java/org/apache/causeway/commons/internal/base/_Strings_NaturalNames.java
+++ 
b/commons/src/main/java/org/apache/causeway/commons/internal/base/_Strings_NaturalName.java
@@ -26,7 +26,7 @@ import lombok.experimental.UtilityClass;
  * package private utility for {@link _Strings}
  */
 @UtilityClass
-class _Strings_NaturalNames {
+class _Strings_NaturalName {
 
     private static final char SPACE = ' ';
     /**
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 84777878fd..7763f30a97 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
@@ -309,14 +309,6 @@ class StringsTest {
 
     // -- SPECIAL COMPOSITES
 
-    @Test
-    void asLowerDashed() throws Exception {
-        assertThat(
-                _Strings.asLowerDashed
-                .apply(" 12    aBc"),
-                is("-12-abc"));
-    }
-
     @Test
     void asNormalized() throws Exception {
         assertThat(
@@ -333,4 +325,27 @@ class StringsTest {
                 is("Next Available Date"));
     }
 
+    @Test
+    void asCamelCaseDecapitalized() {
+        assertThat(asCamelCaseDecapitalized("An Upper Case"), 
is("anUpperCase"));
+        assertThat(asCamelCaseDecapitalized("a Lower Case"), is("aLowerCase"));
+        assertThat(asCamelCaseDecapitalized("AnUpperCase"), is("anUpperCase"));
+        assertThat(asCamelCaseDecapitalized("aLowerCase"), is("aLowerCase"));
+        assertThat(asCamelCaseDecapitalized("a  Lower  Case"), 
is("aLowerCase"));
+    }
+    private String asCamelCaseDecapitalized(final String string) {
+        return _Strings.asCamelCaseDecapitalized.apply(string);
+    }
+
+    @Test
+    void asLowerDashed() {
+        assertThat(asLowerDashed(" 12    aBc"), is("-12-abc"));
+        assertThat(asLowerDashed("An Upper Case"), is("an-upper-case"));
+        assertThat(asLowerDashed("An   Upper   Case"), is("an-upper-case"));
+        assertThat(asLowerDashed("An\nUpper\tCase"), is("an-upper-case"));
+    }
+    private String asLowerDashed(final String string) {
+        return _Strings.asLowerDashed.apply(string);
+    }
+
 }
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 5f9e9bc9d4..780bb8edab 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
@@ -21,7 +21,6 @@ package org.apache.causeway.core.metamodel.commons;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
-import java.util.StringTokenizer;
 
 import org.springframework.lang.Nullable;
 
@@ -35,48 +34,6 @@ import lombok.val;
 
 public final class StringExtensions {
 
-    private StringExtensions() {}
-
-    // ////////////////////////////////////////////////////////////
-    // naturalName, naturalize, simpleName, camel, memberIdFor
-    // ////////////////////////////////////////////////////////////
-
-    public static String asCamel(final String extendee) {
-        final StringBuffer b = new StringBuffer(extendee.length());
-        final StringTokenizer t = new StringTokenizer(extendee);
-        b.append(t.nextToken());
-        while (t.hasMoreTokens()) {
-            final String token = t.nextToken();
-            b.append(token.substring(0, 1).toUpperCase()); // replace spaces
-            // with
-            // camelCase
-            b.append(token.substring(1));
-        }
-        return b.toString();
-    }
-
-    // TODO: combine with camel
-    public static String asCamelLowerFirst(final String extendee) {
-        final StringBuffer b = new StringBuffer(extendee.length());
-        final StringTokenizer t = new StringTokenizer(extendee);
-        b.append(_Strings.decapitalize(t.nextToken()));
-        while (t.hasMoreTokens()) {
-            final String token = t.nextToken();
-            b.append(token.substring(0, 1).toUpperCase()); // replace spaces
-            // with camelCase
-            b.append(token.substring(1).toLowerCase());
-        }
-        return b.toString();
-    }
-
-    public static String asLowerDashed(final String extendee) {
-        return _Strings.asLowerDashed.apply(extendee);
-    }
-
-    public static String asPascal(final String extendee) {
-        return _Strings.capitalize(asCamel(extendee));
-    }
-
     // ////////////////////////////////////////////////////////////
     // in, combinePaths, splitOnCommas
     // ////////////////////////////////////////////////////////////
diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/FacetedMethod.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/FacetedMethod.java
index 353bcd39dc..680bc0b344 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/FacetedMethod.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/FacetedMethod.java
@@ -24,11 +24,11 @@ import java.util.List;
 import org.apache.causeway.applib.Identifier;
 import org.apache.causeway.applib.id.LogicalType;
 import org.apache.causeway.commons.collections.Can;
+import org.apache.causeway.commons.internal.base._Strings;
 import org.apache.causeway.commons.internal.collections._Lists;
 import org.apache.causeway.commons.internal.reflection._MethodFacades;
 import 
org.apache.causeway.commons.internal.reflection._MethodFacades.MethodFacade;
 import org.apache.causeway.core.config.progmodel.ProgrammingModelConstants;
-import org.apache.causeway.core.metamodel.commons.StringExtensions;
 import org.apache.causeway.core.metamodel.context.MetaModelContext;
 import org.apache.causeway.core.metamodel.facetapi.FacetUtil;
 import org.apache.causeway.core.metamodel.facetapi.FeatureType;
@@ -129,7 +129,7 @@ extends TypedHolderAbstract {
             final Class<?> declaringType,
             final String propertyName) {
         try {
-            final Method method = declaringType.getMethod("set" + 
StringExtensions.asPascal(propertyName), String.class);
+            final Method method = declaringType.getMethod("set" + 
_Strings.asPascalCase.apply(propertyName), String.class);
             return FacetedMethod.createForProperty(mmc, declaringType, method);
         } catch (final SecurityException | NoSuchMethodException e) {
             throw new RuntimeException(e);
@@ -141,7 +141,7 @@ extends TypedHolderAbstract {
             final Class<?> declaringType,
             final String propertyName) {
         try {
-            final Method method = declaringType.getMethod("get" + 
StringExtensions.asPascal(propertyName));
+            final Method method = declaringType.getMethod("get" + 
_Strings.asPascalCase.apply(propertyName));
             return FacetedMethod.createForProperty(mmc, declaringType, method);
         } catch (final SecurityException | NoSuchMethodException e) {
             throw new RuntimeException(e);
@@ -156,7 +156,7 @@ extends TypedHolderAbstract {
             final Class<?> declaringType,
             final String collectionName) {
         try {
-            final Method method = declaringType.getMethod("get" + 
StringExtensions.asPascal(collectionName));
+            final Method method = declaringType.getMethod("get" + 
_Strings.asPascalCase.apply(collectionName));
             return FacetedMethod.createForCollection(mmc, declaringType, 
method);
         } catch (final SecurityException | NoSuchMethodException e) {
             throw new RuntimeException(e);
diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/_MixedInMemberNamingStrategy.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/_MixedInMemberNamingStrategy.java
index 9016ce306b..74a8392a5e 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/_MixedInMemberNamingStrategy.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/_MixedInMemberNamingStrategy.java
@@ -21,7 +21,6 @@ package 
org.apache.causeway.core.metamodel.specloader.specimpl;
 import java.util.Objects;
 
 import org.apache.causeway.commons.internal.base._Strings;
-import org.apache.causeway.core.metamodel.commons.StringExtensions;
 
 import lombok.NonNull;
 import lombok.experimental.UtilityClass;
@@ -50,7 +49,7 @@ class _MixedInMemberNamingStrategy {
     }
 
     String mixinMemberId(final @NonNull String mixinClassSimpleName) {
-        return 
StringExtensions.asCamelLowerFirst(compress(suffix(mixinClassSimpleName)));
+        return 
_Strings.asCamelCaseDecapitalized.apply(compress(suffix(mixinClassSimpleName)));
     }
 
     // -- HELPER
diff --git 
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/commons/StringUtils_camelLowerFirst.java
 
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/commons/StringUtils_camelLowerFirst.java
deleted file mode 100644
index 6de575e221..0000000000
--- 
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/commons/StringUtils_camelLowerFirst.java
+++ /dev/null
@@ -1,37 +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 org.junit.jupiter.api.Test;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-class StringUtils_camelLowerFirst {
-
-    @Test
-    void camelLowerFirst() {
-        assertThat(StringExtensions.asCamelLowerFirst("An Upper Case"), 
is("anUpperCase"));
-        assertThat(StringExtensions.asCamelLowerFirst("a Lower Case"), 
is("aLowerCase"));
-        assertThat(StringExtensions.asCamelLowerFirst("AnUpperCase"), 
is("anUpperCase"));
-        assertThat(StringExtensions.asCamelLowerFirst("aLowerCase"), 
is("aLowerCase"));
-        assertThat(StringExtensions.asCamelLowerFirst("a  Lower  Case"), 
is("aLowerCase"));
-    }
-
-}
diff --git 
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/commons/StringUtils_toLowerDashed.java
 
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/commons/StringUtils_toLowerDashed.java
deleted file mode 100644
index 14ea0b64b2..0000000000
--- 
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/commons/StringUtils_toLowerDashed.java
+++ /dev/null
@@ -1,35 +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 org.junit.jupiter.api.Test;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-class StringUtils_toLowerDashed {
-
-    @Test
-    public void toLowerDashed() {
-        assertThat(StringExtensions.asLowerDashed("An Upper Case"), 
is("an-upper-case"));
-        assertThat(StringExtensions.asLowerDashed("An   Upper   Case"), 
is("an-upper-case"));
-        assertThat(StringExtensions.asLowerDashed("An\nUpper\tCase"), 
is("an-upper-case"));
-    }
-
-}
diff --git 
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/mementos/PageParameterNames.java
 
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/mementos/PageParameterNames.java
index 96eb053a8a..375316a981 100644
--- 
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/mementos/PageParameterNames.java
+++ 
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/mementos/PageParameterNames.java
@@ -24,8 +24,8 @@ import 
org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.util.string.StringValue;
 
 import org.apache.causeway.applib.services.bookmark.Bookmark;
+import org.apache.causeway.commons.internal.base._Strings;
 import org.apache.causeway.commons.internal.collections._Lists;
-import org.apache.causeway.core.metamodel.commons.StringExtensions;
 
 public enum PageParameterNames {
 
@@ -82,35 +82,33 @@ public enum PageParameterNames {
     ACTION_ARGS;
 
     /**
-     * Returns the {@link #name()} formatted as
-     * {@link StringExtensions#asCamel(String) camel case}.
-     *
+     * Returns the {@link #name()} formatted as <i>Camel Case</i>.
      * <p>
      * For example, <tt>ACTION_TYPE</tt> becomes <tt>actionType</tt>.
      */
     @Override
     public String toString() {
-        return StringExtensions.toCamelCase(name());
+        return _Strings.asCamelCase.apply(name());
     }
 
     public String getStringFrom(final PageParameters pageParameters) {
         return getStringFrom(pageParameters, null);
     }
 
-    public String getStringFrom(PageParameters pageParameters, String 
defaultValue) {
+    public String getStringFrom(final PageParameters pageParameters, final 
String defaultValue) {
         if(pageParameters == null) {
             return defaultValue;
         }
         return pageParameters.get(this.toString()).toString(defaultValue);
     }
 
-    public <T extends Enum<T>> T getEnumFrom(PageParameters pageParameters, 
Class<T> enumClass) {
+    public <T extends Enum<T>> T getEnumFrom(final PageParameters 
pageParameters, final Class<T> enumClass) {
         String value = getStringFrom(pageParameters);
         return value != null? Enum.valueOf(enumClass, value): null;
     }
 
-    public List<String> getListFrom(PageParameters pageParameters) {
-        return _Lists.map(pageParameters.getValues(this.toString()), 
(StringValue input)->input.toString());
+    public List<String> getListFrom(final PageParameters pageParameters) {
+        return _Lists.map(pageParameters.getValues(this.toString()), (final 
StringValue input)->input.toString());
     }
 
     public void addStringTo(final PageParameters pageParameters, final String 
value) {
@@ -124,7 +122,7 @@ public enum PageParameterNames {
     /**
      * @param pageParameters
      */
-    public void removeFrom(PageParameters pageParameters) {
+    public void removeFrom(final PageParameters pageParameters) {
         pageParameters.remove(this.toString());
     }
 
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/CollectionContentsAsFactory.java
 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/CollectionContentsAsFactory.java
index 07d5668df3..14b722cea3 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/CollectionContentsAsFactory.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/CollectionContentsAsFactory.java
@@ -20,7 +20,7 @@ package org.apache.causeway.viewer.wicket.ui;
 
 import org.apache.wicket.model.IModel;
 
-import org.apache.causeway.core.metamodel.commons.StringExtensions;
+import org.apache.causeway.commons.internal.base._Strings;
 
 /**
  * <p>
@@ -31,7 +31,7 @@ import 
org.apache.causeway.core.metamodel.commons.StringExtensions;
  * <p>
  * If the {@link org.apache.causeway.viewer.wicket.ui.ComponentFactory} 
doesn't implement this interface or the implementation
  * of any of its methods return {@code null} then {@link 
ComponentFactory#getName()} will be used as title and its
- * {@link StringExtensions#asLowerDashed(java.lang.String) dashed 
representation}
+ * {@link _Strings#asLowerDashed dashed representation}
  * as CSS class for the optional image.
  * </p>
  */
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/collection/selector/CollectionPresentationSelectorPanel.java
 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/collection/selector/CollectionPresentationSelectorPanel.java
index 457c0de0cd..8b1279054c 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/collection/selector/CollectionPresentationSelectorPanel.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/collection/selector/CollectionPresentationSelectorPanel.java
@@ -28,7 +28,7 @@ import org.apache.wicket.markup.html.link.DownloadLink;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 
-import org.apache.causeway.core.metamodel.commons.StringExtensions;
+import org.apache.causeway.commons.internal.base._Strings;
 import 
org.apache.causeway.core.metamodel.interactions.managed.nonscalar.DataTableModel;
 import org.apache.causeway.viewer.commons.model.components.UiComponentType;
 import org.apache.causeway.viewer.wicket.model.hints.CausewaySelectorEvent;
@@ -183,7 +183,7 @@ extends PanelAbstract<DataTableModel, 
EntityCollectionModel> {
         }
         if (cssClass == null) {
             String name = componentFactory.getName();
-            cssClass = Model.of(StringExtensions.asLowerDashed(name));
+            cssClass = Model.of(_Strings.asLowerDashed.apply(name));
             // Small hack: if there is no specific CSS class then we assume 
that background-image is used
             // the span.ViewItemLink should have some content to show it
             // FIX: find a way to do this with CSS (width and height don't 
seems to help)

Reply via email to