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 2015/11/11 00:08:10 UTC

[6/6] isis git commit: ISIS-1244: extended RepresentationService to specify intent when render object (either JUST_CREATED or ALREADY_PERSISTENT)

ISIS-1244: extended RepresentationService to specify intent when render object (either JUST_CREATED or ALREADY_PERSISTENT)


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

Branch: refs/heads/master
Commit: a7d82eb3864e4f0ad205249b329479c6010cda05
Parents: eb5dae4
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Tue Nov 10 23:07:28 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Tue Nov 10 23:07:28 2015 +0000

----------------------------------------------------------------------
 .../service/RepresentationService.java          | 23 +++++++++++++++++++-
 .../RepresentationServiceForRestfulObjects.java | 13 +++++++++++
 .../DomainObjectResourceServerside.java         |  7 ++++--
 .../server/resources/DomainResourceHelper.java  | 15 ++++++++++++-
 .../server/resources/ResourceAbstract.java      |  1 +
 5 files changed, 55 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/a7d82eb3/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationService.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationService.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationService.java
index b49fcf4..30fa1b7 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationService.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationService.java
@@ -47,12 +47,33 @@ import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndPr
  */
 public interface RepresentationService {
 
+    public enum Intent {
+        /**
+         * ie return a 201
+         */
+        JUST_CREATED,
+        /**
+         * ie return a 200
+         */
+        ALREADY_PERSISTENT
+    }
+
+    /**
+     * @deprecated - use {@link #objectRepresentation(Context, ObjectAdapter, Intent)}.
+     */
+    @Deprecated
     @Programmatic
     Response objectRepresentation(
             Context resourceContext,
             ObjectAdapter objectAdapter);
 
     @Programmatic
+    Response objectRepresentation(
+            Context resourceContext,
+            ObjectAdapter objectAdapter,
+            Intent intent);
+
+    @Programmatic
     Response propertyDetails(
             Context rendererContext,
             ObjectAndProperty objectAndProperty,
@@ -87,7 +108,7 @@ public interface RepresentationService {
     public static interface Context4 extends Context3, RendererContext4 {
         InteractionInitiatedBy getInteractionInitiatedBy();
     }
-    public static interface Context5 extends Context3, RendererContext5 {
+    public static interface Context5 extends Context4, RendererContext5 {
         public SpecificationLoader getSpecificationLoader();
         public ServicesInjector getServicesInjector();
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/a7d82eb3/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationServiceForRestfulObjects.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationServiceForRestfulObjects.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationServiceForRestfulObjects.java
index adaad37..7ca8374 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationServiceForRestfulObjects.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationServiceForRestfulObjects.java
@@ -60,6 +60,15 @@ public class RepresentationServiceForRestfulObjects implements RepresentationSer
     public Response objectRepresentation(
             final Context rendererContext,
             final ObjectAdapter objectAdapter) {
+        return objectRepresentation(rendererContext, objectAdapter, Intent.ALREADY_PERSISTENT);
+    }
+
+    @Override
+    @Programmatic
+    public Response objectRepresentation(
+            final Context rendererContext,
+            final ObjectAdapter objectAdapter,
+            final Intent intent) {
 
         ResponseBuilder responseBuilder = null;
 
@@ -90,6 +99,10 @@ public class RepresentationServiceForRestfulObjects implements RepresentationSer
             }
         }
 
+        if(intent == Intent.JUST_CREATED) {
+            responseBuilder.status(Response.Status.CREATED);
+        }
+
         return buildResponse(responseBuilder);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a7d82eb3/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 8531a59..75691d9 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
@@ -47,6 +47,7 @@ import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpS
 import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainObjectResource;
 import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
 import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.MemberReprMode;
+import org.apache.isis.viewer.restfulobjects.rendering.service.RepresentationService;
 import org.apache.isis.viewer.restfulobjects.rendering.service.conneg.PrettyPrinting;
 import org.apache.isis.viewer.restfulobjects.rendering.util.Util;
 
@@ -99,9 +100,10 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
         }
         getResourceContext().getPersistenceSession().makePersistentInTransaction(objectAdapter);
 
-        return getDomainResourceHelper(objectAdapter).objectRepresentation();
+        return getDomainResourceHelper(objectAdapter).objectRepresentation(RepresentationService.Intent.JUST_CREATED);
     }
 
+
     // //////////////////////////////////////////////////////////
     // domain object
     // //////////////////////////////////////////////////////////
@@ -123,10 +125,11 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
         return getDomainResourceHelper(objectAdapter).objectRepresentation();
     }
 
-    private DomainResourceHelper getDomainResourceHelper(ObjectAdapter objectAdapter) {
+    private DomainResourceHelper getDomainResourceHelper(final ObjectAdapter objectAdapter) {
         return new DomainResourceHelper(getResourceContext(), objectAdapter);
     }
 
+
     @Override
     @PUT
     @Path("/{domainType}/{instanceId}")

http://git-wip-us.apache.org/repos/asf/isis/blob/a7d82eb3/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
index 1f652d9..da73995 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
@@ -214,9 +214,22 @@ public class DomainResourceHelper {
     /**
      * Simply delegates to the {@link org.apache.isis.viewer.restfulobjects.rendering.service.RepresentationService} to
      * render a representation of the object.
+     *
+     * @deprecated - use {@link #objectRepresentation(RepresentationService.Intent)}
      */
+    @Deprecated
     public Response objectRepresentation() {
-        return representationService.objectRepresentation(representationServiceContext, objectAdapter);
+        return representationService
+                .objectRepresentation(representationServiceContext, objectAdapter);
+    }
+
+    /**
+     * Simply delegates to the {@link org.apache.isis.viewer.restfulobjects.rendering.service.RepresentationService} to
+     * render a representation of the object.
+     */
+    public Response objectRepresentation(final RepresentationService.Intent intent) {
+        return representationService
+                .objectRepresentation(representationServiceContext, objectAdapter, intent);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/isis/blob/a7d82eb3/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 46c3e58..f8c28ee 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
@@ -124,6 +124,7 @@ public abstract class ResourceAbstract {
         return resourceContext;
     }
 
+
     // //////////////////////////////////////////////////////////////
     // Isis integration
     // //////////////////////////////////////////////////////////////