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/29 19:47:48 UTC
[isis] branch master updated: ISIS-2780: install
ObjectNamedFacet(s) onto mixin's object specs,
such that getSingularName() can be used,
to infer a (translated friendly) member name for mixin contributed members
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 b6c7f70 ISIS-2780: install ObjectNamedFacet(s) onto mixin's object specs, such that getSingularName() can be used, to infer a (translated friendly) member name for mixin contributed members
b6c7f70 is described below
commit b6c7f70416de9985588c3f4dc0f2233bfeb25086
Author: andi-huber <ah...@apache.org>
AuthorDate: Tue Jun 29 21:47:33 2021 +0200
ISIS-2780: install ObjectNamedFacet(s) onto mixin's object specs, such
that getSingularName() can be used, to infer a (translated friendly)
member name for mixin contributed members
---
.../all/i18n/SynthesizeObjectNamingPostProcessor.java | 19 +++++++++++++++++++
.../specloader/specimpl/ObjectMemberAbstract.java | 6 ++++--
2 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/all/i18n/SynthesizeObjectNamingPostProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/all/i18n/SynthesizeObjectNamingPostProcessor.java
index bd86596..7327ff7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/all/i18n/SynthesizeObjectNamingPostProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/all/i18n/SynthesizeObjectNamingPostProcessor.java
@@ -53,6 +53,18 @@ extends ObjectSpecificationPostProcessorAbstract {
if(!(objectSpecification.isEntityOrViewModelOrAbstract()
|| objectSpecification.isManagedBean())) {
+
+ // installed, so a mixin's object spec supports getSingularName() which is used to infer a
+ // (translated friendly) member name for mixin contributed members
+ // see ObjectMemberAbstract#determineNameFrom(final ObjectAction mixinAction)
+ if(objectSpecification.isMixin()) {
+ FacetUtil.addFacet(
+ new ObjectNamedFacetSynthesized(
+ nounFormsForMixin(objectSpecification),
+ objectSpecification)
+ );
+ }
+
return;
}
@@ -116,4 +128,11 @@ extends ObjectSpecificationPostProcessorAbstract {
return StringExtensions.asPluralName(singular);
}
+ private NounForms nounFormsForMixin(ObjectSpecification mixinSpec) {
+ return NounForms.builder()
+ .singular(mixinSpec.getFeatureIdentifier().getClassNaturalName())
+ .plural("") // not expected to be used
+ .build();
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
index 8ae318c..0a68a7b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
@@ -302,6 +302,7 @@ implements
}
private static String suffix(final ObjectAction mixinAction) {
+ // getSingularName() implicitly uses an ObjectNamedFacet, which supports translation
return deriveMemberNameFrom(mixinAction.getOnType().getSingularName());
}
@@ -321,11 +322,12 @@ implements
final int indexOfSeparator = singularName.lastIndexOf(separator);
return occursNotAtEnd(singularName, indexOfSeparator)
? singularName.substring(indexOfSeparator + 1)
- : singularName;
+ : singularName;
}
private static boolean occursNotAtEnd(final String singularName, final int indexOfUnderscore) {
- return indexOfUnderscore != -1 && indexOfUnderscore != singularName.length() - 1;
+ return indexOfUnderscore != -1
+ && indexOfUnderscore != singularName.length() - 1;
}
// -- toString