1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.apache.chemistry.opencmis.client.bindings.spi.local;
22
23 import java.math.BigInteger;
24 import java.util.List;
25
26 import org.apache.chemistry.opencmis.client.bindings.spi.BindingSession;
27 import org.apache.chemistry.opencmis.commons.data.Acl;
28 import org.apache.chemistry.opencmis.commons.data.AllowableActions;
29 import org.apache.chemistry.opencmis.commons.data.BulkUpdateObjectIdAndChangeToken;
30 import org.apache.chemistry.opencmis.commons.data.ContentStream;
31 import org.apache.chemistry.opencmis.commons.data.ExtensionsData;
32 import org.apache.chemistry.opencmis.commons.data.FailedToDeleteData;
33 import org.apache.chemistry.opencmis.commons.data.ObjectData;
34 import org.apache.chemistry.opencmis.commons.data.Properties;
35 import org.apache.chemistry.opencmis.commons.data.RenditionData;
36 import org.apache.chemistry.opencmis.commons.enums.IncludeRelationships;
37 import org.apache.chemistry.opencmis.commons.enums.UnfileObject;
38 import org.apache.chemistry.opencmis.commons.enums.VersioningState;
39 import org.apache.chemistry.opencmis.commons.server.CmisService;
40 import org.apache.chemistry.opencmis.commons.server.CmisServiceFactory;
41 import org.apache.chemistry.opencmis.commons.spi.Holder;
42 import org.apache.chemistry.opencmis.commons.spi.ObjectService;
43
44 public class ObjectServiceImpl extends AbstractLocalService implements ObjectService {
45
46
47
48
49 public ObjectServiceImpl(BindingSession session, CmisServiceFactory factory) {
50 setSession(session);
51 setServiceFactory(factory);
52 }
53
54 @Override
55 public String createDocument(String repositoryId, Properties properties, String folderId,
56 ContentStream contentStream, VersioningState versioningState, List<String> policies, Acl addAces,
57 Acl removeAces, ExtensionsData extension) {
58 CmisService service = getService(repositoryId);
59
60 try {
61 if (stopBeforeService(service)) {
62 return null;
63 }
64
65 String serviceResult = service.createDocument(repositoryId, properties, folderId, contentStream,
66 versioningState, policies, addAces, removeAces, extension);
67
68 if (stopAfterService(service)) {
69 return null;
70 }
71
72 return serviceResult;
73 } finally {
74 service.close();
75 }
76 }
77
78 @Override
79 public String createDocumentFromSource(String repositoryId, String sourceId, Properties properties,
80 String folderId, VersioningState versioningState, List<String> policies, Acl addAces, Acl removeAces,
81 ExtensionsData extension) {
82 CmisService service = getService(repositoryId);
83
84 try {
85 if (stopBeforeService(service)) {
86 return null;
87 }
88
89 String serviceResult = service.createDocumentFromSource(repositoryId, sourceId, properties, folderId,
90 versioningState, policies, addAces, removeAces, extension);
91
92 if (stopAfterService(service)) {
93 return null;
94 }
95
96 return serviceResult;
97 } finally {
98 service.close();
99 }
100 }
101
102 @Override
103 public String createFolder(String repositoryId, Properties properties, String folderId, List<String> policies,
104 Acl addAces, Acl removeAces, ExtensionsData extension) {
105 CmisService service = getService(repositoryId);
106
107 try {
108 if (stopBeforeService(service)) {
109 return null;
110 }
111
112 String serviceResult = service.createFolder(repositoryId, properties, folderId, policies, addAces,
113 removeAces, extension);
114
115 if (stopAfterService(service)) {
116 return null;
117 }
118
119 return serviceResult;
120 } finally {
121 service.close();
122 }
123 }
124
125 @Override
126 public String createPolicy(String repositoryId, Properties properties, String folderId, List<String> policies,
127 Acl addAces, Acl removeAces, ExtensionsData extension) {
128 CmisService service = getService(repositoryId);
129
130 try {
131 if (stopBeforeService(service)) {
132 return null;
133 }
134
135 String serviceResult = service.createPolicy(repositoryId, properties, folderId, policies, addAces,
136 removeAces, extension);
137
138 if (stopAfterService(service)) {
139 return null;
140 }
141
142 return serviceResult;
143 } finally {
144 service.close();
145 }
146 }
147
148 @Override
149 public String createItem(String repositoryId, Properties properties, String folderId, List<String> policies,
150 Acl addAces, Acl removeAces, ExtensionsData extension) {
151 CmisService service = getService(repositoryId);
152
153 try {
154 if (stopBeforeService(service)) {
155 return null;
156 }
157 String serviceResult = service.createItem(repositoryId, properties, folderId, policies, addAces,
158 removeAces, extension);
159
160 if (stopAfterService(service)) {
161 return null;
162 }
163
164 return serviceResult;
165 } finally {
166 service.close();
167 }
168 }
169
170 @Override
171 public String createRelationship(String repositoryId, Properties properties, List<String> policies, Acl addAces,
172 Acl removeAces, ExtensionsData extension) {
173 CmisService service = getService(repositoryId);
174
175 try {
176 if (stopBeforeService(service)) {
177 return null;
178 }
179
180 String serviceResult = service.createRelationship(repositoryId, properties, policies, addAces, removeAces,
181 extension);
182
183 if (stopAfterService(service)) {
184 return null;
185 }
186
187 return serviceResult;
188 } finally {
189 service.close();
190 }
191 }
192
193 @Override
194 public void deleteContentStream(String repositoryId, Holder<String> objectId, Holder<String> changeToken,
195 ExtensionsData extension) {
196 CmisService service = getService(repositoryId);
197
198 try {
199 if (stopBeforeService(service)) {
200 return;
201 }
202
203 service.deleteContentStream(repositoryId, objectId, changeToken, extension);
204
205 if (stopAfterService(service)) {
206 return;
207 }
208
209 } finally {
210 service.close();
211 }
212 }
213
214 @Override
215 public void deleteObject(String repositoryId, String objectId, Boolean allVersions, ExtensionsData extension) {
216 CmisService service = getService(repositoryId);
217
218 try {
219 if (stopBeforeService(service)) {
220 return;
221 }
222
223 service.deleteObject(repositoryId, objectId, allVersions, extension);
224
225 if (stopAfterService(service)) {
226 return;
227 }
228
229 } finally {
230 service.close();
231 }
232 }
233
234 @Override
235 public FailedToDeleteData deleteTree(String repositoryId, String folderId, Boolean allVersions,
236 UnfileObject unfileObjects, Boolean continueOnFailure, ExtensionsData extension) {
237 CmisService service = getService(repositoryId);
238
239 try {
240 if (stopBeforeService(service)) {
241 return null;
242 }
243
244 FailedToDeleteData serviceResult = service.deleteTree(repositoryId, folderId, allVersions, unfileObjects,
245 continueOnFailure, extension);
246
247 if (stopAfterService(service)) {
248 return null;
249 }
250
251 return serviceResult;
252 } finally {
253 service.close();
254 }
255 }
256
257 @Override
258 public AllowableActions getAllowableActions(String repositoryId, String objectId, ExtensionsData extension) {
259 CmisService service = getService(repositoryId);
260
261 try {
262 if (stopBeforeService(service)) {
263 return null;
264 }
265
266 AllowableActions serviceResult = service.getAllowableActions(repositoryId, objectId, extension);
267
268 if (stopAfterService(service)) {
269 return null;
270 }
271
272 return serviceResult;
273 } finally {
274 service.close();
275 }
276 }
277
278 @Override
279 public ContentStream getContentStream(String repositoryId, String objectId, String streamId, BigInteger offset,
280 BigInteger length, ExtensionsData extension) {
281 CmisService service = getService(repositoryId);
282
283 try {
284 if (stopBeforeService(service)) {
285 return null;
286 }
287
288 ContentStream serviceResult = service.getContentStream(repositoryId, objectId, streamId, offset, length,
289 extension);
290
291 if (stopAfterService(service)) {
292 return null;
293 }
294
295 return serviceResult;
296 } finally {
297 service.close();
298 }
299 }
300
301 @Override
302 public ObjectData getObject(String repositoryId, String objectId, String filter, Boolean includeAllowableActions,
303 IncludeRelationships includeRelationships, String renditionFilter, Boolean includePolicyIds,
304 Boolean includeAcl, ExtensionsData extension) {
305 CmisService service = getService(repositoryId);
306
307 try {
308 if (stopBeforeService(service)) {
309 return null;
310 }
311
312 ObjectData serviceResult = service.getObject(repositoryId, objectId, filter, includeAllowableActions,
313 includeRelationships, renditionFilter, includePolicyIds, includeAcl, extension);
314
315 if (stopAfterService(service)) {
316 return null;
317 }
318
319 return serviceResult;
320 } finally {
321 service.close();
322 }
323 }
324
325 @Override
326 public ObjectData getObjectByPath(String repositoryId, String path, String filter, Boolean includeAllowableActions,
327 IncludeRelationships includeRelationships, String renditionFilter, Boolean includePolicyIds,
328 Boolean includeAcl, ExtensionsData extension) {
329 CmisService service = getService(repositoryId);
330
331 try {
332 if (stopBeforeService(service)) {
333 return null;
334 }
335
336 ObjectData serviceResult = service.getObjectByPath(repositoryId, path, filter, includeAllowableActions,
337 includeRelationships, renditionFilter, includePolicyIds, includeAcl, extension);
338
339 if (stopAfterService(service)) {
340 return null;
341 }
342
343 return serviceResult;
344 } finally {
345 service.close();
346 }
347 }
348
349 @Override
350 public Properties getProperties(String repositoryId, String objectId, String filter, ExtensionsData extension) {
351 CmisService service = getService(repositoryId);
352
353 try {
354 if (stopBeforeService(service)) {
355 return null;
356 }
357
358 Properties serviceResult = service.getProperties(repositoryId, objectId, filter, extension);
359
360 if (stopAfterService(service)) {
361 return null;
362 }
363
364 return serviceResult;
365 } finally {
366 service.close();
367 }
368 }
369
370 @Override
371 public List<RenditionData> getRenditions(String repositoryId, String objectId, String renditionFilter,
372 BigInteger maxItems, BigInteger skipCount, ExtensionsData extension) {
373 CmisService service = getService(repositoryId);
374
375 try {
376 if (stopBeforeService(service)) {
377 return null;
378 }
379
380 List<RenditionData> serviceResult = service.getRenditions(repositoryId, objectId, renditionFilter,
381 maxItems, skipCount, extension);
382
383 if (stopAfterService(service)) {
384 return null;
385 }
386
387 return serviceResult;
388 } finally {
389 service.close();
390 }
391 }
392
393 @Override
394 public void moveObject(String repositoryId, Holder<String> objectId, String targetFolderId, String sourceFolderId,
395 ExtensionsData extension) {
396 CmisService service = getService(repositoryId);
397
398 try {
399 if (stopBeforeService(service)) {
400 return;
401 }
402
403 service.moveObject(repositoryId, objectId, targetFolderId, sourceFolderId, extension);
404
405 if (stopAfterService(service)) {
406 return;
407 }
408 } finally {
409 service.close();
410 }
411 }
412
413 @Override
414 public void setContentStream(String repositoryId, Holder<String> objectId, Boolean overwriteFlag,
415 Holder<String> changeToken, ContentStream contentStream, ExtensionsData extension) {
416 CmisService service = getService(repositoryId);
417
418 try {
419 if (stopBeforeService(service)) {
420 return;
421 }
422
423 service.setContentStream(repositoryId, objectId, overwriteFlag, changeToken, contentStream, extension);
424
425 if (stopAfterService(service)) {
426 return;
427 }
428 } finally {
429 service.close();
430 }
431 }
432
433 @Override
434 public void appendContentStream(String repositoryId, Holder<String> objectId, Holder<String> changeToken,
435 ContentStream contentStream, boolean isLastChunk, ExtensionsData extension) {
436 CmisService service = getService(repositoryId);
437
438 try {
439 if (stopBeforeService(service)) {
440 return;
441 }
442
443 service.appendContentStream(repositoryId, objectId, changeToken, contentStream, isLastChunk, extension);
444
445 if (stopAfterService(service)) {
446 return;
447 }
448 } finally {
449 service.close();
450 }
451 }
452
453 @Override
454 public void updateProperties(String repositoryId, Holder<String> objectId, Holder<String> changeToken,
455 Properties properties, ExtensionsData extension) {
456 CmisService service = getService(repositoryId);
457
458 try {
459 if (stopBeforeService(service)) {
460 return;
461 }
462
463 service.updateProperties(repositoryId, objectId, changeToken, properties, extension);
464
465 if (stopAfterService(service)) {
466 return;
467 }
468 } finally {
469 service.close();
470 }
471 }
472
473 @Override
474 public List<BulkUpdateObjectIdAndChangeToken> bulkUpdateProperties(String repositoryId,
475 List<BulkUpdateObjectIdAndChangeToken> objectIdAndChangeToken, Properties properties,
476 List<String> addSecondaryTypeIds, List<String> removeSecondaryTypeIds, ExtensionsData extension) {
477 CmisService service = getService(repositoryId);
478
479 try {
480 if (stopBeforeService(service)) {
481 return null;
482 }
483
484 List<BulkUpdateObjectIdAndChangeToken> serviceResult = service.bulkUpdateProperties(repositoryId,
485 objectIdAndChangeToken, properties, addSecondaryTypeIds, removeSecondaryTypeIds, extension);
486
487 if (stopAfterService(service)) {
488 return null;
489 }
490
491 return serviceResult;
492 } finally {
493 service.close();
494 }
495 }
496 }