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 c442132dd7 CAUSEWAY-3321: remove plural NounForm
c442132dd7 is described below
commit c442132dd714f977fca2a74f460112bc73cbe900
Author: Andi Huber <[email protected]>
AuthorDate: Tue Feb 7 08:26:16 2023 +0100
CAUSEWAY-3321: remove plural NounForm
---
.../applib/annotation/DomainObjectLayout.java | 1 -
.../metamodel/facets/all/i8n/noun/HasNoun.java | 14 ----
.../metamodel/facets/all/i8n/noun/NounForm.java | 9 +--
.../metamodel/facets/all/i8n/noun/NounForms.java | 16 ----
.../all/named/ObjectNamedFacetSynthesized.java | 2 +-
...tNamedFacetForDomainObjectLayoutAnnotation.java | 2 -
.../ObjectNamedFacetForDomainObjectLayoutXml.java | 2 -
.../core/metamodel/layout/LayoutFacetUtil.java | 12 ---
.../core/metamodel/object/MmTitleUtil.java | 14 ++++
.../core/metamodel/object/_InternalTitleUtil.java | 42 +++--------
.../i18n/SynthesizeObjectNamingPostProcessor.java | 14 ----
.../core/metamodel/spec/ObjectSpecification.java | 9 ---
.../specimpl/ObjectSpecificationAbstract.java | 11 ---
.../core/metamodel/util/snapshot/XmlSchema.java | 4 +-
.../core/metamodel/util/snapshot/XmlSnapshot.java | 2 +-
.../DomainObjectLayoutFactoryTest.java | 48 +-----------
.../plural/DomainObjectLayoutPluralVm.java | 3 +-
.../MetaModelRegressionTest.verify.approved.xml | 88 ++++++----------------
.../domaintypes/DomainTypeReprRenderer.java | 3 -
...entNegotiationServiceForRestfulObjectsV1_0.java | 17 +----
20 files changed, 58 insertions(+), 255 deletions(-)
diff --git
a/api/applib/src/main/java/org/apache/causeway/applib/annotation/DomainObjectLayout.java
b/api/applib/src/main/java/org/apache/causeway/applib/annotation/DomainObjectLayout.java
index e6a39deafd..42fc022ca5 100644
---
a/api/applib/src/main/java/org/apache/causeway/applib/annotation/DomainObjectLayout.java
+++
b/api/applib/src/main/java/org/apache/causeway/applib/annotation/DomainObjectLayout.java
@@ -110,7 +110,6 @@ public @interface DomainObjectLayout {
* @see PropertyLayout#named()
* @see CollectionLayout#named()
* @see DomainServiceLayout#named()
- * @see DomainObjectLayout#plural()
*/
String named()
default "";
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/all/i8n/noun/HasNoun.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/all/i8n/noun/HasNoun.java
index c375a1cf37..8d376e4857 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/all/i8n/noun/HasNoun.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/all/i8n/noun/HasNoun.java
@@ -65,19 +65,5 @@ extends HasMemoizableTranslation {
return translated(NounForm.SINGULAR).orElse(null);
}
- /**
- * Originating text of plural noun-form to be translated before use in the
UI.
- */
- default @Nullable String plural() {
- return text(NounForm.PLURAL).orElse(null);
- }
-
- /**
- * Translated text of plural noun-form to be used in the UI.
- */
- default @Nullable String pluralTranslated() {
- return translated(NounForm.PLURAL).orElse(null);
- }
-
}
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/all/i8n/noun/NounForm.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/all/i8n/noun/NounForm.java
index 0d4e444d14..d9c87ca9ad 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/all/i8n/noun/NounForm.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/all/i8n/noun/NounForm.java
@@ -22,6 +22,7 @@ package
org.apache.causeway.core.metamodel.facets.all.i8n.noun;
* Represents various linguistic forms, based on <i>cardinality</i>.
* @since 2.0
*/
+@Deprecated
public enum NounForm {
/**
@@ -29,18 +30,10 @@ public enum NounForm {
*/
SINGULAR,
- /**
- * Represents the plural linguistic form.
- */
- PLURAL
;
public boolean isSingular() {
return this == SINGULAR;
}
- public boolean isPlural() {
- return this == PLURAL;
- }
-
}
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/all/i8n/noun/NounForms.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/all/i8n/noun/NounForms.java
index 2016e85077..c116cb3b8d 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/all/i8n/noun/NounForms.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/all/i8n/noun/NounForms.java
@@ -46,13 +46,7 @@ public class NounForms {
.singular(singular);
}
- public static NounFormsBuilder builderPlural(final @Nullable String
plural) {
- return NounForms.builder()
- .plural(plural);
- }
-
private final @Nullable String singular;
- private final @Nullable String plural;
@Getter(lazy = true)
final ImmutableEnumSet<NounForm> supportedNounForms = supportedNounForms();
@@ -65,10 +59,6 @@ public class NounForms {
supportedNounForms.add(NounForm.SINGULAR);
}
- if(plural!=null) {
- supportedNounForms.add(NounForm.PLURAL);
- }
-
return ImmutableEnumSet.from(supportedNounForms);
}
@@ -80,9 +70,6 @@ public class NounForms {
case SINGULAR:
// non-null, as nulls are guarded by getSupportedNounForms()
return Optional.of(getSingular());
- case PLURAL:
- // non-null, as nulls are guarded by getSupportedNounForms()
- return Optional.of(getPlural());
default:
break;
}
@@ -103,9 +90,6 @@ public class NounForms {
case SINGULAR:
builder.singular(translationService.translate(context,
singular));
break;
- case PLURAL:
- builder.plural(translationService.translate(context, plural));
- break;
default:
throw _Exceptions.unmatchedCase(nounForm);
}
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/all/named/ObjectNamedFacetSynthesized.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/all/named/ObjectNamedFacetSynthesized.java
index 96fcd7ab06..2fe8816d0a 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/all/named/ObjectNamedFacetSynthesized.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/all/named/ObjectNamedFacetSynthesized.java
@@ -36,7 +36,7 @@ extends ObjectNamedFacetAbstract {
final FacetHolder holder) {
super(nounForms, holder, Precedence.SYNTHESIZED);
// assert that both noun-forms are populated
- _Assert.assertTrue(nounForms.getSupportedNounForms().stream().count()
== 2L);
+ _Assert.assertTrue(nounForms.getSupportedNounForms().stream().count()
== 1L);
}
}
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/ObjectNamedFacetForDomainObjectLayoutAnnotation.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/ObjectNamedFacetForDomainObjectLayoutAnnotation.java
index b538533ebd..1cfe9ecdbb 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/ObjectNamedFacetForDomainObjectLayoutAnnotation.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/ObjectNamedFacetForDomainObjectLayoutAnnotation.java
@@ -43,12 +43,10 @@ extends ObjectNamedFacetAbstract {
val domainObjectLayout = domainObjectLayoutIfAny.get();
val singular = _Strings.emptyToNull(domainObjectLayout.named());
- val plural = _Strings.emptyToNull(domainObjectLayout.plural());
val nounForms = NounForms
.builder()
.singular(singular)
- .plural(plural)
.build();
if(nounForms.getSupportedNounForms().isEmpty()) {
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/ObjectNamedFacetForDomainObjectLayoutXml.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/ObjectNamedFacetForDomainObjectLayoutXml.java
index 20858843a3..1b8003ffa2 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/ObjectNamedFacetForDomainObjectLayoutXml.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/ObjectNamedFacetForDomainObjectLayoutXml.java
@@ -43,12 +43,10 @@ extends ObjectNamedFacetAbstract {
}
val singular = _Strings.emptyToNull(domainObjectLayout.getNamed());
- val plural = _Strings.emptyToNull(domainObjectLayout.getPlural());
val nounForms = NounForms
.builder()
.singular(singular)
- .plural(plural)
.build();
if(nounForms.getSupportedNounForms().isEmpty()) {
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/layout/LayoutFacetUtil.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/layout/LayoutFacetUtil.java
index 92a5756797..feb1fd1880 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/layout/LayoutFacetUtil.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/layout/LayoutFacetUtil.java
@@ -242,17 +242,6 @@ public class LayoutFacetUtil {
}
}
- public void setPluralIfAny(
- final DomainObjectLayoutData domainObjectLayoutData,
- final FacetHolder facetHolder) {
-
- facetHolder
- .lookupNonFallbackFacet(ObjectNamedFacet.class)
-
.filter(namedFacet->namedFacet.getSupportedNounForms().contains(NounForm.PLURAL))
- .map(ObjectNamedFacet::pluralTranslated)
- .ifPresent(domainObjectLayoutData::setPlural);
- }
-
public void setActionPositionIfAny(
final ActionLayoutData actionLayoutData,
final FacetHolder facetHolder) {
@@ -395,7 +384,6 @@ public class LayoutFacetUtil {
setCssClassFaIfAny(domainObjectLayoutData, objectSpec);
setObjectDescribedIfAny(domainObjectLayoutData, objectSpec);
setObjectNamedIfAny(domainObjectLayoutData, objectSpec);
- setPluralIfAny(domainObjectLayoutData, objectSpec);
}
}
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/MmTitleUtil.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/MmTitleUtil.java
index 43d7457c71..8995f626fa 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/MmTitleUtil.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/MmTitleUtil.java
@@ -51,4 +51,18 @@ public class MmTitleUtil {
: "(no object)";
}
+ public static String formatAnyCardinalityAsTitle(
+ int cardinality, // number of items
+ String singularName) {
+ switch (cardinality) {
+ case 0:
+ return "No " + singularName;
+ case 1:
+ return "1 " + singularName;
+ default:
+ return "" + cardinality + " entries of " + singularName;
+ }
+ }
+
+
}
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/_InternalTitleUtil.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/_InternalTitleUtil.java
index 4589ad8e34..b5b776338e 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/_InternalTitleUtil.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/_InternalTitleUtil.java
@@ -20,8 +20,11 @@ package org.apache.causeway.core.metamodel.object;
import java.util.Optional;
+import org.springframework.lang.Nullable;
+
import org.apache.causeway.core.metamodel.facets.collections.CollectionFacet;
import
org.apache.causeway.core.metamodel.facets.object.title.TitleRenderRequest;
+import org.apache.causeway.core.metamodel.spec.ObjectSpecification;
import lombok.NonNull;
import lombok.val;
@@ -43,9 +46,9 @@ final class _InternalTitleUtil {
return managedObject.getSpecification().isSingular()
? objectTitleString(titleRenderRequest)
.trim()
- : collectionTitleString(
- managedObject,
-
managedObject.getSpecification().getFacet(CollectionFacet.class));
+ : formatAnyCardinalityAsTitle(
+
managedObject.getSpecification().getFacet(CollectionFacet.class).size(managedObject),
+ managedObject.getElementSpecification().orElse(null));
}
// -- HELPER
@@ -68,33 +71,12 @@ final class _InternalTitleUtil {
.orElseGet(()->getDefaultTitle(managedObject));
}
- private String collectionTitleString(final ManagedObject managedObject,
final CollectionFacet facet) {
- final int size = facet.size(managedObject);
- val elementSpec = managedObject.getElementSpecification().orElse(null);
- if (elementSpec == null
- ||
elementSpec.getFullIdentifier().equals(Object.class.getName())) {
- switch (size) {
- case -1:
- return "Objects";
- case 0:
- return "No objects";
- case 1:
- return "1 object";
- default:
- return size + " objects";
- }
- } else {
- switch (size) {
- case -1:
- return elementSpec.getPluralName();
- case 0:
- return "No " + elementSpec.getPluralName();
- case 1:
- return "1 " + elementSpec.getSingularName();
- default:
- return size + " " + elementSpec.getPluralName();
- }
- }
+ private String formatAnyCardinalityAsTitle(final int size, final @Nullable
ObjectSpecification elementSpec) {
+ final String noun = (elementSpec == null
+ ||
elementSpec.getFullIdentifier().equals(Object.class.getName()))
+ ? "object"
+ : elementSpec.getSingularName();
+ return MmTitleUtil.formatAnyCardinalityAsTitle(size, noun);
}
private String getDefaultTitle(final ManagedObject managedObject) {
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/all/i18n/SynthesizeObjectNamingPostProcessor.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/all/i18n/SynthesizeObjectNamingPostProcessor.java
index 7fdd61291c..e1e562ce58 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/all/i18n/SynthesizeObjectNamingPostProcessor.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/all/i18n/SynthesizeObjectNamingPostProcessor.java
@@ -22,7 +22,6 @@ import javax.inject.Inject;
import org.apache.causeway.commons.collections.Can;
import org.apache.causeway.commons.internal.base._Strings;
-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.facets.all.i8n.noun.NounForm;
@@ -65,19 +64,10 @@ extends ObjectSpecificationPostProcessorAbstract {
.filter(_Strings::isNotEmpty)
.orElseGet(()->getSingularFallbackNoun(objectSpecification));
- val plural = topRank
- .stream()
-
.filter(objectNamedFacet->objectNamedFacet.getSupportedNounForms().contains(NounForm.PLURAL))
- .findFirst()
- .map(ObjectNamedFacet::plural)
- .filter(_Strings::isNotEmpty)
- .orElseGet(()->getPluralFallbackNoun(singular));
-
FacetUtil.addFacet(
new ObjectNamedFacetSynthesized(
NounForms.builder()
.singular(singular)
- .plural(plural)
.build(),
objectSpecification)
);
@@ -90,8 +80,4 @@ extends ObjectSpecificationPostProcessorAbstract {
return spec.getFeatureIdentifier().getClassNaturalName();
}
- private String getPluralFallbackNoun(final String singular) {
- return StringExtensions.asPluralName(singular);
- }
-
}
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/spec/ObjectSpecification.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/spec/ObjectSpecification.java
index 112499eaea..70365ac7a2 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/spec/ObjectSpecification.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/spec/ObjectSpecification.java
@@ -207,15 +207,6 @@ extends
*/
String getSingularName();
- /**
- * Returns the plural name for objects of this specification.
- * Corresponds to the {@link HasNoun#translated(NounForm)}
- * with {@link NounForm#PLURAL}
- * of {@link ObjectNamedFacet}; is
- * not necessarily immutable.
- */
- String getPluralName();
-
/**
* Returns the description, if any, of the specification.
*
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
index 101c6cc213..6a1a580f11 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
@@ -512,17 +512,6 @@ implements ObjectSpecification {
getFullIdentifier()));
}
- @Override
- public String getPluralName() {
- return lookupFacet(ObjectNamedFacet.class)
- .flatMap(textFacet->textFacet.translated(NounForm.PLURAL))
- // unexpected code reach, however keep for JUnit testing
- .orElseGet(()->String.format(
- "(%s has neither title- nor object-named-facet)",
- getFullIdentifier()));
-
- }
-
/**
* The translated description according to any available {@link
ObjectDescribedFacet},
* else empty string (<tt>""</tt>).
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/util/snapshot/XmlSchema.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/util/snapshot/XmlSchema.java
index 50ae80e758..6b9c565f2a 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/util/snapshot/XmlSchema.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/util/snapshot/XmlSchema.java
@@ -148,11 +148,11 @@ public final class XmlSchema {
* doc used to create the element. The element is not parented but to avoid
* an error can only be added as a child of another element in the same
doc.
*/
- Element createElement(final Document doc, final String localName, final
String fullyQualifiedClassName, final String singularName, final String
pluralName) {
+ Element createElement(final Document doc, final String localName, final
String fullyQualifiedClassName, final String singularName) {
final Element element = doc.createElementNS(getUri(), getPrefix() +
":" + localName);
element.setAttributeNS(CausewaySchema.NS_URI, CausewaySchema.NS_PREFIX
+ ":fqn", fullyQualifiedClassName);
element.setAttributeNS(CausewaySchema.NS_URI, CausewaySchema.NS_PREFIX
+ ":singular", singularName);
- element.setAttributeNS(CausewaySchema.NS_URI, CausewaySchema.NS_PREFIX
+ ":plural", pluralName);
+ element.setAttributeNS(CausewaySchema.NS_URI, CausewaySchema.NS_PREFIX
+ ":plural", "");
causewayMeta.addNamespace(element); // good a place as any
addNamespace(element, getPrefix(), getUri());
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/util/snapshot/XmlSnapshot.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/util/snapshot/XmlSnapshot.java
index 59dee4c6ed..3ff64e6741 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/util/snapshot/XmlSnapshot.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/util/snapshot/XmlSnapshot.java
@@ -634,7 +634,7 @@ public class XmlSnapshot implements Snapshot {
log.debug("objectToElement(NO): create element and
causeway:title");
}
final Element element = schema.createElement(getXmlDocument(),
spec.getShortIdentifier(),
- spec.getFullIdentifier(), spec.getSingularName(),
spec.getPluralName());
+ spec.getFullIdentifier(), spec.getSingularName());
causewayMetaModel.appendCausewayTitle(element, adapter.getTitle());
if (log.isDebugEnabled()) {
diff --git
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/DomainObjectLayoutFactoryTest.java
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/DomainObjectLayoutFactoryTest.java
index ecd9508260..6196e983d3 100644
---
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/DomainObjectLayoutFactoryTest.java
+++
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/object/domainobjectlayout/DomainObjectLayoutFactoryTest.java
@@ -78,8 +78,7 @@ extends AbstractFacetFactoryJupiterTestCase {
cssClassFaPosition = CssClassFaPosition.RIGHT,
describedAs = "This is a description",
named = "Name override",
- paged = 20,
- plural = "Customers Plural Form"
+ paged = 20
)
class Customer { }
@@ -367,49 +366,4 @@ extends AbstractFacetFactoryJupiterTestCase {
}
- public static class Plural extends DomainObjectLayoutFactoryTest {
-
- @Mock ManagedObject mockAdapter;
-
- public static class ForDomainObjectLayout extends Plural {
-
- @BeforeEach
- public void setUp2() throws Exception {
- }
-
- @Test
- public void whenSpecified() {
-
- final Class<?> cls =
DomainObjectLayoutFactoryTest.Customer.class;
-
- facetFactory.process(ProcessClassContext
- .forTesting(cls, mockMethodRemover, facetHolder));
-
- val namedFacet = facetHolder.getFacet(ObjectNamedFacet.class);
- assertNotNull(namedFacet);
-
- assertEquals("Customers Plural Form",
namedFacet.pluralTranslated());
-
- expectNoMethodsRemoved();
- }
-
- @Test
- public void whenDefaults() {
-
- final Class<?> cls = CustomerWithDefaults.class;
-
- facetFactory.process(ProcessClassContext
- .forTesting(cls, mockMethodRemover, facetHolder));
-
- val namedFacet = facetHolder.getFacet(ObjectNamedFacet.class);
- assertNull(namedFacet);
-
- //assertEquals("", namedFacet.translated(NounForm.PLURAL));
-
- expectNoMethodsRemoved();
- }
- }
-
- }
-
}
diff --git
a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObjectLayout/plural/DomainObjectLayoutPluralVm.java
b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObjectLayout/plural/DomainObjectLayoutPluralVm.java
index 8a0709b9eb..75e364946f 100644
---
a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObjectLayout/plural/DomainObjectLayoutPluralVm.java
+++
b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObjectLayout/plural/DomainObjectLayoutPluralVm.java
@@ -48,7 +48,8 @@ import lombok.Setter;
@DomainObject(
nature=Nature.VIEW_MODEL)
@DomainObjectLayout(
- plural="Example Plural Name")
+ // plural="Example Plural Name" TODO: DEPRECATED
+ )
public class DomainObjectLayoutPluralVm implements HasAsciiDocDescription {
@ObjectSupport public String title() {
diff --git
a/regressiontests/stable-domainmodel/src/test/java/org/apache/causeway/testdomain/domainmodel/MetaModelRegressionTest.verify.approved.xml
b/regressiontests/stable-domainmodel/src/test/java/org/apache/causeway/testdomain/domainmodel/MetaModelRegressionTest.verify.approved.xml
index bc9ae2e9f5..644241e42b 100644
---
a/regressiontests/stable-domainmodel/src/test/java/org/apache/causeway/testdomain/domainmodel/MetaModelRegressionTest.verify.approved.xml
+++
b/regressiontests/stable-domainmodel/src/test/java/org/apache/causeway/testdomain/domainmodel/MetaModelRegressionTest.verify.approved.xml
@@ -815,11 +815,9 @@
<mml:facet
id="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacet"
fqcn="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacetSynthesized">
<mml:attr name="context"
value="TranslationContext(name=org.apache.causeway.testdomain.model.good.ProperActionWithNameStartingWithSetOrGet#)"/>
<mml:attr name="facet" value="ObjectNamedFacetSynthesized"/>
- <mml:attr name="nounForms" value="SINGULAR, PLURAL"/>
- <mml:attr name="originalText.PLURAL" value="Optional[Proper
Action With Name Starting With Set Or Gets]"/>
+ <mml:attr name="nounForms" value="SINGULAR"/>
<mml:attr name="originalText.SINGULAR" value="Optional[Proper
Action With Name Starting With Set Or Get]"/>
<mml:attr name="precedence" value="SYNTHESIZED"/>
- <mml:attr name="translated.PLURAL" value="Optional[Proper
Action With Name Starting With Set Or Gets]"/>
<mml:attr name="translated.SINGULAR" value="Optional[Proper
Action With Name Starting With Set Or Get]"/>
</mml:facet>
<mml:facet
id="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet"
fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacetForDomainObjectAnnotation">
@@ -1746,11 +1744,9 @@
<mml:facet
id="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacet"
fqcn="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacetSynthesized">
<mml:attr name="context"
value="TranslationContext(name=org.apache.causeway.testdomain.model.good.ProperChoicesWhenActionHasParamSupportingMethodTypeOfReference#)"/>
<mml:attr name="facet" value="ObjectNamedFacetSynthesized"/>
- <mml:attr name="nounForms" value="SINGULAR, PLURAL"/>
- <mml:attr name="originalText.PLURAL" value="Optional[Proper
Choices When Action Has Param Supporting Method Type Of References]"/>
+ <mml:attr name="nounForms" value="SINGULAR"/>
<mml:attr name="originalText.SINGULAR" value="Optional[Proper
Choices When Action Has Param Supporting Method Type Of Reference]"/>
<mml:attr name="precedence" value="SYNTHESIZED"/>
- <mml:attr name="translated.PLURAL" value="Optional[Proper
Choices When Action Has Param Supporting Method Type Of References]"/>
<mml:attr name="translated.SINGULAR" value="Optional[Proper
Choices When Action Has Param Supporting Method Type Of Reference]"/>
</mml:facet>
<mml:facet
id="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet"
fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacetForDomainObjectAnnotation">
@@ -2820,11 +2816,9 @@
<mml:facet
id="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacet"
fqcn="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacetSynthesized">
<mml:attr name="context"
value="TranslationContext(name=org.apache.causeway.testdomain.model.good.ProperChoicesWhenActionHasParamSupportingMethodTypeOfString#)"/>
<mml:attr name="facet" value="ObjectNamedFacetSynthesized"/>
- <mml:attr name="nounForms" value="SINGULAR, PLURAL"/>
- <mml:attr name="originalText.PLURAL" value="Optional[Proper
Choices When Action Has Param Supporting Method Type Of Strings]"/>
+ <mml:attr name="nounForms" value="SINGULAR"/>
<mml:attr name="originalText.SINGULAR" value="Optional[Proper
Choices When Action Has Param Supporting Method Type Of String]"/>
<mml:attr name="precedence" value="SYNTHESIZED"/>
- <mml:attr name="translated.PLURAL" value="Optional[Proper
Choices When Action Has Param Supporting Method Type Of Strings]"/>
<mml:attr name="translated.SINGULAR" value="Optional[Proper
Choices When Action Has Param Supporting Method Type Of String]"/>
</mml:facet>
<mml:facet
id="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet"
fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacetForDomainObjectAnnotation">
@@ -3906,11 +3900,9 @@
<mml:facet
id="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacet"
fqcn="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacetSynthesized">
<mml:attr name="context"
value="TranslationContext(name=org.apache.causeway.testdomain.model.good.ProperChoicesWhenChoicesFrom#)"/>
<mml:attr name="facet" value="ObjectNamedFacetSynthesized"/>
- <mml:attr name="nounForms" value="SINGULAR, PLURAL"/>
- <mml:attr name="originalText.PLURAL" value="Optional[Proper
Choices When Choices Froms]"/>
+ <mml:attr name="nounForms" value="SINGULAR"/>
<mml:attr name="originalText.SINGULAR" value="Optional[Proper
Choices When Choices From]"/>
<mml:attr name="precedence" value="SYNTHESIZED"/>
- <mml:attr name="translated.PLURAL" value="Optional[Proper
Choices When Choices Froms]"/>
<mml:attr name="translated.SINGULAR" value="Optional[Proper
Choices When Choices From]"/>
</mml:facet>
<mml:facet
id="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet"
fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacetForDomainObjectAnnotation">
@@ -4796,11 +4788,9 @@
<mml:facet
id="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacet"
fqcn="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacetSynthesized">
<mml:attr name="context"
value="TranslationContext(name=org.apache.causeway.testdomain.model.good.ProperElementTypeVm#)"/>
<mml:attr name="facet" value="ObjectNamedFacetSynthesized"/>
- <mml:attr name="nounForms" value="SINGULAR, PLURAL"/>
- <mml:attr name="originalText.PLURAL" value="Optional[Proper
Element Type Vms]"/>
+ <mml:attr name="nounForms" value="SINGULAR"/>
<mml:attr name="originalText.SINGULAR" value="Optional[Proper
Element Type Vm]"/>
<mml:attr name="precedence" value="SYNTHESIZED"/>
- <mml:attr name="translated.PLURAL" value="Optional[Proper
Element Type Vms]"/>
<mml:attr name="translated.SINGULAR" value="Optional[Proper
Element Type Vm]"/>
</mml:facet>
<mml:facet
id="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet"
fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacetForDomainObjectAnnotation">
@@ -6117,11 +6107,9 @@
<mml:facet
id="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacet"
fqcn="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacetSynthesized">
<mml:attr name="context"
value="TranslationContext(name=org.apache.causeway.testdomain.model.good.ProperFullyImpl#)"/>
<mml:attr name="facet" value="ObjectNamedFacetSynthesized"/>
- <mml:attr name="nounForms" value="SINGULAR, PLURAL"/>
- <mml:attr name="originalText.PLURAL" value="Optional[Proper
Fully Impls]"/>
+ <mml:attr name="nounForms" value="SINGULAR"/>
<mml:attr name="originalText.SINGULAR" value="Optional[Proper
Fully Impl]"/>
<mml:attr name="precedence" value="SYNTHESIZED"/>
- <mml:attr name="translated.PLURAL" value="Optional[Proper
Fully Impls]"/>
<mml:attr name="translated.SINGULAR" value="Optional[Proper
Fully Impl]"/>
</mml:facet>
<mml:facet
id="org.apache.causeway.core.metamodel.facets.members.cssclass.CssClassFacet"
fqcn="org.apache.causeway.core.metamodel.facets.object.cssclass.method.CssClassFacetViaCssClassMethod">
@@ -7100,11 +7088,9 @@
<mml:facet
id="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacet"
fqcn="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacetSynthesized">
<mml:attr name="context"
value="TranslationContext(name=org.apache.causeway.testdomain.model.good.ProperGenericImpl#)"/>
<mml:attr name="facet" value="ObjectNamedFacetSynthesized"/>
- <mml:attr name="nounForms" value="SINGULAR, PLURAL"/>
- <mml:attr name="originalText.PLURAL" value="Optional[Proper
Generic Impls]"/>
+ <mml:attr name="nounForms" value="SINGULAR"/>
<mml:attr name="originalText.SINGULAR" value="Optional[Proper
Generic Impl]"/>
<mml:attr name="precedence" value="SYNTHESIZED"/>
- <mml:attr name="translated.PLURAL" value="Optional[Proper
Generic Impls]"/>
<mml:attr name="translated.SINGULAR" value="Optional[Proper
Generic Impl]"/>
</mml:facet>
<mml:facet
id="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet"
fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacetForDomainObjectAnnotation">
@@ -7888,11 +7874,9 @@
<mml:facet
id="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacet"
fqcn="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacetSynthesized">
<mml:attr name="context"
value="TranslationContext(name=org.apache.causeway.testdomain.model.good.ProperLayoutOnPropertyWithLombok#)"/>
<mml:attr name="facet" value="ObjectNamedFacetSynthesized"/>
- <mml:attr name="nounForms" value="SINGULAR, PLURAL"/>
- <mml:attr name="originalText.PLURAL" value="Optional[Proper
Layout On Property With Lomboks]"/>
+ <mml:attr name="nounForms" value="SINGULAR"/>
<mml:attr name="originalText.SINGULAR" value="Optional[Proper
Layout On Property With Lombok]"/>
<mml:attr name="precedence" value="SYNTHESIZED"/>
- <mml:attr name="translated.PLURAL" value="Optional[Proper
Layout On Property With Lomboks]"/>
<mml:attr name="translated.SINGULAR" value="Optional[Proper
Layout On Property With Lombok]"/>
</mml:facet>
<mml:facet
id="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet"
fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacetForDomainObjectAnnotation">
@@ -8700,11 +8684,9 @@
<mml:facet
id="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacet"
fqcn="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacetSynthesized">
<mml:attr name="context"
value="TranslationContext(name=org.apache.causeway.testdomain.model.good.ProperMemberInheritance_usingAbstract#)"/>
<mml:attr name="facet" value="ObjectNamedFacetSynthesized"/>
- <mml:attr name="nounForms" value="SINGULAR, PLURAL"/>
- <mml:attr name="originalText.PLURAL" value="Optional[Proper
Member Inheritance_using Abstracts]"/>
+ <mml:attr name="nounForms" value="SINGULAR"/>
<mml:attr name="originalText.SINGULAR" value="Optional[Proper
Member Inheritance_using Abstract]"/>
<mml:attr name="precedence" value="SYNTHESIZED"/>
- <mml:attr name="translated.PLURAL" value="Optional[Proper
Member Inheritance_using Abstracts]"/>
<mml:attr name="translated.SINGULAR" value="Optional[Proper
Member Inheritance_using Abstract]"/>
</mml:facet>
<mml:facet
id="org.apache.causeway.core.metamodel.facets.members.cssclass.CssClassFacet"
fqcn="org.apache.causeway.core.metamodel.facets.object.cssclass.method.CssClassFacetViaCssClassMethod">
@@ -9855,11 +9837,9 @@
<mml:facet
id="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacet"
fqcn="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacetSynthesized">
<mml:attr name="context"
value="TranslationContext(name=org.apache.causeway.testdomain.model.good.ProperMemberInheritance_usingInterface#)"/>
<mml:attr name="facet" value="ObjectNamedFacetSynthesized"/>
- <mml:attr name="nounForms" value="SINGULAR, PLURAL"/>
- <mml:attr name="originalText.PLURAL" value="Optional[Proper
Member Inheritance_using Interfaces]"/>
+ <mml:attr name="nounForms" value="SINGULAR"/>
<mml:attr name="originalText.SINGULAR" value="Optional[Proper
Member Inheritance_using Interface]"/>
<mml:attr name="precedence" value="SYNTHESIZED"/>
- <mml:attr name="translated.PLURAL" value="Optional[Proper
Member Inheritance_using Interfaces]"/>
<mml:attr name="translated.SINGULAR" value="Optional[Proper
Member Inheritance_using Interface]"/>
</mml:facet>
<mml:facet
id="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet"
fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacetForDomainObjectAnnotation">
@@ -11103,11 +11083,9 @@
<mml:facet
id="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacet"
fqcn="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacetSynthesized">
<mml:attr name="context"
value="TranslationContext(name=org.apache.causeway.testdomain.model.good.ProperMemberOverloadingWhenInherited.WhenAnnotationOptional#)"/>
<mml:attr name="facet" value="ObjectNamedFacetSynthesized"/>
- <mml:attr name="nounForms" value="SINGULAR, PLURAL"/>
- <mml:attr name="originalText.PLURAL" value="Optional[When
Annotation Optionals]"/>
+ <mml:attr name="nounForms" value="SINGULAR"/>
<mml:attr name="originalText.SINGULAR" value="Optional[When
Annotation Optional]"/>
<mml:attr name="precedence" value="SYNTHESIZED"/>
- <mml:attr name="translated.PLURAL" value="Optional[When
Annotation Optionals]"/>
<mml:attr name="translated.SINGULAR" value="Optional[When
Annotation Optional]"/>
</mml:facet>
<mml:facet
id="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet"
fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacetForDomainObjectAnnotation">
@@ -11887,11 +11865,9 @@
<mml:facet
id="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacet"
fqcn="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacetSynthesized">
<mml:attr name="context"
value="TranslationContext(name=org.apache.causeway.testdomain.model.good.ProperMemberOverloadingWhenInherited.WhenAnnotationRequired#)"/>
<mml:attr name="facet" value="ObjectNamedFacetSynthesized"/>
- <mml:attr name="nounForms" value="SINGULAR, PLURAL"/>
- <mml:attr name="originalText.PLURAL" value="Optional[When
Annotation Requireds]"/>
+ <mml:attr name="nounForms" value="SINGULAR"/>
<mml:attr name="originalText.SINGULAR" value="Optional[When
Annotation Required]"/>
<mml:attr name="precedence" value="SYNTHESIZED"/>
- <mml:attr name="translated.PLURAL" value="Optional[When
Annotation Requireds]"/>
<mml:attr name="translated.SINGULAR" value="Optional[When
Annotation Required]"/>
</mml:facet>
<mml:facet
id="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet"
fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacetForDomainObjectAnnotation">
@@ -12675,11 +12651,9 @@
<mml:facet
id="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacet"
fqcn="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacetSynthesized">
<mml:attr name="context"
value="TranslationContext(name=org.apache.causeway.testdomain.model.good.ProperMemberOverloadingWhenInherited.WhenEncapsulationEnabled#)"/>
<mml:attr name="facet" value="ObjectNamedFacetSynthesized"/>
- <mml:attr name="nounForms" value="SINGULAR, PLURAL"/>
- <mml:attr name="originalText.PLURAL" value="Optional[When
Encapsulation Enableds]"/>
+ <mml:attr name="nounForms" value="SINGULAR"/>
<mml:attr name="originalText.SINGULAR" value="Optional[When
Encapsulation Enabled]"/>
<mml:attr name="precedence" value="SYNTHESIZED"/>
- <mml:attr name="translated.PLURAL" value="Optional[When
Encapsulation Enableds]"/>
<mml:attr name="translated.SINGULAR" value="Optional[When
Encapsulation Enabled]"/>
</mml:facet>
<mml:facet
id="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet"
fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacetForDomainObjectAnnotation">
@@ -13463,11 +13437,9 @@
<mml:facet
id="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacet"
fqcn="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacetSynthesized">
<mml:attr name="context"
value="TranslationContext(name=org.apache.causeway.testdomain.model.good.ProperMemberSupport#)"/>
<mml:attr name="facet" value="ObjectNamedFacetSynthesized"/>
- <mml:attr name="nounForms" value="SINGULAR, PLURAL"/>
- <mml:attr name="originalText.PLURAL" value="Optional[Proper
Member Supports]"/>
+ <mml:attr name="nounForms" value="SINGULAR"/>
<mml:attr name="originalText.SINGULAR" value="Optional[Proper
Member Support]"/>
<mml:attr name="precedence" value="SYNTHESIZED"/>
- <mml:attr name="translated.PLURAL" value="Optional[Proper
Member Supports]"/>
<mml:attr name="translated.SINGULAR" value="Optional[Proper
Member Support]"/>
</mml:facet>
<mml:facet
id="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet"
fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacetForDomainObjectAnnotation">
@@ -16665,11 +16637,9 @@
<mml:facet
id="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacet"
fqcn="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacetSynthesized">
<mml:attr name="context"
value="TranslationContext(name=org.apache.causeway.testdomain.model.good.ProperMemberSupportDiscovery.WhenAnnotationOptional#)"/>
<mml:attr name="facet" value="ObjectNamedFacetSynthesized"/>
- <mml:attr name="nounForms" value="SINGULAR, PLURAL"/>
- <mml:attr name="originalText.PLURAL" value="Optional[When
Annotation Optionals]"/>
+ <mml:attr name="nounForms" value="SINGULAR"/>
<mml:attr name="originalText.SINGULAR" value="Optional[When
Annotation Optional]"/>
<mml:attr name="precedence" value="SYNTHESIZED"/>
- <mml:attr name="translated.PLURAL" value="Optional[When
Annotation Optionals]"/>
<mml:attr name="translated.SINGULAR" value="Optional[When
Annotation Optional]"/>
</mml:facet>
<mml:facet
id="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet"
fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacetForDomainObjectAnnotation">
@@ -17803,11 +17773,9 @@
<mml:facet
id="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacet"
fqcn="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacetSynthesized">
<mml:attr name="context"
value="TranslationContext(name=org.apache.causeway.testdomain.model.good.ProperMemberSupportDiscovery.WhenAnnotationRequired#)"/>
<mml:attr name="facet" value="ObjectNamedFacetSynthesized"/>
- <mml:attr name="nounForms" value="SINGULAR, PLURAL"/>
- <mml:attr name="originalText.PLURAL" value="Optional[When
Annotation Requireds]"/>
+ <mml:attr name="nounForms" value="SINGULAR"/>
<mml:attr name="originalText.SINGULAR" value="Optional[When
Annotation Required]"/>
<mml:attr name="precedence" value="SYNTHESIZED"/>
- <mml:attr name="translated.PLURAL" value="Optional[When
Annotation Requireds]"/>
<mml:attr name="translated.SINGULAR" value="Optional[When
Annotation Required]"/>
</mml:facet>
<mml:facet
id="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet"
fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacetForDomainObjectAnnotation">
@@ -18945,11 +18913,9 @@
<mml:facet
id="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacet"
fqcn="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacetSynthesized">
<mml:attr name="context"
value="TranslationContext(name=org.apache.causeway.testdomain.model.good.ProperMemberSupportDiscovery.WhenEncapsulationEnabled#)"/>
<mml:attr name="facet" value="ObjectNamedFacetSynthesized"/>
- <mml:attr name="nounForms" value="SINGULAR, PLURAL"/>
- <mml:attr name="originalText.PLURAL" value="Optional[When
Encapsulation Enableds]"/>
+ <mml:attr name="nounForms" value="SINGULAR"/>
<mml:attr name="originalText.SINGULAR" value="Optional[When
Encapsulation Enabled]"/>
<mml:attr name="precedence" value="SYNTHESIZED"/>
- <mml:attr name="translated.PLURAL" value="Optional[When
Encapsulation Enableds]"/>
<mml:attr name="translated.SINGULAR" value="Optional[When
Encapsulation Enabled]"/>
</mml:facet>
<mml:facet
id="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet"
fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacetForDomainObjectAnnotation">
@@ -23062,11 +23028,9 @@
<mml:facet
id="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacet"
fqcn="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacetSynthesized">
<mml:attr name="context"
value="TranslationContext(name=org.apache.causeway.testdomain.model.good.ProperParameterSupport#)"/>
<mml:attr name="facet" value="ObjectNamedFacetSynthesized"/>
- <mml:attr name="nounForms" value="SINGULAR, PLURAL"/>
- <mml:attr name="originalText.PLURAL" value="Optional[Proper
Parameter Supports]"/>
+ <mml:attr name="nounForms" value="SINGULAR"/>
<mml:attr name="originalText.SINGULAR" value="Optional[Proper
Parameter Support]"/>
<mml:attr name="precedence" value="SYNTHESIZED"/>
- <mml:attr name="translated.PLURAL" value="Optional[Proper
Parameter Supports]"/>
<mml:attr name="translated.SINGULAR" value="Optional[Proper
Parameter Support]"/>
</mml:facet>
<mml:facet
id="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet"
fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacetForDomainObjectAnnotation">
@@ -24047,11 +24011,9 @@
<mml:facet
id="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacet"
fqcn="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacetSynthesized">
<mml:attr name="context"
value="TranslationContext(name=org.apache.causeway.testdomain.model.good.ProperPrefixedAction#)"/>
<mml:attr name="facet" value="ObjectNamedFacetSynthesized"/>
- <mml:attr name="nounForms" value="SINGULAR, PLURAL"/>
- <mml:attr name="originalText.PLURAL" value="Optional[Proper
Prefixed Actions]"/>
+ <mml:attr name="nounForms" value="SINGULAR"/>
<mml:attr name="originalText.SINGULAR" value="Optional[Proper
Prefixed Action]"/>
<mml:attr name="precedence" value="SYNTHESIZED"/>
- <mml:attr name="translated.PLURAL" value="Optional[Proper
Prefixed Actions]"/>
<mml:attr name="translated.SINGULAR" value="Optional[Proper
Prefixed Action]"/>
</mml:facet>
<mml:facet
id="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet"
fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacetForDomainObjectAnnotation">
@@ -24830,11 +24792,9 @@
<mml:facet
id="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacet"
fqcn="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacetSynthesized">
<mml:attr name="context"
value="TranslationContext(name=org.apache.causeway.testdomain.model.good.ProperPrefixedMember#)"/>
<mml:attr name="facet" value="ObjectNamedFacetSynthesized"/>
- <mml:attr name="nounForms" value="SINGULAR, PLURAL"/>
- <mml:attr name="originalText.PLURAL" value="Optional[Proper
Prefixed Members]"/>
+ <mml:attr name="nounForms" value="SINGULAR"/>
<mml:attr name="originalText.SINGULAR" value="Optional[Proper
Prefixed Member]"/>
<mml:attr name="precedence" value="SYNTHESIZED"/>
- <mml:attr name="translated.PLURAL" value="Optional[Proper
Prefixed Members]"/>
<mml:attr name="translated.SINGULAR" value="Optional[Proper
Prefixed Member]"/>
</mml:facet>
<mml:facet
id="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet"
fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacetForDomainObjectAnnotation">
@@ -25859,11 +25819,9 @@
<mml:facet
id="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacet"
fqcn="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacetSynthesized">
<mml:attr name="context"
value="TranslationContext(name=org.apache.causeway.testdomain.model.good.ViewModelWithAnnotationOptionalUsingPrivateSupport#)"/>
<mml:attr name="facet" value="ObjectNamedFacetSynthesized"/>
- <mml:attr name="nounForms" value="SINGULAR, PLURAL"/>
- <mml:attr name="originalText.PLURAL" value="Optional[View
Model With Annotation Optional Using Private Supports]"/>
+ <mml:attr name="nounForms" value="SINGULAR"/>
<mml:attr name="originalText.SINGULAR" value="Optional[View
Model With Annotation Optional Using Private Support]"/>
<mml:attr name="precedence" value="SYNTHESIZED"/>
- <mml:attr name="translated.PLURAL" value="Optional[View Model
With Annotation Optional Using Private Supports]"/>
<mml:attr name="translated.SINGULAR" value="Optional[View
Model With Annotation Optional Using Private Support]"/>
</mml:facet>
<mml:facet
id="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet"
fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacetForDomainObjectAnnotation">
@@ -26851,11 +26809,9 @@
<mml:facet
id="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacet"
fqcn="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacetSynthesized">
<mml:attr name="context"
value="TranslationContext(name=org.apache.causeway.testdomain.model.good.ViewModelWithEncapsulatedMembers#)"/>
<mml:attr name="facet" value="ObjectNamedFacetSynthesized"/>
- <mml:attr name="nounForms" value="SINGULAR, PLURAL"/>
- <mml:attr name="originalText.PLURAL" value="Optional[View
Model With Encapsulated Memberses]"/>
+ <mml:attr name="nounForms" value="SINGULAR"/>
<mml:attr name="originalText.SINGULAR" value="Optional[View
Model With Encapsulated Members]"/>
<mml:attr name="precedence" value="SYNTHESIZED"/>
- <mml:attr name="translated.PLURAL" value="Optional[View Model
With Encapsulated Memberses]"/>
<mml:attr name="translated.SINGULAR" value="Optional[View
Model With Encapsulated Members]"/>
</mml:facet>
<mml:facet
id="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet"
fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacetForDomainObjectAnnotation">
diff --git
a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/domaintypes/DomainTypeReprRenderer.java
b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/domaintypes/DomainTypeReprRenderer.java
index dc8fb0e895..4eb951c9e8 100644
---
a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/domaintypes/DomainTypeReprRenderer.java
+++
b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/domaintypes/DomainTypeReprRenderer.java
@@ -176,9 +176,6 @@ extends ReprRendererAbstract<ObjectSpecification> {
protected void putExtensionsNames() {
final String singularName = objectSpecification.getSingularName();
getExtensions().mapPutString("friendlyName", singularName);
-
- final String pluralName = objectSpecification.getPluralName();
- getExtensions().mapPutString("pluralName", pluralName);
}
protected void putExtensionsDescriptionIfAvailable() {
diff --git
a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java
b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java
index 42fe932d99..e5d8f93bf2 100644
---
a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java
+++
b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java
@@ -40,6 +40,7 @@ import
org.apache.causeway.core.metamodel.interactions.managed.ManagedAction;
import
org.apache.causeway.core.metamodel.interactions.managed.ManagedCollection;
import org.apache.causeway.core.metamodel.interactions.managed.ManagedProperty;
import org.apache.causeway.core.metamodel.object.ManagedObject;
+import org.apache.causeway.core.metamodel.object.MmTitleUtil;
import org.apache.causeway.core.metamodel.spec.ObjectSpecification;
import org.apache.causeway.core.metamodel.specloader.SpecificationLoader;
import
org.apache.causeway.viewer.restfulobjects.applib.CausewayModuleViewerRestfulObjectsApplib;
@@ -320,21 +321,7 @@ implements ContentNegotiationService {
final Collection<ManagedObject> collectionAdapters,
final ObjectSpecification elementSpec) {
final String singularName = elementSpec.getSingularName();
- final String pluralName = elementSpec.getPluralName();
- int size = collectionAdapters.size();
- final String title;
- switch (size) {
- case 0:
- title = "0 " + pluralName;
- break;
- case 1:
- title = "1 " + singularName;
- break;
- default:
- title = size + " " + pluralName;
- break;
- }
- return title;
+ return
MmTitleUtil.formatAnyCardinalityAsTitle(collectionAdapters.size(),
singularName);
}
/**