You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by fm...@apache.org on 2011/11/08 22:24:42 UTC

svn commit: r1199466 - /chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/

Author: fmui
Date: Tue Nov  8 21:24:42 2011
New Revision: 1199466

URL: http://svn.apache.org/viewvc?rev=1199466&view=rev
Log:
added browser binding versioning code

Modified:
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/BrowserBindingUtils.java
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/CmisBrowserBindingServlet.java
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/ObjectService.java
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/VersioningService.java

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/BrowserBindingUtils.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/BrowserBindingUtils.java?rev=1199466&r1=1199465&r2=1199466&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/BrowserBindingUtils.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/BrowserBindingUtils.java Tue Nov  8 21:24:42 2011
@@ -100,6 +100,9 @@ public class BrowserBindingUtils {
     public static final String CMISACTION_DELETE = "delete";
     public static final String CMISACTION_DELETE_TREE = "deleteTree";
     public static final String CMISACTION_QUERY = "query";
+    public static final String CMISACTION_CHECK_OUT = "checkOut";
+    public static final String CMISACTION_CANCEL_CHECK_OUT = "cancelCheckOut";
+    public static final String CMISACTION_CHECK_IN = "checkIn";
 
     public static final String PARAM_SELECTOR = "selector";
     public static final String PARAM_TRANSACTION = "transaction";
@@ -430,6 +433,11 @@ public class BrowserBindingUtils {
         return result;
     }
 
+    protected static ObjectData getSimpleObject(CmisService service, String repositoryId, String objectId) {
+        return service.getObject(repositoryId, objectId, null, false, IncludeRelationships.NONE, "cmis:none", false,
+                false, null);
+    }
+
     /**
      * Transforms the transaction into a cookie name.
      */

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/CmisBrowserBindingServlet.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/CmisBrowserBindingServlet.java?rev=1199466&r1=1199465&r2=1199466&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/CmisBrowserBindingServlet.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/CmisBrowserBindingServlet.java Tue Nov  8 21:24:42 2011
@@ -19,6 +19,9 @@
 package org.apache.chemistry.opencmis.server.impl.browser;
 
 import static org.apache.chemistry.opencmis.commons.impl.Constants.PARAM_OBJECT_ID;
+import static org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.CMISACTION_CANCEL_CHECK_OUT;
+import static org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.CMISACTION_CHECK_IN;
+import static org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.CMISACTION_CHECK_OUT;
 import static org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.CMISACTION_CREATE_DOCUMENT;
 import static org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.CMISACTION_CREATE_FOLDER;
 import static org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.CMISACTION_DELETE;
@@ -165,6 +168,11 @@ public class CmisBrowserBindingServlet e
                     "deleteContentStream");
             rootDispatcher.addResource(CMISACTION_DELETE, METHOD_POST, ObjectService.class, "deleteObject");
             rootDispatcher.addResource(CMISACTION_DELETE_TREE, METHOD_POST, ObjectService.class, "deleteTree");
+            rootDispatcher.addResource(CMISACTION_CHECK_OUT, METHOD_POST, VersioningService.class, "checkOut");
+            rootDispatcher.addResource(CMISACTION_CANCEL_CHECK_OUT, METHOD_POST, VersioningService.class,
+                    "cancelCheckOut");
+            rootDispatcher.addResource(CMISACTION_CHECK_IN, METHOD_POST, VersioningService.class, "checkIn");
+
         } catch (NoSuchMethodException e) {
             LOG.error("Cannot initialize dispatcher!", e);
         }

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/ObjectService.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/ObjectService.java?rev=1199466&r1=1199465&r2=1199466&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/ObjectService.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/ObjectService.java Tue Nov  8 21:24:42 2011
@@ -40,6 +40,7 @@ import static org.apache.chemistry.openc
 import static org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.createPolicies;
 import static org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.createProperties;
 import static org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.createRemoveAcl;
+import static org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.getSimpleObject;
 import static org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.setCookie;
 import static org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.writeEmpty;
 import static org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.writeJSON;
