You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2021/06/23 03:49:20 UTC

[isis] branch master updated: ISIS-1720: NounForm(s): housekeeping and some java-doc

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/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new 52ddf8f  ISIS-1720: NounForm(s): housekeeping and some java-doc
52ddf8f is described below

commit 52ddf8f9c5b246bd16dfb9c86f219573bca3c317
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Jun 23 05:49:04 2021 +0200

    ISIS-1720: NounForm(s): housekeeping and some java-doc
---
 .../isis/commons/collections/ImmutableEnumSet.java | 24 ++++++++-------
 .../NamedFacetForActionLayoutAnnotation.java       |  2 +-
 .../actions/layout/NamedFacetForActionXml.java     |  2 +-
 .../all/describedas/DescribedAsFacetAbstract.java  |  5 +---
 .../metamodel/facets/all/i8n/I8nFacetAbstract.java | 34 ++++++++++------------
 .../core/metamodel/facets/all/i8n/NounForm.java    | 23 +++++++++++++++
 .../core/metamodel/facets/all/i8n/NounForms.java   | 27 ++++++++++++-----
 .../named/NamedFacetFromMemberNameAbstract.java    |  8 ++---
 .../NamedFacetForCollectionLayoutAnnotation.java   |  2 +-
 .../layout/NamedFacetForCollectionXml.java         |  2 +-
 .../metamodel/facets/fallback/NamedFacetNone.java  |  5 +---
 ...NamedFacetForDomainServiceLayoutAnnotation.java |  3 +-
 .../NamedFacetForParameterLayoutAnnotation.java    |  2 +-
 .../NamedFacetForParameterUsingReflection.java     |  2 +-
 .../NamedFacetForPropertyLayoutAnnotation.java     |  2 +-
 .../propertylayout/NamedFacetForPropertyXml.java   |  3 +-
 .../objects/ObjectActionLayoutXmlDefaultTest.java  |  3 +-
 17 files changed, 87 insertions(+), 62 deletions(-)

