A policy object specifies an administrative policy that
can be enforced by a repository. Each policy object holds the text of an
administrative policy as a repository-specific string.
Can I create sub
types to the policy object type?
Yes, you can create sub types to the policy object type.
Is all repositories
support policy objects?
No. You can check whether the repository support policy
objects or not by calling the getTypeChildren API.
Below statements are used to check whether the repository
supports policy objects or not.
ItemIterable<ObjectType>
objTypes = session.getTypeChildren(null, false);
for(ObjectType
objType : objTypes){
if("cmis:policy".equals(objType.getId())){
System.out.println("Policy
objects are supported by the reposiotry");
}
}
TestCmis.java
package com.sample.util; import java.io.IOException; import java.util.HashMap; import java.util.Map; import org.apache.chemistry.opencmis.client.api.ItemIterable; import org.apache.chemistry.opencmis.client.api.ObjectType; import org.apache.chemistry.opencmis.client.api.Session; import org.apache.chemistry.opencmis.client.api.SessionFactory; import org.apache.chemistry.opencmis.client.runtime.SessionFactoryImpl; import org.apache.chemistry.opencmis.commons.SessionParameter; import org.apache.chemistry.opencmis.commons.enums.BindingType; public class TestCmis { private static String serverURL = "http://localhost:8080/chemistry-opencmis-server-inmemory-1.1.0/browser"; private static String repositoryId = "A1"; private static Session getSession() { Map<String, String> parameters = new HashMap<>(); parameters.put(SessionParameter.BINDING_TYPE, BindingType.BROWSER.value()); parameters.put(SessionParameter.USER, ""); parameters.put(SessionParameter.PASSWORD, ""); parameters.put(SessionParameter.REPOSITORY_ID, repositoryId); parameters.put(SessionParameter.BROWSER_URL, serverURL); SessionFactory sessionFactory = SessionFactoryImpl.newInstance(); return sessionFactory.createSession(parameters); } public static void main(String args[]) throws IOException { Session session = getSession(); ItemIterable<ObjectType> objTypes = session.getTypeChildren(null, false); for(ObjectType objType : objTypes){ if("cmis:policy".equals(objType.getId())){ System.out.println("Policy objects are supported by the reposiotry"); } } } }
Can I create policy
object using CMIS?
Yes
Can I apply policy
object to a repository object using CMIS?
Yes
Can I remove an
applied policy from cmis object?
Yes
What is controllable
object?
An object to which a policy is applied is called a
controllable object.
Can I apply multiple
policies to same controllable object?
Yes, but repository may impose constraints such as only
one policy of each kind can be applied to an object
Can a policy is
applied to multiple objects?
Yes
How to check whether
an object is controllable by policy or not?
Object type definition has ‘controllable’ property, it
specifies whether the object is controllable by policy or not.
Below statements are used to check whether a repository
object is controlled by policy or not.
CmisObject
cmisObject = session.getRootFolder();
Boolean
controllablePolicy = cmisObject.getType().isControllablePolicy();
if
(controllablePolicy == null){
System.out.println("Unknown
(noncompliant repository)");
}else
if(controllablePolicy){
System.out.println("Object
is controlled by the policy");
}else{
System.out.println("Object
is not controlled by the policy");
}
TestCmis.java
package com.sample.util; import java.io.IOException; import java.util.HashMap; import java.util.Map; import org.apache.chemistry.opencmis.client.api.CmisObject; import org.apache.chemistry.opencmis.client.api.Session; import org.apache.chemistry.opencmis.client.api.SessionFactory; import org.apache.chemistry.opencmis.client.runtime.SessionFactoryImpl; import org.apache.chemistry.opencmis.commons.SessionParameter; import org.apache.chemistry.opencmis.commons.enums.BindingType; public class TestCmis { private static String serverURL = "http://localhost:8080/chemistry-opencmis-server-inmemory-1.1.0/browser"; private static String repositoryId = "A1"; private static Session getSession() { Map<String, String> parameters = new HashMap<>(); parameters.put(SessionParameter.BINDING_TYPE, BindingType.BROWSER.value()); parameters.put(SessionParameter.USER, ""); parameters.put(SessionParameter.PASSWORD, ""); parameters.put(SessionParameter.REPOSITORY_ID, repositoryId); parameters.put(SessionParameter.BROWSER_URL, serverURL); SessionFactory sessionFactory = SessionFactoryImpl.newInstance(); return sessionFactory.createSession(parameters); } public static void main(String args[]) throws IOException { Session session = getSession(); CmisObject cmisObject = session.getRootFolder(); Boolean controllablePolicy = cmisObject.getType().isControllablePolicy(); if (controllablePolicy == null){ System.out.println("Unknown (noncompliant repository)"); }else if(controllablePolicy){ System.out.println("Object is controlled by the policy"); }else{ System.out.println("Object is not controlled by the policy"); } } }
Output
Object is controlled by the policy
Is indirectly
(through inheritance) applied policies are covered by CMIS?
Only directly/explicitly applied policies are covered by
CMIS. Indirectly applying policy to an object, e.g. through inheritance, is
outside the scope of CMIS.
Is policy object
having content stream associated with it?
No
Is policy object
versionable?
No
Is policy object
fileable?
Maybe
Is policy object
queryable?
Maybe
Is policy object
controllable?
Maybe
No comments:
Post a Comment