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 {