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);
}