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/04/26 05:48:05 UTC
[isis] branch master updated: ISIS-2340: share logic of
ObjectAdapterAccessHelper/UpdateHelper (9)
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 189f4ca ISIS-2340: share logic of ObjectAdapterAccessHelper/UpdateHelper (9)
189f4ca is described below
commit 189f4ca683dcdeef825413fbd1d1f686f93a891a
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sun Apr 26 07:47:49 2020 +0200
ISIS-2340: share logic of ObjectAdapterAccessHelper/UpdateHelper (9)
---
...ollectionHandle.java => ActionInteraction.java} | 23 +++++++--
...ctionHandle.java => CollectionInteraction.java} | 21 +++++++-
.../spec/interaction/InteractionVeto.java | 14 +++++-
.../metamodel/spec/interaction/ManagedAction.java | 16 ------
.../spec/interaction/ManagedCollection.java | 15 ------
.../metamodel/spec/interaction/ManagedMember.java | 8 ---
.../spec/interaction/ManagedProperty.java | 15 ------
.../{MemberHandle.java => MemberInteraction.java} | 25 +++++++++-
...ropertyHandle.java => PropertyInteraction.java} | 20 ++++++--
.../ui/components/object/ObjectFormView.java | 11 ++--
.../resources/DomainObjectResourceServerside.java | 12 ++---
.../viewer/resources/DomainResourceHelper.java | 2 +-
.../resources/ObjectAdapterAccessHelper.java | 58 +++++++---------------
13 files changed, 122 insertions(+), 118 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/CollectionHandle.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/ActionInteraction.java
similarity index 63%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/CollectionHandle.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/ActionInteraction.java
index c08f041..4567ae2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/CollectionHandle.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/ActionInteraction.java
@@ -19,15 +19,33 @@
package org.apache.isis.core.metamodel.spec.interaction;
import org.apache.isis.core.commons.internal.base._Either;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.interaction.ManagedMember.MemberType;
import lombok.NonNull;
+import lombok.val;
-public final class CollectionHandle extends MemberHandle<ManagedCollection, CollectionHandle> {
+public final class ActionInteraction extends MemberInteraction<ManagedAction, ActionInteraction> {
- CollectionHandle(@NonNull _Either<ManagedCollection, InteractionVeto> chain) {
+ public static final ActionInteraction start(
+ @NonNull final ManagedObject owner,
+ @NonNull final String memberId) {
+
+ val managedAction = ManagedAction.lookupAction(owner, memberId);
+
+ final _Either<ManagedAction, InteractionVeto> chain = managedAction.isPresent()
+ ? _Either.left(managedAction.get())
+ : _Either.right(InteractionVeto.notFound(MemberType.ACTION, memberId));
+
+ return new ActionInteraction(chain);
+ }
+
+ ActionInteraction(@NonNull _Either<ManagedAction, InteractionVeto> chain) {
super(chain);
}
+
+
// public PropertyHandle modifyProperty(
// @NonNull final Function<ManagedProperty, ManagedObject> newProperyValueProvider) {
//
@@ -42,4 +60,3 @@ public final class CollectionHandle extends MemberHandle<ManagedCollection, Coll
}
-
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/ActionHandle.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/CollectionInteraction.java
similarity index 61%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/ActionHandle.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/CollectionInteraction.java
index 7f71884..8b84f98 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/ActionHandle.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/CollectionInteraction.java
@@ -19,12 +19,28 @@
package org.apache.isis.core.metamodel.spec.interaction;
import org.apache.isis.core.commons.internal.base._Either;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.interaction.ManagedMember.MemberType;
import lombok.NonNull;
+import lombok.val;
-public final class ActionHandle extends MemberHandle<ManagedAction, ActionHandle> {
+public final class CollectionInteraction extends MemberInteraction<ManagedCollection, CollectionInteraction> {
- ActionHandle(@NonNull _Either<ManagedAction, InteractionVeto> chain) {
+ public static final CollectionInteraction start(
+ @NonNull final ManagedObject owner,
+ @NonNull final String memberId) {
+
+ val managedCollection = ManagedCollection.lookupCollection(owner, memberId);
+
+ final _Either<ManagedCollection, InteractionVeto> chain = managedCollection.isPresent()
+ ? _Either.left(managedCollection.get())
+ : _Either.right(InteractionVeto.notFound(MemberType.COLLECTION, memberId));
+
+ return new CollectionInteraction(chain);
+ }
+
+ CollectionInteraction(@NonNull _Either<ManagedCollection, InteractionVeto> chain) {
super(chain);
}
@@ -42,3 +58,4 @@ public final class ActionHandle extends MemberHandle<ManagedAction, ActionHandle
}
+
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/InteractionVeto.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/InteractionVeto.java
index 61e4e88..17475f8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/InteractionVeto.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/InteractionVeto.java
@@ -20,12 +20,17 @@ package org.apache.isis.core.metamodel.spec.interaction;
import java.io.Serializable;
+import javax.annotation.Nullable;
+
import org.apache.isis.core.metamodel.consent.Consent;
+import org.apache.isis.core.metamodel.consent.Veto;
+import org.apache.isis.core.metamodel.spec.interaction.ManagedMember.MemberType;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
+import lombok.val;
@Getter
@RequiredArgsConstructor(staticName = "of", access = AccessLevel.PRIVATE)
@@ -43,8 +48,13 @@ public class InteractionVeto implements Serializable {
@NonNull private final VetoType vetoType;
@NonNull private final Consent vetoConsent;
- public static InteractionVeto notFound(@NonNull Consent vetoConsent) {
- return of(VetoType.NOT_FOUND, vetoConsent);
+ public static InteractionVeto notFound(
+ @NonNull MemberType memberType,
+ @Nullable String memberId) {
+ val reason = String.format("%s '%s' either does not exist, is disabled or is not visible",
+ "" + memberId,
+ memberType.name().toLowerCase());
+ return of(VetoType.NOT_FOUND, new Veto(reason));
}
public static InteractionVeto hidden(@NonNull Consent vetoConsent) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/ManagedAction.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/ManagedAction.java
index 2e88681..f978a5f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/ManagedAction.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/ManagedAction.java
@@ -20,14 +20,11 @@ package org.apache.isis.core.metamodel.spec.interaction;
import java.util.Optional;
-import org.apache.isis.core.commons.internal.base._Either;
-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 lombok.Getter;
import lombok.NonNull;
-import lombok.val;
public final class ManagedAction extends ManagedMember {
@@ -41,19 +38,6 @@ public final class ManagedAction extends ManagedMember {
.map(objectAction -> new ManagedAction(owner, objectAction));
}
- public static final ActionHandle getActionHandle(
- @NonNull final ManagedObject owner,
- @NonNull final String memberId) {
-
- val managedAction = ManagedAction.lookupAction(owner, memberId);
-
- final _Either<ManagedAction, InteractionVeto> chain = managedAction.isPresent()
- ? _Either.left(managedAction.get())
- : _Either.right(InteractionVeto.notFound(new Veto(notFound(MemberType.ACTION, memberId))));
-
- return new ActionHandle(chain);
- }
-
// -- IMPLEMENTATION
@Getter private final ObjectAction action;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/ManagedCollection.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/ManagedCollection.java
index e51b322..c2bbf6f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/ManagedCollection.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/ManagedCollection.java
@@ -20,8 +20,6 @@ package org.apache.isis.core.metamodel.spec.interaction;
import java.util.Optional;
-import org.apache.isis.core.commons.internal.base._Either;
-import org.apache.isis.core.metamodel.consent.Veto;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
@@ -41,19 +39,6 @@ public final class ManagedCollection extends ManagedMember {
.map(objectAction -> new ManagedCollection(owner, objectAction));
}
- public static final CollectionHandle getCollectionHandle(
- @NonNull final ManagedObject owner,
- @NonNull final String memberId) {
-
- val managedCollection = ManagedCollection.lookupCollection(owner, memberId);
-
- final _Either<ManagedCollection, InteractionVeto> chain = managedCollection.isPresent()
- ? _Either.left(managedCollection.get())
- : _Either.right(InteractionVeto.notFound(new Veto(notFound(MemberType.COLLECTION, memberId))));
-
- return new CollectionHandle(chain);
- }
-
// -- IMPLEMENTATION
@Getter private final OneToManyAssociation collection;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/ManagedMember.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/ManagedMember.java
index f9dc991..e9b77ce 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/ManagedMember.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/ManagedMember.java
@@ -119,12 +119,4 @@ public abstract class ManagedMember {
return memberType.lookup(owner, memberId);
}
- protected static <T extends ObjectMember> String notFound(
- MemberType memberType,
- String memberId) {
- return String.format("%s '%s' either does not exist, is disabled or is not visible",
- memberId,
- memberType.name().toLowerCase());
- }
-
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/ManagedProperty.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/ManagedProperty.java
index 6471f4b..20c188a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/ManagedProperty.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/ManagedProperty.java
@@ -22,9 +22,7 @@ import java.util.Optional;
import javax.annotation.Nullable;
-import org.apache.isis.core.commons.internal.base._Either;
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.OneToOneAssociation;
@@ -44,19 +42,6 @@ public final class ManagedProperty extends ManagedMember {
.map(objectAction -> new ManagedProperty(owner, objectAction));
}
- public static final PropertyHandle getPropertyHandle(
- @NonNull final ManagedObject owner,
- @NonNull final String memberId) {
-
- val managedProperty = ManagedProperty.lookupProperty(owner, memberId);
-
- final _Either<ManagedProperty, InteractionVeto> chain = managedProperty.isPresent()
- ? _Either.left(managedProperty.get())
- : _Either.right(InteractionVeto.notFound(new Veto(notFound(MemberType.PROPERTY, memberId))));
-
- return new PropertyHandle(chain);
- }
-
// -- IMPLEMENTATION
@Getter private final OneToOneAssociation property;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/MemberHandle.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/MemberInteraction.java
similarity index 78%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/MemberHandle.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/MemberInteraction.java
index c3d6594..242a614 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/MemberHandle.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/MemberInteraction.java
@@ -29,11 +29,19 @@ import org.apache.isis.core.commons.internal.base._Either;
import lombok.NonNull;
import lombok.val;
-public abstract class MemberHandle<T extends ManagedMember, H extends MemberHandle<T, ?>> {
+public abstract class MemberInteraction<T extends ManagedMember, H extends MemberInteraction<T, ?>> {
+ public static enum AccessIntent {
+ ACCESS, MUTATE;
+
+ public boolean isMutate() {
+ return this == MUTATE;
+ }
+ }
+
@NonNull protected _Either<T, InteractionVeto> chain;
- protected MemberHandle(@NonNull _Either<T, InteractionVeto> chain) {
+ protected MemberInteraction(@NonNull _Either<T, InteractionVeto> chain) {
this.chain = chain;
}
@@ -57,6 +65,19 @@ public abstract class MemberHandle<T extends ManagedMember, H extends MemberHand
return _Casts.uncheckedCast(this);
}
+ /**
+ * Only check usability if intent is {@code MUTATE}.
+ * @param where
+ * @param intent
+ * @return self
+ */
+ public H checkUsability(@NonNull final Where where, @NonNull final AccessIntent intent) {
+ if(intent.isMutate()) {
+ return checkUsability(where);
+ }
+ return _Casts.uncheckedCast(this);
+ }
+
@Deprecated
public H peekOnFailure(Consumer<InteractionVeto> onFailure) {
chain.right().ifPresent(onFailure);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/PropertyHandle.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/PropertyInteraction.java
similarity index 63%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/PropertyHandle.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/PropertyInteraction.java
index c77e1e1..c9d2548 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/PropertyHandle.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/interaction/PropertyInteraction.java
@@ -22,17 +22,31 @@ import java.util.function.Function;
import org.apache.isis.core.commons.internal.base._Either;
import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.interaction.ManagedMember.MemberType;
import lombok.NonNull;
import lombok.val;
-public final class PropertyHandle extends MemberHandle<ManagedProperty, PropertyHandle> {
+public final class PropertyInteraction extends MemberInteraction<ManagedProperty, PropertyInteraction> {
- PropertyHandle(@NonNull _Either<ManagedProperty, InteractionVeto> chain) {
+ public static final PropertyInteraction start(
+ @NonNull final ManagedObject owner,
+ @NonNull final String memberId) {
+
+ val managedProperty = ManagedProperty.lookupProperty(owner, memberId);
+
+ final _Either<ManagedProperty, InteractionVeto> chain = managedProperty.isPresent()
+ ? _Either.left(managedProperty.get())
+ : _Either.right(InteractionVeto.notFound(MemberType.PROPERTY, memberId));
+
+ return new PropertyInteraction(chain);
+ }
+
+ PropertyInteraction(@NonNull _Either<ManagedProperty, InteractionVeto> chain) {
super(chain);
}
- public PropertyHandle modifyProperty(
+ public PropertyInteraction modifyProperty(
@NonNull final Function<ManagedProperty, ManagedObject> newProperyValueProvider) {
chain = chain.leftRemap(property->{
diff --git a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/object/ObjectFormView.java b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/object/ObjectFormView.java
index 3e6b8d0..660cdce 100644
--- a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/object/ObjectFormView.java
+++ b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/object/ObjectFormView.java
@@ -47,9 +47,10 @@ import org.apache.isis.applib.layout.grid.bootstrap3.BS3Row;
import org.apache.isis.applib.layout.grid.bootstrap3.BS3Tab;
import org.apache.isis.applib.layout.grid.bootstrap3.BS3TabGroup;
import org.apache.isis.core.metamodel.spec.ManagedObject;
-import org.apache.isis.core.metamodel.spec.interaction.ManagedAction;
+import org.apache.isis.core.metamodel.spec.interaction.ActionInteraction;
+import org.apache.isis.core.metamodel.spec.interaction.CollectionInteraction;
import org.apache.isis.core.metamodel.spec.interaction.ManagedCollection;
-import org.apache.isis.core.metamodel.spec.interaction.ManagedProperty;
+import org.apache.isis.core.metamodel.spec.interaction.PropertyInteraction;
import org.apache.isis.incubator.viewer.vaadin.ui.components.UiComponentFactoryVaa;
import org.apache.isis.incubator.viewer.vaadin.ui.components.collection.TableView;
import org.apache.isis.viewer.common.model.binding.UiComponentFactory;
@@ -173,7 +174,7 @@ public class ObjectFormView extends VerticalLayout {
protected void onAction(HasComponents container, ActionLayoutData actionData) {
val owner = objectInteractor.getManagedObject();
- ManagedAction.getActionHandle(owner, actionData.getId())
+ ActionInteraction.start(owner, actionData.getId())
.checkVisibility(Where.OBJECT_FORMS)
.get()
.ifPresent(managedAction -> {
@@ -191,7 +192,7 @@ public class ObjectFormView extends VerticalLayout {
val owner = objectInteractor.getManagedObject();
- ManagedProperty.getPropertyHandle(owner, propertyData.getId())
+ PropertyInteraction.start(owner, propertyData.getId())
.checkVisibility(Where.OBJECT_FORMS)
.get()
.ifPresent(managedProperty -> {
@@ -206,7 +207,7 @@ public class ObjectFormView extends VerticalLayout {
val owner = objectInteractor.getManagedObject();
- ManagedCollection.getCollectionHandle(owner, collectionData.getId())
+ CollectionInteraction.start(owner, collectionData.getId())
.checkVisibility(Where.OBJECT_FORMS)
.get()
.ifPresent(managedCollection -> {
diff --git a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainObjectResourceServerside.java b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainObjectResourceServerside.java
index eaa94c3..c92ec0a 100644
--- a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainObjectResourceServerside.java
+++ b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainObjectResourceServerside.java
@@ -59,7 +59,8 @@ import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.ObjectSpecId;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
-import org.apache.isis.core.metamodel.spec.interaction.ManagedProperty;
+import org.apache.isis.core.metamodel.spec.interaction.MemberInteraction.AccessIntent;
+import org.apache.isis.core.metamodel.spec.interaction.PropertyInteraction;
import org.apache.isis.core.runtime.iactn.IsisInteractionTracker;
import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
import org.apache.isis.viewer.restfulobjects.applib.Rel;
@@ -74,7 +75,6 @@ import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.MemberReprM
import org.apache.isis.viewer.restfulobjects.rendering.service.RepresentationService;
import org.apache.isis.viewer.restfulobjects.rendering.util.Util;
import org.apache.isis.viewer.restfulobjects.viewer.context.ResourceContext;
-import org.apache.isis.viewer.restfulobjects.viewer.resources.ObjectAdapterAccessHelper.AccessIntent;
import lombok.val;
import lombok.extern.log4j.Log4j2;
@@ -452,9 +452,9 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
val objectAdapter = getObjectAdapterElseThrowNotFound(domainType, instanceId);
- ManagedProperty.getPropertyHandle(objectAdapter, propertyId)
+ PropertyInteraction.start(objectAdapter, propertyId)
.checkVisibility(resourceContext.getWhere())
- .checkUsability(resourceContext.getWhere()) // only when ObjectBinding.AccessIntent.MUTATE
+ .checkUsability(resourceContext.getWhere(), AccessIntent.MUTATE)
.modifyProperty(property->{
val proposedNewValue = new JsonParserHelper(resourceContext, property.getSpecification())
.parseAsMapWithSingleValue(Util.asStringUtf8(body));
@@ -487,9 +487,9 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
val objectAdapter = getObjectAdapterElseThrowNotFound(domainType, instanceId);
- ManagedProperty.getPropertyHandle(objectAdapter, propertyId)
+ PropertyInteraction.start(objectAdapter, propertyId)
.checkVisibility(resourceContext.getWhere())
- .checkUsability(resourceContext.getWhere()) // only when ObjectBinding.AccessIntent.MUTATE
+ .checkUsability(resourceContext.getWhere(), AccessIntent.MUTATE)
.modifyProperty(property->null)
.getOrElseThrow(InteractionFailureHandler::onFailure);
diff --git a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainResourceHelper.java b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainResourceHelper.java
index 9315f65..9c00672 100644
--- a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainResourceHelper.java
+++ b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainResourceHelper.java
@@ -27,6 +27,7 @@ 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.OneToManyAssociation;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.isis.core.metamodel.spec.interaction.MemberInteraction.AccessIntent;
import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse;
import org.apache.isis.viewer.restfulobjects.rendering.IResourceContext;
@@ -42,7 +43,6 @@ import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndCo
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndProperty2;
import org.apache.isis.viewer.restfulobjects.rendering.service.RepresentationService;
import org.apache.isis.viewer.restfulobjects.viewer.context.ResourceContext;
-import org.apache.isis.viewer.restfulobjects.viewer.resources.ObjectAdapterAccessHelper.AccessIntent;
import lombok.val;
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 0bdf621..118fead 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
@@ -23,13 +23,13 @@ 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.OneToManyAssociation;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
-import org.apache.isis.core.metamodel.spec.interaction.ManagedAction;
-import org.apache.isis.core.metamodel.spec.interaction.ManagedCollection;
-import org.apache.isis.core.metamodel.spec.interaction.ManagedProperty;
+import org.apache.isis.core.metamodel.spec.interaction.ActionInteraction;
+import org.apache.isis.core.metamodel.spec.interaction.CollectionInteraction;
+import org.apache.isis.core.metamodel.spec.interaction.MemberInteraction.AccessIntent;
+import org.apache.isis.core.metamodel.spec.interaction.PropertyInteraction;
import org.apache.isis.viewer.restfulobjects.rendering.IResourceContext;
import lombok.RequiredArgsConstructor;
-import lombok.val;
/**
* Utility class that encapsulates the logic for checking access to the specified
@@ -38,14 +38,6 @@ import lombok.val;
@RequiredArgsConstructor
public class ObjectAdapterAccessHelper {
- public static enum AccessIntent {
- ACCESS, MUTATE;
-
- public boolean isMutate() {
- return this == MUTATE;
- }
- }
-
public static ObjectAdapterAccessHelper of(
final IResourceContext resourceContext,
final ManagedObject managedObject) {
@@ -60,15 +52,10 @@ public class ObjectAdapterAccessHelper {
public ObjectAction getObjectActionThatIsVisibleForIntent(
final String actionId, final AccessIntent intent) {
- val actionHandle = ManagedAction
- .getActionHandle(managedObject, actionId)
- .checkVisibility(where);
-
- if(intent.isMutate()) {
- actionHandle.checkUsability(where);
- }
-
- return actionHandle
+ return ActionInteraction
+ .start(managedObject, actionId)
+ .checkVisibility(where)
+ .checkUsability(where, intent)
.getOrElseThrow(InteractionFailureHandler::onFailure)
.getAction();
}
@@ -76,15 +63,10 @@ public class ObjectAdapterAccessHelper {
public OneToOneAssociation getPropertyThatIsVisibleForIntent(
final String propertyId, final AccessIntent intent) {
- val propertyHandle = ManagedProperty
- .getPropertyHandle(managedObject, propertyId)
- .checkVisibility(where);
-
- if(intent.isMutate()) {
- propertyHandle.checkUsability(where);
- }
-
- return propertyHandle
+ return PropertyInteraction
+ .start(managedObject, propertyId)
+ .checkVisibility(where)
+ .checkUsability(where, intent)
.getOrElseThrow(InteractionFailureHandler::onFailure)
.getProperty();
@@ -92,18 +74,14 @@ public class ObjectAdapterAccessHelper {
public OneToManyAssociation getCollectionThatIsVisibleForIntent(
final String collectionId, final AccessIntent intent) {
-
- val collectionHandle = ManagedCollection
- .getCollectionHandle(managedObject, collectionId)
- .checkVisibility(where);
-
- if(intent.isMutate()) {
- collectionHandle.checkUsability(where);
- }
-
- return collectionHandle
+
+ return CollectionInteraction
+ .start(managedObject, collectionId)
+ .checkVisibility(where)
+ .checkUsability(where, intent)
.getOrElseThrow(InteractionFailureHandler::onFailure)
.getCollection();
+
}