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.webservices;
20
21 import static org.apache.chemistry.opencmis.commons.impl.WSConverter.convert;
22 import static org.apache.chemistry.opencmis.commons.impl.WSConverter.convertExtensionHolder;
23 import static org.apache.chemistry.opencmis.commons.impl.WSConverter.convertHolder;
24 import static org.apache.chemistry.opencmis.commons.impl.WSConverter.setExtensionValues;
25 import static org.apache.chemistry.opencmis.commons.impl.WSConverter.setHolderValue;
26
27 import java.util.ArrayList;
28 import java.util.List;
29
30 import org.apache.chemistry.opencmis.client.bindings.spi.BindingSession;
31 import org.apache.chemistry.opencmis.commons.data.Acl;
32 import org.apache.chemistry.opencmis.commons.data.ContentStream;
33 import org.apache.chemistry.opencmis.commons.data.ExtensionsData;
34 import org.apache.chemistry.opencmis.commons.data.ObjectData;
35 import org.apache.chemistry.opencmis.commons.data.Properties;
36 import org.apache.chemistry.opencmis.commons.enums.IncludeRelationships;
37 import org.apache.chemistry.opencmis.commons.exceptions.CmisRuntimeException;
38 import org.apache.chemistry.opencmis.commons.impl.jaxb.CmisException;
39 import org.apache.chemistry.opencmis.commons.impl.jaxb.CmisExtensionType;
40 import org.apache.chemistry.opencmis.commons.impl.jaxb.CmisObjectType;
41 import org.apache.chemistry.opencmis.commons.impl.jaxb.EnumIncludeRelationships;
42 import org.apache.chemistry.opencmis.commons.impl.jaxb.VersioningServicePort;
43 import org.apache.chemistry.opencmis.commons.spi.Holder;
44 import org.apache.chemistry.opencmis.commons.spi.VersioningService;
45
46
47
48
49 public class VersioningServiceImpl extends AbstractWebServicesService implements VersioningService {
50
51 private final AbstractPortProvider portProvider;
52
53
54
55
56 public VersioningServiceImpl(BindingSession session, AbstractPortProvider portProvider) {
57 setSession(session);
58 this.portProvider = portProvider;
59 }
60
61 @Override
62 public void checkOut(String repositoryId, Holder<String> objectId, ExtensionsData extension,
63 Holder<Boolean> contentCopied) {
64 VersioningServicePort port = portProvider.getVersioningServicePort(getCmisVersion(repositoryId), "checkOut");
65
66 try {
67 javax.xml.ws.Holder<String> portObjectId = convertHolder(objectId);
68 javax.xml.ws.Holder<Boolean> portContentCopied = new javax.xml.ws.Holder<Boolean>();
69 javax.xml.ws.Holder<CmisExtensionType> portExtension = convertExtensionHolder(extension);
70
71 port.checkOut(repositoryId, portObjectId, portExtension, portContentCopied);
72
73 setHolderValue(portObjectId, objectId);
74 setHolderValue(portContentCopied, contentCopied);
75 setExtensionValues(portExtension, extension);
76 } catch (CmisException e) {
77 throw convertException(e);
78 } catch (Exception e) {
79 throw new CmisRuntimeException("Error: " + e.getMessage(), e);
80 } finally {
81 portProvider.endCall(port);
82 }
83 }
84
85 @Override
86 public void cancelCheckOut(String repositoryId, String objectId, ExtensionsData extension) {
87 VersioningServicePort port = portProvider.getVersioningServicePort(getCmisVersion(repositoryId),
88 "cancelCheckOut");
89
90 try {
91 javax.xml.ws.Holder<CmisExtensionType> portExtension = convertExtensionHolder(extension);
92
93 port.cancelCheckOut(repositoryId, objectId, portExtension);
94
95 setExtensionValues(portExtension, extension);
96 } catch (CmisException e) {
97 throw convertException(e);
98 } catch (Exception e) {
99 throw new CmisRuntimeException("Error: " + e.getMessage(), e);
100 } finally {
101 portProvider.endCall(port);
102 }
103 }
104
105 @Override
106 public void checkIn(String repositoryId, Holder<String> objectId, Boolean major, Properties properties,
107 ContentStream contentStream, String checkinComment, List<String> policies, Acl addACEs, Acl removeACEs,
108 ExtensionsData extension) {
109 VersioningServicePort port = portProvider.getVersioningServicePort(getCmisVersion(repositoryId), "checkIn");
110
111 try {
112 javax.xml.ws.Holder<String> portObjectId = convertHolder(objectId);
113 javax.xml.ws.Holder<CmisExtensionType> portExtension = convertExtensionHolder(extension);
114
115 port.checkIn(repositoryId, portObjectId, major, convert(properties), convert(contentStream, false),
116 checkinComment, policies, convert(addACEs), convert(removeACEs), portExtension);
117
118 setHolderValue(portObjectId, objectId);
119 setExtensionValues(portExtension, extension);
120 } catch (CmisException e) {
121 throw convertException(e);
122 } catch (Exception e) {
123 throw new CmisRuntimeException("Error: " + e.getMessage(), e);
124 } finally {
125 portProvider.endCall(port);
126 }
127 }
128
129 @Override
130 public List<ObjectData> getAllVersions(String repositoryId, String objectId, String versionSeriesId, String filter,
131 Boolean includeAllowableActions, ExtensionsData extension) {
132 VersioningServicePort port = portProvider.getVersioningServicePort(getCmisVersion(repositoryId),
133 "getAllVersions");
134
135 try {
136 List<CmisObjectType> versionList = port.getAllVersions(repositoryId, versionSeriesId, filter,
137 includeAllowableActions, convert(extension));
138
139
140 if (versionList == null) {
141 return null;
142 }
143
144
145 List<ObjectData> result = new ArrayList<ObjectData>();
146 for (CmisObjectType version : versionList) {
147 result.add(convert(version));
148 }
149
150 return result;
151 } catch (CmisException e) {
152 throw convertException(e);
153 } catch (Exception e) {
154 throw new CmisRuntimeException("Error: " + e.getMessage(), e);
155 } finally {
156 portProvider.endCall(port);
157 }
158 }
159
160 @Override
161 public ObjectData getObjectOfLatestVersion(String repositoryId, String objectId, String versionSeriesId,
162 Boolean major, String filter, Boolean includeAllowableActions, IncludeRelationships includeRelationships,
163 String renditionFilter, Boolean includePolicyIds, Boolean includeACL, ExtensionsData extension) {
164 VersioningServicePort port = portProvider.getVersioningServicePort(getCmisVersion(repositoryId),
165 "getObjectOfLatestVersion");
166
167 try {
168 return convert(port.getObjectOfLatestVersion(repositoryId, versionSeriesId, major, filter,
169 includeAllowableActions, convert(EnumIncludeRelationships.class, includeRelationships),
170 renditionFilter, includePolicyIds, includeACL, convert(extension)));
171 } catch (CmisException e) {
172 throw convertException(e);
173 } catch (Exception e) {
174 throw new CmisRuntimeException("Error: " + e.getMessage(), e);
175 } finally {
176 portProvider.endCall(port);
177 }
178 }
179
180 @Override
181 public Properties getPropertiesOfLatestVersion(String repositoryId, String objectId, String versionSeriesId,
182 Boolean major, String filter, ExtensionsData extension) {
183 VersioningServicePort port = portProvider.getVersioningServicePort(getCmisVersion(repositoryId),
184 "getPropertiesOfLatestVersion");
185
186 try {
187 return convert(port.getPropertiesOfLatestVersion(repositoryId, versionSeriesId, major, filter,
188 convert(extension)));
189 } catch (CmisException e) {
190 throw convertException(e);
191 } catch (Exception e) {
192 throw new CmisRuntimeException("Error: " + e.getMessage(), e);
193 } finally {
194 portProvider.endCall(port);
195 }
196 }
197 }