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.browser;
20
21 import java.io.IOException;
22 import java.io.OutputStream;
23 import java.util.List;
24
25 import org.apache.chemistry.opencmis.client.bindings.spi.BindingSession;
26 import org.apache.chemistry.opencmis.client.bindings.spi.http.Output;
27 import org.apache.chemistry.opencmis.client.bindings.spi.http.Response;
28 import org.apache.chemistry.opencmis.commons.data.ExtensionsData;
29 import org.apache.chemistry.opencmis.commons.data.ObjectData;
30 import org.apache.chemistry.opencmis.commons.impl.Constants;
31 import org.apache.chemistry.opencmis.commons.impl.JSONConverter;
32 import org.apache.chemistry.opencmis.commons.impl.TypeCache;
33 import org.apache.chemistry.opencmis.commons.impl.UrlBuilder;
34 import org.apache.chemistry.opencmis.commons.spi.PolicyService;
35
36
37
38
39 public class PolicyServiceImpl extends AbstractBrowserBindingService implements PolicyService {
40
41
42
43
44 public PolicyServiceImpl(BindingSession session) {
45 setSession(session);
46 }
47
48 @Override
49 public void applyPolicy(String repositoryId, String policyId, String objectId, ExtensionsData extension) {
50
51 UrlBuilder url = getObjectUrl(repositoryId, objectId);
52
53
54 final FormDataWriter formData = new FormDataWriter(Constants.CMISACTION_APPLY_POLICY);
55 formData.addPolicyIdParameter(policyId);
56
57
58 postAndConsume(url, formData.getContentType(), new Output() {
59 @Override
60 public void write(OutputStream out) throws IOException {
61 formData.write(out);
62 }
63 });
64 }
65
66 @Override
67 public void removePolicy(String repositoryId, String policyId, String objectId, ExtensionsData extension) {
68
69 UrlBuilder url = getObjectUrl(repositoryId, objectId);
70
71
72 final FormDataWriter formData = new FormDataWriter(Constants.CMISACTION_REMOVE_POLICY);
73 formData.addPolicyIdParameter(policyId);
74
75
76 postAndConsume(url, formData.getContentType(), new Output() {
77 @Override
78 public void write(OutputStream out) throws IOException {
79 formData.write(out);
80 }
81 });
82 }
83
84 @Override
85 public List<ObjectData> getAppliedPolicies(String repositoryId, String objectId, String filter,
86 ExtensionsData extension) {
87
88 UrlBuilder url = getObjectUrl(repositoryId, objectId, Constants.SELECTOR_POLICIES);
89 url.addParameter(Constants.PARAM_FILTER, filter);
90 url.addParameter(Constants.PARAM_SUCCINCT, getSuccinctParameter());
91 url.addParameter(Constants.PARAM_DATETIME_FORMAT, getDateTimeFormatParameter());
92
93
94 Response resp = read(url);
95 List<Object> json = parseArray(resp.getStream(), resp.getCharset());
96
97 TypeCache typeCache = new ClientTypeCacheImpl(repositoryId, this);
98
99 return JSONConverter.convertObjects(json, typeCache);
100 }
101 }