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 12:55:10 UTC

[isis] branch master updated: ISIS-2780: fixes friendly name resolution for ValidityContexts

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 de2d845  ISIS-2780: fixes friendly name resolution for ValidityContexts
de2d845 is described below

commit de2d84521ebdfea0f5b21fbb10784e3d060fae4e
Author: andi-huber <ah...@apache.org>
AuthorDate: Tue Jun 29 14:54:56 2021 +0200

    ISIS-2780: fixes friendly name resolution for ValidityContexts
---
 .../objectvalue/mandatory/MandatoryFacetAbstract.java    | 16 +++++++---------
 .../metamodel/interactions/ActionArgValidityContext.java |  2 +-
 .../metamodel/interactions/ActionValidityContext.java    |  6 +++++-
 .../metamodel/interactions/ObjectValidityContext.java    |  5 ++++-
 .../core/metamodel/interactions/ParseValueContext.java   |  2 +-
 .../metamodel/interactions/PropertyModifyContext.java    | 10 ++++++++--
 .../core/metamodel/interactions/ValidityContext.java     |  8 ++++++++
 .../specloader/specimpl/OneToOneAssociationDefault.java  |  5 ++++-
 8 files changed, 38 insertions(+), 16 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mandatory/MandatoryFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mandatory/MandatoryFacetAbstract.java
index b2ddc2d..eb1b58c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mandatory/MandatoryFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mandatory/MandatoryFacetAbstract.java
@@ -19,13 +19,14 @@
 
 package org.apache.isis.core.metamodel.facets.objectvalue.mandatory;
 
+import java.util.Optional;
 import java.util.function.BiConsumer;
+import java.util.function.Supplier;
 
 import org.apache.isis.commons.internal.base._Strings;
 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 org.apache.isis.core.metamodel.facets.all.named.MemberNamedFacet;
 import org.apache.isis.core.metamodel.interactions.ActionArgValidityContext;
 import org.apache.isis.core.metamodel.interactions.PropertyModifyContext;
 import org.apache.isis.core.metamodel.interactions.ProposedHolder;
@@ -99,14 +100,11 @@ implements MandatoryFacet {
             return null;
         }
 
-        return getFacetHolder()
-                .lookupFacet(MemberNamedFacet.class)
-                .map(MemberNamedFacet::getSpecialization)
-                .map(specialization->specialization
-                        .fold(textFacet->textFacet.translated(),
-                              textFacet->textFacet.textElseNull(context.getHead().getTarget())))
-                .map(named->"'" + named + "' is mandatory")
-                .orElse("Mandatory");
+        return Optional.ofNullable(context.getFriendlyNameProvider())
+        .map(Supplier::get)
+        .filter(_Strings::isNotEmpty)
+        .map(named->"'" + named + "' is mandatory")
+        .orElse("Mandatory");
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionArgValidityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionArgValidityContext.java
index b9c7843..df4ba46 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionArgValidityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionArgValidityContext.java
@@ -54,9 +54,9 @@ implements ProposedHolder, ActionInteractionContext {
         super(InteractionContextType.ACTION_PROPOSED_ARGUMENT,
                 head,
                 id,
+                ()->objectAction.getParameters().getElseFail(position).getFriendlyName(()->head.getTarget()),
                 interactionInitiatedBy);
         this.objectAction = objectAction;
-
         this.args = args;
         this.position = position;
         this.proposed = args.getElseFail(position);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionValidityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionValidityContext.java
index 0b9d8ea..5c72270 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionValidityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionValidityContext.java
@@ -48,7 +48,11 @@ implements ActionInteractionContext {
             final Can<ManagedObject> args,
             final InteractionInitiatedBy interactionInitiatedBy) {
 
-        super(InteractionContextType.ACTION_INVOKE, head, id, interactionInitiatedBy);
+        super(InteractionContextType.ACTION_INVOKE,
+                head,
+                id,
+                ()->objectAction.getFriendlyName(()->head.getTarget()),
+                interactionInitiatedBy);
         this.objectAction = objectAction;
         this.args = args;
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectValidityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectValidityContext.java
index a7524da..439742a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectValidityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectValidityContext.java
@@ -40,7 +40,10 @@ implements ProposedHolder {
             final InteractionInitiatedBy interactionInitiatedBy) {
 
         super(InteractionContextType.OBJECT_VALIDATE,
-                InteractionHead.regular(targetAdapter), identifier, interactionInitiatedBy);
+                InteractionHead.regular(targetAdapter),
+                identifier,
+                ()->targetAdapter.getSpecification().getSingularName(),
+                interactionInitiatedBy);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ParseValueContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ParseValueContext.java
index 7202a8e..a81d2e2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ParseValueContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ParseValueContext.java
@@ -42,7 +42,7 @@ implements ProposedHolder {
             final ManagedObject proposed,
             final InteractionInitiatedBy interactionInitiatedBy) {
 
-        super(InteractionContextType.PARSE_VALUE, head, identifier, interactionInitiatedBy);
+        super(InteractionContextType.PARSE_VALUE, head, identifier, /*friendlyNameProvider*/null, interactionInitiatedBy);
         this.proposed = proposed;
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyModifyContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyModifyContext.java
index 8934fc2..e9f3f1c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyModifyContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyModifyContext.java
@@ -19,6 +19,8 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
+import java.util.function.Supplier;
+
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.wrapper.events.PropertyModifyEvent;
 import org.apache.isis.core.metamodel.consent.InteractionContextType;
@@ -40,9 +42,13 @@ implements ProposedHolder {
             final InteractionHead head,
             final Identifier id,
             final ManagedObject proposed,
+            final Supplier<String> friendlyMemberNameProvider,
             final InteractionInitiatedBy interactionInitiatedBy) {
-        super(InteractionContextType.PROPERTY_MODIFY, head, id, interactionInitiatedBy);
-
+        super(InteractionContextType.PROPERTY_MODIFY,
+                head,
+                id,
+                friendlyMemberNameProvider,
+                interactionInitiatedBy);
         this.proposed = proposed;
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ValidityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ValidityContext.java
index 86d9e56..f3eb7d1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ValidityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ValidityContext.java
@@ -19,12 +19,16 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
+import java.util.function.Supplier;
+
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
 import org.apache.isis.core.metamodel.consent.InteractionContextType;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 
+import lombok.Getter;
+
 /**
  * See {@link InteractionContext} for overview; analogous to
  * {@link ValidityEvent}
@@ -33,12 +37,16 @@ public abstract class ValidityContext
 extends InteractionContext
 implements InteractionEventSupplier<ValidityEvent> {
 
+    @Getter private final Supplier<String> friendlyNameProvider;
+
     public ValidityContext(
             final InteractionContextType interactionType,
             final InteractionHead head,
             final Identifier identifier,
+            final Supplier<String> friendlyNameProvider,
             final InteractionInitiatedBy invocationMethod) {
         super(interactionType, invocationMethod, identifier, head, Where.NOT_SPECIFIED);
+        this.friendlyNameProvider = friendlyNameProvider;
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
index 0c133a7..16e4178 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
@@ -125,7 +125,10 @@ implements OneToOneAssociation {
             final ManagedObject proposedToReferenceAdapter,
             final InteractionInitiatedBy interactionInitiatedBy) {
         return new PropertyModifyContext(
-                headFor(ownerAdapter), getFeatureIdentifier(), proposedToReferenceAdapter,
+                headFor(ownerAdapter),
+                getFeatureIdentifier(),
+                proposedToReferenceAdapter,
+                ()->getFriendlyName(()->headFor(ownerAdapter).getTarget()),
                 interactionInitiatedBy);
     }