In this post, I am going
to explain how to add ACE to cmis object.
For example, the object
‘testFolder’ has one ACEs, where the user ‘a’ has all the permissions to this
folder.
Below snippet adds the
permission ‘cmis:read’ to the user chamu.
Step 1: Get
the cmis object.
CmisObject cmisObject =
session.getObjectByPath("/a/testFolder");
Step 2: Get
ACL associated with cmis object
Acl acl =
cmisObject.getAcl();
List<Ace> aces =
acl.getAces();
Step 3: Create new
ace
Ace aceToAdd = session.getObjectFactory().createAce("chamu",
Collections.singletonList("cmis:read"));
Step 4: Add
ace to aces
aces.add(aceToAdd);
Step 5: Set the
updated aces
cmisObject.setAcl(aces);
Find the below working application.
Test.java
import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.chemistry.opencmis.client.api.CmisObject; import org.apache.chemistry.opencmis.client.api.OperationContext; import org.apache.chemistry.opencmis.client.api.Session; import org.apache.chemistry.opencmis.client.api.SessionFactory; import org.apache.chemistry.opencmis.client.runtime.OperationContextImpl; import org.apache.chemistry.opencmis.client.runtime.SessionFactoryImpl; import org.apache.chemistry.opencmis.commons.PropertyIds; import org.apache.chemistry.opencmis.commons.SessionParameter; import org.apache.chemistry.opencmis.commons.data.Ace; import org.apache.chemistry.opencmis.commons.data.Acl; import org.apache.chemistry.opencmis.commons.enums.BindingType; public class Test { private static String serverURL = "http://localhost:8080/app"; private static String repositoryId = "repId"; public static Session getSession() { Map<String, String> parameters = new HashMap<>(); parameters.put(SessionParameter.BINDING_TYPE, BindingType.BROWSER.value()); parameters.put(SessionParameter.USER, "a"); parameters.put(SessionParameter.PASSWORD, "a"); parameters.put(SessionParameter.REPOSITORY_ID, repositoryId); parameters.put(SessionParameter.BROWSER_URL, serverURL); SessionFactory sessionFactory = SessionFactoryImpl.newInstance(); return sessionFactory.createSession(parameters); } public static OperationContext getDefaultContext() { OperationContextImpl operationalContext = new OperationContextImpl(); Set<String> filterSet = new HashSet<String>(); operationalContext.setIncludeAcls(true); operationalContext.setIncludeAllowableActions(true); operationalContext.setIncludePolicies(false); filterSet.add(PropertyIds.VERSION_SERIES_ID); filterSet.add(PropertyIds.VERSION_SERIES_CHECKED_OUT_ID); filterSet.add(PropertyIds.IS_VERSION_SERIES_CHECKED_OUT); filterSet.add(PropertyIds.IS_PRIVATE_WORKING_COPY); filterSet.add(PropertyIds.IS_LATEST_VERSION); filterSet.add(PropertyIds.OBJECT_ID); filterSet.add(PropertyIds.NAME); filterSet.add(PropertyIds.CONTENT_STREAM_LENGTH); filterSet.add(PropertyIds.CHANGE_TOKEN); filterSet.add(PropertyIds.LAST_MODIFICATION_DATE); filterSet.add(PropertyIds.LAST_MODIFIED_BY); filterSet.add(PropertyIds.SECONDARY_OBJECT_TYPE_IDS); filterSet.add(PropertyIds.CONTENT_STREAM_MIME_TYPE); operationalContext.setFilter(filterSet); return operationalContext; } private static void printAce(Ace ace) { List<String> permissions = ace.getPermissions(); org.apache.chemistry.opencmis.commons.data.Principal principal = ace.getPrincipal(); System.out.println("User '" + principal.getId() + "' has below permissions"); for (String perm : permissions) { System.out.println(perm); } } private static void printACL(Acl acl) { List<Ace> aces = acl.getAces(); for (Ace ace : aces) { printAce(ace); } } public static void main(String args[]) { Session session = getSession(); session.setDefaultContext(getDefaultContext()); /* Get the object by path */ CmisObject cmisObject = session.getObjectByPath("/a/testFolder"); /* Get ACL associated with cmis object */ Acl acl = cmisObject.getAcl(); List<Ace> aces = acl.getAces(); /* Create new ace */ Ace aceToAdd = session.getObjectFactory().createAce("chamu", Collections.singletonList("cmis:read")); /* Add ace to aces */ aces.add(aceToAdd); /* Set the updated aces */ cmisObject.setAcl(aces); cmisObject.refresh(); acl = cmisObject.getAcl(); printACL(acl); } }
Output
User 'a' has below permissions cmis:all User 'chamu' has below permissions cmis:read
After running the
application, you can able to see that the new ace is added for the user
‘chamu’.
No comments:
Post a Comment