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);