This project has retired. For details please refer to its Attic page.
InMemoryServiceValidatorImpl xref

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   * http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
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      /* (non-Javadoc)
41       * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#checkStandardParameters(java.lang.String, java.lang.String)
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      /* (non-Javadoc)
51       * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#checkStandardParametersAllowNull(java.lang.String, java.lang.String)
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      /* (non-Javadoc)
61       * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#checkExistingObjectId(org.apache.chemistry.opencmis.inmemory.storedobj.api.ObjectStore, java.lang.String)
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      /* (non-Javadoc)
71       * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#checkRepositoryId(java.lang.String)
72       */
73      @Override
74      protected void checkRepositoryId(String repositoryId) {
75  
76          super.checkRepositoryId(repositoryId);
77      }
78  
79      /* (non-Javadoc)
80       * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#checkParams(java.lang.String, java.lang.String, java.lang.String)
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      /* (non-Javadoc)
90       * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getRepositoryInfos(org.apache.chemistry.opencmis.commons.server.CallContext, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
91       */
92      @Override
93      public void getRepositoryInfos(CallContext context, ExtensionsData extension) {
94  
95          super.getRepositoryInfos(context, extension);
96      }
97  
98      /* (non-Javadoc)
99       * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getRepositoryInfo(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
100      */
101     @Override
102     public void getRepositoryInfo(CallContext context, String repositoryId, ExtensionsData extension) {
103 
104         super.getRepositoryInfo(context, repositoryId, extension);
105     }
106 
107     /* (non-Javadoc)
108      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getTypeChildren(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
117      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getTypeDescendants(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
126      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getTypeDefinition(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
135      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getChildren(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
146      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getDescendants(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
158      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getFolderTree(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
170      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getObjectParents(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
182      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getFolderParent(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
194      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getCheckedOutDocs(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
207      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#createDocument(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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) // not if unfiled
215             checkWriteAccess(repositoryId, context.getUsername(), folder);
216         return folder;
217     }
218 
219     /* (non-Javadoc)
220      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#createDocumentFromSource(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
232      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#createFolder(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
243      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#createRelationship(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
256      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#createPolicy(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
267      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getAllowableActions(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
279      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getObject(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
290      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getProperties(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
302      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getRenditions(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
314      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getObjectByPath(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
325      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getContentStream(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
337      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#updateProperties(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, org.apache.chemistry.opencmis.commons.spi.Holder, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
349      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#moveObject(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, org.apache.chemistry.opencmis.commons.spi.Holder, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
363      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#deleteObject(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, java.lang.Boolean, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
375      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#deleteTree(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, java.lang.Boolean, org.apache.chemistry.opencmis.commons.enums.UnfileObject, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
387      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#setContentStream(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, org.apache.chemistry.opencmis.commons.spi.Holder, java.lang.Boolean, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
399      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#deleteContentStream(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, org.apache.chemistry.opencmis.commons.spi.Holder, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
411      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#checkOut(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, org.apache.chemistry.opencmis.commons.spi.Holder, org.apache.chemistry.opencmis.commons.data.ExtensionsData, org.apache.chemistry.opencmis.commons.spi.Holder)
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 //        StoredObject container = so instanceof DocumentVersion ? ((DocumentVersion)so).getParentDocument() : so;
419         checkWriteAccess(repositoryId, context.getUsername(), so);
420         return so;
421     }
422 
423     /* (non-Javadoc)
424      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#cancelCheckOut(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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 //        StoredObject container = so instanceof DocumentVersion ? ((DocumentVersion)so).getParentDocument() : so;
432         checkWriteAccess(repositoryId, context.getUsername(), so);
433         return so;
434     }
435 
436     /* (non-Javadoc)
437      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#checkIn(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, org.apache.chemistry.opencmis.commons.spi.Holder, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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 //        StoredObject container = so instanceof DocumentVersion ? ((DocumentVersion)so).getParentDocument() : so;
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     /* (non-Javadoc)
455      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getObjectOfLatestVersion(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
467      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getPropertiesOfLatestVersion(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
479      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getAllVersions(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
491      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#query(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
492      */
493     @Override
494     public void query(CallContext context, String repositoryId, ExtensionsData extension) {
495 
496         super.query(context, repositoryId, extension);
497     }
498 
499     /* (non-Javadoc)
500      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getContentChanges(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
501      */
502     @Override
503     public void getContentChanges(CallContext context, String repositoryId, ExtensionsData extension) {
504 
505         super.getContentChanges(context, repositoryId, extension);
506     }
507 
508     /* (non-Javadoc)
509      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#addObjectToFolder(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, java.lang.String, java.lang.Boolean, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
522      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#removeObjectFromFolder(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
535      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getObjectRelationships(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.enums.RelationshipDirection, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
547      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getAcl(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
558      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#applyAcl(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.enums.AclPropagation, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
570      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#applyPolicy(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
582      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#removePolicy(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
594      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getAppliedPolicies(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
606      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#create(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
617      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#deleteObjectOrCancelCheckOut(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
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     /* (non-Javadoc)
629      * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#applyAcl(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String)
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 }