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 2020/05/14 10:52:49 UTC

[isis] branch master updated: ISIS-2340: moving more logic to common UI Model and meta-model (3)

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 a3396b2  ISIS-2340: moving more logic to common UI Model and meta-model (3)
a3396b2 is described below

commit a3396b2601e9b1da058790dd506ec9c34eec7c34
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu May 14 12:52:33 2020 +0200

    ISIS-2340: moving more logic to common UI Model and meta-model (3)
---
 .../interactions/managed/ManagedProperty.java      | 10 +++++----
 .../viewer/wicket/model/models/ScalarModel.java    | 13 +++++++-----
 .../wicket/model/models/ScalarParameterModel.java  | 14 +++----------
 .../wicket/model/models/ScalarPropertyModel.java   | 24 +++++++---------------
 4 files changed, 24 insertions(+), 37 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedProperty.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedProperty.java
index 9d25a32..b86c12f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedProperty.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedProperty.java
@@ -22,9 +22,11 @@ import java.util.Optional;
 
 import javax.annotation.Nullable;
 
+import org.apache.isis.core.commons.collections.Can;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.consent.Veto;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 
 import lombok.Getter;
@@ -71,6 +73,10 @@ public final class ManagedProperty extends ManagedMember {
         return MemberType.PROPERTY;
     }
     
+    public Can<ObjectAction> getAssociatedActions() {
+        return Can.ofCollection(ObjectAction.Util.findForAssociation(getOwner(), getProperty()));
+    }
+    
     // -- INTERACTION
     
     public Optional<InteractionVeto> checkValidity(ManagedObject proposedNewValue) {
@@ -114,10 +120,6 @@ public final class ManagedProperty extends ManagedMember {
         return Optional.ofNullable(property.get(getOwner()))
         .orElse(ManagedObject.of(property.getSpecification(), null));
     }
-
-
-
-
     
     
 }
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
index f0cd494..7d15091 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
@@ -24,6 +24,7 @@ import java.util.List;
 
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.core.commons.collections.Can;
 import org.apache.isis.core.commons.internal.base._Casts;
 import org.apache.isis.core.commons.internal.base._NullSafe;
 import org.apache.isis.core.commons.internal.collections._Lists;
@@ -263,7 +264,9 @@ implements ScalarUiModel, LinksProvider, FormExecutorContext {
 
     public abstract String getCssClass();
 
-    public abstract <T extends Facet> T getFacet(Class<T> facetType);
+    public final <T extends Facet> T getFacet(final Class<T> facetType) {
+        return getMetaModel().getFacet(facetType);
+    }
 
     /**
      * Additional links to render (if any)
@@ -395,8 +398,8 @@ implements ScalarUiModel, LinksProvider, FormExecutorContext {
         private final ObjectAction firstAssociatedWithInlineAsIfEdit;
         private final List<ObjectAction> remainingAssociated;
 
-        AssociatedActions(final List<ObjectAction> allAssociated) {
-            final List<ObjectAction> temp = _Lists.newArrayList(allAssociated);
+        AssociatedActions(final Can<ObjectAction> allAssociated) {
+            final List<ObjectAction> temp = allAssociated.toList();
             this.firstAssociatedWithInlineAsIfEdit = firstAssociatedActionWithInlineAsIfEdit(allAssociated);
             if(this.firstAssociatedWithInlineAsIfEdit != null) {
                 temp.remove(firstAssociatedWithInlineAsIfEdit);
@@ -414,7 +417,7 @@ implements ScalarUiModel, LinksProvider, FormExecutorContext {
             return firstAssociatedWithInlineAsIfEdit != null;
         }
 
-        private static ObjectAction firstAssociatedActionWithInlineAsIfEdit(final List<ObjectAction> objectActions) {
+        private static ObjectAction firstAssociatedActionWithInlineAsIfEdit(final Can<ObjectAction> objectActions) {
             for (ObjectAction objectAction : objectActions) {
                 final PromptStyle promptStyle = ObjectAction.Util.promptStyleFor(objectAction);
                 if(promptStyle.isInlineAsIfEdit()) {
@@ -470,7 +473,7 @@ implements ScalarUiModel, LinksProvider, FormExecutorContext {
         return associatedActions;
     }
     
-    protected abstract List<ObjectAction> calcAssociatedActions();
+    protected abstract Can<ObjectAction> calcAssociatedActions();
     
     public final boolean hasAssociatedActionWithInlineAsIfEdit() {
         return getAssociatedActions().hasAssociatedActionWithInlineAsIfEdit();
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarParameterModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarParameterModel.java
index 1176320..4794e97 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarParameterModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarParameterModel.java
@@ -18,12 +18,9 @@
  */
 package org.apache.isis.viewer.wicket.model.models;
 
-import java.util.Collections;
-import java.util.List;
-
 import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.core.commons.collections.Can;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.interactions.managed.ManagedAction;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
@@ -139,11 +136,6 @@ implements ParameterUiModel {
     }
 
     @Override
-    public <T extends Facet> T getFacet(final Class<T> facetType) {
-        return getMetaModel().getFacet(facetType);
-    }
-    
-    @Override
     public ManagedObject load() {
         val objectAdapter = loadFromSuper();
 
@@ -161,8 +153,8 @@ implements ParameterUiModel {
     }
     
     @Override
-    protected List<ObjectAction> calcAssociatedActions() {
-        return Collections.emptyList();
+    protected Can<ObjectAction> calcAssociatedActions() {
+        return Can.empty();
     }
 
     @Override
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarPropertyModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarPropertyModel.java
index ab28cbd..f970c58 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarPropertyModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarPropertyModel.java
@@ -18,12 +18,9 @@
  */
 package org.apache.isis.viewer.wicket.model.models;
 
-import java.util.List;
-
 import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.core.metamodel.consent.Consent;
+import org.apache.isis.core.commons.collections.Can;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
 import org.apache.isis.core.metamodel.interactions.managed.InteractionVeto;
 import org.apache.isis.core.metamodel.interactions.managed.ManagedProperty;
@@ -101,7 +98,7 @@ implements PropertyUiModel {
     public String getIdentifier() {
         return getMetaModel().getIdentifier().toNameIdentityString();
     }
-
+    
     @Override
     public String getCssClass() {
         return getMetaModel().getCssClass("isis-");
@@ -130,11 +127,6 @@ implements PropertyUiModel {
                 .orElse(null);
     }
 
-    @Override
-    public <T extends Facet> T getFacet(final Class<T> facetType) {
-        return getMetaModel().getFacet(facetType);
-    }
-
     public void reset() {
         val parentAdapter = getParentUiModel().load();
         setObjectFromPropertyIfVisible(this, getMetaModel(), parentAdapter);
@@ -156,16 +148,15 @@ implements PropertyUiModel {
     }
     
     public String getReasonInvalidIfAny() {
-        val adapter = getParentUiModel().load();
         val associate = getObject();
-        Consent validity = getMetaModel().isAssociationValid(adapter, associate, InteractionInitiatedBy.USER);
-        return validity.isAllowed() ? null : validity.getReason();
+        return validate(associate);
     }
     
     /**
      * Apply changes to the underlying adapter (possibly returning a new adapter).
      *
-     * @return adapter, which may be different from the original (if a {@link ViewModelFacet#isCloneable(Object) cloneable} view model, for example.
+     * @return adapter, which may be different from the original
+     *  (if a {@link ViewModelFacet#isCloneable(Object) cloneable} view model, for example.
      */
     public ManagedObject applyValue(ManagedObject adapter) {
         val property = getMetaModel();
@@ -178,9 +169,8 @@ implements PropertyUiModel {
     }
     
     @Override
-    protected List<ObjectAction> calcAssociatedActions() {
-        val parentAdapter = getParentUiModel().load();
-        return ObjectAction.Util.findForAssociation(parentAdapter, getMetaModel());
+    protected Can<ObjectAction> calcAssociatedActions() {
+        return getManagedProperty().getAssociatedActions();
     }
 
     // -- HELPER