This project has retired. For details please refer to its
Attic page.
InMemoryServiceValidatorImpl xref
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.chemistry.opencmis.inmemory.storedobj.impl;
20
21 import org.apache.chemistry.opencmis.commons.data.Acl;
22 import org.apache.chemistry.opencmis.commons.data.ExtensionsData;
23 import org.apache.chemistry.opencmis.commons.enums.AclPropagation;
24 import org.apache.chemistry.opencmis.commons.enums.RelationshipDirection;
25 import org.apache.chemistry.opencmis.commons.enums.UnfileObject;
26 import org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException;
27 import org.apache.chemistry.opencmis.commons.server.CallContext;
28 import org.apache.chemistry.opencmis.commons.spi.Holder;
29 import org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl;
30 import org.apache.chemistry.opencmis.inmemory.storedobj.api.ObjectStore;
31 import org.apache.chemistry.opencmis.inmemory.storedobj.api.StoreManager;
32 import org.apache.chemistry.opencmis.inmemory.storedobj.api.StoredObject;
33
34 public class InMemoryServiceValidatorImpl extends BaseServiceValidatorImpl {
35
36 public InMemoryServiceValidatorImpl(StoreManager sm) {
37 super(sm);
38 }
39
40
41
42
43 @Override
44 protected StoredObject checkStandardParameters(String repositoryId, String objectId) {
45
46 StoredObject so = super.checkStandardParameters(repositoryId, objectId);
47 return so;
48 }
49
50
51
52
53 @Override
54 protected StoredObject checkStandardParametersAllowNull(String repositoryId, String objectId) {
55
56 StoredObject so = super.checkStandardParametersAllowNull(repositoryId, objectId);
57 return so;
58 }
59
60
61
62
63 @Override
64 protected StoredObject checkExistingObjectId(ObjectStore objStore, String objectId) {
65
66 StoredObject so = super.checkExistingObjectId(objStore, objectId);
67 return so;
68 }
69
70
71
72
73 @Override
74 protected void checkRepositoryId(String repositoryId) {
75
76 super.checkRepositoryId(repositoryId);
77 }
78
79
80
81
82 @Override
83 protected StoredObject[] checkParams(String repositoryId, String objectId1, String objectId2) {
84
85 StoredObject[] sos = super.checkParams(repositoryId, objectId1, objectId2);
86 return sos;
87 }
88
89
90
91
92 @Override
93 public void getRepositoryInfos(CallContext context, ExtensionsData extension) {
94
95 super.getRepositoryInfos(context, extension);
96 }
97
98
99
100
101 @Override
102 public void getRepositoryInfo(CallContext context, String repositoryId, ExtensionsData extension) {
103
104 super.getRepositoryInfo(context, repositoryId, extension);
105 }
106
107
108
109
110 @Override
111 public void getTypeChildren(CallContext context, String repositoryId, String typeId, ExtensionsData extension) {
112
113 super.getTypeChildren(context, repositoryId, typeId, extension);
114 }
115
116
117
118
119 @Override
120 public void getTypeDescendants(CallContext context, String repositoryId, String typeId, ExtensionsData extension) {
121
122 super.getTypeDescendants(context, repositoryId, typeId, extension);
123 }
124
125
126
127
128 @Override
129 public void getTypeDefinition(CallContext context, String repositoryId, String typeId, ExtensionsData extension) {
130
131 super.getTypeDefinition(context, repositoryId, typeId, extension);
132 }
133
134
135
136
137 @Override
138 public StoredObject getChildren(CallContext context, String repositoryId, String folderId, ExtensionsData extension) {
139
140 StoredObject so = super.getChildren(context, repositoryId, folderId, extension);
141 checkReadAccess(repositoryId, context.getUsername(), so);
142 return so;
143 }
144
145
146
147
148 @Override
149 public StoredObject getDescendants(CallContext context, String repositoryId, String folderId,
150 ExtensionsData extension) {
151
152 StoredObject so = super.getDescendants(context, repositoryId, folderId, extension);
153 checkReadAccess(repositoryId, context.getUsername(), so);
154 return so;
155 }
156
157
158
159
160 @Override
161 public StoredObject getFolderTree(CallContext context, String repositoryId, String folderId,
162 ExtensionsData extension) {
163
164 StoredObject so = super.getFolderTree(context, repositoryId, folderId, extension);
165 checkReadAccess(repositoryId, context.getUsername(), so);
166 return so;
167 }
168
169
170
171
172 @Override
173 public StoredObject getObjectParents(CallContext context, String repositoryId, String objectId,
174 ExtensionsData extension) {
175
176 StoredObject so = super.getObjectParents(context, repositoryId, objectId, extension);
177 checkReadAccess(repositoryId, context.getUsername(), so);
178 return so;
179 }
180
181
182
183
184 @Override
185 public StoredObject getFolderParent(CallContext context, String repositoryId, String folderId,
186 ExtensionsData extension) {
187
188 StoredObject so = super.getFolderParent(context, repositoryId, folderId, extension);
189 checkReadAccess(repositoryId, context.getUsername(), so);
190 return so;
191 }
192
193
194
195
196 @Override
197 public StoredObject getCheckedOutDocs(CallContext context, String repositoryId, String folderId,
198 ExtensionsData extension) {
199
200 StoredObject so = super.getCheckedOutDocs(context, repositoryId, folderId, extension);
201 if (null != so )
202 checkReadAccess(repositoryId, context.getUsername(), so);
203 return so;
204 }
205
206
207
208
209 @Override
210 public StoredObject createDocument(CallContext context, String repositoryId, String folderId,
211 ExtensionsData extension) {
212
213 StoredObject folder = super.createDocument(context, repositoryId, folderId, extension);
214 if (null != folder)
215 checkWriteAccess(repositoryId, context.getUsername(), folder);
216 return folder;
217 }
218
219
220
221
222 @Override
223 public StoredObject createDocumentFromSource(CallContext context, String repositoryId, String sourceId,
224 String folderId, ExtensionsData extension) {
225
226 StoredObject source = super.createDocumentFromSource(context, repositoryId, sourceId, folderId, extension);
227 checkWriteAccess(repositoryId, context.getUsername(), source);
228 return source;
229 }
230
231
232
233
234 @Override
235 public StoredObject createFolder(CallContext context, String repositoryId, String folderId, ExtensionsData extension) {
236
237 StoredObject parentFolder = super.createFolder(context, repositoryId, folderId, extension);
238 checkWriteAccess(repositoryId, context.getUsername(), parentFolder);
239 return parentFolder;
240 }
241
242
243
244
245 @Override
246 public StoredObject[] createRelationship(CallContext context, String repositoryId, String sourceId,
247 String targetId, ExtensionsData extension) {
248
249 StoredObject[] sos = super.createRelationship(context, repositoryId, sourceId, targetId, extension);
250 checkReadAccess(repositoryId, context.getUsername(), sos[0]);
251 checkWriteAccess(repositoryId, context.getUsername(), sos[1]);
252 return sos;
253 }
254
255
256
257
258 @Override
259 public StoredObject createPolicy(CallContext context, String repositoryId, String folderId, ExtensionsData extension) {
260
261 StoredObject so = super.createPolicy(context, repositoryId, folderId, extension);
262 checkAllAccess(repositoryId, context.getUsername(), so);
263 return so;
264 }
265
266
267
268
269 @Override
270 public StoredObject getAllowableActions(CallContext context, String repositoryId, String objectId,
271 ExtensionsData extension) {
272
273 StoredObject so = super.getAllowableActions(context, repositoryId, objectId, extension);
274 checkReadAccess(repositoryId, context.getUsername(), so);
275 return so;
276 }
277
278
279
280
281 @Override
282 public StoredObject getObject(CallContext context, String repositoryId, String objectId, ExtensionsData extension) {
283
284 StoredObject so = super.getObject(context, repositoryId, objectId, extension);
285 checkReadAccess(repositoryId, context.getUsername(), so);
286 return so;
287 }
288
289
290
291
292 @Override
293 public StoredObject getProperties(CallContext context, String repositoryId, String objectId,
294 ExtensionsData extension) {
295
296 StoredObject so = super.getProperties(context, repositoryId, objectId, extension);
297 checkReadAccess(repositoryId, context.getUsername(), so);
298 return so;
299 }
300
301
302
303
304 @Override
305 public StoredObject getRenditions(CallContext context, String repositoryId, String objectId,
306 ExtensionsData extension) {
307
308 StoredObject so = super.getRenditions(context, repositoryId, objectId, extension);
309 checkReadAccess(repositoryId, context.getUsername(), so);
310 return so;
311 }
312
313
314
315
316 @Override
317 public StoredObject getObjectByPath(CallContext context, String repositoryId, String path, ExtensionsData extension) {
318
319 StoredObject so = super.getObjectByPath(context, repositoryId, path, extension);
320 checkReadAccess(repositoryId, context.getUsername(), so);
321 return so;
322 }
323
324
325
326
327 @Override
328 public StoredObject getContentStream(CallContext context, String repositoryId, String objectId, String streamId,
329 ExtensionsData extension) {
330
331 StoredObject so = super.getContentStream(context, repositoryId, objectId, streamId, extension);
332 checkReadAccess(repositoryId, context.getUsername(), so);
333 return so;
334 }
335
336
337
338
339 @Override
340 public StoredObject updateProperties(CallContext context, String repositoryId, Holder<String> objectId,
341 ExtensionsData extension) {
342
343 StoredObject so = super.updateProperties(context, repositoryId, objectId, extension);
344 checkWriteAccess(repositoryId, context.getUsername(), so);
345 return so;
346 }
347
348
349
350
351 @Override
352 public StoredObject[] moveObject(CallContext context, String repositoryId, Holder<String> objectId,
353 String targetFolderId, String sourceFolderId, ExtensionsData extension) {
354
355 StoredObject[] sos = super.moveObject(context, repositoryId, objectId, targetFolderId, sourceFolderId, extension);
356 checkReadAccess(repositoryId, context.getUsername(), sos[0]);
357 checkReadAccess(repositoryId, context.getUsername(), sos[1]);
358 checkWriteAccess(repositoryId, context.getUsername(), sos[2]);
359 return sos;
360 }
361
362
363
364
365 @Override
366 public StoredObject deleteObject(CallContext context, String repositoryId, String objectId, Boolean allVersions,
367 ExtensionsData extension) {
368
369 StoredObject so = super.deleteObject(context, repositoryId, objectId, allVersions, extension);
370 checkWriteAccess(repositoryId, context.getUsername(), so);
371 return so;
372 }
373
374
375
376
377 @Override
378 public StoredObject deleteTree(CallContext context, String repositoryId, String folderId, Boolean allVersions,
379 UnfileObject unfileObjects, ExtensionsData extension) {
380
381 StoredObject so = super.deleteTree(context, repositoryId, folderId, allVersions, unfileObjects, extension);
382 checkWriteAccess(repositoryId, context.getUsername(), so);
383 return so;
384 }
385
386
387
388
389 @Override
390 public StoredObject setContentStream(CallContext context, String repositoryId, Holder<String> objectId,
391 Boolean overwriteFlag, ExtensionsData extension) {
392
393 StoredObject so = super.setContentStream(context, repositoryId, objectId, overwriteFlag, extension);
394 checkWriteAccess(repositoryId, context.getUsername(), so);
395 return so;
396 }
397
398
399
400
401 @Override
402 public StoredObject deleteContentStream(CallContext context, String repositoryId, Holder<String> objectId,
403 ExtensionsData extension) {
404
405 StoredObject so = super.deleteContentStream(context, repositoryId, objectId, extension);
406 checkWriteAccess(repositoryId, context.getUsername(), so);
407 return so;
408 }
409
410
411
412
413 @Override
414 public StoredObject checkOut(CallContext context, String repositoryId, Holder<String> objectId,
415 ExtensionsData extension, Holder<Boolean> contentCopied) {
416
417 StoredObject so = super.checkOut(context, repositoryId, objectId, extension, contentCopied);
418
419 checkWriteAccess(repositoryId, context.getUsername(), so);
420 return so;
421 }
422
423
424
425
426 @Override
427 public StoredObject cancelCheckOut(CallContext context, String repositoryId, String objectId,
428 ExtensionsData extension) {
429
430 StoredObject so = super.cancelCheckOut(context, repositoryId, objectId, extension);
431
432 checkWriteAccess(repositoryId, context.getUsername(), so);
433 return so;
434 }
435
436
437
438
439 @Override
440 public StoredObject checkIn(CallContext context, String repositoryId, Holder<String> objectId,
441 Acl addAces, Acl removeAces, ExtensionsData extension) {
442
443 StoredObject so = super.checkIn(context, repositoryId, objectId, addAces, removeAces, extension);
444
445
446 if (null != addAces || null != removeAces)
447 throw new CmisInvalidArgumentException(
448 "version specific ACLs are not supported, addAces and removeAces must be null.");
449
450 checkWriteAccess(repositoryId, context.getUsername(), so);
451 return so;
452 }
453
454
455
456
457 @Override
458 public StoredObject getObjectOfLatestVersion(CallContext context, String repositoryId, String objectId,
459 String versionSeriesId, ExtensionsData extension) {
460
461 StoredObject so = super.getObjectOfLatestVersion(context, repositoryId, objectId, versionSeriesId, extension);
462 checkReadAccess(repositoryId, context.getUsername(), so);
463 return so;
464 }
465
466
467
468
469 @Override
470 public StoredObject getPropertiesOfLatestVersion(CallContext context, String repositoryId, String objectId,
471 String versionSeriesId, ExtensionsData extension) {
472
473 StoredObject so = super.getPropertiesOfLatestVersion(context, repositoryId, objectId, versionSeriesId, extension);
474 checkReadAccess(repositoryId, context.getUsername(), so);
475 return so;
476 }
477
478
479
480
481 @Override
482 public StoredObject getAllVersions(CallContext context, String repositoryId, String objectId,
483 String versionSeriesId, ExtensionsData extension) {
484
485 StoredObject so = super.getAllVersions(context, repositoryId, objectId, versionSeriesId, extension);
486 checkReadAccess(repositoryId, context.getUsername(), so);
487 return so;
488 }
489
490
491
492
493 @Override
494 public void query(CallContext context, String repositoryId, ExtensionsData extension) {
495
496 super.query(context, repositoryId, extension);
497 }
498
499
500
501
502 @Override
503 public void getContentChanges(CallContext context, String repositoryId, ExtensionsData extension) {
504
505 super.getContentChanges(context, repositoryId, extension);
506 }
507
508
509
510
511 @Override
512 public StoredObject[] addObjectToFolder(CallContext context, String repositoryId, String objectId, String folderId,
513 Boolean allVersions, ExtensionsData extension) {
514
515 StoredObject[] sos = super.addObjectToFolder(context, repositoryId, objectId, folderId, allVersions, extension);
516 checkReadAccess(repositoryId, context.getUsername(), sos[0]);
517 checkWriteAccess(repositoryId, context.getUsername(), sos[1]);
518 return sos;
519 }
520
521
522
523
524 @Override
525 public StoredObject[] removeObjectFromFolder(CallContext context, String repositoryId, String objectId,
526 String folderId, ExtensionsData extension) {
527
528 StoredObject[] sos = super.removeObjectFromFolder(context, repositoryId, objectId, folderId, extension);
529 checkWriteAccess(repositoryId, context.getUsername(), sos[0]);
530 checkWriteAccess(repositoryId, context.getUsername(), sos[1]);
531 return sos;
532 }
533
534
535
536
537 @Override
538 public StoredObject getObjectRelationships(CallContext context, String repositoryId, String objectId,
539 RelationshipDirection relationshipDirection, String typeId, ExtensionsData extension) {
540
541 StoredObject so = super.getObjectRelationships(context, repositoryId, objectId, relationshipDirection, typeId, extension);
542 checkReadAccess(repositoryId, context.getUsername(), so);
543 return so;
544 }
545
546
547
548
549 @Override
550 public StoredObject getAcl(CallContext context, String repositoryId, String objectId, ExtensionsData extension) {
551
552 StoredObject so = super.getAcl(context, repositoryId, objectId, extension);
553 checkReadAccess(repositoryId, context.getUsername(), so);
554 return so;
555 }
556
557
558
559
560 @Override
561 public StoredObject applyAcl(CallContext context, String repositoryId, String objectId,
562 AclPropagation aclPropagation, ExtensionsData extension) {
563
564 StoredObject so = super.applyAcl(context, repositoryId, objectId, aclPropagation, extension);
565 checkAllAccess(repositoryId, context.getUsername(), so);
566 return so;
567 }
568
569
570
571
572 @Override
573 public StoredObject[] applyPolicy(CallContext context, String repositoryId, String policyId, String objectId,
574 ExtensionsData extension) {
575
576 StoredObject[] sos = super.applyPolicy(context, repositoryId, policyId, objectId, extension);
577 checkAllAccess(repositoryId, context.getUsername(), sos[1]);
578 return sos;
579 }
580
581
582
583
584 @Override
585 public StoredObject[] removePolicy(CallContext context, String repositoryId, String policyId, String objectId,
586 ExtensionsData extension) {
587
588 StoredObject[] sos = super.removePolicy(context, repositoryId, policyId, objectId, extension);
589 checkAllAccess(repositoryId, context.getUsername(), sos[1]);
590 return sos;
591 }
592
593
594
595
596 @Override
597 public StoredObject getAppliedPolicies(CallContext context, String repositoryId, String objectId,
598 ExtensionsData extension) {
599
600 StoredObject so = super.getAppliedPolicies(context, repositoryId, objectId, extension);
601 checkReadAccess(repositoryId, context.getUsername(), so);
602 return so;
603 }
604
605
606
607
608 @Override
609 public StoredObject create(CallContext context, String repositoryId, String folderId, ExtensionsData extension) {
610
611 StoredObject so = super.create(context, repositoryId, folderId, extension);
612 checkWriteAccess(repositoryId, context.getUsername(), so);
613 return so;
614 }
615
616
617
618
619 @Override
620 public StoredObject deleteObjectOrCancelCheckOut(CallContext context, String repositoryId, String objectId,
621 ExtensionsData extension) {
622
623 StoredObject so = super.deleteObjectOrCancelCheckOut(context, repositoryId, objectId, extension);
624 checkWriteAccess(repositoryId, context.getUsername(), so);
625 return so;
626 }
627
628
629
630
631 @Override
632 public StoredObject applyAcl(CallContext context, String repositoryId, String objectId) {
633
634 StoredObject so = super.applyAcl(context, repositoryId, objectId);
635 checkAllAccess(repositoryId, context.getUsername(), so);
636 return so;
637 }
638
639 private ObjectStoreImpl getObjectStore(String repositoryId) {
640 return (ObjectStoreImpl) fStoreManager.getObjectStore(repositoryId);
641 }
642
643 private void checkReadAccess(String repositoryId, String principalId, StoredObject so) {
644 getObjectStore(repositoryId).checkReadAccess(principalId, so);
645 }
646
647 private void checkWriteAccess(String repositoryId, String principalId, StoredObject so) {
648 getObjectStore(repositoryId).checkWriteAccess(principalId, so);
649 }
650
651 private void checkAllAccess(String repositoryId, String principalId, StoredObject so) {
652 getObjectStore(repositoryId).checkAllAccess(principalId, so);
653 }
654
655 }