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 b589d44249 CAUSEWAY-3404: purge string utils for plural
b589d44249 is described below
commit b589d4424913f97c0c80f6355b3587c3a01eced9
Author: Andi Huber <[email protected]>
AuthorDate: Thu May 11 15:05:05 2023 +0200
CAUSEWAY-3404: purge string utils for plural
---
.../core/metamodel/commons/StringExtensions.java | 39 ++--------------------
.../specloader/specimpl/ObjectActionMixedIn.java | 4 +--
.../specimpl/OneToManyAssociationMixedIn.java | 4 +--
.../specimpl/OneToOneAssociationMixedIn.java | 4 +--
.../specimpl/_MixedInMemberNamingStrategy.java | 34 ++++++++++---------
.../core/metamodel/commons/NameUtilTest.java | 19 -----------
.../commons/StringUtils_camelLowerFirst.java | 2 +-
.../specimpl/MixedInMemberNamingStrategyTest.java | 19 +++++++----
8 files changed, 40 insertions(+), 85 deletions(-)
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 2100b24363..8f3b8af22e 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
@@ -112,7 +112,7 @@ public final class StringExtensions {
public static String asCamelLowerFirst(final String extendee) {
final StringBuffer b = new StringBuffer(extendee.length());
final StringTokenizer t = new StringTokenizer(extendee);
- b.append(asLowerFirst(t.nextToken()));
+ b.append(_Strings.decapitalize(t.nextToken()));
while (t.hasMoreTokens()) {
final String token = t.nextToken();
b.append(token.substring(0, 1).toUpperCase()); // replace spaces
@@ -127,28 +127,7 @@ public final class StringExtensions {
}
public static String asPascal(final String extendee) {
- return capitalize(asCamel(extendee));
- }
-
- // ////////////////////////////////////////////////////////////
- // capitalize, lowerFirst, firstWord
- // ////////////////////////////////////////////////////////////
-
- public static String capitalize(final String extendee) {
- return _Strings.capitalize(extendee);
- }
-
- /**
- * Simply forces first char to be lower case.
- */
- public static String asLowerFirst(final String extendee) {
- if (_Strings.isNullOrEmpty(extendee)) {
- return extendee;
- }
- if (extendee.length() == 1) {
- return extendee.toLowerCase();
- }
- return extendee.substring(0, 1).toLowerCase() + extendee.substring(1);
+ return _Strings.capitalize(asCamel(extendee));
}
// ////////////////////////////////////////////////////////////
@@ -281,8 +260,6 @@ public final class StringExtensions {
// copied in from Apache Commons
// //////////////////////////////////////
-
-
public static boolean startsWith(final String extendee, final String
prefix) {
final int length = prefix.length();
if (length >= extendee.length()) {
@@ -325,18 +302,6 @@ public final class StringExtensions {
return javaBaseName;
}
- public static String asPluralName(final String extendee) {
- String pluralName;
- if (extendee.endsWith("y")) {
- pluralName = extendee.substring(0, extendee.length() - 1) + "ies";
- } else if (extendee.endsWith("s") || extendee.endsWith("x")) {
- pluralName = extendee + "es";
- } else {
- pluralName = extendee + 's';
- }
- return pluralName;
- }
-
public static String toCamelCase(final String extendee) {
final String nameLower = extendee.toLowerCase();
final StringBuilder buf = new StringBuilder();
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/ObjectActionMixedIn.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/ObjectActionMixedIn.java
index 6a1e5236dd..bdc4dd1dce 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/ObjectActionMixedIn.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/ObjectActionMixedIn.java
@@ -94,7 +94,7 @@ implements MixedInMember {
LogicalType.eager(
mixeeSpec.getCorrespondingClass(),
mixeeSpec.getLogicalTypeName()),
- _MixedInMemberNamingStrategy.determineIdFrom(mixinAction),
+ _MixedInMemberNamingStrategy.mixinMemberId(mixinAction),
mixinAction.getFacetedMethod().getFeatureIdentifier().getMemberParameterClassNames()),
mixinAction.getFacetedMethod(), false, false);
@@ -111,7 +111,7 @@ implements MixedInMember {
.isPresent();
if(!isExplicitlyNamed) {
- val memberName =
_MixedInMemberNamingStrategy.determineNameFrom(mixinAction);
+ val memberName =
_MixedInMemberNamingStrategy.mixinFriendlyName(mixinAction);
this.addFacet(
new MemberNamedFacetForStaticMemberName(memberName,
facetHolder));
}
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java
index c0b520d3ee..8dc8d13a3b 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java
@@ -133,7 +133,7 @@ implements MixedInMember {
.isPresent();
if(!isExplicitlyNamed) {
- String memberName =
_MixedInMemberNamingStrategy.determineNameFrom(mixinAction);
+ String memberName =
_MixedInMemberNamingStrategy.mixinFriendlyName(mixinAction);
FacetUtil.addFacet(
new MemberNamedFacetForStaticMemberName(memberName,
facetHolder));
}
@@ -203,7 +203,7 @@ implements MixedInMember {
LogicalType.eager(
mixeeSpec.getCorrespondingClass(),
mixeeSpec.getLogicalTypeName()),
- _MixedInMemberNamingStrategy.determineIdFrom(mixinAction));
+ _MixedInMemberNamingStrategy.mixinMemberId(mixinAction));
}
}
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java
index 4dd814ad07..98b7cb7c5c 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java
@@ -113,7 +113,7 @@ implements MixedInMember {
.isPresent();
if(!isExplicitlyNamed) {
- String memberName =
_MixedInMemberNamingStrategy.determineNameFrom(mixinAction);
+ String memberName =
_MixedInMemberNamingStrategy.mixinFriendlyName(mixinAction);
FacetUtil.addFacet(
new MemberNamedFacetForStaticMemberName(memberName,
facetHolder));
}
@@ -186,7 +186,7 @@ implements MixedInMember {
LogicalType.eager(
mixeeSpec.getCorrespondingClass(),
mixeeSpec.getLogicalTypeName()),
- _MixedInMemberNamingStrategy.determineIdFrom(mixinAction));
+ _MixedInMemberNamingStrategy.mixinMemberId(mixinAction));
}
}
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 d8405f2a09..9016ce306b 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
@@ -23,6 +23,7 @@ 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;
@UtilityClass
@@ -32,16 +33,24 @@ class _MixedInMemberNamingStrategy {
* @param mixinActionAsRegular - first pass MM introspection produces
regular ObjectAction instances
* for mixin main methods
*/
- String determineNameFrom(final ObjectActionDefault mixinActionAsRegular) {
- return _Strings.capitalize(suffix(mixinActionAsRegular));
+ String mixinFriendlyName(final @NonNull ObjectActionDefault
mixinActionAsRegular) {
+ return
mixinFriendlyName(mixinActionAsRegular.getFeatureIdentifier().getClassNaturalName());
+ }
+
+ String mixinFriendlyName(final @NonNull String mixinClassSimpleName) {
+ return _Strings.capitalize(suffix(mixinClassSimpleName));
}
/**
* @param mixinActionAsRegular - first pass MM introspection produces
regular ObjectAction instances
* for mixin main methods
*/
- String determineIdFrom(final ObjectActionDefault mixinActionAsRegular) {
- return
StringExtensions.asCamelLowerFirst(compress(suffix(mixinActionAsRegular)));
+ String mixinMemberId(final @NonNull ObjectActionDefault
mixinActionAsRegular) {
+ return
mixinMemberId(mixinActionAsRegular.getFeatureIdentifier().getClassNaturalName());
+ }
+
+ String mixinMemberId(final @NonNull String mixinClassSimpleName) {
+ return
StringExtensions.asCamelLowerFirst(compress(suffix(mixinClassSimpleName)));
}
// -- HELPER
@@ -50,21 +59,16 @@ class _MixedInMemberNamingStrategy {
return suffix.replaceAll(" ", "");
}
- private static String suffix(final ObjectActionDefault
mixinActionAsRegular) {
- return
deriveMemberNameFrom(mixinActionAsRegular.getFeatureIdentifier().getClassNaturalName());
- }
-
- // subject of JUnit testing
- String deriveMemberNameFrom(final String mixinClassName) {
- final String deriveFromUnderscore = derive(mixinClassName, "_");
- if(!Objects.equals(mixinClassName, deriveFromUnderscore)) {
+ private static String suffix(final String mixinClassSimpleName) {
+ final String deriveFromUnderscore = derive(mixinClassSimpleName, "_");
+ if(!Objects.equals(mixinClassSimpleName, deriveFromUnderscore)) {
return deriveFromUnderscore;
}
- final String deriveFromDollar = derive(mixinClassName, "$");
- if(!Objects.equals(mixinClassName, deriveFromDollar)) {
+ final String deriveFromDollar = derive(mixinClassSimpleName, "$");
+ if(!Objects.equals(mixinClassSimpleName, deriveFromDollar)) {
return deriveFromDollar;
}
- return mixinClassName;
+ return mixinClassSimpleName;
}
private String derive(final String singularName, final String separator) {
diff --git
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/commons/NameUtilTest.java
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/commons/NameUtilTest.java
index 5bda39675e..f52afa396e 100644
---
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/commons/NameUtilTest.java
+++
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/commons/NameUtilTest.java
@@ -55,23 +55,4 @@ class NameUtilTest {
assertEquals("Almost Normal english sentence",
StringExtensions.asNaturalName2("Almost Normal english sentence"));
}
- @Test
- void pluralNameAdd_S() {
- assertEquals("Cans", StringExtensions.asPluralName("Can"));
- assertEquals("Spaces", StringExtensions.asPluralName("Space"));
- assertEquals("Noses", StringExtensions.asPluralName("Nose"));
- }
-
- @Test
- void pluralNameReplace_Y_With_IES() {
- assertEquals("Babies", StringExtensions.asPluralName("Baby"));
- assertEquals("Cities", StringExtensions.asPluralName("City"));
- }
-
- @Test
- void pluralNameReplaceAdd_ES() {
- assertEquals("Foxes", StringExtensions.asPluralName("Fox"));
- assertEquals("Bosses", StringExtensions.asPluralName("Boss"));
- }
-
}
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
index 05bbd3f4ab..6de575e221 100644
---
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
@@ -26,7 +26,7 @@ import static org.hamcrest.MatcherAssert.assertThat;
class StringUtils_camelLowerFirst {
@Test
- public void asLowerCase() {
+ void camelLowerFirst() {
assertThat(StringExtensions.asCamelLowerFirst("An Upper Case"),
is("anUpperCase"));
assertThat(StringExtensions.asCamelLowerFirst("a Lower Case"),
is("aLowerCase"));
assertThat(StringExtensions.asCamelLowerFirst("AnUpperCase"),
is("anUpperCase"));
diff --git
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/specloader/specimpl/MixedInMemberNamingStrategyTest.java
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/specloader/specimpl/MixedInMemberNamingStrategyTest.java
index 99d35d63cd..7bf7b74e97 100644
---
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/specloader/specimpl/MixedInMemberNamingStrategyTest.java
+++
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/specloader/specimpl/MixedInMemberNamingStrategyTest.java
@@ -30,21 +30,26 @@ class MixedInMemberNamingStrategyTest {
@RequiredArgsConstructor
enum Scenario {
- SINGLE_UNDERSCORE("Customer_placeOrder", "placeOrder"),
- SINGLE_DOLLAR("Customer$placeOrder", "placeOrder"),
- EXACTLY_UNDERSCORE("_", "_"),
- ENDS_WITH_UNDERSCORE("abc_", "abc_"),
- HAS_NO_UNDERSCORE("defghij", "defghij"),
- CONTAINS_MORE_THAN_ONE_UNDERSCORE("abc_def_ghi", "ghi")
+ SINGLE_UNDERSCORE("Customer_placeOrder", "placeOrder", "PlaceOrder"),
+ SINGLE_DOLLAR("Customer$placeOrder", "placeOrder", "PlaceOrder"),
+ EXACTLY_UNDERSCORE("_", "_", "_"),
+ ENDS_WITH_UNDERSCORE("abc_", "abc_", "Abc_"),
+ HAS_NO_UNDERSCORE("lock", "lock", "Lock"),
+ CONTAINS_MORE_THAN_ONE_UNDERSCORE("ApplicationUser_default_lock",
"lock", "Lock")
;
final String mixinClassSimpleName;
final String expectedMemberId;
+ final String expectedFriendlyName;
void verify() {
assertThat(
-
_MixedInMemberNamingStrategy.deriveMemberNameFrom(mixinClassSimpleName),
+
_MixedInMemberNamingStrategy.mixinMemberId(mixinClassSimpleName),
is(expectedMemberId));
+
+ assertThat(
+
_MixedInMemberNamingStrategy.mixinFriendlyName(mixinClassSimpleName),
+ is(expectedFriendlyName));
}
@Override