diff --git a/commons/src/main/java/org/apache/isis/commons/collections/ImmutableEnumSet.java b/commons/src/main/java/org/apache/isis/commons/collections/ImmutableEnumSet.java
index 12378e6..745c8e3 100644
--- a/commons/src/main/java/org/apache/isis/commons/collections/ImmutableEnumSet.java
+++ b/commons/src/main/java/org/apache/isis/commons/collections/ImmutableEnumSet.java
@@ -34,43 +34,43 @@ implements Iterable<E>, java.io.Serializable {
 
     private final EnumSet<E> delegate;
 
-    private ImmutableEnumSet(EnumSet<E> delegate) {
+    private ImmutableEnumSet(final EnumSet<E> delegate) {
         this.delegate = delegate;
     }
 
-    public static <E extends Enum<E>> ImmutableEnumSet<E> from(EnumSet<E> delegate) {
+    public static <E extends Enum<E>> ImmutableEnumSet<E> from(final EnumSet<E> delegate) {
         return new ImmutableEnumSet<>(delegate);
     }
 
-    public static <E extends Enum<E>> ImmutableEnumSet<E> noneOf(Class<E> enumType) {
+    public static <E extends Enum<E>> ImmutableEnumSet<E> noneOf(final Class<E> enumType) {
         return from(EnumSet.noneOf(enumType));
     }
 
-    public static <E extends Enum<E>> ImmutableEnumSet<E> of(E e1) {
+    public static <E extends Enum<E>> ImmutableEnumSet<E> of(final E e1) {
         return from(EnumSet.of(e1));
     }
 
-    public static <E extends Enum<E>> ImmutableEnumSet<E> of(E e1, E e2) {
+    public static <E extends Enum<E>> ImmutableEnumSet<E> of(final E e1, final E e2) {
         return from(EnumSet.of(e1, e2));
     }
 
-    public static <E extends Enum<E>> ImmutableEnumSet<E> of(E e1, E e2, E e3) {
+    public static <E extends Enum<E>> ImmutableEnumSet<E> of(final E e1, final E e2, final E e3) {
         return from(EnumSet.of(e1, e2, e3));
     }
 
-    public static <E extends Enum<E>> ImmutableEnumSet<E> of(E e1, E e2, E e3, E e4) {
+    public static <E extends Enum<E>> ImmutableEnumSet<E> of(final E e1, final E e2, final E e3, final E e4) {
         return from(EnumSet.of(e1, e2, e3, e4));
     }
 
-    public static <E extends Enum<E>> ImmutableEnumSet<E> complementOf(ImmutableEnumSet<E> other) {
+    public static <E extends Enum<E>> ImmutableEnumSet<E> complementOf(final ImmutableEnumSet<E> other) {
         return from(EnumSet.complementOf(other.delegate));
     }
 
-    public static <E extends Enum<E>> ImmutableEnumSet<E> allOf(Class<E> enumType) {
+    public static <E extends Enum<E>> ImmutableEnumSet<E> allOf(final Class<E> enumType) {
         return from(EnumSet.allOf(enumType));
     }
 
-    public boolean contains(E element) {
+    public boolean contains(final E element) {
         return delegate.contains(element);
     }
 
@@ -87,4 +87,8 @@ implements Iterable<E>, java.io.Serializable {
         return delegate.stream();
     }
 
+    public boolean isEmpty() {
+        return delegate.isEmpty();
+    }
+
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/NamedFacetForActionLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/NamedFacetForActionLayoutAnnotation.java
index 4e9d61c..84ecafa 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/NamedFacetForActionLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/NamedFacetForActionLayoutAnnotation.java
@@ -41,7 +41,7 @@ public class NamedFacetForActionLayoutAnnotation extends NamedFacetAbstract {
 
     private NamedFacetForActionLayoutAnnotation(final String singularName, final FacetHolder holder) {
 
-        super(NounForms.preferredSingular().singular(singularName).build(), /*escaped*/ true, holder);
+        super(NounForms.preferredSingular(singularName).build(), /*escaped*/ true, holder);
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/NamedFacetForActionXml.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/NamedFacetForActionXml.java
index ab947f2..ed8480a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/NamedFacetForActionXml.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/NamedFacetForActionXml.java
@@ -46,7 +46,7 @@ extends NamedFacetAbstract {
 
     private NamedFacetForActionXml(final String singularName, final boolean escaped, final FacetHolder holder) {
 
-        super(NounForms.preferredSingular().singular(singularName).build(), escaped, holder);
+        super(NounForms.preferredSingular(singularName).build(), escaped, holder);
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/describedas/DescribedAsFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/describedas/DescribedAsFacetAbstract.java
index 5de53d3..41d95e5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/describedas/DescribedAsFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/describedas/DescribedAsFacetAbstract.java
@@ -22,7 +22,6 @@ package org.apache.isis.core.metamodel.facets.all.describedas;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.all.i8n.I8nFacetAbstract;
-import org.apache.isis.core.metamodel.facets.all.i8n.NounForm;
 import org.apache.isis.core.metamodel.facets.all.i8n.NounForms;
 
 public abstract class DescribedAsFacetAbstract
@@ -45,9 +44,7 @@ implements DescribedAsFacet {
             final Facet.Precedence precedence) {
         super(type(),
                 NounForms
-                    .builder()
-                    .indifferent(originalText)
-                    .preferredNounForm(NounForm.INDIFFERENT)
+                    .preferredIndifferent(originalText)
                     .build(),
                 holder,
                 precedence);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/i8n/I8nFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/i8n/I8nFacetAbstract.java
index 02791f3..46166f2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/i8n/I8nFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/i8n/I8nFacetAbstract.java
@@ -2,6 +2,7 @@ package org.apache.isis.core.metamodel.facets.all.i8n;
 
 import java.util.Objects;
 import java.util.function.BiConsumer;
+import java.util.stream.Collectors;
 
 import org.apache.isis.applib.services.i18n.TranslationContext;
 import org.apache.isis.commons.collections.ImmutableEnumSet;
@@ -10,7 +11,6 @@ import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 
-import lombok.Getter;
 import lombok.NonNull;
 import lombok.val;
 
@@ -19,7 +19,6 @@ extends FacetAbstract
 implements HasTranslation {
 
     protected final TranslationContext translationContext;
-    @Getter(onMethod_ = {@Override}) private final ImmutableEnumSet<NounForm> supportedNounForms;
 
     private final @NonNull NounForms nounForms;
     private final @NonNull _Lazy<NounForms> translatedNounForms;
@@ -38,7 +37,6 @@ implements HasTranslation {
             final Precedence precedence) {
         super(facetType, holder, precedence);
         this.nounForms = nounForms;
-        this.supportedNounForms = ImmutableEnumSet.from(nounForms.getSupportedNounForms());
         this.translationContext = TranslationContext
                 .forTranslationContextHolder(holder.getFeatureIdentifier());
         this.translatedNounForms = _Lazy.threadSafe(()->
@@ -65,13 +63,23 @@ implements HasTranslation {
         return translatedNounForms.get().get(nounForm);
     }
 
+    @Override
+    public ImmutableEnumSet<NounForm> getSupportedNounForms() {
+        return nounForms.getSupportedNounForms();
+    }
 
     @Override
     public void visitAttributes(final BiConsumer<String, Object> visitor) {
         super.visitAttributes(visitor);
         visitor.accept("context", translationContext);
-        visitor.accept("supportedNounForms", supportedNounForms);
-        supportedNounForms.forEach(nounForm->{
+        visitor.accept("nounForms",
+                getSupportedNounForms()
+                .stream()
+                .map(NounForm::name)
+                .collect(Collectors.joining(", ")));
+
+        getSupportedNounForms()
+        .forEach(nounForm->{
             visitor.accept("originalText." + nounForm, text(nounForm));
             visitor.accept("translated." + nounForm, translated(nounForm)); // memoizes as a side-effect
         });
@@ -80,7 +88,7 @@ implements HasTranslation {
     @Override
     public boolean semanticEquals(final @NonNull Facet other) {
 
-        // equality by facet-type, text and context
+        // equality by facet-type, (original) text and translation-context
 
         if(!this.facetType().equals(other.facetType())) {
             return false;
@@ -88,18 +96,8 @@ implements HasTranslation {
 
         val otherFacet =  (I8nFacetAbstract)other;
 
-        if(!Objects.equals(this.supportedNounForms, otherFacet.supportedNounForms)
-                || !Objects.equals(this.translationContext, otherFacet.translationContext)) {
-            return false;
-        }
-
-        for(val nounForm : supportedNounForms) {
-            if(!Objects.equals(this.text(nounForm), otherFacet.text(nounForm))){
-                return false;
-            }
-        }
-
-        return true;
+        return Objects.equals(this.nounForms, otherFacet.nounForms)
+                && Objects.equals(this.translationContext, otherFacet.translationContext);
 
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/i8n/NounForm.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/i8n/NounForm.java
index cdee2e5..7d124ab 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/i8n/NounForm.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/i8n/NounForm.java
@@ -18,11 +18,34 @@
  */
 package org.apache.isis.core.metamodel.facets.all.i8n;
 
+import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet;
+
+/**
+ * Represents various linguistic forms, based on <i>cardinality</i>.
+ * @since 2.0
+ */
 public enum NounForm {
 
+    /**
+     * Use, if there is no semantic difference between EMPTY, SINGULAR or PLURAL.
+     * eg. {@link DescribedAsFacet}
+     */
     INDIFFERENT,
+
+    /**
+     * Represents the absence of a scalar or non-scalar object.
+     * @apiNote for future use (not yet implemented)
+     */
     EMPTY,
+
+    /**
+     * Represents the singular linguistic form.
+     */
     SINGULAR,
+
+    /**
+     * Represents the plural linguistic form.
+     */
     PLURAL
     ;
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/i8n/NounForms.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/i8n/NounForms.java
index e137cc2..458582c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/i8n/NounForms.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/i8n/NounForms.java
@@ -24,6 +24,7 @@ import javax.annotation.Nullable;
 
 import org.apache.isis.applib.services.i18n.TranslationContext;
 import org.apache.isis.applib.services.i18n.TranslationService;
+import org.apache.isis.commons.collections.ImmutableEnumSet;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
 
 import lombok.Builder;
@@ -32,17 +33,29 @@ import lombok.NonNull;
 import lombok.Value;
 import lombok.val;
 
+/**
+ * Immutable value object that holds literals for its various supported {@link NounForm}(s).
+ * @since 2.0
+ */
 @Value @Builder
 public class NounForms {
 
-    public static NounFormsBuilder preferredSingular() {
+    public static NounFormsBuilder preferredIndifferent(@Nullable final String indifferent) {
+        return NounForms.builder()
+                .preferredNounForm(NounForm.INDIFFERENT)
+                .indifferent(indifferent);
+    }
+
+    public static NounFormsBuilder preferredSingular(@Nullable final String singular) {
         return NounForms.builder()
-                .preferredNounForm(NounForm.SINGULAR);
+                .preferredNounForm(NounForm.SINGULAR)
+                .singular(singular);
     }
 
-    public static NounFormsBuilder preferredPlural() {
+    public static NounFormsBuilder preferredPlural(@Nullable final String plural) {
         return NounForms.builder()
-                .preferredNounForm(NounForm.PLURAL);
+                .preferredNounForm(NounForm.PLURAL)
+                .plural(plural);
     }
 
     private final @Nullable String indifferent;
@@ -53,9 +66,9 @@ public class NounForms {
     private final @NonNull NounForm preferredNounForm;
 
     @Getter(lazy = true)
-    final EnumSet<NounForm> supportedNounForms = supportedNounForms();
+    final ImmutableEnumSet<NounForm> supportedNounForms = supportedNounForms();
 
-    private EnumSet<NounForm> supportedNounForms() {
+    private ImmutableEnumSet<NounForm> supportedNounForms() {
 
         val supportedNounForms = EnumSet.noneOf(NounForm.class);
 
@@ -75,7 +88,7 @@ public class NounForms {
             supportedNounForms.add(NounForm.PLURAL);
         }
 
-        return supportedNounForms;
+        return ImmutableEnumSet.from(supportedNounForms);
     }
 
     public String get(final @NonNull NounForm nounForm) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/named/NamedFacetFromMemberNameAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/named/NamedFacetFromMemberNameAbstract.java
index 9b896db..3d060be 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/named/NamedFacetFromMemberNameAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/named/NamedFacetFromMemberNameAbstract.java
@@ -39,14 +39,10 @@ extends NamedFacetAbstract {
         super(
                 preferredNounForm.isSingular()
                 ? NounForms
-                        .builder()
-                        .preferredNounForm(preferredNounForm)
-                        .singular(memberName)
+                        .preferredSingular(memberName)
                         .build()
                 : NounForms
-                        .builder()
-                        .preferredNounForm(preferredNounForm)
-                        .plural(memberName)
+                        .preferredPlural(memberName)
                         .build()
                 ,
                 ESCAPED,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/NamedFacetForCollectionLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/NamedFacetForCollectionLayoutAnnotation.java
index 8adca66..5def9c9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/NamedFacetForCollectionLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/NamedFacetForCollectionLayoutAnnotation.java
@@ -45,7 +45,7 @@ public class NamedFacetForCollectionLayoutAnnotation extends NamedFacetAbstract
             final boolean escaped,
             final FacetHolder holder) {
 
-        super(NounForms.preferredPlural().plural(pluralName).build(), escaped, holder);
+        super(NounForms.preferredPlural(pluralName).build(), escaped, holder);
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/NamedFacetForCollectionXml.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/NamedFacetForCollectionXml.java
index 82ae51f..00d80b8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/NamedFacetForCollectionXml.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/NamedFacetForCollectionXml.java
@@ -49,7 +49,7 @@ extends NamedFacetAbstract {
             final boolean escaped,
             final FacetHolder holder) {
 
-        super(NounForms.preferredPlural().plural(pluralName).build(), escaped, holder);
+        super(NounForms.preferredPlural(pluralName).build(), escaped, holder);
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/fallback/NamedFacetNone.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/fallback/NamedFacetNone.java
index 945bca8..c108119 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/fallback/NamedFacetNone.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/fallback/NamedFacetNone.java
@@ -25,9 +25,6 @@ import org.apache.isis.core.metamodel.facets.all.named.NamedFacetAbstract;
 
 /**
  * Has a name of <tt>null</tt>.
- *
- * <p>
- * TODO: should this instead be the empty string?
  */
 public class NamedFacetNone
 extends NamedFacetAbstract {
@@ -35,7 +32,7 @@ extends NamedFacetAbstract {
     public static final boolean ESCAPED = true;
 
     public NamedFacetNone(final FacetHolder holder) {
-        super(NounForms.preferredSingular().build(), ESCAPED, holder, Precedence.FALLBACK);
+        super(NounForms.preferredSingular(null).build(), ESCAPED, holder, Precedence.FALLBACK);
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservicelayout/NamedFacetForDomainServiceLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservicelayout/NamedFacetForDomainServiceLayoutAnnotation.java
index 6785e0a..02d7e65 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservicelayout/NamedFacetForDomainServiceLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservicelayout/NamedFacetForDomainServiceLayoutAnnotation.java
@@ -48,8 +48,7 @@ extends NamedFacetAbstract {
         }
 
         val nounForms = NounForms
-                .preferredSingular()
-                .singular(serviceNamed)
+                .preferredSingular(serviceNamed)
                 .build();
 
         return Optional.of(
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/layout/NamedFacetForParameterLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/layout/NamedFacetForParameterLayoutAnnotation.java
index 055b33d..73ea23a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/layout/NamedFacetForParameterLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/layout/NamedFacetForParameterLayoutAnnotation.java
@@ -49,7 +49,7 @@ extends NamedFacetAbstract {
             final boolean escaped,
             final FacetHolder holder) {
 
-        super(NounForms.preferredSingular().singular(singularName).build(), escaped, holder);
+        super(NounForms.preferredSingular(singularName).build(), escaped, holder);
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/name/NamedFacetForParameterUsingReflection.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/name/NamedFacetForParameterUsingReflection.java
index 622769e..8d2f479 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/name/NamedFacetForParameterUsingReflection.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/name/NamedFacetForParameterUsingReflection.java
@@ -30,7 +30,7 @@ public class NamedFacetForParameterUsingReflection
 extends NamedFacetAbstract {
 
     public NamedFacetForParameterUsingReflection(final String singularName, final FacetHolder holder) {
-        super(NounForms.preferredSingular().singular(singularName).build(), false, holder);
+        super(NounForms.preferredSingular(singularName).build(), false, holder);
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/NamedFacetForPropertyLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/NamedFacetForPropertyLayoutAnnotation.java
index fb3d42d..ddd3e38 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/NamedFacetForPropertyLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/NamedFacetForPropertyLayoutAnnotation.java
@@ -48,7 +48,7 @@ extends NamedFacetAbstract {
             final boolean escaped,
             final FacetHolder holder) {
 
-        super(NounForms.preferredSingular().singular(singularName).build(), escaped, holder);
+        super(NounForms.preferredSingular(singularName).build(), escaped, holder);
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/NamedFacetForPropertyXml.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/NamedFacetForPropertyXml.java
index ef5df97..f4e84d8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/NamedFacetForPropertyXml.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/NamedFacetForPropertyXml.java
@@ -42,8 +42,7 @@ extends NamedFacetAbstract {
         }
 
         val nounForms = NounForms
-                .preferredSingular()
-                .singular(_Strings.emptyToNull(propertyLayout.getNamed()))
+                .preferredSingular(_Strings.emptyToNull(propertyLayout.getNamed()))
                 .build();
 
         if(nounForms.getSupportedNounForms().isEmpty()) {
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/objects/ObjectActionLayoutXmlDefaultTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/objects/ObjectActionLayoutXmlDefaultTest.java
index 380d5ba..66a07bd 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/objects/ObjectActionLayoutXmlDefaultTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/objects/ObjectActionLayoutXmlDefaultTest.java
@@ -85,8 +85,7 @@ public class ObjectActionLayoutXmlDefaultTest {
     public void testNameDefaultsToActionsMethodName() {
         final String name = "Reduceheadcount";
 
-        val nounForms = NounForms.preferredSingular()
-        .singular(name)
+        val nounForms = NounForms.preferredSingular(name)
         .build();
 
         final NamedFacet facet =