@@ -96,8 +97,8 @@ public final class ObjectService {
         VersioningState versioningState = getEnumParameter(request, PARAM_VERSIONIG_STATE, VersioningState.class);
         String transaction = getStringParameter(request, PARAM_TRANSACTION);
 
+        // execute
         ControlParser cp = new ControlParser(request);
-
         TypeCache typeCache = new TypeCache(repositoryId, service);
 
         String newObjectId = service.createDocument(repositoryId, createProperties(cp, null, typeCache), folderId,
@@ -109,6 +110,7 @@ public final class ObjectService {
             throw new CmisRuntimeException("New document is null!");
         }
 
+        // return object
         JSONObject jsonObject = JSONConverter.convert(object, typeCache);
 
         response.setStatus(HttpServletResponse.SC_CREATED);
@@ -139,6 +141,7 @@ public final class ObjectService {
             throw new CmisRuntimeException("New folder is null!");
         }
 
+        // return object
         JSONObject jsonObject = JSONConverter.convert(object, typeCache);
 
         response.setStatus(HttpServletResponse.SC_CREATED);
@@ -175,6 +178,7 @@ public final class ObjectService {
             throw new CmisRuntimeException("Object is null!");
         }
 
+        // return object
         JSONObject jsonObject = JSONConverter.convert(object, typeCache);
 
         int status = HttpServletResponse.SC_OK;
@@ -212,6 +216,7 @@ public final class ObjectService {
             throw new CmisRuntimeException("Properties are null!");
         }
 
+        // return object
         TypeCache typeCache = new TypeCache(repositoryId, service);
         JSONObject jsonObject = JSONConverter.convert(properties, objectId, typeCache);
 
@@ -251,6 +256,7 @@ public final class ObjectService {
             throw new CmisRuntimeException("Object is null!");
         }
 
+        // return object
         TypeCache typeCache = new TypeCache(repositoryId, service);
         JSONObject jsonObject = JSONConverter.convert(object, typeCache);
 
@@ -383,16 +389,16 @@ public final class ObjectService {
         Holder<String> changeTokenHolder = (changeToken == null ? null : new Holder<String>(changeToken));
         service.deleteContentStream(repositoryId, objectIdHolder, changeTokenHolder, null);
 
-        // set headers
         String newObjectId = (objectIdHolder.getValue() == null ? objectId : objectIdHolder.getValue());
 
-        response.setStatus(HttpServletResponse.SC_OK);
-
         ObjectData object = getSimpleObject(service, repositoryId, newObjectId);
         if (object == null) {
             throw new CmisRuntimeException("Object is null!");
         }
 
+        response.setStatus(HttpServletResponse.SC_OK);
+
+        // return object
         TypeCache typeCache = new TypeCache(repositoryId, service);
         JSONObject jsonObject = JSONConverter.convert(object, typeCache);
 
@@ -417,25 +423,21 @@ public final class ObjectService {
 
         String newObjectId = (objectIdHolder.getValue() == null ? objectId : objectIdHolder.getValue());
 
+        ObjectData object = getSimpleObject(service, repositoryId, newObjectId);
+        if (object == null) {
+            throw new CmisRuntimeException("Object is null!");
+        }
+
         // set headers
         String location = compileUrl(compileBaseUrl(request, repositoryId), RESOURCE_CONTENT, newObjectId);
 
         response.setStatus(HttpServletResponse.SC_CREATED);
         response.setHeader("Location", location);
 
-        ObjectData object = getSimpleObject(service, repositoryId, newObjectId);
-        if (object == null) {
-            throw new CmisRuntimeException("Object is null!");
-        }
-
+        // return object
         TypeCache typeCache = new TypeCache(repositoryId, service);
         JSONObject jsonObject = JSONConverter.convert(object, typeCache);
 
         writeJSON(jsonObject, request, response);
     }
-
-    protected static ObjectData getSimpleObject(CmisService service, String repositoryId, String objectId) {
-        return service.getObject(repositoryId, objectId, null, false, IncludeRelationships.NONE, "cmis:none", false,
-                false, null);
-    }
 }

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/VersioningService.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/VersioningService.java?rev=1199466&r1=1199465&r2=1199466&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/VersioningService.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/VersioningService.java Tue Nov  8 21:24:42 2011
@@ -19,8 +19,20 @@
 package org.apache.chemistry.opencmis.server.impl.browser;
 
 import static org.apache.chemistry.opencmis.commons.impl.Constants.PARAM_ALLOWABLE_ACTIONS;
+import static org.apache.chemistry.opencmis.commons.impl.Constants.PARAM_CHECKIN_COMMENT;
 import static org.apache.chemistry.opencmis.commons.impl.Constants.PARAM_FILTER;
+import static org.apache.chemistry.opencmis.commons.impl.Constants.PARAM_MAJOR;
 import static org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.CONTEXT_OBJECT_ID;
+import static org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.PARAM_TRANSACTION;
+import static org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.createAddAcl;
+import static org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.createContentStream;
+import static org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.createCookieValue;
+import static org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.createPolicies;
+import static org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.createProperties;
+import static org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.createRemoveAcl;
+import static org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.getSimpleObject;
+import static org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.setCookie;
+import static org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.writeEmpty;
 import static org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.writeJSON;
 import static org.apache.chemistry.opencmis.server.shared.HttpUtils.getBooleanParameter;
 import static org.apache.chemistry.opencmis.server.shared.HttpUtils.getStringParameter;
@@ -34,8 +46,10 @@ import org.apache.chemistry.opencmis.com
 import org.apache.chemistry.opencmis.commons.exceptions.CmisRuntimeException;
 import org.apache.chemistry.opencmis.commons.server.CallContext;
 import org.apache.chemistry.opencmis.commons.server.CmisService;
+import org.apache.chemistry.opencmis.commons.spi.Holder;
 import org.apache.chemistry.opencmis.server.impl.browser.json.JSONConverter;
 import org.json.simple.JSONArray;
+import org.json.simple.JSONObject;
 
 /**
  * Versioning Service operations.
@@ -45,6 +59,87 @@ public class VersioningService {
     private VersioningService() {
     }
 
+    /**
+     * checkOut.
+     */
+    public static void checkOut(CallContext context, CmisService service, String repositoryId,
+            HttpServletRequest request, HttpServletResponse response) throws Exception {
+        // get parameters
+        String objectId = (String) context.get(CONTEXT_OBJECT_ID);
+        String transaction = getStringParameter(request, PARAM_TRANSACTION);
+
+        // execute
+        Holder<String> checkOutId = new Holder<String>(objectId);
+        service.checkOut(repositoryId, checkOutId, null, null);
+
+        ObjectData object = getSimpleObject(service, repositoryId, checkOutId.getValue());
+        if (object == null) {
+            throw new CmisRuntimeException("PWC is null!");
+        }
+
+        // return object
+        TypeCache typeCache = new TypeCache(repositoryId, service);
+        JSONObject jsonObject = JSONConverter.convert(object, typeCache);
+
+        response.setStatus(HttpServletResponse.SC_CREATED);
+        setCookie(request, response, repositoryId, transaction,
+                createCookieValue(HttpServletResponse.SC_CREATED, object.getId(), null, null));
+
+        writeJSON(jsonObject, request, response);
+    }
+
+    /**
+     * checkOut.
+     */
+    public static void cancelCheckOut(CallContext context, CmisService service, String repositoryId,
+            HttpServletRequest request, HttpServletResponse response) throws Exception {
+        // get parameters
+        String objectId = (String) context.get(CONTEXT_OBJECT_ID);
+
+        // execute
+        service.cancelCheckOut(repositoryId, objectId, null);
+
+        response.setStatus(HttpServletResponse.SC_OK);
+        writeEmpty(request, response);
+    }
+
+    /**
+     * checkIn.
+     */
+    public static void checkIn(CallContext context, CmisService service, String repositoryId,
+            HttpServletRequest request, HttpServletResponse response) throws Exception {
+        // get parameters
+        String objectId = (String) context.get(CONTEXT_OBJECT_ID);
+        Boolean major = getBooleanParameter(request, PARAM_MAJOR);
+        String checkinComment = getStringParameter(request, PARAM_CHECKIN_COMMENT);
+        String transaction = getStringParameter(request, PARAM_TRANSACTION);
+
+        // execute
+        ControlParser cp = new ControlParser(request);
+        TypeCache typeCache = new TypeCache(repositoryId, service);
+        Holder<String> objectIdHolder = new Holder<String>(objectId);
+
+        service.checkIn(repositoryId, objectIdHolder, major, createProperties(cp, null, typeCache),
+                createContentStream(request), checkinComment, createPolicies(cp), createAddAcl(cp),
+                createRemoveAcl(cp), null);
+
+        String newObjectId = (objectIdHolder.getValue() == null ? objectId : objectIdHolder.getValue());
+
+        ObjectData object = getSimpleObject(service, repositoryId, newObjectId);
+        if (object == null) {
+            throw new CmisRuntimeException("New version is null!");
+        }
+
+        // return object
+        JSONObject jsonObject = JSONConverter.convert(object, typeCache);
+
+        response.setStatus(HttpServletResponse.SC_CREATED);
+        setCookie(request, response, repositoryId, transaction,
+                createCookieValue(HttpServletResponse.SC_CREATED, object.getId(), null, null));
+
+        writeJSON(jsonObject, request, response);
+    }
+
     @SuppressWarnings("unchecked")
     public static void getAllVersions(CallContext context, CmisService service, String repositoryId,
             HttpServletRequest request, HttpServletResponse response) throws Exception {