All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.chemistry.opencmis.commons.server.CmisService Maven / Gradle / Ivy

The newest version!
/*
 *
 * 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.commons.server;

import java.util.List;

import org.apache.chemistry.opencmis.commons.data.Acl;
import org.apache.chemistry.opencmis.commons.data.ContentStream;
import org.apache.chemistry.opencmis.commons.data.ExtensionsData;
import org.apache.chemistry.opencmis.commons.data.Properties;
import org.apache.chemistry.opencmis.commons.enums.AclPropagation;
import org.apache.chemistry.opencmis.commons.enums.VersioningState;
import org.apache.chemistry.opencmis.commons.spi.AclService;
import org.apache.chemistry.opencmis.commons.spi.DiscoveryService;
import org.apache.chemistry.opencmis.commons.spi.MultiFilingService;
import org.apache.chemistry.opencmis.commons.spi.NavigationService;
import org.apache.chemistry.opencmis.commons.spi.ObjectService;
import org.apache.chemistry.opencmis.commons.spi.PolicyService;
import org.apache.chemistry.opencmis.commons.spi.RelationshipService;
import org.apache.chemistry.opencmis.commons.spi.RepositoryService;
import org.apache.chemistry.opencmis.commons.spi.VersioningService;

/**
 * OpenCMIS server interface.
 * 
 * 

* * See CMIS 1.0 and CMIS 1.1 specifications for details on the operations, parameters, * exceptions and the domain model. * *

* *

* This interface adds a few more operations to the operation set defined by * CMIS to address binding specific requirements. *

*/ public interface CmisService extends RepositoryService, NavigationService, ObjectService, VersioningService, DiscoveryService, MultiFilingService, RelationshipService, AclService, PolicyService { /** * Creates a new document, folder, policy, or item. * * The property "cmis:objectTypeId" defines the type and implicitly the base * type. * * @param repositoryId * the identifier for the repository * @param properties * the property values that MUST be applied to the newly created * object * @param folderId * (optional) if specified, the identifier for the * folder that MUST be the parent folder for the newly created * object * @param contentStream * (optional) if the object to create is a document * object, the content stream that MUST be stored for the newly * created document object * @param versioningState * (optional) if the object to create is a document * object, it specifies what the versioning state of the newly * created object MUST be (default is * {@link VersioningState#MAJOR}) * @param policies * (optional) a list of policy IDs that MUST be applied * to the newly created object * @param extension * extension data * @return the object ID of the newly created object */ String create(String repositoryId, Properties properties, String folderId, ContentStream contentStream, VersioningState versioningState, List policies, ExtensionsData extension); /** * Deletes an object or cancels a check out. * * For the Web Services binding this is always an object deletion. For the * AtomPub it depends on the referenced object. If it is a checked out * document then the check out must be canceled. If the object is not a * checked out document then the object must be deleted. * * @param repositoryId * the identifier for the repository * @param objectId * the identifier for the object * @param allVersions * (optional) If {@code true} then delete all versions * of the document, otherwise delete only the document object * specified (default is {@code true}) * @param extension * extension data */ void deleteObjectOrCancelCheckOut(String repositoryId, String objectId, Boolean allVersions, ExtensionsData extension); /** * Applies a new ACL to an object. * * Since it is not possible to transmit an "add ACL" and a "remove ACL" via * AtomPub, the merging has to be done the client side. The ACEs provided * here is supposed to the new complete ACL. * * @param repositoryId * the identifier for the repository * @param objectId * the identifier for the object * @param aces * the ACEs that should replace the current ACL of the object * @param aclPropagation * (optional) specifies how ACEs should be handled * (default is {@link AclPropagation#REPOSITORYDETERMINED}) * @return new ACL */ Acl applyAcl(String repositoryId, String objectId, Acl aces, AclPropagation aclPropagation); /** * Returns the {@link ObjectInfo} of the given object id or {@code null} if * no object info exists. * * Only AtomPub requests will require object infos. * * @param repositoryId * the identifier for the repository * @param objectId * the identifier for the object * @return the object info */ ObjectInfo getObjectInfo(String repositoryId, String objectId); /** * Signals that this object will not be used anymore and resources can * released. */ void close(); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy