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/06/26 17:40:45 UTC

[isis] branch master updated: ISIS-2340: minor enhancements to the Fluent Interaction API

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 1de3f73  ISIS-2340: minor enhancements to the Fluent Interaction API
1de3f73 is described below

commit 1de3f73868142bd8247822065397893875e2df4d
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Jun 26 19:40:08 2020 +0200

    ISIS-2340: minor enhancements to the Fluent Interaction API
---
 .../interactions/managed/ActionInteraction.java    | 18 ++++++++++++++++++
 .../managed/CollectionInteraction.java             | 20 ++++++++++++++++++++
 .../interactions/managed/ManagedCollection.java    |  2 +-
 .../interactions/managed/MemberInteraction.java    | 22 +++++++++++++++-------
 .../interactions/managed/PropertyInteraction.java  | 18 ++++++++++++++++++
 .../javafx/ui/components/object/ObjectViewFx.java  |  6 +++---
 .../vaadin/ui/components/object/ObjectViewVaa.java |  6 +++---
 .../resources/ObjectAdapterAccessHelper.java       |  6 +++---
 8 files changed, 81 insertions(+), 17 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ActionInteraction.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ActionInteraction.java
index df1428d..e32a82d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ActionInteraction.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ActionInteraction.java
@@ -18,6 +18,7 @@
  */
 package org.apache.isis.core.metamodel.interactions.managed;
 
+import java.util.Optional;
 import java.util.function.Function;
 
 import org.apache.isis.core.commons.collections.Can;
@@ -156,6 +157,23 @@ public final class ActionInteraction extends MemberInteraction<ManagedAction, Ac
         }
     }
     
+    /**
+     * @return optionally the ManagedAction based on whether there 
+     * was no interaction veto within the originating chain 
+     */
+    public Optional<ManagedAction> getManagedAction() {
+        return super.getManagedMember();
+    }
+    
+    /**
+     * @return this Interaction's ManagedAction
+     * @throws X if there was any interaction veto within the originating chain
+     */
+    public <X extends Throwable> 
+    ManagedAction getManagedActionElseThrow(Function<InteractionVeto, ? extends X> onFailure) throws X {
+        return super.getManagedMemberElseThrow(onFailure);
+    }
+    
     // -- HELPER
     
     private final State state = new State();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/CollectionInteraction.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/CollectionInteraction.java
index 6a3cf3f..a06c797 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/CollectionInteraction.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/CollectionInteraction.java
@@ -18,6 +18,9 @@
  */
 package org.apache.isis.core.metamodel.interactions.managed;
 
+import java.util.Optional;
+import java.util.function.Function;
+
 import org.apache.isis.core.commons.internal.base._Either;
 import org.apache.isis.core.metamodel.interactions.managed.ManagedMember.MemberType;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
@@ -43,6 +46,23 @@ public final class CollectionInteraction extends MemberInteraction<ManagedCollec
     CollectionInteraction(@NonNull _Either<ManagedCollection, InteractionVeto> chain) {
         super(chain);
     }
+    
+    /**
+     * @return optionally the ManagedCollection based on whether there 
+     * was no interaction veto within the originating chain 
+     */
+    public Optional<ManagedCollection> getManagedCollection() {
+        return super.getManagedMember();
+    }
+    
+    /**
+     * @return this Interaction's ManagedCollection
+     * @throws X if there was any interaction veto within the originating chain
+     */
+    public <X extends Throwable> 
+    ManagedCollection getManagedCollectionElseThrow(Function<InteractionVeto, ? extends X> onFailure) throws X {
+        return super.getManagedMemberElseThrow(onFailure);
+    }
 
 //    public PropertyHandle modifyProperty(
 //            @NonNull final Function<ManagedProperty, ManagedObject> newProperyValueProvider) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedCollection.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedCollection.java
index ef0f7f7..6db7b79 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedCollection.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedCollection.java
@@ -79,7 +79,7 @@ public final class ManagedCollection extends ManagedMember {
         return Optional.ofNullable(getCollection().get(getOwner(), InteractionInitiatedBy.USER))
                 .orElse(ManagedObject.empty(getElementSpecification()));
     }
-
+    
     // -- INTERACTION
     
     /**
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/MemberInteraction.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/MemberInteraction.java
index 04b6d46..194b72d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/MemberInteraction.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/MemberInteraction.java
@@ -87,9 +87,20 @@ public abstract class MemberInteraction<T extends ManagedMember, H extends Membe
         }
     }
 
-    @Deprecated // use more specialized methods 
-    public <X extends Throwable> 
-    T getOrElseThrow(Function<InteractionVeto, ? extends X> onFailure) throws X {
+    /**
+     * @return optionally the ManagedMember based on whether there 
+     * was no interaction veto within the originating chain 
+     */
+    protected Optional<T> getManagedMember() {
+        return chain.left();
+    }
+    
+    /**
+     * @return this Interaction's ManagedMember
+     * @throws X if there was any interaction veto within the originating chain
+     */
+    protected <X extends Throwable> 
+    T getManagedMemberElseThrow(Function<InteractionVeto, ? extends X> onFailure) throws X {
         val value = chain.leftIfAny();
         if (value != null) {
             return value;
@@ -98,10 +109,7 @@ public abstract class MemberInteraction<T extends ManagedMember, H extends Membe
         }
     }
     
-    @Deprecated 
-    public Optional<T> get() {
-        return chain.left();
-    }
+
     
     
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/PropertyInteraction.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/PropertyInteraction.java
index 224447f..12c21d2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/PropertyInteraction.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/PropertyInteraction.java
@@ -18,6 +18,7 @@
  */
 package org.apache.isis.core.metamodel.interactions.managed;
 
+import java.util.Optional;
 import java.util.function.Function;
 
 import org.apache.isis.core.commons.internal.base._Either;
@@ -57,6 +58,23 @@ public final class PropertyInteraction extends MemberInteraction<ManagedProperty
         });
         return this;
     }
+    
+    /**
+     * @return optionally the ManagedProperty based on whether there 
+     * was no interaction veto within the originating chain 
+     */
+    public Optional<ManagedProperty> getManagedProperty() {
+        return super.getManagedMember();
+    }
+    
+    /**
+     * @return this Interaction's ManagedProperty
+     * @throws X if there was any interaction veto within the originating chain
+     */
+    public <X extends Throwable> 
+    ManagedProperty getManagedPropertyElseThrow(Function<InteractionVeto, ? extends X> onFailure) throws X {
+        return super.getManagedMemberElseThrow(onFailure);
+    }
 
     
 }
diff --git a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/object/ObjectViewFx.java b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/object/ObjectViewFx.java
index f778197..aad5542 100644
--- a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/object/ObjectViewFx.java
+++ b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/object/ObjectViewFx.java
@@ -167,7 +167,7 @@ public class ObjectViewFx extends VBox {
                 val owner = objectInteractor.getManagedObject();
                 ActionInteraction.start(owner, actionData.getId())
                 .checkVisibility(Where.OBJECT_FORMS)
-                .get()
+                .getManagedAction()
                 .ifPresent(managedAction -> {
                     val uiButton = _fx.newButton(
                             container, 
@@ -183,7 +183,7 @@ public class ObjectViewFx extends VBox {
                 
                 PropertyInteraction.start(owner, propertyData.getId())
                 .checkVisibility(Where.OBJECT_FORMS)
-                .get()
+                .getManagedProperty()
                 .ifPresent(managedProperty -> {
                     
                     val uiProperty = _fx.add(container, 
@@ -205,7 +205,7 @@ public class ObjectViewFx extends VBox {
                 
                 CollectionInteraction.start(owner, collectionData.getId())
                 .checkVisibility(Where.OBJECT_FORMS)
-                .get()
+                .getManagedCollection()
                 .ifPresent(managedCollection -> {
                     
                     val titledPanel = _fx.add(container, new TitledPanel(managedCollection.getName()));
diff --git a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/object/ObjectViewVaa.java b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/object/ObjectViewVaa.java
index d5189c4..865a84d 100644
--- a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/object/ObjectViewVaa.java
+++ b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/object/ObjectViewVaa.java
@@ -174,7 +174,7 @@ public class ObjectViewVaa extends VerticalLayout {
                 val owner = objectInteractor.getManagedObject();
                 ActionInteraction.start(owner, actionData.getId())
                 .checkVisibility(Where.OBJECT_FORMS)
-                .get()
+                .getManagedAction()
                 .ifPresent(managedAction -> {
                     val uiAction = ActionButton.forManagedAction(uiComponentFactory, managedAction);
                     container.add(uiAction);
@@ -188,7 +188,7 @@ public class ObjectViewVaa extends VerticalLayout {
                 
                 PropertyInteraction.start(owner, propertyData.getId())
                 .checkVisibility(Where.OBJECT_FORMS)
-                .get()
+                .getManagedProperty()
                 .ifPresent(managedProperty -> {
                     val uiProperty = uiComponentFactory
                             .componentFor(UiComponentFactory.Request.of(Where.OBJECT_FORMS, managedProperty));
@@ -203,7 +203,7 @@ public class ObjectViewVaa extends VerticalLayout {
                 
                 CollectionInteraction.start(owner, collectionData.getId())
                 .checkVisibility(Where.OBJECT_FORMS)
-                .get()
+                .getManagedCollection()
                 .ifPresent(managedCollection -> {
                     container.add(new H3(managedCollection.getName()));
                     
diff --git a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ObjectAdapterAccessHelper.java b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ObjectAdapterAccessHelper.java
index 1f9423c..0c8ad58 100644
--- a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ObjectAdapterAccessHelper.java
+++ b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ObjectAdapterAccessHelper.java
@@ -61,7 +61,7 @@ public class ObjectAdapterAccessHelper {
                 .checkVisibility(where)
                 .checkUsability(where, AccessIntent.MUTATE)
                 .checkSemanticConstraint(semanticConstraint)
-                .getOrElseThrow(InteractionFailureHandler::onFailure);
+                .getManagedActionElseThrow(InteractionFailureHandler::onFailure);
     }
 
     public ManagedProperty getPropertyThatIsVisibleForIntent(
@@ -72,7 +72,7 @@ public class ObjectAdapterAccessHelper {
                 .start(managedObject, propertyId)
                 .checkVisibility(where)
                 .checkUsability(where, intent)
-                .getOrElseThrow(InteractionFailureHandler::onFailure);
+                .getManagedPropertyElseThrow(InteractionFailureHandler::onFailure);
         
     }
 
@@ -84,7 +84,7 @@ public class ObjectAdapterAccessHelper {
                 .start(managedObject, collectionId)
                 .checkVisibility(where)
                 .checkUsability(where, intent)
-                .getOrElseThrow(InteractionFailureHandler::onFailure);
+                .getManagedCollectionElseThrow(InteractionFailureHandler::onFailure);
 
     }