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/18 22:52:55 UTC

svn commit: r1185851 - in /chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src: main/java/org/apache/chemistry/opencmis/inmemory/server/ main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/ test/java/or...

Author: jens
Date: Tue Oct 18 20:52:55 2011
New Revision: 1185851

URL: http://svn.apache.org/viewvc?rev=1185851&view=rev
Log:
ACL support in InMemory: change returning a proper default ACL after initialization [CMIS-414]

Modified:
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryAclService.java
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/InMemoryAcl.java
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/InMemoryServiceValidatorImpl.java
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/ObjectStoreImpl.java
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/AclPermissionsTest.java
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/AclServiceTest.java

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryAclService.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/InMemoryAclService.java?rev=1185851&r1=1185850&r2=1185851&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryAclService.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryAclService.java Tue Oct 18 20:52:55 2011
@@ -18,17 +18,9 @@
  */
 package org.apache.chemistry.opencmis.inmemory.server;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.chemistry.opencmis.commons.data.Ace;
 import org.apache.chemistry.opencmis.commons.data.Acl;
 import org.apache.chemistry.opencmis.commons.data.ExtensionsData;
 import org.apache.chemistry.opencmis.commons.enums.AclPropagation;
-import org.apache.chemistry.opencmis.commons.impl.dataobjects.AccessControlEntryImpl;
-import org.apache.chemistry.opencmis.commons.impl.dataobjects.AccessControlListImpl;
-import org.apache.chemistry.opencmis.commons.impl.dataobjects.AccessControlPrincipalDataImpl;
 import org.apache.chemistry.opencmis.commons.impl.server.ObjectInfoImpl;
 import org.apache.chemistry.opencmis.commons.server.CallContext;
 import org.apache.chemistry.opencmis.commons.server.ObjectInfoHandler;
