You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2016/08/23 21:09:27 UTC

[1/2] isis git commit: ISIS-1472: set Command#Executor when invoking an action or editing a property.

Repository: isis
Updated Branches:
  refs/heads/maint-1.13.1 f264a7975 -> a8837d433


ISIS-1472: set Command#Executor when invoking an action or editing a property.


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/32e01615
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/32e01615
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/32e01615

Branch: refs/heads/maint-1.13.1
Commit: 32e01615381e9a3721f61b3b08117d93605fcac6
Parents: f264a79
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Tue Jul 19 15:56:25 2016 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Tue Aug 23 21:54:27 2016 +0100

----------------------------------------------------------------------
 .../server/resources/DomainObjectResourceServerside.java | 11 +++++++++++
 .../resources/DomainServiceResourceServerside.java       |  9 ++++++++-
 .../server/resources/ResourceAbstract.java               |  6 ++++++
 3 files changed, 25 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/32e01615/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainObjectResourceServerside.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainObjectResourceServerside.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainObjectResourceServerside.java
index 8948555..6afa9f4 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainObjectResourceServerside.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainObjectResourceServerside.java
@@ -31,6 +31,7 @@ import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
 import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.applib.services.command.Command;
 import org.apache.isis.core.commons.url.UrlEncodingUtils;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.Consent;
