1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.chemistry.opencmis.client.bindings.spi.atompub;
20
21 import org.apache.chemistry.opencmis.client.bindings.spi.BindingSession;
22 import org.apache.chemistry.opencmis.client.bindings.spi.atompub.objects.AtomAcl;
23 import org.apache.chemistry.opencmis.commons.data.Acl;
24 import org.apache.chemistry.opencmis.commons.data.ExtensionsData;
25 import org.apache.chemistry.opencmis.commons.enums.AclPropagation;
26 import org.apache.chemistry.opencmis.commons.spi.AclService;
27 import org.apache.chemistry.opencmis.commons.spi.ExtendedAclService;
28
29
30
31
32 public class AclServiceImpl extends AbstractAtomPubService implements AclService, ExtendedAclService {
33
34
35
36
37 public AclServiceImpl(BindingSession session) {
38 setSession(session);
39 }
40
41 @Override
42 public Acl applyAcl(String repositoryId, String objectId, Acl addAces, Acl removeAces,
43 AclPropagation aclPropagation, ExtensionsData extension) {
44
45
46 Acl originalAces = getAcl(repositoryId, objectId, false, null);
47
48
49 if (!isAclMergeRequired(addAces, removeAces)) {
50 return originalAces;
51 }
52
53
54 Acl newACL = mergeAcls(originalAces, addAces, removeAces);
55
56
57 AtomAcl acl = updateAcl(repositoryId, objectId, newACL, aclPropagation);
58 Acl result = acl.getACL();
59
60 return result;
61 }
62
63 @Override
64 public Acl getAcl(String repositoryId, String objectId, Boolean onlyBasicPermissions, ExtensionsData extension) {
65 return getAclInternal(repositoryId, objectId, onlyBasicPermissions, extension);
66 }
67
68 @Override
69 public Acl setAcl(String repositoryId, String objectId, Acl aces) {
70 AtomAcl acl = updateAcl(repositoryId, objectId, aces, AclPropagation.OBJECTONLY);
71 Acl result = acl.getACL();
72
73 return result;
74 }
75 }