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 2011/10/19 23:14:53 UTC

svn commit: r1186496 - /chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/ObjectStoreImpl.java

Author: jens
Date: Wed Oct 19 21:14:52 2011
New Revision: 1186496

URL: http://svn.apache.org/viewvc?rev=1186496&view=rev
Log:
fix a bug in deleteTree, consider allVersions parmeter

Modified:
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/ObjectStoreImpl.java

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/ObjectStoreImpl.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/storedobj/impl/ObjectStoreImpl.java?rev=1186496&r1=1186495&r2=1186496&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/ObjectStoreImpl.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/ObjectStoreImpl.java Wed Oct 19 21:14:52 2011
@@ -158,8 +158,7 @@ public class ObjectStoreImpl implements 
     }
 
     public void deleteObject(String objectId, Boolean allVersions, String user) {
-        String path = objectId; // currently the same
-        StoredObject obj = fStoredObjectMap.get(path);
+        StoredObject obj = fStoredObjectMap.get(objectId);
 
         if (null == obj) {
             throw new RuntimeException("Cannot delete object with id  " + objectId + ". Object does not exist.");
@@ -170,13 +169,24 @@ public class ObjectStoreImpl implements 
         } else if (obj instanceof DocumentVersion) {
             DocumentVersion vers = (DocumentVersion) obj;
             VersionedDocument parentDoc = vers.getParentDocument();
-            fStoredObjectMap.remove(path);
-            boolean otherVersionsExist = vers.getParentDocument().deleteVersion(vers);
-            if (!otherVersionsExist) {
+            boolean otherVersionsExists;
+            if (allVersions != null && allVersions) {
+                otherVersionsExists = false;
+                List<DocumentVersion> allVers = parentDoc.getAllVersions();
+                for (DocumentVersion ver : allVers) {
+                    parentDoc.deleteVersion(ver);
+                    fStoredObjectMap.remove(ver.getId());
+                }
+            } else {
+                fStoredObjectMap.remove(objectId);
+                otherVersionsExists = parentDoc.deleteVersion(vers);
+            }
+            
+            if (!otherVersionsExists) {
                 fStoredObjectMap.remove(parentDoc.getId());
             }
         } else {
-            fStoredObjectMap.remove(path);
+            fStoredObjectMap.remove(objectId);
         }
     }