]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
DRYD-90: Added support for getting a list result and payload result from Service...
authorremillet <remillet@yahoo.com>
Fri, 24 Feb 2017 07:25:11 +0000 (23:25 -0800)
committerremillet <remillet@yahoo.com>
Fri, 24 Feb 2017 07:25:11 +0000 (23:25 -0800)
services/common/src/main/java/org/collectionspace/services/common/NuxeoBasedResource.java
services/servicegroup/service/src/main/java/org/collectionspace/services/servicegroup/ServiceGroupResource.java
services/servicegroup/service/src/main/java/org/collectionspace/services/servicegroup/nuxeo/ServiceGroupDocumentModelHandler.java

index 579d228bd926ecae939fad0bd490c655f78fb886..429b1c42fc5d8ebfe1663652ed98119dcabbf6b0 100644 (file)
@@ -332,7 +332,7 @@ public abstract class NuxeoBasedResource
     @GET
     @Path("{csid}")
     public byte[] get(
-            @Context Request request,                  
+            @Context Request request,
             @Context UriInfo uriInfo,
             @PathParam("csid") String csid) {
        uriInfo = new UriInfoWrapper(uriInfo);
@@ -352,6 +352,39 @@ public abstract class NuxeoBasedResource
 
         return result.getBytes();
     }
+    
+    /**
+     * Call this method only from other resources (like the Service Groups resource) obtained from the global resource map (ResourceMap).  If the a parent
+     * context exists and it has an open Nuxeo repository session, we will use it; otherwise, we will create a new one.
+     * 
+     * @param parentCtx
+     * @param csid
+     * @return
+     */
+    public PoxPayloadOut getWithParentCtx(ServiceContext<PoxPayloadIn, PoxPayloadOut> parentCtx,
+               String csid) {
+       PoxPayloadOut result = null;
+       
+        ensureCSID(csid, READ);
+        try {
+            RemoteServiceContext<PoxPayloadIn, PoxPayloadOut> ctx = (RemoteServiceContext<PoxPayloadIn, PoxPayloadOut>) createServiceContext();
+            if (parentCtx != null && parentCtx.getCurrentRepositorySession() != null) {
+               ctx.setCurrentRepositorySession(parentCtx.getCurrentRepositorySession()); // Reuse the current repo session if one exists
+            }
+            
+            result = get(csid, ctx);// ==> CALL implementation method, which subclasses may override.
+            
+            if (result == null) {
+                Response response = Response.status(Response.Status.NOT_FOUND).entity(
+                        ServiceMessages.READ_FAILED + ServiceMessages.resourceNotFoundMsg(csid)).type("text/plain").build();
+                throw new CSWebApplicationException(response);
+            }
+        } catch (Exception e) {
+            throw bigReThrow(e, ServiceMessages.READ_FAILED, csid);
+        }
+
+       return result;
+    }
 
     protected PoxPayloadOut get(@PathParam("csid") String csid,
             ServiceContext<PoxPayloadIn, PoxPayloadOut> ctx) throws Exception {
index 72e2a552b639127436da20d0307cbf9dabe47c12..7361a90c3592bb11b5a6b1b3c620ad7c93fc4558 100644 (file)
@@ -302,6 +302,5 @@ public class ServiceGroupResource extends AbstractCollectionSpaceResourceImpl<Po
         }
 
         return result.getBytes();
-
     }
 }
index 58febc704fe3d4b3ee128bbcfbe6234cac72714b..32b319b23b0c6ea00b105124046ff10d6c4d605e 100644 (file)
@@ -104,8 +104,7 @@ public class ServiceGroupDocumentModelHandler
                 String serviceName = ServiceBindingUtils.getServiceNameFromObjectName(bindingReader, ctx.getTenantId(),
                                docModel.getDocumentType().getName());
                 NuxeoBasedResource resource = (NuxeoBasedResource) ctx.getResourceMap().get(serviceName);
-                resource.hashCode();
-
+                result = resource.getWithParentCtx(ctx, csid);
                } catch (DocumentException de) {
                        throw de;
                } catch (Exception e) {