@@ -206,6 +207,8 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
     public Response modifyProperty(@PathParam("domainType") String domainType, @PathParam("instanceId") final String instanceId, @PathParam("propertyId") final String propertyId, final InputStream body) {
         init(Where.OBJECT_FORMS, RepresentationService.Intent.NOT_APPLICABLE);
 
+        setCommandExecutor(Command.Executor.USER);
+
         final ObjectAdapter objectAdapter = getObjectAdapterElseThrowNotFound(domainType, instanceId);
         final DomainResourceHelper helper = newDomainResourceHelper(objectAdapter);
         final ObjectAdapterAccessHelper accessHelper = new ObjectAdapterAccessHelper(getResourceContext(), objectAdapter);
@@ -243,6 +246,8 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
     public Response clearProperty(@PathParam("domainType") String domainType, @PathParam("instanceId") final String instanceId, @PathParam("propertyId") final String propertyId) {
         init(Where.OBJECT_FORMS, RepresentationService.Intent.NOT_APPLICABLE);
 
+        setCommandExecutor(Command.Executor.USER);
+
         final ObjectAdapter objectAdapter = getObjectAdapterElseThrowNotFound(domainType, instanceId);
         final DomainResourceHelper helper = newDomainResourceHelper(objectAdapter);
         final ObjectAdapterAccessHelper accessHelper = new ObjectAdapterAccessHelper(getResourceContext(), objectAdapter);
@@ -454,6 +459,8 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
         final String urlUnencodedQueryString = UrlEncodingUtils.urlDecodeNullSafe(xIsisUrlEncodedQueryString != null? xIsisUrlEncodedQueryString: httpServletRequest.getQueryString());
         init(RepresentationType.ACTION_RESULT, Where.STANDALONE_TABLES, RepresentationService.Intent.NOT_APPLICABLE, urlUnencodedQueryString);
 
+        setCommandExecutor(Command.Executor.USER);
+
         final JsonRepresentation arguments = getResourceContext().getQueryStringAsJsonRepr();
 
         final ObjectAdapter objectAdapter = getObjectAdapterElseThrowNotFound(domainType, instanceId);
@@ -479,6 +486,8 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
 
         init(RepresentationType.ACTION_RESULT, Where.STANDALONE_TABLES, RepresentationService.Intent.NOT_APPLICABLE, body);
 
+        setCommandExecutor(Command.Executor.USER);
+
         final JsonRepresentation arguments = getResourceContext().getQueryStringAsJsonRepr();
         
         final ObjectAdapter objectAdapter = getObjectAdapterElseThrowNotFound(domainType, instanceId);
@@ -504,6 +513,8 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
         init(RepresentationType.ACTION_RESULT, Where.STANDALONE_TABLES, RepresentationService.Intent.NOT_APPLICABLE,
                 body);
 
+        setCommandExecutor(Command.Executor.USER);
+
         final JsonRepresentation arguments = getResourceContext().getQueryStringAsJsonRepr();
         
         final ObjectAdapter objectAdapter = getObjectAdapterElseThrowNotFound(domainType, instanceId);

http://git-wip-us.apache.org/repos/asf/isis/blob/32e01615/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainServiceResourceServerside.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainServiceResourceServerside.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainServiceResourceServerside.java
index 4fcad7f..010785c 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainServiceResourceServerside.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainServiceResourceServerside.java
@@ -36,6 +36,7 @@ import com.google.common.collect.Lists;
 
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.applib.services.command.Command;
 import org.apache.isis.core.commons.url.UrlEncodingUtils;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facets.object.domainservice.DomainServiceFacet;
@@ -201,10 +202,10 @@ public class DomainServiceResourceServerside extends ResourceAbstract implements
             final @PathParam("actionId") String actionId,
             final @QueryParam("x-isis-querystring") String xIsisUrlEncodedQueryString) {
 
-
         final String urlUnencodedQueryString = UrlEncodingUtils.urlDecodeNullSafe(xIsisUrlEncodedQueryString != null? xIsisUrlEncodedQueryString: httpServletRequest.getQueryString());
         init(RepresentationType.ACTION_RESULT, Where.STANDALONE_TABLES, RepresentationService.Intent.NOT_APPLICABLE, urlUnencodedQueryString);
 
+        setCommandExecutor(Command.Executor.USER);
 
         final JsonRepresentation arguments = getResourceContext().getQueryStringAsJsonRepr();
         
@@ -230,6 +231,8 @@ public class DomainServiceResourceServerside extends ResourceAbstract implements
             final InputStream body) {
         init(RepresentationType.ACTION_RESULT, Where.STANDALONE_TABLES, RepresentationService.Intent.NOT_APPLICABLE, body);
 
+        setCommandExecutor(Command.Executor.USER);
+
         final JsonRepresentation arguments = getResourceContext().getQueryStringAsJsonRepr();
         
         final ObjectAdapter serviceAdapter = getServiceAdapter(serviceId);
@@ -250,6 +253,8 @@ public class DomainServiceResourceServerside extends ResourceAbstract implements
     public Response invokeAction(@PathParam("serviceId") final String serviceId, @PathParam("actionId") final String actionId, final InputStream body) {
         init(RepresentationType.ACTION_RESULT, Where.STANDALONE_TABLES, RepresentationService.Intent.NOT_APPLICABLE, body);
 
+        setCommandExecutor(Command.Executor.USER);
+
         final JsonRepresentation arguments = getResourceContext().getQueryStringAsJsonRepr();
         
         final ObjectAdapter serviceAdapter = getServiceAdapter(serviceId);
@@ -268,4 +273,6 @@ public class DomainServiceResourceServerside extends ResourceAbstract implements
     }
 
 
+
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/32e01615/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
index 9911d63..8806959 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
@@ -31,6 +31,8 @@ import javax.ws.rs.core.UriInfo;
 import javax.ws.rs.ext.Providers;
 
 import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.applib.services.command.Command;
+import org.apache.isis.applib.services.command.CommandContext;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.url.UrlEncodingUtils;
@@ -129,6 +131,10 @@ public abstract class ResourceAbstract {
     }
 
 
+    protected void setCommandExecutor(Command.Executor executor) {
+        getServicesInjector().lookupServiceElseFail(CommandContext.class).getCommand().setExecutor(executor);
+    }
+
     // //////////////////////////////////////////////////////////////
     // Isis integration
     // //////////////////////////////////////////////////////////////


[2/2] isis git commit: ISIS-1477: add null checking in case there are no parameters in the DTO (as appears to be the case for 0-arg commands).

Posted by da...@apache.org.
ISIS-1477: add null checking in case there are no parameters in the DTO (as appears to be the case for 0-arg commands).


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/a8837d43
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/a8837d43
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/a8837d43

Branch: refs/heads/maint-1.13.1
Commit: a8837d433863b2d527016f0504e70b615a11c7fc
Parents: 32e0161
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Tue Aug 23 22:04:39 2016 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Tue Aug 23 22:04:39 2016 +0100

----------------------------------------------------------------------
 .../background/BackgroundCommandExecution.java  | 22 +++++++++++++-------
 1 file changed, 14 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/a8837d43/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java
index 2b3c8cb..6362647 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java
@@ -16,6 +16,7 @@
  */
 package org.apache.isis.core.runtime.services.background;
 
+import java.util.Collections;
 import java.util.List;
 
 import com.google.common.base.Function;
@@ -51,6 +52,7 @@ import org.apache.isis.schema.cmd.v1.ActionDto;
 import org.apache.isis.schema.cmd.v1.CommandDto;
 import org.apache.isis.schema.cmd.v1.MemberDto;
 import org.apache.isis.schema.cmd.v1.ParamDto;
+import org.apache.isis.schema.cmd.v1.ParamsDto;
 import org.apache.isis.schema.cmd.v1.PropertyDto;
 import org.apache.isis.schema.common.v1.InteractionType;
 import org.apache.isis.schema.common.v1.OidDto;
@@ -107,13 +109,6 @@ public abstract class BackgroundCommandExecution extends AbstractIsisSessionTemp
             final IsisTransactionManager transactionManager,
             final Command backgroundCommand) {
 
-
-        //
-        // TODO: need to generalize so that can invoke property modifications also.
-        //
-
-
-
         transactionManager.executeWithinTransaction(
                 backgroundCommand,
                 new TransactionalClosure() {
@@ -332,7 +327,7 @@ public abstract class BackgroundCommandExecution extends AbstractIsisSessionTemp
     }
 
     private ObjectAdapter[] argAdaptersFor(final ActionDto actionDto) {
-        final List<ParamDto> params = actionDto.getParameters().getParameter();
+        final List<ParamDto> params = paramDtosFrom(actionDto);
         final List<ObjectAdapter> args = Lists.newArrayList(
                 Iterables.transform(params, new Function<ParamDto, ObjectAdapter>() {
                     @Override
@@ -345,6 +340,17 @@ public abstract class BackgroundCommandExecution extends AbstractIsisSessionTemp
         return args.toArray(new ObjectAdapter[]{});
     }
 
+    private static List<ParamDto> paramDtosFrom(final ActionDto actionDto) {
+        final ParamsDto parameters = actionDto.getParameters();
+        if (parameters != null) {
+            final List<ParamDto> parameterList = parameters.getParameter();
+            if (parameterList != null) {
+                return parameterList;
+            }
+        }
+        return Collections.emptyList();
+    }
+
     // //////////////////////////////////////
 
     @javax.inject.Inject