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/11/17 19:44:42 UTC
[isis] branch master updated: ISIS-2901: fixes facet CssClassFaFacetOnMemberFromConfiguredRegex
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 f3c7d08 ISIS-2901: fixes facet CssClassFaFacetOnMemberFromConfiguredRegex
f3c7d08 is described below
commit f3c7d0874e1fec2608de4490dd0d31ec5ba62407
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Nov 17 20:44:31 2021 +0100
ISIS-2901: fixes facet CssClassFaFacetOnMemberFromConfiguredRegex
- in case of an imperatively named mixed-in action we actually do need a
mixin instance to query the friendly-name
---
...CssClassFaFacetOnMemberFromConfiguredRegex.java | 28 +++++++++++++++++++---
.../CssClassFaFacetOnMemberPostProcessor.java | 14 +++++------
2 files changed, 32 insertions(+), 10 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFromConfiguredRegex.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFromConfiguredRegex.java
index a7f9bc7..4aad7b1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFromConfiguredRegex.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFromConfiguredRegex.java
@@ -35,9 +35,12 @@ import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFactor
import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaImperativeFacetAbstract;
import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaStaticFacetAbstract;
import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import lombok.NonNull;
+import lombok.val;
/**
* Installed by {@link CssClassFaFacetOnMemberPostProcessor},
@@ -56,16 +59,21 @@ extends CssClassFaImperativeFacetAbstract {
* if the memberNamedFacet provides static names, we can also provide a static CssClassFaFactory
*/
private final @NonNull Optional<CssClassFaFactory> staticCssClassFaFactory;
+ private ObjectSpecification objectSpecification;
- public static Optional<CssClassFaFacet> create(final ObjectAction objectAction) {
+ public static Optional<CssClassFaFacet> create(
+ final ObjectSpecification objectSpecification,
+ final ObjectAction objectAction) {
return objectAction.lookupFacet(MemberNamedFacet.class)
- .map(memberNamedFacet->new CssClassFaFacetOnMemberFromConfiguredRegex(memberNamedFacet, objectAction));
+ .map(memberNamedFacet->new CssClassFaFacetOnMemberFromConfiguredRegex(objectSpecification, memberNamedFacet, objectAction));
}
private CssClassFaFacetOnMemberFromConfiguredRegex(
+ final ObjectSpecification objectSpecification,
final MemberNamedFacet memberNamedFacet,
final FacetHolder holder) {
super(holder);
+ this.objectSpecification = objectSpecification;
this.faIconByPattern = getConfiguration().getApplib().getAnnotation().getActionLayout().getCssClassFa().getPatternsAsMap();
this.memberNamedFacet = memberNamedFacet;
@@ -121,12 +129,26 @@ extends CssClassFaImperativeFacetAbstract {
.getSpecialization()
.fold(
hasStaticName->hasStaticName.translated(), // unexpected code reach, due to optimization above
- hasImperativeName->hasImperativeName.textElseNull(domainObjectProvider.get()));
+ hasImperativeName->hasImperativeName.textElseNull(targetFor(domainObjectProvider)));
return cssClassFaFactoryForMemberFriendlyName(memberFriendlyName);
}
+ private ManagedObject targetFor(final Supplier<ManagedObject> domainObjectProvider) {
+ val ownerAdapter = domainObjectProvider.get();
+ if(ManagedObjects.isNullOrUnspecifiedOrEmpty(ownerAdapter)) {
+ return ManagedObject.empty(objectSpecification);
+ }
+ return objectSpecification.isMixin()
+ ? ManagedObject.of(
+ objectSpecification,
+ objectSpecification
+ .getFactoryService()
+ .mixin(objectSpecification.getCorrespondingClass(), ownerAdapter.getPojo()))
+ : ownerAdapter;
+ }
+
/**
* @implNote because {@link CssClassFaStaticFacetAbstract} has all the fa-icon logic,
* we simply reuse it here by creating an anonymous instance
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberPostProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberPostProcessor.java
index 13b784f..35fc786 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberPostProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberPostProcessor.java
@@ -41,11 +41,11 @@ extends ObjectSpecificationPostProcessorAbstract {
}
@Override
- protected void doPostProcess(ObjectSpecification objectSpecification) {
+ protected void doPostProcess(final ObjectSpecification objectSpecification) {
}
@Override
- protected void doPostProcess(ObjectSpecification objectSpecification, ObjectAction objectAction) {
+ protected void doPostProcess(final ObjectSpecification objectSpecification, final ObjectAction objectAction) {
val hasExplicitFaIcon = objectAction
.lookupNonFallbackFacet(CssClassFaFacet.class)
@@ -54,21 +54,21 @@ extends ObjectSpecificationPostProcessorAbstract {
if(!hasExplicitFaIcon) {
FacetUtil.addFacetIfPresent(
CssClassFaFacetOnMemberFromConfiguredRegex
- .create(objectAction));
+ .create(objectSpecification, objectAction));
}
}
@Override
- protected void doPostProcess(ObjectSpecification objectSpecification, ObjectAction objectAction,
- ObjectActionParameter param) {
+ protected void doPostProcess(final ObjectSpecification objectSpecification, final ObjectAction objectAction,
+ final ObjectActionParameter param) {
}
@Override
- protected void doPostProcess(ObjectSpecification objectSpecification, OneToOneAssociation prop) {
+ protected void doPostProcess(final ObjectSpecification objectSpecification, final OneToOneAssociation prop) {
}
@Override
- protected void doPostProcess(ObjectSpecification objectSpecification, OneToManyAssociation coll) {
+ protected void doPostProcess(final ObjectSpecification objectSpecification, final OneToManyAssociation coll) {
}
}