@@ -50,7 +42,7 @@ public class InMemoryAclService extends 
 
     public Acl getAcl(CallContext context, String repositoryId, String objectId, Boolean onlyBasicPermissions,
             ExtensionsData extension, ObjectInfoHandler objectInfos) {
-        LOG.debug("start getObject()");
+        LOG.debug("start getAcl()");
         Acl acl = null;
         StoredObject so = validator.getAcl(context, repositoryId, objectId, extension);
         if (so instanceof DocumentVersion)

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/InMemoryAcl.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/InMemoryAcl.java?rev=1185851&r1=1185850&r2=1185851&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/InMemoryAcl.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/InMemoryAcl.java Tue Oct 18 20:52:55 2011
@@ -33,7 +33,7 @@ public class InMemoryAcl {
     
     private List<InMemoryAce> acl;
     private int id;
-    
+    private static InMemoryAcl DEFAULT_ACL = new InMemoryAcl(new ArrayList<InMemoryAce>() {{ add(InMemoryAce.getDefaultAce()); }} );
     private static class AceComparator<T extends InMemoryAce> implements Comparator<T> {
 
         public int compare(T o1, T o2) {            
@@ -62,9 +62,7 @@ public class InMemoryAcl {
     }
 
     public static InMemoryAcl getDefaultAcl() {
-        List<InMemoryAce> defaultAcl = new ArrayList<InMemoryAce>();
-        defaultAcl.add(InMemoryAce.getDefaultAce());        
-        return new InMemoryAcl(defaultAcl); 
+        return DEFAULT_ACL;
     }
     
     public InMemoryAcl() {
@@ -143,11 +141,17 @@ public class InMemoryAcl {
     }
 
     public boolean hasPermission(String principalId, Permission permission) {
-        if (null == principalId || null == permission)
+        if (null == permission)
             return false;
         
+        if (null == principalId)
+            for (InMemoryAce ace : acl)
+                if (ace.getPrincipalId().equals(InMemoryAce.getAnonymousUser()))
+                    return ace.hasPermission(permission);
+       
         for (InMemoryAce ace : acl) {
-            if (ace.getPrincipalId().equals(principalId))
+            if (ace.getPrincipalId().equals(principalId) || ace.getPrincipalId().equals(InMemoryAce.getAnyoneUser())
+                    || ace.getPrincipalId().equals(InMemoryAce.getAnonymousUser()))
                 return ace.hasPermission(permission);
         }
         return false;

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/InMemoryServiceValidatorImpl.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/InMemoryServiceValidatorImpl.java?rev=1185851&r1=1185850&r2=1185851&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/InMemoryServiceValidatorImpl.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/InMemoryServiceValidatorImpl.java Tue Oct 18 20:52:55 2011
@@ -18,19 +18,15 @@
  */
 package org.apache.chemistry.opencmis.inmemory.storedobj.impl;
 
-import java.util.List;
-
 import org.apache.chemistry.opencmis.commons.data.Acl;
 import org.apache.chemistry.opencmis.commons.data.ExtensionsData;
 import org.apache.chemistry.opencmis.commons.enums.AclPropagation;
 import org.apache.chemistry.opencmis.commons.enums.RelationshipDirection;
 import org.apache.chemistry.opencmis.commons.enums.UnfileObject;
 import org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException;
-import org.apache.chemistry.opencmis.commons.exceptions.CmisPermissionDeniedException;
 import org.apache.chemistry.opencmis.commons.server.CallContext;
 import org.apache.chemistry.opencmis.commons.spi.Holder;
 import org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl;
-import org.apache.chemistry.opencmis.inmemory.storedobj.api.DocumentVersion;
 import org.apache.chemistry.opencmis.inmemory.storedobj.api.ObjectStore;
 import org.apache.chemistry.opencmis.inmemory.storedobj.api.StoreManager;
 import org.apache.chemistry.opencmis.inmemory.storedobj.api.StoredObject;

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=1185851&r1=1185850&r2=1185851&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 Tue Oct 18 20:52:55 2011
@@ -92,7 +92,7 @@ public class ObjectStoreImpl implements 
     /**
      * a concurrent HashMap to hold all Acls in the repository
      */
-    private static int NEXT_UNUSED_ACL_ID = 1;
+    private int nextUnusedAclId = 0;
     
     private final List<InMemoryAcl> fAcls = new ArrayList<InMemoryAcl>();
 
@@ -110,8 +110,8 @@ public class ObjectStoreImpl implements 
         return NEXT_UNUSED_ID++;
     }
 
-    private static synchronized Integer getNextAclId() {
-        return NEXT_UNUSED_ACL_ID++;
+    private synchronized Integer getNextAclId() {
+        return nextUnusedAclId++;
     }
     
    public void lock() {
@@ -237,6 +237,7 @@ public class ObjectStoreImpl implements 
         rootFolder.setModifiedBy("Admin");
         rootFolder.setModifiedAtNow();
         rootFolder.setRepositoryId(fRepositoryId);
+        rootFolder.setAclId(addAcl(InMemoryAcl.getDefaultAcl()));
         rootFolder.persist();
         fRootFolder = rootFolder;
     }
@@ -344,7 +345,6 @@ public class ObjectStoreImpl implements 
 
     public List<Integer> getAllAclsForUser(String principalId, Permission permission) {
         List<Integer> acls = new ArrayList<Integer>();
-        acls.add(0); // ACL with id 0 means no ACL set granting all users any access rights
         for (InMemoryAcl acl: fAcls) {
             if (acl.hasPermission(principalId, permission))
                 acls.add(acl.getId());
@@ -359,11 +359,14 @@ public class ObjectStoreImpl implements 
     
     public int getAclId(StoredObjectImpl so, Acl addACEs, Acl removeACEs) {
         InMemoryAcl newAcl;
+        boolean removeDefaultAcl = false;
+        int aclId = 0;
         
         if (so == null) {
             newAcl = new InMemoryAcl();
         } else {
-            newAcl = getInMemoryAcl(so.getAclId());
+            aclId = so.getAclId();
+            newAcl = getInMemoryAcl(aclId);
             if (null == newAcl)
                 newAcl = new InMemoryAcl();
             else
@@ -374,6 +377,16 @@ public class ObjectStoreImpl implements 
         if (newAcl.size() == 0 && addACEs == null && removeACEs == null)
             return 0;
 
+        if (null != removeACEs)
+            for (Ace ace: removeACEs.getAces()) {
+            InMemoryAce inMemAce = new InMemoryAce(ace);
+            if (inMemAce.equals(InMemoryAce.getDefaultAce()))
+                removeDefaultAcl = true;
+            }
+        
+        if ( so!= null && 0 == aclId  && !removeDefaultAcl)
+            return 0; // if object grants full access to everyone and it will not be removed we do nothing
+
         // add ACEs
         if (null != addACEs)
             for (Ace ace: addACEs.getAces()) {
@@ -419,19 +432,13 @@ public class ObjectStoreImpl implements 
     public boolean hasReadAccess(String principalId, StoredObject so) {       
         return hasAccess(principalId, so, Permission.READ);
     }
-    /*
-    public boolean hasReadAccess(String principalId, StoredObject so) {       
-        int aclId = ((StoredObjectImpl)so).getAclId();
-        if (0 == aclId || null == principalId) 
-            return true; // no ACL set or user is admin user
-        List<Integer> aclIds = getAllAclsForUser(principalId, Permission.READ);
-        return hasAccess(principalId, so, Permission.READ);
-    }
-    */
+
+    
     public boolean hasWriteAccess(String principalId, StoredObject so) {       
         return hasAccess(principalId, so, Permission.WRITE);
     }
 
+    
     public boolean hasAllAccess(String principalId, StoredObject so) {       
         return hasAccess(principalId, so, Permission.ALL);
     }
@@ -463,8 +470,6 @@ public class ObjectStoreImpl implements 
     }
 
     private InMemoryAcl getInMemoryAcl(int aclId) {
-        if (0 == aclId)
-            return null;
         
         for (InMemoryAcl acl : fAcls) {
             if (aclId == acl.getId())
@@ -496,11 +501,11 @@ public class ObjectStoreImpl implements 
 	        if (acl2.equals(acl))
 	            return acl2.getId();
 	    }
-	    return 0;
+	    return -1;
 	}
 
     private int addAcl(InMemoryAcl acl) {
-        int aclId = 0;
+        int aclId = -1;
         
         if (null == acl)
             return 0;
@@ -508,7 +513,7 @@ public class ObjectStoreImpl implements 
         lock();
         try {
             aclId = hasAcl(acl);
-            if (0 == aclId) {
+            if (aclId < 0) {
                 aclId = getNextAclId();
                 acl.setId(aclId);
                 fAcls.add(acl);

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/AclPermissionsTest.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/AclPermissionsTest.java?rev=1185851&r1=1185850&r2=1185851&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/AclPermissionsTest.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/AclPermissionsTest.java Tue Oct 18 20:52:55 2011
@@ -38,6 +38,7 @@ import org.apache.chemistry.opencmis.com
 import org.apache.chemistry.opencmis.commons.server.CallContext;
 import org.apache.chemistry.opencmis.commons.spi.Holder;
 import org.apache.chemistry.opencmis.inmemory.storedobj.api.ObjectStore;
+import org.apache.chemistry.opencmis.inmemory.storedobj.impl.InMemoryAce;
 import org.apache.chemistry.opencmis.server.support.query.CalendarHelper;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -68,6 +69,7 @@ public class AclPermissionsTest extends 
 	protected Acl adminAcl = null;
 	protected List<Ace> testUserACEs = null;
 	protected Acl testUserAcl = null;
+	protected Acl defaultAcl = null;
 	
 	protected static Map<String, String> idMap = new HashMap<String, String>();
 	
@@ -126,6 +128,10 @@ public class AclPermissionsTest extends 
 		adminACEs = new ArrayList<Ace>(1);
 		adminACEs.add(createAce("TestAdmin", EnumBasicPermissions.CMIS_ALL));
 		adminAcl = fFactory.createAccessControlList(adminACEs);	
+		
+		List<Ace> defaultACEs = new ArrayList<Ace>(1);
+        defaultACEs.add(createAce(InMemoryAce.getAnyoneUser(), EnumBasicPermissions.CMIS_ALL));
+        defaultAcl = fFactory.createAccessControlList(defaultACEs); 
 	}
 
 	@Test
@@ -133,23 +139,23 @@ public class AclPermissionsTest extends 
 	{
 		// create a document with initial ACL
 		String docId = createDocumentWithAcls("complexDocument",  fRootFolderId, UnitTestTypeSystemCreator.COMPLEX_TYPE,
-				addAcl, null);
+				addAcl, defaultAcl);
 		Acl acl1 = fAclSvc.getAcl(fRepositoryId, docId, true, null);
 		assertTrue(aclEquals(addAcl, acl1));
 		
 		// create a folder with initial ACL
 		String folderId = createFolderWithAcls("folderWithAcl", fRootFolderId, BaseTypeId.CMIS_FOLDER.value(),
-				addAcl, null);
+				addAcl, defaultAcl);
 		Acl acl2 = fAclSvc.getAcl(fRepositoryId, folderId, true, null);
 		assertTrue(aclEquals(addAcl, acl2));
 		
 		// add acl later
 		String docId2 = createVersionedDocument("complexDocument2",  fRootFolderId);
-        Acl acl = fAclSvc.applyAcl(fRepositoryId, docId2, addAcl, null, AclPropagation.OBJECTONLY, null);
+        Acl acl = fAclSvc.applyAcl(fRepositoryId, docId2, addAcl, defaultAcl, AclPropagation.OBJECTONLY, null);
 		assertTrue(aclEquals(addAcl, acl));
 		
 		String folderId2 = createFolder("folder2", fRootFolderId, "cmis:folder");
-		acl2 = fAclSvc.applyAcl(fRepositoryId, folderId2, addAcl, null, AclPropagation.OBJECTONLY, null);
+		acl2 = fAclSvc.applyAcl(fRepositoryId, folderId2, addAcl, defaultAcl, AclPropagation.OBJECTONLY, null);
 		assertTrue(aclEquals(addAcl, acl2));
 		
 		// add a subfolder
@@ -205,8 +211,8 @@ public class AclPermissionsTest extends 
 		// starts with call context TestUser
 		switchCallContext("TestAdmin");
 		String docId = createDocumentWithAcls("doc",  fRootFolderId, "ComplexType",
-				standardAcl, null);
-		String folderId = createFolderWithAcls("folder", fRootFolderId, "cmis:folder", standardAcl, null);
+				standardAcl, defaultAcl);
+		String folderId = createFolderWithAcls("folder", fRootFolderId, "cmis:folder", standardAcl, defaultAcl);
 //		fTestCallContext = new DummyCallContext("Writer");
 		String subFolderId = createFolderWithAcls("subFolder", folderId, "cmis:folder", standardAcl, null);
 		
@@ -316,7 +322,7 @@ public class AclPermissionsTest extends 
 	}
 	
 	@Test
-	public void checkAclServiceGeneralAccess()
+	public void testAclServiceGeneralAccess()
 	{
 	    List<Ace> initialACEs = new ArrayList<Ace>(4);
 	    initialACEs.addAll(standardACEs);
@@ -343,9 +349,9 @@ public class AclPermissionsTest extends 
 		
 		switchCallContext("TestAdmin");
 		String docId = createDocumentWithAcls("doc",  fRootFolderId, "ComplexType",
-		        initialAcl, null);
-		String folderId = createFolderWithAcls("folder", fRootFolderId, "cmis:folder", initialAcl, null);
-		String subFolderId = createFolderWithAcls("subFolder", folderId, "cmis:folder", initialAcl, null);
+		        initialAcl, defaultAcl);
+		String folderId = createFolderWithAcls("folder", fRootFolderId, "cmis:folder", initialAcl, defaultAcl);
+		String subFolderId = createFolderWithAcls("subFolder", folderId, "cmis:folder", initialAcl, defaultAcl);
 		
 		// getAcl of a folder
 		switchCallContext("TestUser");
@@ -415,14 +421,14 @@ public class AclPermissionsTest extends 
 	}
 	
 	@Test
-	public void checkObjectServiceGeneralAccess()
+	public void testObjectServiceGeneralAccess()
 	{
 			
 		// starts with call context TestUser
 		switchCallContext("TestAdmin");
 		String docId = createDocumentWithAcls("doc",  fRootFolderId, "ComplexType",
-				standardAcl, null);
-		String folderId = createFolderWithAcls("folder", fRootFolderId, "cmis:folder", standardAcl, null);
+				standardAcl, defaultAcl);
+		String folderId = createFolderWithAcls("folder", fRootFolderId, "cmis:folder", standardAcl, defaultAcl);
 //		fTestCallContext = new DummyCallContext("Writer");
 		String subFolderId = createFolderWithAcls("subFolder", folderId, "cmis:folder", standardAcl, null);
 		String noReadFolderId = createFolderWithAcls("noReadFolder", folderId, "cmis:folder", null, readAcl);
@@ -656,14 +662,14 @@ public class AclPermissionsTest extends 
 	}
 	
 	@Test
-	public void checkMultiFilingServiceGeneralAccess()
+	public void testMultiFilingServiceGeneralAccess()
 	{
 		// starts with call context TestUser
 		switchCallContext("TestAdmin");
 		String docId = createDocumentWithAcls("doc",  fRootFolderId, "ComplexType",
-				standardAcl, null);
+				standardAcl, defaultAcl);
 		String folderId = createFolderWithAcls("folder", fRootFolderId, "cmis:folder", 
-				addAcl, null);
+				addAcl, defaultAcl);
 		String noReadFolderId = createFolderWithAcls("noReadFolder", folderId, "cmis:folder", 
 				null, readAcl);
 		
@@ -728,12 +734,12 @@ public class AclPermissionsTest extends 
 	}
 	
 	@Test
-	public void checkVersioningServiceGeneralAccess()
+	public void testVersioningServiceGeneralAccess()
 	{
 		// starts with call context TestUser
 		switchCallContext("TestAdmin");
 		String docId = createDocumentWithAcls("doc",  fRootFolderId, UnitTestTypeSystemCreator.VERSION_DOCUMENT_TYPE_ID,
-		        VersioningState.MAJOR, standardAcl, null);
+		        VersioningState.MAJOR, standardAcl, defaultAcl);
 	
 		// TestUser has no permission at all
 		switchCallContext("TestUser");
@@ -819,8 +825,7 @@ public class AclPermissionsTest extends 
 		fAclSvc.applyAcl(fRepositoryId, docId, readWriteAcl, null, AclPropagation.OBJECTONLY, null);
 		switchCallContext("Writer");
 		fVerSvc.cancelCheckOut(fRepositoryId, docId, null);
-		
-		
+				
 		// TestUser has no permission at all
 		switchCallContext("TestAdmin");
 		fAclSvc.applyAcl(fRepositoryId, docId, testUserAcl, null, AclPropagation.OBJECTONLY, null);
@@ -926,18 +931,18 @@ public class AclPermissionsTest extends 
 	
 		
 	@Test
-	public void checkVisibleObjects()
+	public void testVisibleObjects()
 	{
         LOG.debug("start test checkVisibleObjects()...");
 		switchCallContext("TestAdmin");
 		String docId = createDocumentWithAcls("doc",  fRootFolderId, UnitTestTypeSystemCreator.VERSION_DOCUMENT_TYPE_ID,
-				VersioningState.MAJOR, standardAcl, null);
+				VersioningState.MAJOR, standardAcl, defaultAcl);
 		String docId2 = createDocumentWithAcls("doc2",  fRootFolderId, UnitTestTypeSystemCreator.VERSION_DOCUMENT_TYPE_ID,
-		        VersioningState.MAJOR, addAcl, null);
+		        VersioningState.MAJOR, addAcl, defaultAcl);
 		String folderId = createFolderWithAcls("folder", fRootFolderId, "cmis:folder", 
-				standardAcl, null);
+				standardAcl, defaultAcl);
 		String folderId2 = createFolderWithAcls("folder2", fRootFolderId, "cmis:folder", 
-				addAcl, null);
+				addAcl, defaultAcl);
 		LOG.debug("checkVisibleObjects(): folderId2 is: " + folderId2);
 		String subFolderId = createFolderWithAcls("subFolder", folderId2, "cmis:folder", 
 				null, testUserAcl);
@@ -1009,7 +1014,7 @@ public class AclPermissionsTest extends 
 		// multi filing, get object parents
 		switchCallContext("TestAdmin");
 		String secFolderId = createFolderWithAcls("secondFolder", fRootFolderId, "cmis:folder", 
-				standardAcl, null);  	
+				standardAcl, defaultAcl);  	
 		String docId3 = createDocumentWithAcls("thirdDoc", folderId2, "ComplexType",
 				addAcl, null);
 		fMultiSvc.addObjectToFolder(fRepositoryId, docId3, secFolderId, true, null);
@@ -1022,7 +1027,7 @@ public class AclPermissionsTest extends 
 	}
 		
 	@Test
-	public void checkQueryAccess()
+	public void testQueryAccess()
 	{
 		createCustomPropertyDocuments();
 		
@@ -1105,7 +1110,7 @@ public class AclPermissionsTest extends 
 	{
 		switchCallContext("TestAdmin"); 
 		// create folder
-		String folderId = createFolderWithAcls("customFolder", fRootFolderId, "cmis:folder", standardAcl, null);
+		String folderId = createFolderWithAcls("customFolder", fRootFolderId, "cmis:folder", standardAcl, defaultAcl);
 		idMap.put("customFolder", folderId);
 
 		// create documents

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/AclServiceTest.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/AclServiceTest.java?rev=1185851&r1=1185850&r2=1185851&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/AclServiceTest.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/AclServiceTest.java Tue Oct 18 20:52:55 2011
@@ -24,6 +24,7 @@ import static org.junit.Assert.assertNot
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
@@ -36,6 +37,7 @@ import org.apache.chemistry.opencmis.com
 import org.apache.chemistry.opencmis.commons.enums.VersioningState;
 import org.apache.chemistry.opencmis.commons.impl.jaxb.EnumBasicPermissions;
 import org.apache.chemistry.opencmis.inmemory.ObjectServiceTest.ObjectTestTypeSystemCreator;
+import org.apache.chemistry.opencmis.inmemory.storedobj.impl.InMemoryAce;
 import org.apache.chemistry.opencmis.inmemory.types.InMemoryDocumentTypeDefinition;
 import org.apache.chemistry.opencmis.inmemory.types.InMemoryFolderTypeDefinition;
 import org.apache.commons.logging.Log;
@@ -47,7 +49,7 @@ import org.junit.Test;
 public class AclServiceTest extends AbstractServiceTest {
 
     private static final Log LOG = LogFactory.getLog(AclServiceTest.class);
-    ObjectCreator fCreator;
+    private ObjectCreator fCreator;
     private static final String DOCUMENT_NAME = "DocumentWithAcl";
     private static final String FOLDER_NAME = "FolderWithAcl";
     private static final String DOCUMENT_TYPE_ID = InMemoryDocumentTypeDefinition.getRootDocumentType().getId();
@@ -56,8 +58,8 @@ public class AclServiceTest extends Abst
     private static final String ALICE = "alice";
     private static final String BOB = "bob";
     private static final String CHRIS = "chris";
-    private static final String DAN = "dan";
-        
+    private static final String DAN = "dan";        
+    private Acl defaultAcl = null;
     
     @Override
     @Before
@@ -65,6 +67,11 @@ public class AclServiceTest extends Abst
         super.setTypeCreatorClass(ObjectTestTypeSystemCreator.class.getName());
         super.setUp();
         fCreator = new ObjectCreator(fFactory, fObjSvc, fRepositoryId);
+        
+        List<Ace> defaultACEs = new ArrayList<Ace>(1);
+        defaultACEs.add(fFactory.createAccessControlEntry(InMemoryAce.getAnyoneUser(), Collections.singletonList( EnumBasicPermissions.CMIS_ALL.value())));
+        defaultAcl = fFactory.createAccessControlList(defaultACEs); 
+
     }
 
     @Override
@@ -76,7 +83,7 @@ public class AclServiceTest extends Abst
     @Test
     public void testCreateDocumentWithAcl() {
         LOG.info("starting testCreateDocumentWithAcl() ...");
-        Acl removeAces = null;
+        Acl removeAces = defaultAcl;
         Acl acl = createSimpleTestAcl();
 
         String id = createDocument(fRootFolderId, acl, removeAces);
@@ -103,7 +110,7 @@ public class AclServiceTest extends Abst
     @Test
     public void testCreateFolderWithAcl() {
         LOG.info("starting testCreateFolderWithAcl() ...");
-        Acl removeAces = null;
+        Acl removeAces = defaultAcl;
         Acl acl = createSimpleTestAcl();
         
         String id = createFolder(fRootFolderId, acl, removeAces);
@@ -135,7 +142,7 @@ public class AclServiceTest extends Abst
         LOG.debug("created document with id: " + id);
         
         // apply absolute ACL using AclService
-        Acl acl1 = fAclSvc.applyAcl(fRepositoryId, id, acl, null, AclPropagation.OBJECTONLY, null);        
+        Acl acl1 = fAclSvc.applyAcl(fRepositoryId, id, acl, defaultAcl, AclPropagation.OBJECTONLY, null);        
         checkSimpleTestAcl(acl, acl1);
 
         // get ACL using AclService
@@ -151,7 +158,7 @@ public class AclServiceTest extends Abst
         LOG.info("starting testAddRemoveAcl() ...");
         Acl acl = createAdvancedTestAcl();        
         
-        String id = createDocument(fRootFolderId, acl, null);
+        String id = createDocument(fRootFolderId, acl, defaultAcl);
         LOG.debug("created document with id: " + id);
         
         Acl aclAdd = createAclAdd();        
@@ -171,8 +178,8 @@ public class AclServiceTest extends Abst
 
         LOG.info("starting testAddRemoveDuplicatedAcl() ...");
         Acl acl = createAdvancedTestAcl();  
-        String id1 = createDocument(DOCUMENT_NAME_1, fRootFolderId, acl, null);
-        String id2 = createDocument(DOCUMENT_NAME_2, fRootFolderId, acl, null);
+        String id1 = createDocument(DOCUMENT_NAME_1, fRootFolderId, acl, defaultAcl);
+        String id2 = createDocument(DOCUMENT_NAME_2, fRootFolderId, acl, defaultAcl);
         
 //        // modify ACL of first doc
 //        List<Ace> acesRemove = Arrays.asList(new Ace[] { 
@@ -199,7 +206,7 @@ public class AclServiceTest extends Abst
     public void testApplyAclRecursiveSimple () {
         LOG.info("starting testApplyAclRecursiveSimple() ...");
         Acl acl = createSimpleTestAcl();
-        String[] ids = createHierarchy(acl, null);
+        String[] ids = createHierarchy(acl, defaultAcl);
         fAclSvc.applyAcl(fRepositoryId, ids[0], acl, null, AclPropagation.PROPAGATE, null);        
         checkAclRecursiveSimple(ids, acl);                
         LOG.info("... testApplyAclRecursiveSimple() finished.");
@@ -209,7 +216,7 @@ public class AclServiceTest extends Abst
     public void testApplyAclRecursiveIncremental() {
         LOG.info("starting testApplyAclRecursiveIncremental() ...");
         Acl acl = createAdvancedTestAcl();        
-        String[] ids = createHierarchy(acl, null);
+        String[] ids = createHierarchy(acl, defaultAcl);
                
         Acl aclRemove = createAclRemove();        
         Acl aclAdd = createAclAdd();        
@@ -228,7 +235,7 @@ public class AclServiceTest extends Abst
         LOG.info("starting testRemoveAllAcls() ...");
 
         Acl acl = createAdvancedTestAcl();                
-        String id = createDocument(fRootFolderId, acl, null);
+        String id = createDocument(fRootFolderId, acl, defaultAcl);
         LOG.debug("created document with id: " + id);
         
         Acl aclReturn = fAclSvc.applyAcl(fRepositoryId, id, null, acl, AclPropagation.OBJECTONLY, null);