content: /*
   * 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 java.util.List;
  
  import org.apache.chemistry.opencmis.commons.data.Acl;
  import org.apache.chemistry.opencmis.commons.data.ExtensionsData;
  import org.apache.chemistry.opencmis.commons.data.Properties;
  import org.apache.chemistry.opencmis.commons.definitions.TypeDefinition;
  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(CallContext context, 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, List<String> policyIds,
              ExtensionsData extension);
  
      StoredObject createDocumentFromSource(CallContext context, String repositoryId, String sourceId, String folderId,
              List<String> policyIds, ExtensionsData extension);
  
      StoredObject createFolder(CallContext context, String repositoryId, String folderId, List<String> policyIds,
              ExtensionsData extension);
  
      // relationship has no parent, returns source and target object
      StoredObject[] createRelationship(CallContext context, String repositoryId, String sourceId, String targetId,
              List<String> policyIds, ExtensionsData extension);
  
      StoredObject createPolicy(CallContext context, String repositoryId, String folderId, Acl addAces, Acl removeAces,
              List<String> policyIds, 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);
  
      StoredObject 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);
  
      // CMIS 1.1
      StoredObject appendContentStream(CallContext context, String repositoryId, Holder<String> objectId,
              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, Acl addAces,
              Acl removeAces, List<String> policyIds, 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 applyAcl(CallContext context, String repositoryId, String objectId);
  
      // CMIS 1.1
      StoredObject createItem(CallContext context, String repositoryId, Properties properties, String folderId,
              List<String> policies, Acl addAces, Acl removeAces, ExtensionsData extension);
  
      void createType(CallContext callContext, String repositoryId, TypeDefinition type, ExtensionsData extension);
      
      TypeDefinition updateType(CallContext callContext, String repositoryId, TypeDefinition type, 
              ExtensionsData extension);
      
      TypeDefinition deleteType(CallContext callContext, String repositoryId, String typeId, ExtensionsData extension);
  }