You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by je...@apache.org on 2016/04/19 13:51:35 UTC

svn commit: r1739911 - in /chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src: main/java/org/apache/chemistry/opencmis/inmemory/server/ test/java/org/apache/chemistry/opencmis/inmemory/

Author: jens
Date: Tue Apr 19 11:51:35 2016
New Revision: 1739911

URL: http://svn.apache.org/viewvc?rev=1739911&view=rev
Log:
Avoid inconsistent state in InMemory server when creating a document in checked-out state (by not allowing this)

Modified:
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryObjectServiceImpl.java
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/VersioningTest.java

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryObjectServiceImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryObjectServiceImpl.java?rev=1739911&r1=1739910&r2=1739911&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryObjectServiceImpl.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryObjectServiceImpl.java Tue Apr 19 11:51:35 2016
@@ -894,7 +894,12 @@ public class InMemoryObjectServiceImpl e
         // validate content allowed
         TypeValidator.validateContentAllowed((DocumentTypeDefinition) typeDef, null != contentStream);
 
+        // Check that documents are not created as checked-out as this results in an inconsistent state
         TypeValidator.validateVersionStateForCreate((DocumentTypeDefinition) typeDef, versioningState);
+        if (typeDef instanceof DocumentTypeDefinition && ((DocumentTypeDefinition) typeDef).isVersionable() 
+        		&& null != versioningState && versioningState.equals(VersioningState.CHECKEDOUT)) {
+            throw new CmisConstraintException("Creating of checked-out documents is not supported.");
+        }
 
         // set properties that are not set but have a default:
         Map<String, PropertyData<?>> propMapNew = setDefaultProperties(typeDef, propMap);

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/VersioningTest.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/VersioningTest.java?rev=1739911&r1=1739910&r2=1739911&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/VersioningTest.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/VersioningTest.java Tue Apr 19 11:51:35 2016
@@ -98,7 +98,12 @@ public class VersioningTest extends Abst
 
     @Test
     public void testCreateVersionedDocumentCheckedOut() {
-        createVersionedDocument(VersioningState.CHECKEDOUT);
+        try {
+            createVersionedDocument(VersioningState.CHECKEDOUT);
+            fail("creating a document of a versionable type with state VersioningState.CHECKEDOUT should fail.");
+        } catch (Exception e) {
+            assertEquals(CmisConstraintException.class, e.getClass());
+        }
     }
 
     @Test