chemistry-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From j...@apache.org
Subject svn commit: r1065655 - in /incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory: server/ storedobj/api/ storedobj/impl/
Date Mon, 31 Jan 2011 15:41:12 GMT
Author: jens
Date: Mon Jan 31 15:41:11 2011
New Revision: 1065655

URL: http://svn.apache.org/viewvc?rev=1065655&view=rev
Log:
some internal inmemory improvements for more flexibility with validation and permission handling

Added:
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/BaseServiceValidatorImpl.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/CmisServiceValidator.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/InMemoryServiceValidatorImpl.java
Modified:
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryAbstractServiceImpl.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryDiscoveryServiceImpl.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryMultiFilingServiceImpl.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryNavigationServiceImpl.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryObjectServiceImpl.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryRepositoryServiceImpl.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryService.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryVersioningServiceImpl.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/StoreManager.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/StoreManagerImpl.java

Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/BaseServiceValidatorImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/BaseServiceValidatorImpl.java?rev=1065655&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/BaseServiceValidatorImpl.java (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/BaseServiceValidatorImpl.java Mon Jan 31 15:41:11 2011
@@ -0,0 +1,398 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.chemistry.opencmis.inmemory.server;
+
+import org.apache.chemistry.opencmis.commons.data.ExtensionsData;
+import org.apache.chemistry.opencmis.commons.data.RepositoryInfo;
+import org.apache.chemistry.opencmis.commons.enums.AclPropagation;
+import org.apache.chemistry.opencmis.commons.enums.RelationshipDirection;
+import org.apache.chemistry.opencmis.commons.enums.UnfileObject;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException;
+import org.apache.chemistry.opencmis.commons.server.CallContext;
+import org.apache.chemistry.opencmis.commons.spi.Holder;
+import org.apache.chemistry.opencmis.inmemory.storedobj.api.CmisServiceValidator;
+import org.apache.chemistry.opencmis.inmemory.storedobj.api.ObjectStore;
+import org.apache.chemistry.opencmis.inmemory.storedobj.api.StoreManager;
+import org.apache.chemistry.opencmis.inmemory.storedobj.api.StoredObject;
+
+public class BaseServiceValidatorImpl implements CmisServiceValidator {
+
+    protected StoreManager fStoreManager;
+    
+    public BaseServiceValidatorImpl(StoreManager sm) {
+        fStoreManager = sm;
+    }
+
+    /**
+     * check if repository is known and that object exists. To avoid later calls
+     * to again retrieve the object from the id return the retrieved object for
+     * later use.
+     * 
+     * @param repositoryId
+     *            repository id
+     * @param objectId
+     *            object id
+     * @return object for objectId
+     */
+    protected StoredObject checkStandardParameters(String repositoryId, String objectId) {
+
+        if (null == repositoryId)
+            throw new CmisInvalidArgumentException("Repository Id cannot be null.");
+
+        if (null == objectId)
+            throw new CmisInvalidArgumentException("Object Id cannot be null.");
+
+        ObjectStore objStore = fStoreManager.getObjectStore(repositoryId);
+
+        if (objStore == null)
+            throw new CmisObjectNotFoundException("Unknown repository id: " + repositoryId);
+
+        StoredObject so = objStore.getObjectById(objectId);
+
+        if (so == null)
+            throw new CmisObjectNotFoundException("Unknown object id: " + objectId);
+
+        return so;
+    }
+
+    protected StoredObject checkStandardParametersAllowNull(String repositoryId, String objectId) {
+
+        StoredObject so = null;
+        
+        if (null == repositoryId)
+            throw new CmisInvalidArgumentException("Repository Id cannot be null.");
+
+        if (null != objectId) {
+
+            ObjectStore objStore = fStoreManager.getObjectStore(repositoryId);
+
+            if (objStore == null)
+                throw new CmisObjectNotFoundException("Unknown repository id: " + repositoryId);
+
+            so = objStore.getObjectById(objectId);
+
+            if (so == null)
+                throw new CmisObjectNotFoundException("Unknown object id: " + objectId);
+        }
+
+        return so;
+    }
+
+    protected StoredObject checkExistingObjectId(ObjectStore objStore, String objectId) {
+
+        if (null == objectId)
+            throw new CmisInvalidArgumentException("Object Id cannot be null.");
+
+        StoredObject so = objStore.getObjectById(objectId);
+
+        if (so == null)
+            throw new CmisObjectNotFoundException("Unknown object id: " + objectId);
+
+        return so;
+    }
+
+    protected void checkRepositoryId(String repositoryId) {
+        if (null == repositoryId)
+            throw new CmisInvalidArgumentException("Repository Id cannot be null.");
+        
+        ObjectStore objStore = fStoreManager.getObjectStore(repositoryId);
+
+        if (objStore == null)
+            throw new CmisInvalidArgumentException("Unknown repository id: " + repositoryId);
+    }
+
+    protected StoredObject[] checkParams(String repositoryId, String objectId1, String objectId2) {
+        StoredObject[] so = new StoredObject[2];
+        so[0] = checkStandardParameters(repositoryId, objectId1);
+        ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
+        so[1] = checkExistingObjectId(objectStore, objectId2);
+        return so;
+    }
+    
+    public void getRepositoryInfos(CallContext context, ExtensionsData extension) {        
+    }
+
+    public void getRepositoryInfo(CallContext context, String repositoryId, ExtensionsData extension) {
+        
+        checkRepositoryId(repositoryId);
+    }
+
+    public void getTypeChildren(CallContext context, String repositoryId, String typeId,
+            ExtensionsData extension) {
+
+        checkRepositoryId(repositoryId);
+    }
+
+    public void getTypeDescendants(CallContext context, String repositoryId, String typeId,
+            ExtensionsData extension) {
+
+        checkRepositoryId(repositoryId);
+    }
+
+    public void getTypeDefinition(CallContext context, String repositoryId, String typeId,
+            ExtensionsData extension) {
+
+        checkRepositoryId(repositoryId);
+    }
+
+    public StoredObject getChildren(String repositoryId, String folderId, ExtensionsData extension) {
+
+        return checkStandardParameters(repositoryId, folderId);
+    }
+
+    public StoredObject getDescendants(CallContext context, String repositoryId, String folderId,
+            ExtensionsData extension) {
+
+        return checkStandardParameters(repositoryId, folderId);
+    }
+
+    public StoredObject getFolderTree(CallContext context, String repositoryId, String folderId,
+            ExtensionsData extension) {
+
+        return checkStandardParameters(repositoryId, folderId);
+    }
+
+    public StoredObject getObjectParents(CallContext context, String repositoryId, String objectId,
+            ExtensionsData extension) {
+        
+        return checkStandardParameters(repositoryId, objectId);
+    }
+
+    public StoredObject getFolderParent(CallContext context, String repositoryId, String folderId,
+            ExtensionsData extension) {
+        
+        return checkStandardParameters(repositoryId, folderId);
+    }
+
+    public StoredObject getCheckedOutDocs(CallContext context, String repositoryId, String folderId,
+            ExtensionsData extension) {
+        
+        if (null != folderId)
+            return checkStandardParameters(repositoryId, folderId);
+        else {
+            checkRepositoryId(repositoryId);
+            return null;
+        }
+
+    }
+
+    public StoredObject createDocument(CallContext context, String repositoryId, String folderId,
+            ExtensionsData extension) {       
+        return checkStandardParametersAllowNull(repositoryId, folderId);
+    }
+
+    public StoredObject createDocumentFromSource(CallContext context, String repositoryId, String sourceId,
+            String folderId, ExtensionsData extension) {
+
+        return checkStandardParametersAllowNull(repositoryId, sourceId);
+    }
+
+    public StoredObject createFolder(CallContext context, String repositoryId, String folderId, ExtensionsData extension) {
+        return checkStandardParameters(repositoryId, folderId);
+    }
+
+    public void createRelationship(CallContext context, String repositoryId, ExtensionsData extension) {
+        checkRepositoryId(repositoryId);
+    }
+
+    public void createPolicy(CallContext context, String repositoryId, String folderId, ExtensionsData extension) {
+        checkStandardParameters(repositoryId, folderId);
+    }
+
+    public StoredObject getAllowableActions(CallContext context, String repositoryId, String objectId,
+            ExtensionsData extension) {
+        // 
+        return checkStandardParameters(repositoryId, objectId);
+    }
+
+    public StoredObject getObject(CallContext context, String repositoryId, String objectId, ExtensionsData extension) {
+        
+        return checkStandardParameters(repositoryId, objectId);
+    }
+
+    public StoredObject getProperties(CallContext context, String repositoryId, String objectId,
+            ExtensionsData extension) {
+        
+        return checkStandardParameters(repositoryId, objectId);
+    }
+
+    public StoredObject getRenditions(CallContext context, String repositoryId, String objectId,
+            ExtensionsData extension) {
+        
+        return checkStandardParameters(repositoryId, objectId);
+    }
+
+    public void getObjectByPath(CallContext context, String repositoryId, String path, ExtensionsData extension) {
+        
+        checkRepositoryId(repositoryId);
+    }
+
+    public StoredObject getContentStream(CallContext context, String repositoryId, String objectId, String streamId,
+            ExtensionsData extension) {
+        
+        return checkStandardParameters(repositoryId, objectId);
+    }
+
+    public StoredObject updateProperties(CallContext context, String repositoryId, Holder<String> objectId,
+            ExtensionsData extension) {
+        
+        return checkStandardParameters(repositoryId, objectId.getValue());
+    }
+
+    public StoredObject[] moveObject(CallContext context, String repositoryId, Holder<String> objectId,
+            String targetFolderId, String sourceFolderId, ExtensionsData extension) {
+        
+        StoredObject[] res = new StoredObject[3];
+        res [0] = checkStandardParameters(repositoryId, objectId.getValue());
+        res[1] = checkExistingObjectId(fStoreManager.getObjectStore(repositoryId), sourceFolderId);
+        res[2] = checkExistingObjectId(fStoreManager.getObjectStore(repositoryId), targetFolderId);
+        return res;
+    }
+
+    public StoredObject deleteObject(CallContext context, String repositoryId, String objectId, Boolean allVersions,
+            ExtensionsData extension) {
+
+        return checkStandardParameters(repositoryId, objectId);
+    }
+
+    public StoredObject deleteTree(CallContext context, String repositoryId, String folderId, Boolean allVersions,
+            UnfileObject unfileObjects, ExtensionsData extension) {
+        return checkStandardParameters(repositoryId, folderId);
+    }
+
+    public StoredObject setContentStream(CallContext context, String repositoryId, Holder<String> objectId,
+            Boolean overwriteFlag, ExtensionsData extension) {
+        
+        return checkStandardParameters(repositoryId, objectId.getValue());
+    }
+
+    public StoredObject deleteContentStream(CallContext context, String repositoryId, Holder<String> objectId,
+            ExtensionsData extension) {
+        return checkStandardParameters(repositoryId, objectId.getValue());
+    }
+
+    public StoredObject checkOut(CallContext context, String repositoryId, Holder<String> objectId,
+            ExtensionsData extension, Holder<Boolean> contentCopied) {
+
+        return checkStandardParameters(repositoryId, objectId.getValue());
+    }
+
+    public StoredObject cancelCheckOut(CallContext context, String repositoryId, String objectId,
+            ExtensionsData extension) {
+        
+        return checkStandardParameters(repositoryId, objectId);
+    }
+
+    public StoredObject checkIn(CallContext context, String repositoryId, Holder<String> objectId,
+            ExtensionsData extension) {
+        return checkStandardParameters(repositoryId, objectId.getValue());
+    }
+
+    public StoredObject getObjectOfLatestVersion(CallContext context, String repositoryId, String objectId,
+            String versionSeriesId, ExtensionsData extension) {
+        
+        return checkStandardParameters(repositoryId, versionSeriesId == null ? objectId : versionSeriesId);
+    }
+
+    public StoredObject getPropertiesOfLatestVersion(CallContext context, String repositoryId, String objectId,
+            String versionSeriesId, ExtensionsData extension) {
+
+        return checkStandardParameters(repositoryId, versionSeriesId == null ? objectId : versionSeriesId);
+    }
+
+    public StoredObject getAllVersions(CallContext context, String repositoryId, String objectId,
+            String versionSeriesId, ExtensionsData extension) {
+        
+        return checkStandardParameters(repositoryId, versionSeriesId == null ? objectId : versionSeriesId);
+    }
+
+    public void query(CallContext context, String repositoryId, ExtensionsData extension) {
+        
+        checkRepositoryId(repositoryId);
+    }
+
+    public void getContentChanges(CallContext context, String repositoryId, ExtensionsData extension) {
+        
+        checkRepositoryId(repositoryId);
+    }
+
+    public StoredObject[] addObjectToFolder(CallContext context, String repositoryId, String objectId, String folderId,
+            Boolean allVersions, ExtensionsData extension) {
+        
+        return checkParams(repositoryId, objectId, folderId);
+    }
+
+    public StoredObject[] removeObjectFromFolder(CallContext context, String repositoryId, String objectId,
+            String folderId, ExtensionsData extension) {
+        
+        return checkParams(repositoryId, objectId, folderId);
+    }
+
+    public StoredObject getObjectRelationships(CallContext context, String repositoryId, String objectId,
+            RelationshipDirection relationshipDirection, String typeId, ExtensionsData extension) {
+        
+        return checkStandardParameters(repositoryId, objectId);
+    }
+
+    public StoredObject getAcl(CallContext context, String repositoryId, String objectId, ExtensionsData extension) {
+        
+        return checkStandardParameters(repositoryId, objectId);
+    }
+
+    public StoredObject applyAcl(CallContext context, String repositoryId, String objectId,
+            AclPropagation aclPropagation, ExtensionsData extension) {
+        
+        return checkStandardParameters(repositoryId, objectId);
+    }
+
+    public StoredObject[] applyPolicy(CallContext context, String repositoryId, String policyId, String objectId,
+            ExtensionsData extension) {
+
+        return checkParams(repositoryId, policyId, objectId);
+    }
+
+    public StoredObject[] removePolicy(CallContext context, String repositoryId, String policyId, String objectId,
+            ExtensionsData extension) {
+
+        return checkParams(repositoryId, policyId, objectId);
+    }
+
+    public StoredObject getAppliedPolicies(CallContext context, String repositoryId, String objectId,
+            ExtensionsData extension) {
+
+        return checkStandardParameters(repositoryId, objectId);
+    }
+
+    public StoredObject create(CallContext context, String repositoryId, String folderId, ExtensionsData extension) {
+
+        return checkStandardParameters(repositoryId, folderId);
+    }
+
+    public StoredObject deleteObjectOrCancelCheckOut(CallContext context, String repositoryId, String objectId,
+            ExtensionsData extension) {
+
+        return checkStandardParameters(repositoryId, objectId);
+    }
+
+    public StoredObject applyAcl(CallContext context, String repositoryId, String objectId) {
+
+        return checkStandardParameters(repositoryId, objectId);
+    }
+}

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryAbstractServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryAbstractServiceImpl.java?rev=1065655&r1=1065654&r2=1065655&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryAbstractServiceImpl.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryAbstractServiceImpl.java Mon Jan 31 15:41:11 2011
@@ -23,11 +23,10 @@ import org.apache.chemistry.opencmis.com
 import org.apache.chemistry.opencmis.commons.definitions.TypeDefinition;
 import org.apache.chemistry.opencmis.commons.definitions.TypeDefinitionContainer;
 import org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException;
-import org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException;
 import org.apache.chemistry.opencmis.commons.exceptions.CmisPermissionDeniedException;
 import org.apache.chemistry.opencmis.commons.exceptions.CmisUpdateConflictException;
+import org.apache.chemistry.opencmis.inmemory.storedobj.api.CmisServiceValidator;
 import org.apache.chemistry.opencmis.inmemory.storedobj.api.DocumentVersion;
-import org.apache.chemistry.opencmis.inmemory.storedobj.api.ObjectStore;
 import org.apache.chemistry.opencmis.inmemory.storedobj.api.StoreManager;
 import org.apache.chemistry.opencmis.inmemory.storedobj.api.StoredObject;
 import org.apache.chemistry.opencmis.inmemory.storedobj.api.VersionedDocument;
@@ -41,64 +40,16 @@ import org.apache.chemistry.opencmis.inm
 public class InMemoryAbstractServiceImpl {
 
     protected StoreManager fStoreManager;
+    protected CmisServiceValidator validator;
 
-    protected InMemoryAbstractServiceImpl(StoreManager storeManager) {
-        fStoreManager = storeManager;
+    protected InMemoryAbstractServiceImpl(StoreManager storeManager, CmisServiceValidator validator) {
+        this.fStoreManager = storeManager;
+        this.validator = validator;
     }
 
-    /**
-     * check if repository is known and that object exists. To avoid later calls
-     * to again retrieve the object from the id return the retrieved object for
-     * later use.
-     * 
-     * @param repositoryId
-     *            repository id
-     * @param objectId
-     *            object id
-     * @return object for objectId
-     */
-    protected StoredObject checkStandardParameters(String repositoryId, String objectId) {
-
-        if (null == repositoryId)
-            throw new CmisInvalidArgumentException("Repository Id cannot be null.");
-
-        if (null == objectId)
-            throw new CmisInvalidArgumentException("Object Id cannot be null.");
-
-        ObjectStore objStore = fStoreManager.getObjectStore(repositoryId);
-
-        if (objStore == null)
-            throw new CmisObjectNotFoundException("Unknown repository id: " + repositoryId);
-
-        StoredObject so = objStore.getObjectById(objectId);
-
-        if (so == null)
-            throw new CmisObjectNotFoundException("Unknown object id: " + objectId);
-
-        return so;
-    }
-
-    protected StoredObject checkExistingObjectId(ObjectStore objStore, String objectId) {
-
-        if (null == objectId)
-            throw new CmisInvalidArgumentException("Object Id cannot be null.");
-
-        StoredObject so = objStore.getObjectById(objectId);
-
-        if (so == null)
-            throw new CmisObjectNotFoundException("Unknown object id: " + objectId);
-
-        return so;
-    }
-
-    protected void checkRepositoryId(String repositoryId) {
-        if (null == repositoryId)
-            throw new CmisInvalidArgumentException("Repository Id cannot be null.");
-        
-        ObjectStore objStore = fStoreManager.getObjectStore(repositoryId);
-
-        if (objStore == null)
-            throw new CmisObjectNotFoundException("Unknown repository id: " + repositoryId);
+    protected InMemoryAbstractServiceImpl(StoreManager storeManager) {
+        this.fStoreManager = storeManager;
+        this.validator = storeManager.getServiceValidator();            
     }
 
     protected TypeDefinition getTypeDefinition(String repositoryId, Properties properties) {

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryDiscoveryServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryDiscoveryServiceImpl.java?rev=1065655&r1=1065654&r2=1065655&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryDiscoveryServiceImpl.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryDiscoveryServiceImpl.java Mon Jan 31 15:41:11 2011
@@ -104,7 +104,8 @@ public class InMemoryDiscoveryServiceImp
             BigInteger maxItems, BigInteger skipCount, ExtensionsData extension) {
 
         LOG.debug("start query()");
-        checkRepositoryId(repositoryId);
+        validator.query(context, repositoryId, extension);
+        
         String user = context.getUsername();
         ObjectList res;
         

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryMultiFilingServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryMultiFilingServiceImpl.java?rev=1065655&r1=1065654&r2=1065655&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryMultiFilingServiceImpl.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryMultiFilingServiceImpl.java Mon Jan 31 15:41:11 2011
@@ -48,12 +48,13 @@ public class InMemoryMultiFilingServiceI
 
         LOG.debug("Begin addObjectToFolder()");
 
-        StoredObject[] so2 = checkParams(repositoryId, objectId, folderId);
+        StoredObject[] sos = validator.addObjectToFolder(context, repositoryId, objectId, folderId, allVersions, extension); 
+
         if (allVersions != null && allVersions.booleanValue() == false)
             throw new CmisNotSupportedException(
                     "Cannot add object to folder, version specific filing is not supported.");
-        StoredObject so = so2[0];
-        StoredObject folder = so2[1];
+        StoredObject so = sos[0];
+        StoredObject folder = sos[1];
         checkObjects(so, folder);
 
         Folder newParent = (Folder) folder;
@@ -75,9 +76,11 @@ public class InMemoryMultiFilingServiceI
 
         LOG.debug("Begin removeObjectFromFolder()");
 
-        StoredObject so = checkStandardParameters(repositoryId, objectId);
+        StoredObject[] sos = validator.removeObjectFromFolder(context, repositoryId, objectId, folderId, extension); 
+        StoredObject so = sos[0];
+            
         ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
-        StoredObject folder = checkExistingObjectId(objectStore, folderId);
+        StoredObject folder = sos[1];
 
         checkObjects(so, folder);
         Folder parent = (Folder) folder;
@@ -96,14 +99,6 @@ public class InMemoryMultiFilingServiceI
         LOG.debug("End removeObjectFromFolder()");
     }
 
-    private StoredObject[] checkParams(String repositoryId, String objectId, String folderId) {
-        StoredObject[] so = new StoredObject[2];
-        so[0] = checkStandardParameters(repositoryId, objectId);
-        ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
-        so[1] = checkExistingObjectId(objectStore, folderId);
-        return so;
-    }
-
     private void checkObjects(StoredObject so, StoredObject folder) {
         if (!(so instanceof MultiFiling))
             throw new CmisConstraintException("Cannot add object to folder, object id " + so.getId()

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryNavigationServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryNavigationServiceImpl.java?rev=1065655&r1=1065654&r2=1065655&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryNavigationServiceImpl.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryNavigationServiceImpl.java Mon Jan 31 15:41:11 2011
@@ -77,14 +77,11 @@ public class InMemoryNavigationServiceIm
             String renditionFilter, BigInteger maxItems, BigInteger skipCount, ExtensionsData extension,
             ObjectInfoHandler objectInfos) {
 
+        validator.getCheckedOutDocs(context, repositoryId, folderId, extension);
         ObjectListImpl res = new ObjectListImpl();
         List<ObjectData> odList = new ArrayList<ObjectData>();
 
         LOG.debug("start getCheckedOutDocs()");
-        if (null != folderId)
-            checkStandardParameters(repositoryId, folderId);
-        else
-            checkRepositoryId(repositoryId);
 
         String user = context.getUsername();
         if (null == folderId) {
@@ -133,7 +130,7 @@ public class InMemoryNavigationServiceIm
 
         LOG.debug("start getChildren()");
 
-        checkStandardParameters(repositoryId, folderId);
+        validator.getChildren(repositoryId, folderId, extension);        
 
         int maxItemsInt = maxItems == null ? -1 : maxItems.intValue();
         int skipCountInt = skipCount == null ? -1 : skipCount.intValue();
@@ -152,7 +149,7 @@ public class InMemoryNavigationServiceIm
 
         LOG.debug("start getDescendants()");
 
-        checkStandardParameters(repositoryId, folderId);
+        validator.getDescendants(context, repositoryId, folderId, extension);
 
         int levels;
         if (depth == null)
@@ -178,7 +175,7 @@ public class InMemoryNavigationServiceIm
 
         LOG.debug("start getFolderParent()");
 
-        StoredObject so = checkStandardParameters(repositoryId, folderId);
+        StoredObject so = validator.getFolderParent(context, repositoryId, folderId, extension);             
 
         Folder folder = null;
         if (so instanceof Folder)
@@ -210,7 +207,7 @@ public class InMemoryNavigationServiceIm
 
         LOG.debug("start getFolderTree()");
 
-        checkStandardParameters(repositoryId, folderId);
+        validator.getFolderTree(context, repositoryId, folderId, extension);
 
         if (depth != null && depth.intValue() == 0)
             throw new CmisInvalidArgumentException("A zero depth is not allowed for getFolderTree().");
@@ -233,7 +230,7 @@ public class InMemoryNavigationServiceIm
 
         LOG.debug("start getObjectParents()");
 
-        StoredObject so = checkStandardParameters(repositoryId, objectId);
+        StoredObject so = validator.getObjectParents(context, repositoryId, objectId, extension);             
 
         // for now we have only folders that have a parent and the in-memory
         // provider only has one

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryObjectServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryObjectServiceImpl.java?rev=1065655&r1=1065654&r2=1065655&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryObjectServiceImpl.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryObjectServiceImpl.java Mon Jan 31 15:41:11 2011
@@ -102,9 +102,8 @@ public class InMemoryObjectServiceImpl e
         // Attach the CallContext to a thread local context that can be
         // accessed from everywhere
 
-        String user = context.getUsername();
-        StoredObject so = createDocumentIntern(repositoryId, properties, folderId, contentStream, versioningState,
-                policies, addAces, removeAces, extension, user);
+        StoredObject so = createDocumentIntern(context, repositoryId, properties, folderId, contentStream, versioningState,
+                policies, addAces, removeAces, extension);
         LOG.debug("stop createDocument()");
         return so.getId();
     }
@@ -114,8 +113,7 @@ public class InMemoryObjectServiceImpl e
             Acl addAces, Acl removeAces, ExtensionsData extension) {
 
         LOG.debug("start createDocumentFromSource()");
-
-        StoredObject so = checkStandardParameters(repositoryId, sourceId);
+        StoredObject so = validator.createDocumentFromSource(context, repositoryId, sourceId, folderId, extension); 
 
         ContentStream content = getContentStream(context, repositoryId, sourceId, null, BigInteger.valueOf(-1),
                 BigInteger.valueOf(-1), null);
@@ -149,9 +147,8 @@ public class InMemoryObjectServiceImpl e
             List<String> policies, Acl addAces, Acl removeAces, ExtensionsData extension) {
         LOG.debug("start createFolder()");
 
-        String user = context.getUsername();
-        Folder folder = createFolderIntern(repositoryId, properties, folderId, policies, addAces, removeAces,
-                extension, user);
+        Folder folder = createFolderIntern(context, repositoryId, properties, folderId, policies, addAces, removeAces,
+                extension);
         LOG.debug("stop createFolder()");
         return folder.getId();
     }
@@ -161,8 +158,7 @@ public class InMemoryObjectServiceImpl e
 
         // TODO to be completed if ACLs are implemented
         LOG.debug("start createPolicy()");
-        checkStandardParameters(repositoryId, folderId);
-        StoredObject so = createPolicyIntern(repositoryId, properties, folderId, policies, addAces, removeAces,
+        StoredObject so = createPolicyIntern(context, repositoryId, properties, folderId, policies, addAces, removeAces,
                 extension);
         LOG.debug("stop createPolicy()");
         return so == null ? null : so.getId();
@@ -173,8 +169,7 @@ public class InMemoryObjectServiceImpl e
 
         // TODO to be completed if relationships are implemented
         LOG.debug("start createRelationship()");
-        checkRepositoryId(repositoryId);
-        StoredObject so = createRelationshipIntern(repositoryId, properties, policies, addAces, removeAces, extension);
+        StoredObject so = createRelationshipIntern(context, repositoryId, properties, policies, addAces, removeAces, extension);
         LOG.debug("stop createRelationship()");
         return so == null ? null : so.getId();
     }
@@ -201,23 +196,22 @@ public class InMemoryObjectServiceImpl e
         // check if the given type is a document type
         BaseTypeId typeBaseId = typeDefC.getTypeDefinition().getBaseTypeId();
         StoredObject so = null;
-        String user = context.getUsername();
         if (typeBaseId.equals(InMemoryDocumentTypeDefinition.getRootDocumentType().getBaseTypeId())) {
-            so = createDocumentIntern(repositoryId, properties, folderId, contentStream, versioningState, null, null,
-                    null, null, user);
+            so = createDocumentIntern(context, repositoryId, properties, folderId, contentStream, versioningState, null, null,
+                    null, null);
         } else if (typeBaseId.equals(InMemoryFolderTypeDefinition.getRootFolderType().getBaseTypeId())) {
-            so = createFolderIntern(repositoryId, properties, folderId, null, null, null, null, user);
+            so = createFolderIntern(context, repositoryId, properties, folderId, null, null, null, null);
         } else if (typeBaseId.equals(InMemoryPolicyTypeDefinition.getRootPolicyType().getBaseTypeId())) {
-            so = createPolicyIntern(repositoryId, properties, folderId, null, null, null, null);
+            so = createPolicyIntern(context, repositoryId, properties, folderId, null, null, null, null);
         } else if (typeBaseId.equals(InMemoryRelationshipTypeDefinition.getRootRelationshipType().getBaseTypeId())) {
-            so = createRelationshipIntern(repositoryId, properties, null, null, null, null);
+            so = createRelationshipIntern(context, repositoryId, properties, null, null, null, null);
         } else
             LOG.error("The type contains an unknown base object id, object can't be created");
 
         // Make a call to getObject to convert the resulting id into an
         // ObjectData
         TypeDefinition td = typeDefC.getTypeDefinition();
-        ObjectData od = PropertyCreationHelper.getObjectData(td, so, null, user, false,
+        ObjectData od = PropertyCreationHelper.getObjectData(td, so, null, context.getUsername(), false,
                 IncludeRelationships.NONE, null, false, false, extension);
 
         if (context.isObjectInfoRequired()) {
@@ -232,7 +226,7 @@ public class InMemoryObjectServiceImpl e
             Holder<String> changeToken, ExtensionsData extension) {
 
         LOG.debug("start deleteContentStream()");
-        StoredObject so = checkStandardParameters(repositoryId, objectId.getValue());
+        StoredObject so = validator.deleteContentStream(context, repositoryId, objectId, extension); 
 
         if (so == null)
             throw new CmisObjectNotFoundException("Unknown object id: " + objectId);
@@ -249,7 +243,7 @@ public class InMemoryObjectServiceImpl e
             Boolean allVersions, ExtensionsData extension) {
 
         LOG.debug("start deleteObject()");
-        checkStandardParameters(repositoryId, objectId);
+        validator.deleteObjectOrCancelCheckOut(context, repositoryId, objectId, extension);
         ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
         LOG.debug("delete object for id: " + objectId);
 
@@ -265,7 +259,7 @@ public class InMemoryObjectServiceImpl e
             Boolean allVersions, UnfileObject unfileObjects, Boolean continueOnFailure, ExtensionsData extension) {
 
         LOG.debug("start deleteTree()");
-        StoredObject so = checkStandardParameters(repositoryId, folderId);
+        StoredObject so = validator.deleteTree(context, repositoryId, folderId, allVersions, unfileObjects, extension); 
         List<String> failedToDeleteIds = new ArrayList<String>();
         FailedToDeleteDataImpl result = new FailedToDeleteDataImpl();
 
@@ -304,7 +298,8 @@ public class InMemoryObjectServiceImpl e
             ExtensionsData extension) {
 
         LOG.debug("start getAllowableActions()");
-        StoredObject so = checkStandardParameters(repositoryId, objectId);
+        StoredObject so = validator.getAllowableActions(context, repositoryId, objectId, extension); 
+            
         fStoreManager.getObjectStore(repositoryId);
 
         if (so == null)
@@ -320,7 +315,8 @@ public class InMemoryObjectServiceImpl e
             BigInteger offset, BigInteger length, ExtensionsData extension) {
 
         LOG.debug("start getContentStream()");
-        StoredObject so = checkStandardParameters(repositoryId, objectId);
+        StoredObject so = validator.getContentStream(context, repositoryId, objectId, streamId, extension); 
+            
 
         if (so == null)
             throw new CmisObjectNotFoundException("Unknown object id: " + objectId);
@@ -344,7 +340,7 @@ public class InMemoryObjectServiceImpl e
 
         LOG.debug("start getObject()");
 
-        StoredObject so = checkStandardParameters(repositoryId, objectId);
+        StoredObject so = validator.getObject(context, repositoryId, objectId, extension);            
 
         if (so == null)
             throw new CmisObjectNotFoundException("Unknown object id: " + objectId);
@@ -360,11 +356,7 @@ public class InMemoryObjectServiceImpl e
             objectInfos.addObjectInfo(objectInfo);
         }
 
-//        // fill an example extension
-//        List<Object> myExtensions = new ArrayList<Object>();
-//        myExtensions.add(new JAXBElement<ExtensionSample>(new QName("http://apache.org/chemistry/opencmis/extensions", "MyExtension"), ExtensionSample.class, new ExtensionSample()));
-//        od.setExtensions(myExtensions);
-
+        // fill an example extension
         String ns = "http://apache.org/opencmis/inmemory";
         List<CmisExtensionElement> extElements = new ArrayList<CmisExtensionElement>();
 
@@ -386,7 +378,8 @@ public class InMemoryObjectServiceImpl e
             Boolean includePolicyIds, Boolean includeAcl, ExtensionsData extension, ObjectInfoHandler objectInfos) {
 
         LOG.debug("start getObjectByPath()");
-        checkRepositoryId(repositoryId);
+        validator.getObjectByPath(context, repositoryId, path, extension);
+        
         ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
         StoredObject so = objectStore.getObjectByPath(path);
 
@@ -415,7 +408,7 @@ public class InMemoryObjectServiceImpl e
             ExtensionsData extension) {
 
         LOG.debug("start getProperties()");
-        StoredObject so = checkStandardParameters(repositoryId, objectId);
+        StoredObject so = validator.getProperties(context, repositoryId, objectId, extension);            
 
         if (so == null)
             throw new CmisObjectNotFoundException("Unknown object id: " + objectId);
@@ -433,7 +426,8 @@ public class InMemoryObjectServiceImpl e
 
         // TODO to be completed if renditions are implemented
         LOG.debug("start getRenditions()");
-        checkStandardParameters(repositoryId, objectId);
+        validator.getRenditions(context, repositoryId, objectId, extension);
+        
         LOG.debug("stop getRenditions()");
         return null;
     }
@@ -442,7 +436,8 @@ public class InMemoryObjectServiceImpl e
             String targetFolderId, String sourceFolderId, ExtensionsData extension, ObjectInfoHandler objectInfos) {
 
         LOG.debug("start moveObject()");
-        StoredObject so = checkStandardParameters(repositoryId, objectId.getValue());
+        StoredObject[] sos = validator.moveObject(context, repositoryId, objectId, targetFolderId, sourceFolderId, extension); 
+        StoredObject so = sos[0];
         Folder targetFolder = null;
         Folder sourceFolder = null;
         ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
@@ -511,12 +506,10 @@ public class InMemoryObjectServiceImpl e
             Boolean overwriteFlag, Holder<String> changeToken, ContentStream contentStream, ExtensionsData extension) {
 
         LOG.debug("start setContentStream()");
-        checkStandardParameters(repositoryId, objectId.getValue());
-
-        ObjectStore folderStore = fStoreManager.getObjectStore(repositoryId);
-        StoredObject so = folderStore.getObjectById(objectId.getValue());
         Content content;
 
+        StoredObject so = validator.setContentStream(context, repositoryId, objectId, overwriteFlag, extension);
+
         if (!(so instanceof Document || so instanceof VersionedDocument || so instanceof DocumentVersion))
             throw new CmisObjectNotFoundException("Id" + objectId
                     + " does not refer to a document, but only documents can have content");
@@ -544,7 +537,7 @@ public class InMemoryObjectServiceImpl e
             ObjectInfoHandler objectInfos) {
 
         LOG.debug("start updateProperties()");
-        StoredObject so = checkStandardParameters(repositoryId, objectId.getValue());
+        StoredObject so = validator.updateProperties(context, repositoryId, objectId, extension);             
 
         // Validation
         TypeDefinition typeDef = getTypeDefinition(repositoryId, so);
@@ -663,10 +656,12 @@ public class InMemoryObjectServiceImpl e
     // ///////////////////////////////////////////////////////
     // private helper methods
 
-    private StoredObject createDocumentIntern(String repositoryId, Properties properties, String folderId,
+    private StoredObject createDocumentIntern(CallContext context, String repositoryId, Properties properties, String folderId,
             ContentStream contentStream, VersioningState versioningState, List<String> policies, Acl addACEs,
-            Acl removeACEs, ExtensionsData extension, String user) {
-        checkRepositoryId(repositoryId);
+            Acl removeACEs, ExtensionsData extension) {
+        
+        String user = context.getUsername();
+        validator.createDocument(context, repositoryId, folderId, extension);        
 
         ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
         Map<String, PropertyData<?>> propMap = properties.getProperties();
@@ -772,12 +767,13 @@ public class InMemoryObjectServiceImpl e
         return so;
     }
 
-    private Folder createFolderIntern(String repositoryId, Properties properties, String folderId,
-            List<String> policies, Acl addAces, Acl removeAces, ExtensionsData extension, String user) {
+    private Folder createFolderIntern(CallContext context, String repositoryId, Properties properties, String folderId,
+            List<String> policies, Acl addAces, Acl removeAces, ExtensionsData extension) {
 
         // Attach the CallContext to a thread local context that can be accessed
         // from everywhere
-        checkStandardParameters(repositoryId, folderId);
+        String user = context.getUsername();
+        validator.createFolder(context, repositoryId, folderId, extension);
 
         ObjectStore fs = fStoreManager.getObjectStore(repositoryId);
         StoredObject so = null;
@@ -835,14 +831,17 @@ public class InMemoryObjectServiceImpl e
         return newFolder;
     }
 
-    private StoredObject createPolicyIntern(String repositoryId, Properties properties, String folderId,
+    private StoredObject createPolicyIntern(CallContext context, String repositoryId, Properties properties, String folderId,
             List<String> policies, Acl addAces, Acl removeAces, ExtensionsData extension) {
-        return null;
+        
+        validator.createPolicy(context, repositoryId, folderId, extension);
+        throw new CmisNotSupportedException("createPolicy is not supported.");
     }
 
-    private StoredObject createRelationshipIntern(String repositoryId, Properties properties, List<String> policies,
+    private StoredObject createRelationshipIntern(CallContext context, String repositoryId, Properties properties, List<String> policies,
             Acl addAces, Acl removeAces, ExtensionsData extension) {
-        return null;
+        validator.createRelationship(context, repositoryId, extension);
+        throw new CmisNotSupportedException("createRelationship is not supported.");
     }
 
     private boolean hasDescendant(Folder sourceFolder, Folder targetFolder) {

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryRepositoryServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryRepositoryServiceImpl.java?rev=1065655&r1=1065654&r2=1065655&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryRepositoryServiceImpl.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryRepositoryServiceImpl.java Mon Jan 31 15:41:11 2011
@@ -43,6 +43,8 @@ public class InMemoryRepositoryServiceIm
 
     public RepositoryInfo getRepositoryInfo(CallContext context, String repositoryId, ExtensionsData extension) {
 
+        validator.getRepositoryInfo(context, repositoryId, extension);
+        
         RepositoryInfo repoInfo = getRepositoryInfoFromStoreManager(repositoryId);
 
         return repoInfo;
@@ -50,6 +52,7 @@ public class InMemoryRepositoryServiceIm
 
     public List<RepositoryInfo> getRepositoryInfos(CallContext context, ExtensionsData extension) {
 
+        validator.getRepositoryInfos(context, extension);
         List<RepositoryInfo> res = new ArrayList<RepositoryInfo>();
         List<String> repIds = fStoreManager.getAllRepositoryIds();
         for (String repId : repIds) {
@@ -61,6 +64,8 @@ public class InMemoryRepositoryServiceIm
     public TypeDefinitionList getTypeChildren(CallContext context, String repositoryId, String typeId,
             Boolean includePropertyDefinitions, BigInteger maxItems, BigInteger skipCount, ExtensionsData extension) {
 
+        validator.getTypeChildren(context, repositoryId, typeId, extension);
+        
         boolean inclPropDefs = includePropertyDefinitions == null ? false : includePropertyDefinitions;
         getRepositoryInfoFromStoreManager(repositoryId); // just to check if
         // repository
@@ -94,9 +99,7 @@ public class InMemoryRepositoryServiceIm
     public TypeDefinition getTypeDefinition(CallContext context, String repositoryId, String typeId,
             ExtensionsData extension) {
 
-        getRepositoryInfoFromStoreManager(repositoryId); // just to check if
-        // repository
-        // exists
+        validator.getTypeDefinition(context, repositoryId, typeId, extension);
 
         TypeDefinitionContainer tc = fStoreManager.getTypeById(repositoryId, typeId);
         if (tc != null) {
@@ -108,9 +111,8 @@ public class InMemoryRepositoryServiceIm
     public List<TypeDefinitionContainer> getTypeDescendants(CallContext context, String repositoryId, String typeId,
             BigInteger depth, Boolean includePropertyDefinitions, ExtensionsData extension) {
 
-        getRepositoryInfoFromStoreManager(repositoryId); // just to check if
-        // repository
-        // exists
+        validator.getTypeDescendants(context, repositoryId, typeId, extension);
+
         boolean inclPropDefs = includePropertyDefinitions == null ? false : includePropertyDefinitions;
         
         if (depth != null && depth.intValue() == 0)

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryService.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryService.java?rev=1065655&r1=1065654&r2=1065655&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryService.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryService.java Mon Jan 31 15:41:11 2011
@@ -288,20 +288,20 @@ public class InMemoryService extends Abs
     public ObjectData getObjectOfLatestVersion(String repositoryId, String objectId, String versionSeriesId,
             Boolean major, String filter, Boolean includeAllowableActions, IncludeRelationships includeRelationships,
             String renditionFilter, Boolean includePolicyIds, Boolean includeAcl, ExtensionsData extension) {
-        return fVerSvc.getObjectOfLatestVersion(getCallContext(), repositoryId, versionSeriesId, major, filter,
+        return fVerSvc.getObjectOfLatestVersion(getCallContext(), repositoryId, objectId, versionSeriesId, major, filter,
                 includeAllowableActions, includeRelationships, renditionFilter, includePolicyIds, includeAcl,
                 extension, this);
     }
 
     public Properties getPropertiesOfLatestVersion(String repositoryId, String objectId, String versionSeriesId,
             Boolean major, String filter, ExtensionsData extension) {
-        return fVerSvc.getPropertiesOfLatestVersion(getCallContext(), repositoryId, versionSeriesId, major, filter,
+        return fVerSvc.getPropertiesOfLatestVersion(getCallContext(), repositoryId, objectId, versionSeriesId, major, filter,
                 extension);
     }
 
     public List<ObjectData> getAllVersions(String repositoryId, String objectId, String versionSeriesId, String filter,
             Boolean includeAllowableActions, ExtensionsData extension) {
-        return fVerSvc.getAllVersions(getCallContext(), repositoryId, versionSeriesId==null ? objectId : versionSeriesId, 
+        return fVerSvc.getAllVersions(getCallContext(), repositoryId, objectId, versionSeriesId, 
                 filter, includeAllowableActions, extension, this);
     }
 

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryVersioningServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryVersioningServiceImpl.java?rev=1065655&r1=1065654&r2=1065655&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryVersioningServiceImpl.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryVersioningServiceImpl.java Mon Jan 31 15:41:11 2011
@@ -63,7 +63,8 @@ public class InMemoryVersioningServiceIm
 
     public void cancelCheckOut(CallContext context, String repositoryId, String objectId, ExtensionsData extension) {
 
-        StoredObject so = checkStandardParameters(repositoryId, objectId);
+        StoredObject so = validator.cancelCheckOut(context, repositoryId, objectId, extension); 
+            
         String user = context.getUsername();
         VersionedDocument verDoc = testHasProperCheckedOutStatus(so, user);
 
@@ -74,7 +75,8 @@ public class InMemoryVersioningServiceIm
             Properties properties, ContentStream contentStream, String checkinComment, List<String> policies,
             Acl addAces, Acl removeAces, ExtensionsData extension, ObjectInfoHandler objectInfos) {
 
-        StoredObject so = checkStandardParameters(repositoryId, objectId.getValue());
+        StoredObject so = validator.checkIn(context, repositoryId, objectId, extension); 
+            
         String user = context.getUsername();
         VersionedDocument verDoc = testHasProperCheckedOutStatus(so, user);
 
@@ -100,7 +102,8 @@ public class InMemoryVersioningServiceIm
     public void checkOut(CallContext context, String repositoryId, Holder<String> objectId,
             ExtensionsData extension, Holder<Boolean> contentCopied, ObjectInfoHandler objectInfos) {
 
-        StoredObject so = checkStandardParameters(repositoryId, objectId.getValue());
+        StoredObject so = validator.checkOut(context, repositoryId, objectId, extension, contentCopied); 
+            
         TypeDefinition typeDef = getTypeDefinition(repositoryId, so);
         if (!typeDef.getBaseTypeId().equals(BaseTypeId.CMIS_DOCUMENT))
             throw new CmisNotSupportedException("Only documents can be checked-out.");
@@ -138,13 +141,13 @@ public class InMemoryVersioningServiceIm
         }
     }
 
-    public List<ObjectData> getAllVersions(CallContext context, String repositoryId, String versionSeriesId,
+    public List<ObjectData> getAllVersions(CallContext context, String repositoryId, String objectId, String versionSeriesId,
             String filter, Boolean includeAllowableActions, ExtensionsData extension, ObjectInfoHandler objectInfos) {
 
         if (null == versionSeriesId)
             throw new CmisInvalidArgumentException("getAllVersions requires a version series id, but ist was null.");
 
-        StoredObject so = checkStandardParameters(repositoryId, versionSeriesId);
+        StoredObject so = validator.getAllVersions(context, repositoryId, objectId, versionSeriesId, extension);             
 
         if (!(so instanceof VersionedDocument))
             throw new CmisInvalidArgumentException("Object is not instance of a VersionedDocument (version series)");
@@ -168,12 +171,13 @@ public class InMemoryVersioningServiceIm
         return res;
     }
 
-    public ObjectData getObjectOfLatestVersion(CallContext context, String repositoryId, String versionSeriesId,
+    public ObjectData getObjectOfLatestVersion(CallContext context, String repositoryId, String objectId, String versionSeriesId,
             Boolean major, String filter, Boolean includeAllowableActions, IncludeRelationships includeRelationships,
             String renditionFilter, Boolean includePolicyIds, Boolean includeAcl, ExtensionsData extension,
             ObjectInfoHandler objectInfos) {
 
-        StoredObject so = checkStandardParameters(repositoryId, versionSeriesId);
+        StoredObject so = validator.getObjectOfLatestVersion(context, repositoryId, objectId, versionSeriesId, extension); 
+            
         ObjectData objData = null;
 
         if (so instanceof VersionedDocument) {
@@ -197,10 +201,11 @@ public class InMemoryVersioningServiceIm
         return objData;
     }
 
-    public Properties getPropertiesOfLatestVersion(CallContext context, String repositoryId, String versionSeriesId,
+    public Properties getPropertiesOfLatestVersion(CallContext context, String repositoryId, String objectId, String versionSeriesId,
             Boolean major, String filter, ExtensionsData extension) {
 
-        StoredObject so = checkStandardParameters(repositoryId, versionSeriesId);
+        StoredObject so = validator.getPropertiesOfLatestVersion(context, repositoryId, objectId, versionSeriesId, extension); 
+
         StoredObject latestVersionObject = null;
 
         if (so instanceof VersionedDocument) {

Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/CmisServiceValidator.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/CmisServiceValidator.java?rev=1065655&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/CmisServiceValidator.java (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/CmisServiceValidator.java Mon Jan 31 15:41:11 2011
@@ -0,0 +1,165 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.chemistry.opencmis.inmemory.storedobj.api;
+
+import org.apache.chemistry.opencmis.commons.data.ExtensionsData;
+import org.apache.chemistry.opencmis.commons.data.RepositoryInfo;
+import org.apache.chemistry.opencmis.commons.enums.AclPropagation;
+import org.apache.chemistry.opencmis.commons.enums.RelationshipDirection;
+import org.apache.chemistry.opencmis.commons.enums.UnfileObject;
+import org.apache.chemistry.opencmis.commons.server.CallContext;
+import org.apache.chemistry.opencmis.commons.spi.Holder;
+
+public interface CmisServiceValidator {
+
+    void getRepositoryInfos(CallContext context, ExtensionsData extension);
+
+    void getRepositoryInfo(CallContext context, String repositoryId, ExtensionsData extension);
+
+    void getTypeChildren(CallContext context, String repositoryId, String typeId,
+            ExtensionsData extension);
+
+    void getTypeDescendants(CallContext context, String repositoryId, String typeId,
+            ExtensionsData extension);
+
+    void getTypeDefinition(CallContext context, String repositoryId, String typeId,
+            ExtensionsData extension);
+
+    StoredObject getChildren(String repositoryId, String folderId, ExtensionsData extension);
+
+    StoredObject getDescendants(CallContext context, String repositoryId, String folderId,
+            ExtensionsData extension);
+
+    StoredObject getFolderTree(CallContext context, String repositoryId, String folderId,
+            ExtensionsData extension);
+
+    StoredObject getObjectParents(CallContext context, String repositoryId, String objectId,
+            ExtensionsData extension);
+
+    StoredObject getFolderParent(CallContext context, String repositoryId, String folderId,
+            ExtensionsData extension);
+
+    StoredObject getCheckedOutDocs(CallContext context, String repositoryId, String folderId,
+            ExtensionsData extension);
+
+    StoredObject createDocument(CallContext context, String repositoryId, String folderId,
+            ExtensionsData extension);
+
+    StoredObject createDocumentFromSource(CallContext context, String repositoryId, String sourceId,
+            String folderId, ExtensionsData extension);
+
+    StoredObject createFolder(CallContext context, String repositoryId, String folderId,
+            ExtensionsData extension);
+
+    void createRelationship(CallContext context, String repositoryId, ExtensionsData extension);
+
+    void createPolicy(CallContext context, String repositoryId, String folderId,
+            ExtensionsData extension);
+
+    StoredObject getAllowableActions(CallContext context, String repositoryId, String objectId,
+            ExtensionsData extension);
+
+    StoredObject getObject(CallContext context, String repositoryId, String objectId,
+            ExtensionsData extension);
+
+    StoredObject getProperties(CallContext context, String repositoryId, String objectId,
+            ExtensionsData extension);
+
+    StoredObject getRenditions(CallContext context, String repositoryId, String objectId,
+            ExtensionsData extension);
+
+    void getObjectByPath(CallContext context, String repositoryId, String path,
+            ExtensionsData extension);
+
+    StoredObject getContentStream(CallContext context, String repositoryId, String objectId,
+            String streamId, ExtensionsData extension);
+
+    StoredObject updateProperties(CallContext context, String repositoryId, Holder<String> objectId,
+            ExtensionsData extension);
+
+    StoredObject[] moveObject(CallContext context, String repositoryId, Holder<String> objectId,
+            String targetFolderId, String sourceFolderId, ExtensionsData extension);
+
+    StoredObject deleteObject(CallContext context, String repositoryId, String objectId,
+            Boolean allVersions, ExtensionsData extension);
+
+    StoredObject deleteTree(CallContext context, String repositoryId, String folderId,
+            Boolean allVersions, UnfileObject unfileObjects, ExtensionsData extension);
+
+    StoredObject setContentStream(CallContext context, String repositoryId, Holder<String> objectId,
+            Boolean overwriteFlag, ExtensionsData extension);
+
+    StoredObject deleteContentStream(CallContext context, String repositoryId, Holder<String> objectId,
+            ExtensionsData extension);
+
+    StoredObject checkOut(CallContext context, String repositoryId, Holder<String> objectId,
+            ExtensionsData extension, Holder<Boolean> contentCopied);
+
+    StoredObject cancelCheckOut(CallContext context, String repositoryId, String objectId,
+            ExtensionsData extension);
+
+    StoredObject checkIn(CallContext context, String repositoryId, Holder<String> objectId,
+            ExtensionsData extension);
+
+    StoredObject getObjectOfLatestVersion(CallContext context, String repositoryId, String objectId,
+            String versionSeriesId, ExtensionsData extension);
+
+    StoredObject getPropertiesOfLatestVersion(CallContext context, String repositoryId,
+            String objectId, String versionSeriesId, ExtensionsData extension);
+
+    StoredObject getAllVersions(CallContext context, String repositoryId, String objectId,
+            String versionSeriesId, ExtensionsData extension);
+
+    void query(CallContext context, String repositoryId, ExtensionsData extension);
+
+    void getContentChanges(CallContext context, String repositoryId, ExtensionsData extension);
+
+    StoredObject[] addObjectToFolder(CallContext context, String repositoryId, String objectId,
+            String folderId, Boolean allVersions, ExtensionsData extension);
+
+    StoredObject[] removeObjectFromFolder(CallContext context, String repositoryId, String objectId,
+            String folderId, ExtensionsData extension);
+
+    StoredObject getObjectRelationships(CallContext context, String repositoryId, String objectId,
+            RelationshipDirection relationshipDirection, String typeId, ExtensionsData extension);
+
+    StoredObject getAcl(CallContext context, String repositoryId, String objectId,
+            ExtensionsData extension);
+
+    StoredObject applyAcl(CallContext context, String repositoryId, String objectId,
+            AclPropagation aclPropagation, ExtensionsData extension);
+
+    StoredObject[] applyPolicy(CallContext context, String repositoryId, String policyId,
+            String objectId, ExtensionsData extension);
+
+    StoredObject[] removePolicy(CallContext context, String repositoryId, String policyId,
+            String objectId, ExtensionsData extension);
+
+    StoredObject getAppliedPolicies(CallContext context, String repositoryId, String objectId,
+            ExtensionsData extension);
+
+    StoredObject create(CallContext context, String repositoryId, String folderId,
+            ExtensionsData extension);
+
+    StoredObject deleteObjectOrCancelCheckOut(CallContext context, String repositoryId,
+            String objectId, ExtensionsData extension);
+
+    StoredObject applyAcl(CallContext context, String repositoryId, String objectId);
+
+ }
\ No newline at end of file

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/StoreManager.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/StoreManager.java?rev=1065655&r1=1065654&r2=1065655&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/StoreManager.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/StoreManager.java Mon Jan 31 15:41:11 2011
@@ -68,6 +68,14 @@ public interface StoreManager {
     ObjectStore getObjectStore(String repositoryId);
 
     /**
+     * get a permission and parameter validating instance
+     * 
+     * @return
+     *      validator and permission checker
+     */
+    CmisServiceValidator getServiceValidator();
+    
+    /**
      * create a new repository with the given id. Create the repository,
      * initiate the type system and initialize it so that it is ready for use
      * 
@@ -174,5 +182,5 @@ public interface StoreManager {
     ObjectList query(String user, String repositoryId, String statement, Boolean searchAllVersions,
             Boolean includeAllowableActions, IncludeRelationships includeRelationships, String renditionFilter,
             BigInteger maxItems, BigInteger skipCount);
-
-}
\ No newline at end of file
+    
+ }
\ No newline at end of file

Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/InMemoryServiceValidatorImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/InMemoryServiceValidatorImpl.java?rev=1065655&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/InMemoryServiceValidatorImpl.java (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/InMemoryServiceValidatorImpl.java Mon Jan 31 15:41:11 2011
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.chemistry.opencmis.inmemory.storedobj.impl;
+
+import org.apache.chemistry.opencmis.commons.data.ExtensionsData;
+import org.apache.chemistry.opencmis.commons.data.RepositoryInfo;
+import org.apache.chemistry.opencmis.commons.enums.AclPropagation;
+import org.apache.chemistry.opencmis.commons.enums.RelationshipDirection;
+import org.apache.chemistry.opencmis.commons.enums.UnfileObject;
+import org.apache.chemistry.opencmis.commons.server.CallContext;
+import org.apache.chemistry.opencmis.commons.spi.Holder;
+import org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl;
+import org.apache.chemistry.opencmis.inmemory.storedobj.api.StoreManager;
+import org.apache.chemistry.opencmis.inmemory.storedobj.api.StoredObject;
+
+public class InMemoryServiceValidatorImpl extends BaseServiceValidatorImpl {
+
+    public InMemoryServiceValidatorImpl(StoreManager sm) {
+        super(sm);
+    }
+    
+
+}

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/StoreManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/StoreManagerImpl.java?rev=1065655&r1=1065654&r2=1065655&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/StoreManagerImpl.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/StoreManagerImpl.java Mon Jan 31 15:41:11 2011
@@ -49,6 +49,8 @@ import org.apache.chemistry.opencmis.inm
 import org.apache.chemistry.opencmis.inmemory.TypeCreator;
 import org.apache.chemistry.opencmis.inmemory.TypeManagerImpl;
 import org.apache.chemistry.opencmis.inmemory.query.InMemoryQueryProcessor;
+import org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl;
+import org.apache.chemistry.opencmis.inmemory.storedobj.api.CmisServiceValidator;
 import org.apache.chemistry.opencmis.inmemory.storedobj.api.ObjectStore;
 import org.apache.chemistry.opencmis.inmemory.storedobj.api.StoreManager;
 import org.apache.chemistry.opencmis.server.support.TypeManager;
@@ -66,6 +68,7 @@ public class StoreManagerImpl implements
     
     protected BindingsObjectFactory fObjectFactory;
     protected RepositoryInfo fRepositoryInfo;
+    protected CmisServiceValidator validator;
 
     /**
      * map from repository id to a type manager
@@ -113,6 +116,10 @@ public class StoreManagerImpl implements
         return fMapRepositoryToObjectStore.get(repositoryId);
     }
 
+    public CmisServiceValidator getServiceValidator() {
+        return new BaseServiceValidatorImpl(this);
+    }
+
     public BindingsObjectFactory getObjectFactory() {
         return fObjectFactory;
     }
@@ -377,5 +384,5 @@ public class StoreManagerImpl implements
         LOG.debug("Query result, number of matching objects: " + objList.getNumItems());
         return objList;
     }
-    
+
 }



Mime
View raw message