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/30 17:25:29 UTC

[isis] 01/09: ISIS-2340: share logic of ObjectAdapterAccessHelper/UpdateHelper (13)

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

commit 42a1d650cbb44ce18c7979a0c10dbf18813e6dbb
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sun Apr 26 11:46:20 2020 +0200

    ISIS-2340: share logic of ObjectAdapterAccessHelper/UpdateHelper (13)
---
 .../viewer/resources/DomainResourceHelper.java     |  2 +-
 .../viewer/resources/ObjectActionArgHelper.java    | 23 ++++++++++------------
 2 files changed, 11 insertions(+), 14 deletions(-)

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 8dfe4ef..befd24a 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
@@ -203,7 +203,7 @@ class DomainResourceHelper {
 
         val action = managedAction.getAction();
         val objectAdapter = this.objectAdapter;
-        val argHelper = new ObjectActionArgHelper(resourceContext, objectAdapter, action);
+        val argHelper = new ObjectActionArgHelper(resourceContext, managedAction);
         val argAdapters = argHelper.parseAndValidateArguments(arguments);
 
         if(resourceContext.isValidateOnly()) {
diff --git a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ObjectActionArgHelper.java b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ObjectActionArgHelper.java
index f0de770..9929406 100644
--- a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ObjectActionArgHelper.java
+++ b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ObjectActionArgHelper.java
@@ -28,33 +28,30 @@ import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
+import org.apache.isis.core.metamodel.spec.interaction.ManagedAction;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse;
 import org.apache.isis.viewer.restfulobjects.rendering.IResourceContext;
 import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
 
+import lombok.RequiredArgsConstructor;
 import lombok.val;
 
 /**
  * Utility class that encapsulates the logic for parsing arguments to be invoked by an
  * {@link ObjectAction}.
  */
+@RequiredArgsConstructor
 public class ObjectActionArgHelper {
 
     private final IResourceContext resourceContext;
-    private final ManagedObject objectAdapter;
-    private final ObjectAction action;
-
-    public ObjectActionArgHelper(
-            final IResourceContext resourceContext,
-            final ManagedObject objectAdapter,
-            final ObjectAction action) {
-        this.resourceContext = resourceContext;
-        this.objectAdapter = objectAdapter;
-        this.action = action;
-    }
+    private final ManagedAction managedAction;
 
     public List<ManagedObject> parseAndValidateArguments(final JsonRepresentation arguments) {
+        
+        val action = managedAction.getAction();
+        val owner = managedAction.getOwner();
+        
         final List<JsonRepresentation> argList = argListFor(action, arguments);
 
         final List<ManagedObject> argAdapters = _Lists.newArrayList();
@@ -70,7 +67,7 @@ public class ObjectActionArgHelper {
                 // validate individual arg
                 final ObjectActionParameter parameter = parameters.getElseFail(i);
                 final Object argPojo = argAdapter!=null?argAdapter.getPojo():null;
-                final String reasonNotValid = parameter.isValid(objectAdapter, argPojo, InteractionInitiatedBy.USER);
+                final String reasonNotValid = parameter.isValid(owner, argPojo, InteractionInitiatedBy.USER);
                 if (reasonNotValid != null) {
                     argRepr.mapPut("invalidReason", reasonNotValid);
                     valid = false;
@@ -83,7 +80,7 @@ public class ObjectActionArgHelper {
 
         // validate entire argument set
         final Consent consent = action.isArgumentSetValid(
-                objectAdapter, argAdapters, InteractionInitiatedBy.USER);
+                owner, argAdapters, InteractionInitiatedBy.USER);
         if (consent.isVetoed()) {
             arguments.mapPut("x-ro-invalidReason", consent.getReason());
             valid = false;