You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by fm...@apache.org on 2012/04/28 18:33:39 UTC
svn commit: r1331791 [7/12] - in /chemistry/opencmis/trunk: ./
chemistry-opencmis-client/chemistry-opencmis-client-bindings/
chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/cache/...
Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/CmisServiceWrapper.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/CmisServiceWrapper.java?rev=1331791&r1=1331790&r2=1331791&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/CmisServiceWrapper.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/CmisServiceWrapper.java Sat Apr 28 16:33:35 2012
@@ -53,1110 +53,1212 @@ import org.apache.chemistry.opencmis.com
import org.apache.chemistry.opencmis.commons.server.CmisService;
import org.apache.chemistry.opencmis.commons.server.ObjectInfo;
import org.apache.chemistry.opencmis.commons.spi.Holder;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Service wrapper.
*/
public class CmisServiceWrapper<T extends CmisService> implements CmisService {
- public static final BigInteger MINUS_ONE = BigInteger.valueOf(-1);
+ public static final BigInteger MINUS_ONE = BigInteger.valueOf(-1);
- private static final Log log = LogFactory.getLog(CmisServiceWrapper.class);
+ private static final Logger log = LoggerFactory
+ .getLogger(CmisServiceWrapper.class);
- private BigInteger defaultTypesMaxItems = null;
- private BigInteger defaultTypesDepth = MINUS_ONE;
+ private BigInteger defaultTypesMaxItems = null;
+ private BigInteger defaultTypesDepth = MINUS_ONE;
- private BigInteger defaultMaxItems = null;
- private BigInteger defaultDepth = MINUS_ONE;
-
- private final T service;
-
- /**
- * Constructor.
- */
- public CmisServiceWrapper(T service, BigInteger defaultTypesMaxItems, BigInteger defaultTypesDepth,
- BigInteger defaultMaxItems, BigInteger defaultDepth) {
- if (service == null) {
- throw new IllegalArgumentException("Service must be set!");
- }
-
- this.service = service;
-
- setDefaultTypesMaxItems(defaultTypesMaxItems);
- setDefaultTypesDepth(defaultTypesDepth);
- setDefaultMaxItems(defaultMaxItems);
- setDefaultDepth(defaultDepth);
- }
-
- // --- wrapper operations ---
-
- /**
- * Set the default maxItems.
- */
- protected void setDefaultTypesMaxItems(BigInteger defaultTypesMaxItems) {
- this.defaultTypesMaxItems = defaultTypesMaxItems;
- }
-
- /**
- * Set the default depth.
- */
- protected void setDefaultTypesDepth(BigInteger defaultTypesDepth) {
- this.defaultTypesDepth = defaultTypesDepth;
- }
-
- /**
- * Set the default maxItems.
- */
- protected void setDefaultMaxItems(BigInteger defaultMaxItems) {
- this.defaultMaxItems = defaultMaxItems;
- }
-
- /**
- * Set the default depth.
- */
- protected void setDefaultDepth(BigInteger defaultDepth) {
- this.defaultDepth = defaultDepth;
- }
-
- /**
- * Converts the given exception into a CMIS exception.
- */
- protected CmisBaseException createCmisException(Exception e) {
- if (e == null) {
- // should never happen
- // if it happens its the fault of the framework...
-
- return new CmisRuntimeException("Unknown exception!");
- } else if (e instanceof CmisBaseException) {
- return (CmisBaseException) e;
- } else {
- // should not happen if the connector works correctly
- // it's alarming enough to log the exception
- log.warn(e);
-
- return new CmisRuntimeException(e.getMessage(), e);
- }
- }
-
- /**
- * Throws an exception if the given id is <code>null</code> or empty.
- */
- protected void checkId(String name, String id) {
- if (id == null) {
- throw new CmisInvalidArgumentException(name + " must be set!");
- }
-
- if (id.length() == 0) {
- throw new CmisInvalidArgumentException(name + " must not be empty!");
- }
- }
-
- /**
- * Throws an exception if the given ids are all <code>null</code> or empty.
- */
- protected void checkIds(String name, String... ids) {
- for (String id : ids) {
- if (id != null && id.length() > 0) {
- return;
- }
- }
-
- throw new CmisInvalidArgumentException(name + " must be set!");
- }
-
- /**
- * Throws an exception if the given holder or id is <code>null</code> or
- * empty.
- */
- protected void checkHolderId(String name, Holder<String> holder) {
- if (holder == null) {
- throw new CmisInvalidArgumentException(name + " must be set!");
- }
-
- checkId(name, holder.getValue());
- }
-
- /**
- * Throws an exception if the repository id is <code>null</code> or empty.
- */
- protected void checkRepositoryId(String repositoryId) {
- checkId("Repository Id", repositoryId);
- }
-
- /**
- * Throws an exception if the given path is <code>null</code> or invalid.
- */
- protected void checkPath(String name, String path) {
- if (path == null) {
- throw new CmisInvalidArgumentException(name + " must be set!");
- }
-
- if (path.length() == 0) {
- throw new CmisInvalidArgumentException(name + " must not be empty!");
- }
-
- if (path.charAt(0) != '/') {
- throw new CmisInvalidArgumentException(name + " must start with '/'!");
- }
- }
-
- /**
- * Throws an exception if the given properties set is <code>null</code>.
- */
- protected void checkProperties(Properties properties) {
- if (properties == null) {
- throw new CmisInvalidArgumentException("Properties must be set!");
- }
- }
-
- /**
- * Throws an exception if the given property isn't set or of the wrong type.
- */
- protected void checkProperty(Properties properties, String propertyId, Class<?> clazz) {
- if (properties.getProperties() == null) {
- throw new CmisInvalidArgumentException("Property " + propertyId + " must be set!");
- }
-
- PropertyData<?> property = properties.getProperties().get(propertyId);
- if (property == null) {
- throw new CmisInvalidArgumentException("Property " + propertyId + " must be set!");
- }
-
- Object value = property.getFirstValue();
- if (value == null) {
- throw new CmisInvalidArgumentException("Property " + propertyId + " must have a value!");
- }
-
- if (!clazz.isAssignableFrom(value.getClass())) {
- throw new CmisInvalidArgumentException("Property " + propertyId + " has the wrong type!");
- }
- }
-
- /**
- * Throws an exception if the given content object is <code>null</code>.
- */
- protected void checkContentStream(ContentStream content) {
- if (content == null) {
- throw new CmisInvalidArgumentException("Content must be set!");
- }
- }
-
- /**
- * Throws an exception if the given query statement is <code>null</code> or
- * empty.
- */
- protected void checkQueryStatement(String statement) {
- if (statement == null) {
- throw new CmisInvalidArgumentException("Statement must be set!");
- }
-
- if (statement.length() == 0) {
- throw new CmisInvalidArgumentException("Statement must not be empty!");
- }
- }
-
- /**
- * Returns <code>true</code> if <code>value</code> is <code>null</code>.
- */
- protected Boolean getDefaultTrue(Boolean value) {
- if (value == null) {
- return Boolean.TRUE;
- }
-
- return value;
- }
-
- /**
- * Returns <code>false</code> if <code>value</code> is <code>null</code>.
- */
- protected Boolean getDefaultFalse(Boolean value) {
- if (value == null) {
- return Boolean.FALSE;
- }
-
- return value;
- }
-
- /**
- * Returns the <code>IncludeRelationships.NONE</code> if <code>value</code>
- * is <code>null</code>.
- */
- protected IncludeRelationships getDefault(IncludeRelationships value) {
- if (value == null) {
- return IncludeRelationships.NONE;
- }
-
- return value;
- }
-
- /**
- * Returns the <code>VersioningState.MAJOR</code> if <code>value</code> is
- * <code>null</code>.
- */
- protected VersioningState getDefault(VersioningState value) {
- if (value == null) {
- return VersioningState.MAJOR;
- }
-
- return value;
- }
-
- /**
- * Returns the <code>UnfileObjects.DELETE</code> if <code>value</code> is
- * <code>null</code>.
- */
- protected UnfileObject getDefault(UnfileObject value) {
- if (value == null) {
- return UnfileObject.DELETE;
- }
-
- return value;
- }
-
- /**
- * Returns the
- * <code>AclPropagation.REPOSITORYDETERMINED</code> if <code>value</code> is
- * <code>null</code>.
- */
- protected AclPropagation getDefault(AclPropagation value) {
- if (value == null) {
- return AclPropagation.REPOSITORYDETERMINED;
- }
-
- return value;
- }
-
- /**
- * Returns the
- * <code>RelationshipDirection.SOURCE</code> if <code>value</code> is
- * <code>null</code> .
- */
- protected RelationshipDirection getDefault(RelationshipDirection value) {
- if (value == null) {
- return RelationshipDirection.SOURCE;
- }
-
- return value;
- }
-
- /**
- * Returns the <code>"cmis:none"</code> if <code>value</code> is
- * <code>null</code>.
- */
- protected String getDefaultRenditionFilter(String value) {
- if ((value == null) || (value.length() == 0)) {
- return "cmis:none";
- }
-
- return value;
- }
-
- /**
- * Returns the default maxItems if <code>maxItems</code> ==
- * <code>null</code>, throws an exception if <code>maxItems</code> < 0,
- * returns <code>maxItems</code> otherwise.
- */
- protected BigInteger getTypesMaxItems(BigInteger maxItems) {
- if (maxItems == null) {
- return defaultTypesMaxItems;
- }
-
- if (maxItems.compareTo(BigInteger.ZERO) == -1) {
- throw new CmisInvalidArgumentException("maxItems must not be negative!");
- }
-
- return maxItems;
- }
-
- /**
- * Checks the depth parameter if it complies with CMIS specification and
- * returns the default value if <code>depth</code> is <code>null</code>.
- */
- protected BigInteger getTypesDepth(BigInteger depth) {
- if (depth == null) {
- return defaultTypesDepth;
- }
-
- if (depth.compareTo(BigInteger.ZERO) == 0) {
- throw new CmisInvalidArgumentException("depth must not be 0!");
- }
-
- if (depth.compareTo(MINUS_ONE) == -1) {
- throw new CmisInvalidArgumentException("depth must not be <-1!");
- }
-
- return depth;
- }
-
- /**
- * Returns the default maxItems if <code>maxItems</code> ==
- * <code>null</code>, throws an exception if <code>maxItems</code> < 0,
- * returns <code>maxItems</code> otherwise.
- */
- protected BigInteger getMaxItems(BigInteger maxItems) {
- if (maxItems == null) {
- return defaultMaxItems;
- }
-
- if (maxItems.compareTo(BigInteger.ZERO) == -1) {
- throw new CmisInvalidArgumentException("maxItems must not be negative!");
- }
-
- return maxItems;
- }
-
- /**
- * Returns 0 if <code>skipCount</code> == <code>null</code>, throws an
- * exception if <code>skipCount</code> < 0, returns
- * <code>skipCount</code> otherwise.
- */
- protected BigInteger getSkipCount(BigInteger skipCount) {
- if (skipCount == null) {
- return BigInteger.ZERO;
- }
-
- if (skipCount.compareTo(BigInteger.ZERO) == -1) {
- throw new CmisInvalidArgumentException("skipCount must not be negative!");
- }
-
- return skipCount;
- }
-
- /**
- * Checks the depth parameter if it complies with CMIS specification and
- * returns the default value if <code>depth</code> is <code>null</code>.
- */
- protected BigInteger getDepth(BigInteger depth) {
- if (depth == null) {
- return defaultDepth;
- }
-
- if (depth.compareTo(BigInteger.ZERO) == 0) {
- throw new CmisInvalidArgumentException("depth must not be 0!");
- }
-
- if (depth.compareTo(MINUS_ONE) == -1) {
- throw new CmisInvalidArgumentException("depth must not be <-1!");
- }
-
- return depth;
- }
-
- /**
- * Throws an exception if the given value is negative.
- */
- protected void checkNullOrPositive(String name, BigInteger value) {
- if (value == null) {
- return;
- }
-
- if (value.compareTo(BigInteger.ZERO) == -1) {
- throw new CmisInvalidArgumentException(name + " must not be negative!");
- }
- }
-
- // --- service operations ---
-
- public T getWrappedService() {
- return service;
- }
-
- public ObjectInfo getObjectInfo(String repositoryId, String objectId) {
- return service.getObjectInfo(repositoryId, objectId);
- }
-
- public void close() {
- service.close();
- }
-
- // --- repository service ---
-
- public RepositoryInfo getRepositoryInfo(String repositoryId, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
-
- try {
- return service.getRepositoryInfo(repositoryId, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public List<RepositoryInfo> getRepositoryInfos(ExtensionsData extension) {
- try {
- return service.getRepositoryInfos(extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public TypeDefinitionList getTypeChildren(String repositoryId, String typeId, Boolean includePropertyDefinitions,
- BigInteger maxItems, BigInteger skipCount, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- includePropertyDefinitions = getDefaultFalse(includePropertyDefinitions);
- maxItems = getTypesMaxItems(maxItems);
- skipCount = getSkipCount(skipCount);
-
- try {
- return service.getTypeChildren(repositoryId, typeId, includePropertyDefinitions, maxItems, skipCount,
- extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public TypeDefinition getTypeDefinition(String repositoryId, String typeId, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkId("Type Id", typeId);
-
- try {
- return service.getTypeDefinition(repositoryId, typeId, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public List<TypeDefinitionContainer> getTypeDescendants(String repositoryId, String typeId, BigInteger depth,
- Boolean includePropertyDefinitions, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- includePropertyDefinitions = getDefaultFalse(includePropertyDefinitions);
- depth = getTypesDepth(depth);
-
- try {
- return service.getTypeDescendants(repositoryId, typeId, depth, includePropertyDefinitions, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- // --- navigation service ---
-
- public ObjectList getCheckedOutDocs(String repositoryId, String folderId, String filter, String orderBy,
- Boolean includeAllowableActions, IncludeRelationships includeRelationships, String renditionFilter,
- BigInteger maxItems, BigInteger skipCount, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- includeAllowableActions = getDefaultFalse(includeAllowableActions);
- includeRelationships = getDefault(includeRelationships);
- renditionFilter = getDefaultRenditionFilter(renditionFilter);
- maxItems = getMaxItems(maxItems);
- skipCount = getSkipCount(skipCount);
-
- try {
- return service.getCheckedOutDocs(repositoryId, folderId, filter, orderBy, includeAllowableActions,
- includeRelationships, renditionFilter, maxItems, skipCount, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public ObjectInFolderList getChildren(String repositoryId, String folderId, String filter, String orderBy,
- Boolean includeAllowableActions, IncludeRelationships includeRelationships, String renditionFilter,
- Boolean includePathSegment, BigInteger maxItems, BigInteger skipCount, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkId("Folder Id", folderId);
- includeAllowableActions = getDefaultFalse(includeAllowableActions);
- includeRelationships = getDefault(includeRelationships);
- renditionFilter = getDefaultRenditionFilter(renditionFilter);
- includePathSegment = getDefaultFalse(includePathSegment);
- maxItems = getMaxItems(maxItems);
- skipCount = getSkipCount(skipCount);
-
- try {
- return service.getChildren(repositoryId, folderId, filter, orderBy, includeAllowableActions,
- includeRelationships, renditionFilter, includePathSegment, maxItems, skipCount, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public List<ObjectInFolderContainer> getDescendants(String repositoryId, String folderId, BigInteger depth,
- String filter, Boolean includeAllowableActions, IncludeRelationships includeRelationships,
- String renditionFilter, Boolean includePathSegment, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkId("Folder Id", folderId);
- depth = getDepth(depth);
- includeAllowableActions = getDefaultFalse(includeAllowableActions);
- includeRelationships = getDefault(includeRelationships);
- renditionFilter = getDefaultRenditionFilter(renditionFilter);
- includePathSegment = getDefaultFalse(includePathSegment);
-
- try {
- return service.getDescendants(repositoryId, folderId, depth, filter, includeAllowableActions,
- includeRelationships, renditionFilter, includePathSegment, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public ObjectData getFolderParent(String repositoryId, String folderId, String filter, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkId("Folder Id", folderId);
-
- try {
- return service.getFolderParent(repositoryId, folderId, filter, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public List<ObjectInFolderContainer> getFolderTree(String repositoryId, String folderId, BigInteger depth,
- String filter, Boolean includeAllowableActions, IncludeRelationships includeRelationships,
- String renditionFilter, Boolean includePathSegment, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkId("Folder Id", folderId);
- depth = getDepth(depth);
- includeAllowableActions = getDefaultFalse(includeAllowableActions);
- includeRelationships = getDefault(includeRelationships);
- renditionFilter = getDefaultRenditionFilter(renditionFilter);
- includePathSegment = getDefaultFalse(includePathSegment);
-
- try {
- return service.getFolderTree(repositoryId, folderId, depth, filter, includeAllowableActions,
- includeRelationships, renditionFilter, includePathSegment, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public List<ObjectParentData> getObjectParents(String repositoryId, String objectId, String filter,
- Boolean includeAllowableActions, IncludeRelationships includeRelationships, String renditionFilter,
- Boolean includeRelativePathSegment, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkId("Object Id", objectId);
- includeAllowableActions = getDefaultFalse(includeAllowableActions);
- includeRelationships = getDefault(includeRelationships);
- renditionFilter = getDefaultRenditionFilter(renditionFilter);
- includeRelativePathSegment = getDefaultFalse(includeRelativePathSegment);
-
- try {
- return service.getObjectParents(repositoryId, objectId, filter, includeAllowableActions,
- includeRelationships, renditionFilter, includeRelativePathSegment, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- // --- object service ---
-
- public String create(String repositoryId, Properties properties, String folderId, ContentStream contentStream,
- VersioningState versioningState, List<String> policies, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkProperties(properties);
- checkProperty(properties, PropertyIds.OBJECT_TYPE_ID, String.class);
- versioningState = getDefault(versioningState);
-
- try {
- return service.create(repositoryId, properties, folderId, contentStream, versioningState, policies,
- extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public String createDocument(String repositoryId, Properties properties, String folderId,
- ContentStream contentStream, VersioningState versioningState, List<String> policies, Acl addAces,
- Acl removeAces, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkProperties(properties);
- checkProperty(properties, PropertyIds.OBJECT_TYPE_ID, String.class);
- versioningState = getDefault(versioningState);
-
- try {
- return service.createDocument(repositoryId, properties, folderId, contentStream, versioningState, policies,
- addAces, removeAces, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public String createDocumentFromSource(String repositoryId, String sourceId, Properties properties,
- String folderId, VersioningState versioningState, List<String> policies, Acl addAces, Acl removeAces,
- ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkId("Source Id", sourceId);
- versioningState = getDefault(versioningState);
-
- try {
- return service.createDocumentFromSource(repositoryId, sourceId, properties, folderId, versioningState,
- policies, addAces, removeAces, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public String createFolder(String repositoryId, Properties properties, String folderId, List<String> policies,
- Acl addAces, Acl removeAces, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkProperties(properties);
- checkProperty(properties, PropertyIds.OBJECT_TYPE_ID, String.class);
- checkId("Folder Id", folderId);
-
- try {
- return service.createFolder(repositoryId, properties, folderId, policies, addAces, removeAces, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public String createPolicy(String repositoryId, Properties properties, String folderId, List<String> policies,
- Acl addAces, Acl removeAces, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkProperties(properties);
- checkProperty(properties, PropertyIds.OBJECT_TYPE_ID, String.class);
-
- try {
- return service.createPolicy(repositoryId, properties, folderId, policies, addAces, removeAces, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public String createRelationship(String repositoryId, Properties properties, List<String> policies, Acl addAces,
- Acl removeAces, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkProperties(properties);
- checkProperty(properties, PropertyIds.OBJECT_TYPE_ID, String.class);
- // checkProperty(properties, PropertyIds.SOURCE_ID, String.class);
- // checkProperty(properties, PropertyIds.TARGET_ID, String.class);
-
- try {
- return service.createRelationship(repositoryId, properties, policies, addAces, removeAces, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public void deleteContentStream(String repositoryId, Holder<String> objectId, Holder<String> changeToken,
- ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkHolderId("Object Id", objectId);
-
- try {
- service.deleteContentStream(repositoryId, objectId, changeToken, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public void deleteObject(String repositoryId, String objectId, Boolean allVersions, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkId("Object Id", objectId);
- allVersions = getDefaultTrue(allVersions);
-
- try {
- service.deleteObjectOrCancelCheckOut(repositoryId, objectId, allVersions, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public void deleteObjectOrCancelCheckOut(String repositoryId, String objectId, Boolean allVersions,
- ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkId("Object Id", objectId);
- allVersions = getDefaultTrue(allVersions);
-
- try {
- service.deleteObjectOrCancelCheckOut(repositoryId, objectId, allVersions, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public FailedToDeleteData deleteTree(String repositoryId, String folderId, Boolean allVersions,
- UnfileObject unfileObjects, Boolean continueOnFailure, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkId("Folder Id", folderId);
- allVersions = getDefaultTrue(allVersions);
- unfileObjects = getDefault(unfileObjects);
- continueOnFailure = getDefaultFalse(continueOnFailure);
-
- try {
- return service.deleteTree(repositoryId, folderId, allVersions, unfileObjects, continueOnFailure, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public AllowableActions getAllowableActions(String repositoryId, String objectId, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkId("Object Id", objectId);
-
- try {
- return service.getAllowableActions(repositoryId, objectId, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public ContentStream getContentStream(String repositoryId, String objectId, String streamId, BigInteger offset,
- BigInteger length, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkId("Object Id", objectId);
- checkNullOrPositive("Offset", offset);
- checkNullOrPositive("Length", length);
-
- try {
- return service.getContentStream(repositoryId, objectId, streamId, offset, length, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public ObjectData getObject(String repositoryId, String objectId, String filter, Boolean includeAllowableActions,
- IncludeRelationships includeRelationships, String renditionFilter, Boolean includePolicyIds,
- Boolean includeAcl, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkId("Object Id", objectId);
- includeAllowableActions = getDefaultFalse(includeAllowableActions);
- includeRelationships = getDefault(includeRelationships);
- renditionFilter = getDefaultRenditionFilter(renditionFilter);
- includePolicyIds = getDefaultFalse(includePolicyIds);
- includeAcl = getDefaultFalse(includeAcl);
-
- try {
- return service.getObject(repositoryId, objectId, filter, includeAllowableActions, includeRelationships,
- renditionFilter, includePolicyIds, includeAcl, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public ObjectData getObjectByPath(String repositoryId, String path, String filter, Boolean includeAllowableActions,
- IncludeRelationships includeRelationships, String renditionFilter, Boolean includePolicyIds,
- Boolean includeAcl, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkPath("Path", path);
- includeAllowableActions = getDefaultFalse(includeAllowableActions);
- includeRelationships = getDefault(includeRelationships);
- renditionFilter = getDefaultRenditionFilter(renditionFilter);
- includePolicyIds = getDefaultFalse(includePolicyIds);
- includeAcl = getDefaultFalse(includeAcl);
-
- try {
- return service.getObjectByPath(repositoryId, path, filter, includeAllowableActions, includeRelationships,
- renditionFilter, includePolicyIds, includeAcl, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public Properties getProperties(String repositoryId, String objectId, String filter, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkId("Object Id", objectId);
-
- try {
- return service.getProperties(repositoryId, objectId, filter, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public List<RenditionData> getRenditions(String repositoryId, String objectId, String renditionFilter,
- BigInteger maxItems, BigInteger skipCount, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkId("Object Id", objectId);
- renditionFilter = getDefaultRenditionFilter(renditionFilter);
- maxItems = getMaxItems(maxItems);
- skipCount = getSkipCount(skipCount);
-
- try {
- return service.getRenditions(repositoryId, objectId, renditionFilter, maxItems, skipCount, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public void moveObject(String repositoryId, Holder<String> objectId, String targetFolderId, String sourceFolderId,
- ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkHolderId("Object Id", objectId);
- checkId("Target Folder Id", targetFolderId);
-
- try {
- service.moveObject(repositoryId, objectId, targetFolderId, sourceFolderId, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public void setContentStream(String repositoryId, Holder<String> objectId, Boolean overwriteFlag,
- Holder<String> changeToken, ContentStream contentStream, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkHolderId("Object Id", objectId);
- overwriteFlag = getDefaultTrue(overwriteFlag);
- checkContentStream(contentStream);
-
- try {
- service.setContentStream(repositoryId, objectId, overwriteFlag, changeToken, contentStream, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public void updateProperties(String repositoryId, Holder<String> objectId, Holder<String> changeToken,
- Properties properties, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkHolderId("Object Id", objectId);
- checkProperties(properties);
-
- try {
- service.updateProperties(repositoryId, objectId, changeToken, properties, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- // --- versioning service ---
-
- public void cancelCheckOut(String repositoryId, String objectId, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkId("Object Id", objectId);
-
- try {
- service.cancelCheckOut(repositoryId, objectId, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public void checkIn(String repositoryId, Holder<String> objectId, Boolean major, Properties properties,
- ContentStream contentStream, String checkinComment, List<String> policies, Acl addAces, Acl removeAces,
- ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkHolderId("Object Id", objectId);
- major = getDefaultTrue(major);
-
- try {
- service.checkIn(repositoryId, objectId, major, properties, contentStream, checkinComment, policies,
- addAces, removeAces, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public void checkOut(String repositoryId, Holder<String> objectId, ExtensionsData extension,
- Holder<Boolean> contentCopied) {
- checkRepositoryId(repositoryId);
- checkHolderId("Object Id", objectId);
-
- try {
- service.checkOut(repositoryId, objectId, extension, contentCopied);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- 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) {
- checkRepositoryId(repositoryId);
- checkIds("Version Series Id", objectId, versionSeriesId);
- major = getDefaultFalse(major);
- includeAllowableActions = getDefaultFalse(includeAllowableActions);
- includeRelationships = getDefault(includeRelationships);
- renditionFilter = getDefaultRenditionFilter(renditionFilter);
- includePolicyIds = getDefaultFalse(includePolicyIds);
- includeAcl = getDefaultFalse(includeAcl);
-
- try {
- return service.getObjectOfLatestVersion(repositoryId, objectId, versionSeriesId, major, filter,
- includeAllowableActions, includeRelationships, renditionFilter, includePolicyIds, includeAcl,
- extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public Properties getPropertiesOfLatestVersion(String repositoryId, String objectId, String versionSeriesId,
- Boolean major, String filter, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkIds("Version Series Id", objectId, versionSeriesId);
- major = getDefaultFalse(major);
-
- try {
- return service.getPropertiesOfLatestVersion(repositoryId, objectId, versionSeriesId, major, filter,
- extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public List<ObjectData> getAllVersions(String repositoryId, String objectId, String versionSeriesId, String filter,
- Boolean includeAllowableActions, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkIds("Version Series Id", objectId, versionSeriesId);
- includeAllowableActions = getDefaultFalse(includeAllowableActions);
-
- try {
- return service.getAllVersions(repositoryId, objectId, versionSeriesId, filter, includeAllowableActions,
- extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- // --- discovery service ---
-
- public ObjectList getContentChanges(String repositoryId, Holder<String> changeLogToken, Boolean includeProperties,
- String filter, Boolean includePolicyIds, Boolean includeAcl, BigInteger maxItems, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- includeProperties = getDefaultFalse(includeProperties);
- includePolicyIds = getDefaultFalse(includePolicyIds);
- includeAcl = getDefaultFalse(includeAcl);
- maxItems = getMaxItems(maxItems);
-
- try {
- return service.getContentChanges(repositoryId, changeLogToken, includeProperties, filter, includePolicyIds,
- includeAcl, maxItems, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public ObjectList query(String repositoryId, String statement, Boolean searchAllVersions,
- Boolean includeAllowableActions, IncludeRelationships includeRelationships, String renditionFilter,
- BigInteger maxItems, BigInteger skipCount, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkQueryStatement(statement);
- searchAllVersions = getDefaultFalse(searchAllVersions);
- includeAllowableActions = getDefaultFalse(includeAllowableActions);
- includeRelationships = getDefault(includeRelationships);
- renditionFilter = getDefaultRenditionFilter(renditionFilter);
- maxItems = getMaxItems(maxItems);
- skipCount = getSkipCount(skipCount);
-
- try {
- return service.query(repositoryId, statement, searchAllVersions, includeAllowableActions,
- includeRelationships, renditionFilter, maxItems, skipCount, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- // --- multi filing service ---
-
- public void addObjectToFolder(String repositoryId, String objectId, String folderId, Boolean allVersions,
- ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkId("Object Id", objectId);
- checkId("Folder Id", folderId);
- allVersions = getDefaultTrue(allVersions);
-
- try {
- service.addObjectToFolder(repositoryId, objectId, folderId, allVersions, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public void removeObjectFromFolder(String repositoryId, String objectId, String folderId, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkId("Object Id", objectId);
-
- try {
- service.removeObjectFromFolder(repositoryId, objectId, folderId, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- // --- relationship service ---
-
- public ObjectList getObjectRelationships(String repositoryId, String objectId, Boolean includeSubRelationshipTypes,
- RelationshipDirection relationshipDirection, String typeId, String filter, Boolean includeAllowableActions,
- BigInteger maxItems, BigInteger skipCount, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkId("Object Id", objectId);
- includeSubRelationshipTypes = getDefaultFalse(includeSubRelationshipTypes);
- relationshipDirection = getDefault(relationshipDirection);
- includeAllowableActions = getDefaultFalse(includeAllowableActions);
- maxItems = getMaxItems(maxItems);
- skipCount = getSkipCount(skipCount);
-
- try {
- return service.getObjectRelationships(repositoryId, objectId, includeSubRelationshipTypes,
- relationshipDirection, typeId, filter, includeAllowableActions, maxItems, skipCount, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- // --- ACL service ---
-
- public Acl applyAcl(String repositoryId, String objectId, Acl aces, AclPropagation aclPropagation) {
- checkRepositoryId(repositoryId);
- checkId("Object Id", objectId);
- aclPropagation = getDefault(aclPropagation);
-
- try {
- return service.applyAcl(repositoryId, objectId, aces, aclPropagation);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public Acl applyAcl(String repositoryId, String objectId, Acl addAces, Acl removeAces,
- AclPropagation aclPropagation, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkId("Object Id", objectId);
- aclPropagation = getDefault(aclPropagation);
-
- try {
- return service.applyAcl(repositoryId, objectId, addAces, removeAces, aclPropagation, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public Acl getAcl(String repositoryId, String objectId, Boolean onlyBasicPermissions, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkId("Object Id", objectId);
- onlyBasicPermissions = getDefaultTrue(onlyBasicPermissions);
-
- try {
- return service.getAcl(repositoryId, objectId, onlyBasicPermissions, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- // --- policy service ---
-
- public void applyPolicy(String repositoryId, String policyId, String objectId, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkId("Policy Id", policyId);
- checkId("Object Id", objectId);
-
- try {
- service.applyPolicy(repositoryId, policyId, objectId, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public List<ObjectData> getAppliedPolicies(String repositoryId, String objectId, String filter,
- ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkId("Object Id", objectId);
-
- try {
- return service.getAppliedPolicies(repositoryId, objectId, filter, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
-
- public void removePolicy(String repositoryId, String policyId, String objectId, ExtensionsData extension) {
- checkRepositoryId(repositoryId);
- checkId("Policy Id", policyId);
- checkId("Object Id", objectId);
-
- try {
- service.removePolicy(repositoryId, policyId, objectId, extension);
- } catch (Exception e) {
- throw createCmisException(e);
- }
- }
+ private BigInteger defaultMaxItems = null;
+ private BigInteger defaultDepth = MINUS_ONE;
+
+ private final T service;
+
+ /**
+ * Constructor.
+ */
+ public CmisServiceWrapper(T service, BigInteger defaultTypesMaxItems,
+ BigInteger defaultTypesDepth, BigInteger defaultMaxItems,
+ BigInteger defaultDepth) {
+ if (service == null) {
+ throw new IllegalArgumentException("Service must be set!");
+ }
+
+ this.service = service;
+
+ setDefaultTypesMaxItems(defaultTypesMaxItems);
+ setDefaultTypesDepth(defaultTypesDepth);
+ setDefaultMaxItems(defaultMaxItems);
+ setDefaultDepth(defaultDepth);
+ }
+
+ // --- wrapper operations ---
+
+ /**
+ * Set the default maxItems.
+ */
+ protected void setDefaultTypesMaxItems(BigInteger defaultTypesMaxItems) {
+ this.defaultTypesMaxItems = defaultTypesMaxItems;
+ }
+
+ /**
+ * Set the default depth.
+ */
+ protected void setDefaultTypesDepth(BigInteger defaultTypesDepth) {
+ this.defaultTypesDepth = defaultTypesDepth;
+ }
+
+ /**
+ * Set the default maxItems.
+ */
+ protected void setDefaultMaxItems(BigInteger defaultMaxItems) {
+ this.defaultMaxItems = defaultMaxItems;
+ }
+
+ /**
+ * Set the default depth.
+ */
+ protected void setDefaultDepth(BigInteger defaultDepth) {
+ this.defaultDepth = defaultDepth;
+ }
+
+ /**
+ * Converts the given exception into a CMIS exception.
+ */
+ protected CmisBaseException createCmisException(Exception e) {
+ if (e == null) {
+ // should never happen
+ // if it happens its the fault of the framework...
+
+ return new CmisRuntimeException("Unknown exception!");
+ } else if (e instanceof CmisBaseException) {
+ return (CmisBaseException) e;
+ } else {
+ // should not happen if the connector works correctly
+ // it's alarming enough to log the exception
+ log.warn(e.toString(), e);
+
+ return new CmisRuntimeException(e.getMessage(), e);
+ }
+ }
+
+ /**
+ * Throws an exception if the given id is <code>null</code> or empty.
+ */
+ protected void checkId(String name, String id) {
+ if (id == null) {
+ throw new CmisInvalidArgumentException(name + " must be set!");
+ }
+
+ if (id.length() == 0) {
+ throw new CmisInvalidArgumentException(name + " must not be empty!");
+ }
+ }
+
+ /**
+ * Throws an exception if the given ids are all <code>null</code> or empty.
+ */
+ protected void checkIds(String name, String... ids) {
+ for (String id : ids) {
+ if (id != null && id.length() > 0) {
+ return;
+ }
+ }
+
+ throw new CmisInvalidArgumentException(name + " must be set!");
+ }
+
+ /**
+ * Throws an exception if the given holder or id is <code>null</code> or
+ * empty.
+ */
+ protected void checkHolderId(String name, Holder<String> holder) {
+ if (holder == null) {
+ throw new CmisInvalidArgumentException(name + " must be set!");
+ }
+
+ checkId(name, holder.getValue());
+ }
+
+ /**
+ * Throws an exception if the repository id is <code>null</code> or empty.
+ */
+ protected void checkRepositoryId(String repositoryId) {
+ checkId("Repository Id", repositoryId);
+ }
+
+ /**
+ * Throws an exception if the given path is <code>null</code> or invalid.
+ */
+ protected void checkPath(String name, String path) {
+ if (path == null) {
+ throw new CmisInvalidArgumentException(name + " must be set!");
+ }
+
+ if (path.length() == 0) {
+ throw new CmisInvalidArgumentException(name + " must not be empty!");
+ }
+
+ if (path.charAt(0) != '/') {
+ throw new CmisInvalidArgumentException(name
+ + " must start with '/'!");
+ }
+ }
+
+ /**
+ * Throws an exception if the given properties set is <code>null</code>.
+ */
+ protected void checkProperties(Properties properties) {
+ if (properties == null) {
+ throw new CmisInvalidArgumentException("Properties must be set!");
+ }
+ }
+
+ /**
+ * Throws an exception if the given property isn't set or of the wrong type.
+ */
+ protected void checkProperty(Properties properties, String propertyId,
+ Class<?> clazz) {
+ if (properties.getProperties() == null) {
+ throw new CmisInvalidArgumentException("Property " + propertyId
+ + " must be set!");
+ }
+
+ PropertyData<?> property = properties.getProperties().get(propertyId);
+ if (property == null) {
+ throw new CmisInvalidArgumentException("Property " + propertyId
+ + " must be set!");
+ }
+
+ Object value = property.getFirstValue();
+ if (value == null) {
+ throw new CmisInvalidArgumentException("Property " + propertyId
+ + " must have a value!");
+ }
+
+ if (!clazz.isAssignableFrom(value.getClass())) {
+ throw new CmisInvalidArgumentException("Property " + propertyId
+ + " has the wrong type!");
+ }
+ }
+
+ /**
+ * Throws an exception if the given content object is <code>null</code>.
+ */
+ protected void checkContentStream(ContentStream content) {
+ if (content == null) {
+ throw new CmisInvalidArgumentException("Content must be set!");
+ }
+ }
+
+ /**
+ * Throws an exception if the given query statement is <code>null</code> or
+ * empty.
+ */
+ protected void checkQueryStatement(String statement) {
+ if (statement == null) {
+ throw new CmisInvalidArgumentException("Statement must be set!");
+ }
+
+ if (statement.length() == 0) {
+ throw new CmisInvalidArgumentException(
+ "Statement must not be empty!");
+ }
+ }
+
+ /**
+ * Returns <code>true</code> if <code>value</code> is <code>null</code>.
+ */
+ protected Boolean getDefaultTrue(Boolean value) {
+ if (value == null) {
+ return Boolean.TRUE;
+ }
+
+ return value;
+ }
+
+ /**
+ * Returns <code>false</code> if <code>value</code> is <code>null</code>.
+ */
+ protected Boolean getDefaultFalse(Boolean value) {
+ if (value == null) {
+ return Boolean.FALSE;
+ }
+
+ return value;
+ }
+
+ /**
+ * Returns the <code>IncludeRelationships.NONE</code> if <code>value</code>
+ * is <code>null</code>.
+ */
+ protected IncludeRelationships getDefault(IncludeRelationships value) {
+ if (value == null) {
+ return IncludeRelationships.NONE;
+ }
+
+ return value;
+ }
+
+ /**
+ * Returns the <code>VersioningState.MAJOR</code> if <code>value</code> is
+ * <code>null</code>.
+ */
+ protected VersioningState getDefault(VersioningState value) {
+ if (value == null) {
+ return VersioningState.MAJOR;
+ }
+
+ return value;
+ }
+
+ /**
+ * Returns the <code>UnfileObjects.DELETE</code> if <code>value</code> is
+ * <code>null</code>.
+ */
+ protected UnfileObject getDefault(UnfileObject value) {
+ if (value == null) {
+ return UnfileObject.DELETE;
+ }
+
+ return value;
+ }
+
+ /**
+ * Returns the <code>AclPropagation.REPOSITORYDETERMINED</code> if
+ * <code>value</code> is <code>null</code>.
+ */
+ protected AclPropagation getDefault(AclPropagation value) {
+ if (value == null) {
+ return AclPropagation.REPOSITORYDETERMINED;
+ }
+
+ return value;
+ }
+
+ /**
+ * Returns the <code>RelationshipDirection.SOURCE</code> if
+ * <code>value</code> is <code>null</code> .
+ */
+ protected RelationshipDirection getDefault(RelationshipDirection value) {
+ if (value == null) {
+ return RelationshipDirection.SOURCE;
+ }
+
+ return value;
+ }
+
+ /**
+ * Returns the <code>"cmis:none"</code> if <code>value</code> is
+ * <code>null</code>.
+ */
+ protected String getDefaultRenditionFilter(String value) {
+ if ((value == null) || (value.length() == 0)) {
+ return "cmis:none";
+ }
+
+ return value;
+ }
+
+ /**
+ * Returns the default maxItems if <code>maxItems</code> ==
+ * <code>null</code>, throws an exception if <code>maxItems</code> < 0,
+ * returns <code>maxItems</code> otherwise.
+ */
+ protected BigInteger getTypesMaxItems(BigInteger maxItems) {
+ if (maxItems == null) {
+ return defaultTypesMaxItems;
+ }
+
+ if (maxItems.compareTo(BigInteger.ZERO) == -1) {
+ throw new CmisInvalidArgumentException(
+ "maxItems must not be negative!");
+ }
+
+ return maxItems;
+ }
+
+ /**
+ * Checks the depth parameter if it complies with CMIS specification and
+ * returns the default value if <code>depth</code> is <code>null</code>.
+ */
+ protected BigInteger getTypesDepth(BigInteger depth) {
+ if (depth == null) {
+ return defaultTypesDepth;
+ }
+
+ if (depth.compareTo(BigInteger.ZERO) == 0) {
+ throw new CmisInvalidArgumentException("depth must not be 0!");
+ }
+
+ if (depth.compareTo(MINUS_ONE) == -1) {
+ throw new CmisInvalidArgumentException("depth must not be <-1!");
+ }
+
+ return depth;
+ }
+
+ /**
+ * Returns the default maxItems if <code>maxItems</code> ==
+ * <code>null</code>, throws an exception if <code>maxItems</code> < 0,
+ * returns <code>maxItems</code> otherwise.
+ */
+ protected BigInteger getMaxItems(BigInteger maxItems) {
+ if (maxItems == null) {
+ return defaultMaxItems;
+ }
+
+ if (maxItems.compareTo(BigInteger.ZERO) == -1) {
+ throw new CmisInvalidArgumentException(
+ "maxItems must not be negative!");
+ }
+
+ return maxItems;
+ }
+
+ /**
+ * Returns 0 if <code>skipCount</code> == <code>null</code>, throws an
+ * exception if <code>skipCount</code> < 0, returns
+ * <code>skipCount</code> otherwise.
+ */
+ protected BigInteger getSkipCount(BigInteger skipCount) {
+ if (skipCount == null) {
+ return BigInteger.ZERO;
+ }
+
+ if (skipCount.compareTo(BigInteger.ZERO) == -1) {
+ throw new CmisInvalidArgumentException(
+ "skipCount must not be negative!");
+ }
+
+ return skipCount;
+ }
+
+ /**
+ * Checks the depth parameter if it complies with CMIS specification and
+ * returns the default value if <code>depth</code> is <code>null</code>.
+ */
+ protected BigInteger getDepth(BigInteger depth) {
+ if (depth == null) {
+ return defaultDepth;
+ }
+
+ if (depth.compareTo(BigInteger.ZERO) == 0) {
+ throw new CmisInvalidArgumentException("depth must not be 0!");
+ }
+
+ if (depth.compareTo(MINUS_ONE) == -1) {
+ throw new CmisInvalidArgumentException("depth must not be <-1!");
+ }
+
+ return depth;
+ }
+
+ /**
+ * Throws an exception if the given value is negative.
+ */
+ protected void checkNullOrPositive(String name, BigInteger value) {
+ if (value == null) {
+ return;
+ }
+
+ if (value.compareTo(BigInteger.ZERO) == -1) {
+ throw new CmisInvalidArgumentException(name
+ + " must not be negative!");
+ }
+ }
+
+ // --- service operations ---
+
+ public T getWrappedService() {
+ return service;
+ }
+
+ public ObjectInfo getObjectInfo(String repositoryId, String objectId) {
+ return service.getObjectInfo(repositoryId, objectId);
+ }
+
+ public void close() {
+ service.close();
+ }
+
+ // --- repository service ---
+
+ public RepositoryInfo getRepositoryInfo(String repositoryId,
+ ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+
+ try {
+ return service.getRepositoryInfo(repositoryId, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public List<RepositoryInfo> getRepositoryInfos(ExtensionsData extension) {
+ try {
+ return service.getRepositoryInfos(extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public TypeDefinitionList getTypeChildren(String repositoryId,
+ String typeId, Boolean includePropertyDefinitions,
+ BigInteger maxItems, BigInteger skipCount, ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ includePropertyDefinitions = getDefaultFalse(includePropertyDefinitions);
+ maxItems = getTypesMaxItems(maxItems);
+ skipCount = getSkipCount(skipCount);
+
+ try {
+ return service.getTypeChildren(repositoryId, typeId,
+ includePropertyDefinitions, maxItems, skipCount, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public TypeDefinition getTypeDefinition(String repositoryId, String typeId,
+ ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkId("Type Id", typeId);
+
+ try {
+ return service.getTypeDefinition(repositoryId, typeId, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public List<TypeDefinitionContainer> getTypeDescendants(
+ String repositoryId, String typeId, BigInteger depth,
+ Boolean includePropertyDefinitions, ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ includePropertyDefinitions = getDefaultFalse(includePropertyDefinitions);
+ depth = getTypesDepth(depth);
+
+ try {
+ return service.getTypeDescendants(repositoryId, typeId, depth,
+ includePropertyDefinitions, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ // --- navigation service ---
+
+ public ObjectList getCheckedOutDocs(String repositoryId, String folderId,
+ String filter, String orderBy, Boolean includeAllowableActions,
+ IncludeRelationships includeRelationships, String renditionFilter,
+ BigInteger maxItems, BigInteger skipCount, ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ includeAllowableActions = getDefaultFalse(includeAllowableActions);
+ includeRelationships = getDefault(includeRelationships);
+ renditionFilter = getDefaultRenditionFilter(renditionFilter);
+ maxItems = getMaxItems(maxItems);
+ skipCount = getSkipCount(skipCount);
+
+ try {
+ return service.getCheckedOutDocs(repositoryId, folderId, filter,
+ orderBy, includeAllowableActions, includeRelationships,
+ renditionFilter, maxItems, skipCount, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public ObjectInFolderList getChildren(String repositoryId, String folderId,
+ String filter, String orderBy, Boolean includeAllowableActions,
+ IncludeRelationships includeRelationships, String renditionFilter,
+ Boolean includePathSegment, BigInteger maxItems,
+ BigInteger skipCount, ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkId("Folder Id", folderId);
+ includeAllowableActions = getDefaultFalse(includeAllowableActions);
+ includeRelationships = getDefault(includeRelationships);
+ renditionFilter = getDefaultRenditionFilter(renditionFilter);
+ includePathSegment = getDefaultFalse(includePathSegment);
+ maxItems = getMaxItems(maxItems);
+ skipCount = getSkipCount(skipCount);
+
+ try {
+ return service.getChildren(repositoryId, folderId, filter, orderBy,
+ includeAllowableActions, includeRelationships,
+ renditionFilter, includePathSegment, maxItems, skipCount,
+ extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public List<ObjectInFolderContainer> getDescendants(String repositoryId,
+ String folderId, BigInteger depth, String filter,
+ Boolean includeAllowableActions,
+ IncludeRelationships includeRelationships, String renditionFilter,
+ Boolean includePathSegment, ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkId("Folder Id", folderId);
+ depth = getDepth(depth);
+ includeAllowableActions = getDefaultFalse(includeAllowableActions);
+ includeRelationships = getDefault(includeRelationships);
+ renditionFilter = getDefaultRenditionFilter(renditionFilter);
+ includePathSegment = getDefaultFalse(includePathSegment);
+
+ try {
+ return service.getDescendants(repositoryId, folderId, depth,
+ filter, includeAllowableActions, includeRelationships,
+ renditionFilter, includePathSegment, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public ObjectData getFolderParent(String repositoryId, String folderId,
+ String filter, ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkId("Folder Id", folderId);
+
+ try {
+ return service.getFolderParent(repositoryId, folderId, filter,
+ extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public List<ObjectInFolderContainer> getFolderTree(String repositoryId,
+ String folderId, BigInteger depth, String filter,
+ Boolean includeAllowableActions,
+ IncludeRelationships includeRelationships, String renditionFilter,
+ Boolean includePathSegment, ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkId("Folder Id", folderId);
+ depth = getDepth(depth);
+ includeAllowableActions = getDefaultFalse(includeAllowableActions);
+ includeRelationships = getDefault(includeRelationships);
+ renditionFilter = getDefaultRenditionFilter(renditionFilter);
+ includePathSegment = getDefaultFalse(includePathSegment);
+
+ try {
+ return service.getFolderTree(repositoryId, folderId, depth, filter,
+ includeAllowableActions, includeRelationships,
+ renditionFilter, includePathSegment, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public List<ObjectParentData> getObjectParents(String repositoryId,
+ String objectId, String filter, Boolean includeAllowableActions,
+ IncludeRelationships includeRelationships, String renditionFilter,
+ Boolean includeRelativePathSegment, ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkId("Object Id", objectId);
+ includeAllowableActions = getDefaultFalse(includeAllowableActions);
+ includeRelationships = getDefault(includeRelationships);
+ renditionFilter = getDefaultRenditionFilter(renditionFilter);
+ includeRelativePathSegment = getDefaultFalse(includeRelativePathSegment);
+
+ try {
+ return service.getObjectParents(repositoryId, objectId, filter,
+ includeAllowableActions, includeRelationships,
+ renditionFilter, includeRelativePathSegment, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ // --- object service ---
+
+ public String create(String repositoryId, Properties properties,
+ String folderId, ContentStream contentStream,
+ VersioningState versioningState, List<String> policies,
+ ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkProperties(properties);
+ checkProperty(properties, PropertyIds.OBJECT_TYPE_ID, String.class);
+ versioningState = getDefault(versioningState);
+
+ try {
+ return service.create(repositoryId, properties, folderId,
+ contentStream, versioningState, policies, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public String createDocument(String repositoryId, Properties properties,
+ String folderId, ContentStream contentStream,
+ VersioningState versioningState, List<String> policies,
+ Acl addAces, Acl removeAces, ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkProperties(properties);
+ checkProperty(properties, PropertyIds.OBJECT_TYPE_ID, String.class);
+ versioningState = getDefault(versioningState);
+
+ try {
+ return service.createDocument(repositoryId, properties, folderId,
+ contentStream, versioningState, policies, addAces,
+ removeAces, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public String createDocumentFromSource(String repositoryId,
+ String sourceId, Properties properties, String folderId,
+ VersioningState versioningState, List<String> policies,
+ Acl addAces, Acl removeAces, ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkId("Source Id", sourceId);
+ versioningState = getDefault(versioningState);
+
+ try {
+ return service.createDocumentFromSource(repositoryId, sourceId,
+ properties, folderId, versioningState, policies, addAces,
+ removeAces, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public String createFolder(String repositoryId, Properties properties,
+ String folderId, List<String> policies, Acl addAces,
+ Acl removeAces, ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkProperties(properties);
+ checkProperty(properties, PropertyIds.OBJECT_TYPE_ID, String.class);
+ checkId("Folder Id", folderId);
+
+ try {
+ return service.createFolder(repositoryId, properties, folderId,
+ policies, addAces, removeAces, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public String createPolicy(String repositoryId, Properties properties,
+ String folderId, List<String> policies, Acl addAces,
+ Acl removeAces, ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkProperties(properties);
+ checkProperty(properties, PropertyIds.OBJECT_TYPE_ID, String.class);
+
+ try {
+ return service.createPolicy(repositoryId, properties, folderId,
+ policies, addAces, removeAces, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public String createRelationship(String repositoryId,
+ Properties properties, List<String> policies, Acl addAces,
+ Acl removeAces, ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkProperties(properties);
+ checkProperty(properties, PropertyIds.OBJECT_TYPE_ID, String.class);
+ // checkProperty(properties, PropertyIds.SOURCE_ID, String.class);
+ // checkProperty(properties, PropertyIds.TARGET_ID, String.class);
+
+ try {
+ return service.createRelationship(repositoryId, properties,
+ policies, addAces, removeAces, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public void deleteContentStream(String repositoryId,
+ Holder<String> objectId, Holder<String> changeToken,
+ ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkHolderId("Object Id", objectId);
+
+ try {
+ service.deleteContentStream(repositoryId, objectId, changeToken,
+ extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public void deleteObject(String repositoryId, String objectId,
+ Boolean allVersions, ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkId("Object Id", objectId);
+ allVersions = getDefaultTrue(allVersions);
+
+ try {
+ service.deleteObjectOrCancelCheckOut(repositoryId, objectId,
+ allVersions, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public void deleteObjectOrCancelCheckOut(String repositoryId,
+ String objectId, Boolean allVersions, ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkId("Object Id", objectId);
+ allVersions = getDefaultTrue(allVersions);
+
+ try {
+ service.deleteObjectOrCancelCheckOut(repositoryId, objectId,
+ allVersions, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public FailedToDeleteData deleteTree(String repositoryId, String folderId,
+ Boolean allVersions, UnfileObject unfileObjects,
+ Boolean continueOnFailure, ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkId("Folder Id", folderId);
+ allVersions = getDefaultTrue(allVersions);
+ unfileObjects = getDefault(unfileObjects);
+ continueOnFailure = getDefaultFalse(continueOnFailure);
+
+ try {
+ return service.deleteTree(repositoryId, folderId, allVersions,
+ unfileObjects, continueOnFailure, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public AllowableActions getAllowableActions(String repositoryId,
+ String objectId, ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkId("Object Id", objectId);
+
+ try {
+ return service.getAllowableActions(repositoryId, objectId,
+ extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public ContentStream getContentStream(String repositoryId, String objectId,
+ String streamId, BigInteger offset, BigInteger length,
+ ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkId("Object Id", objectId);
+ checkNullOrPositive("Offset", offset);
+ checkNullOrPositive("Length", length);
+
+ try {
+ return service.getContentStream(repositoryId, objectId, streamId,
+ offset, length, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public ObjectData getObject(String repositoryId, String objectId,
+ String filter, Boolean includeAllowableActions,
+ IncludeRelationships includeRelationships, String renditionFilter,
+ Boolean includePolicyIds, Boolean includeAcl,
+ ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkId("Object Id", objectId);
+ includeAllowableActions = getDefaultFalse(includeAllowableActions);
+ includeRelationships = getDefault(includeRelationships);
+ renditionFilter = getDefaultRenditionFilter(renditionFilter);
+ includePolicyIds = getDefaultFalse(includePolicyIds);
+ includeAcl = getDefaultFalse(includeAcl);
+
+ try {
+ return service.getObject(repositoryId, objectId, filter,
+ includeAllowableActions, includeRelationships,
+ renditionFilter, includePolicyIds, includeAcl, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public ObjectData getObjectByPath(String repositoryId, String path,
+ String filter, Boolean includeAllowableActions,
+ IncludeRelationships includeRelationships, String renditionFilter,
+ Boolean includePolicyIds, Boolean includeAcl,
+ ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkPath("Path", path);
+ includeAllowableActions = getDefaultFalse(includeAllowableActions);
+ includeRelationships = getDefault(includeRelationships);
+ renditionFilter = getDefaultRenditionFilter(renditionFilter);
+ includePolicyIds = getDefaultFalse(includePolicyIds);
+ includeAcl = getDefaultFalse(includeAcl);
+
+ try {
+ return service.getObjectByPath(repositoryId, path, filter,
+ includeAllowableActions, includeRelationships,
+ renditionFilter, includePolicyIds, includeAcl, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public Properties getProperties(String repositoryId, String objectId,
+ String filter, ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkId("Object Id", objectId);
+
+ try {
+ return service.getProperties(repositoryId, objectId, filter,
+ extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public List<RenditionData> getRenditions(String repositoryId,
+ String objectId, String renditionFilter, BigInteger maxItems,
+ BigInteger skipCount, ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkId("Object Id", objectId);
+ renditionFilter = getDefaultRenditionFilter(renditionFilter);
+ maxItems = getMaxItems(maxItems);
+ skipCount = getSkipCount(skipCount);
+
+ try {
+ return service.getRenditions(repositoryId, objectId,
+ renditionFilter, maxItems, skipCount, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public void moveObject(String repositoryId, Holder<String> objectId,
+ String targetFolderId, String sourceFolderId,
+ ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkHolderId("Object Id", objectId);
+ checkId("Target Folder Id", targetFolderId);
+
+ try {
+ service.moveObject(repositoryId, objectId, targetFolderId,
+ sourceFolderId, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public void setContentStream(String repositoryId, Holder<String> objectId,
+ Boolean overwriteFlag, Holder<String> changeToken,
+ ContentStream contentStream, ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkHolderId("Object Id", objectId);
+ overwriteFlag = getDefaultTrue(overwriteFlag);
+ checkContentStream(contentStream);
+
+ try {
+ service.setContentStream(repositoryId, objectId, overwriteFlag,
+ changeToken, contentStream, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public void updateProperties(String repositoryId, Holder<String> objectId,
+ Holder<String> changeToken, Properties properties,
+ ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkHolderId("Object Id", objectId);
+ checkProperties(properties);
+
+ try {
+ service.updateProperties(repositoryId, objectId, changeToken,
+ properties, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ // --- versioning service ---
+
+ public void cancelCheckOut(String repositoryId, String objectId,
+ ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkId("Object Id", objectId);
+
+ try {
+ service.cancelCheckOut(repositoryId, objectId, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public void checkIn(String repositoryId, Holder<String> objectId,
+ Boolean major, Properties properties, ContentStream contentStream,
+ String checkinComment, List<String> policies, Acl addAces,
+ Acl removeAces, ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkHolderId("Object Id", objectId);
+ major = getDefaultTrue(major);
+
+ try {
+ service.checkIn(repositoryId, objectId, major, properties,
+ contentStream, checkinComment, policies, addAces,
+ removeAces, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public void checkOut(String repositoryId, Holder<String> objectId,
+ ExtensionsData extension, Holder<Boolean> contentCopied) {
+ checkRepositoryId(repositoryId);
+ checkHolderId("Object Id", objectId);
+
+ try {
+ service.checkOut(repositoryId, objectId, extension, contentCopied);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ 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) {
+ checkRepositoryId(repositoryId);
+ checkIds("Version Series Id", objectId, versionSeriesId);
+ major = getDefaultFalse(major);
+ includeAllowableActions = getDefaultFalse(includeAllowableActions);
+ includeRelationships = getDefault(includeRelationships);
+ renditionFilter = getDefaultRenditionFilter(renditionFilter);
+ includePolicyIds = getDefaultFalse(includePolicyIds);
+ includeAcl = getDefaultFalse(includeAcl);
+
+ try {
+ return service.getObjectOfLatestVersion(repositoryId, objectId,
+ versionSeriesId, major, filter, includeAllowableActions,
+ includeRelationships, renditionFilter, includePolicyIds,
+ includeAcl, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public Properties getPropertiesOfLatestVersion(String repositoryId,
+ String objectId, String versionSeriesId, Boolean major,
+ String filter, ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkIds("Version Series Id", objectId, versionSeriesId);
+ major = getDefaultFalse(major);
+
+ try {
+ return service.getPropertiesOfLatestVersion(repositoryId, objectId,
+ versionSeriesId, major, filter, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public List<ObjectData> getAllVersions(String repositoryId,
+ String objectId, String versionSeriesId, String filter,
+ Boolean includeAllowableActions, ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkIds("Version Series Id", objectId, versionSeriesId);
+ includeAllowableActions = getDefaultFalse(includeAllowableActions);
+
+ try {
+ return service
+ .getAllVersions(repositoryId, objectId, versionSeriesId,
+ filter, includeAllowableActions, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ // --- discovery service ---
+
+ public ObjectList getContentChanges(String repositoryId,
+ Holder<String> changeLogToken, Boolean includeProperties,
+ String filter, Boolean includePolicyIds, Boolean includeAcl,
+ BigInteger maxItems, ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ includeProperties = getDefaultFalse(includeProperties);
+ includePolicyIds = getDefaultFalse(includePolicyIds);
+ includeAcl = getDefaultFalse(includeAcl);
+ maxItems = getMaxItems(maxItems);
+
+ try {
+ return service.getContentChanges(repositoryId, changeLogToken,
+ includeProperties, filter, includePolicyIds, includeAcl,
+ maxItems, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public ObjectList query(String repositoryId, String statement,
+ Boolean searchAllVersions, Boolean includeAllowableActions,
+ IncludeRelationships includeRelationships, String renditionFilter,
+ BigInteger maxItems, BigInteger skipCount, ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkQueryStatement(statement);
+ searchAllVersions = getDefaultFalse(searchAllVersions);
+ includeAllowableActions = getDefaultFalse(includeAllowableActions);
+ includeRelationships = getDefault(includeRelationships);
+ renditionFilter = getDefaultRenditionFilter(renditionFilter);
+ maxItems = getMaxItems(maxItems);
+ skipCount = getSkipCount(skipCount);
+
+ try {
+ return service.query(repositoryId, statement, searchAllVersions,
+ includeAllowableActions, includeRelationships,
+ renditionFilter, maxItems, skipCount, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ // --- multi filing service ---
+
+ public void addObjectToFolder(String repositoryId, String objectId,
+ String folderId, Boolean allVersions, ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkId("Object Id", objectId);
+ checkId("Folder Id", folderId);
+ allVersions = getDefaultTrue(allVersions);
+
+ try {
+ service.addObjectToFolder(repositoryId, objectId, folderId,
+ allVersions, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public void removeObjectFromFolder(String repositoryId, String objectId,
+ String folderId, ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkId("Object Id", objectId);
+
+ try {
+ service.removeObjectFromFolder(repositoryId, objectId, folderId,
+ extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ // --- relationship service ---
+
+ public ObjectList getObjectRelationships(String repositoryId,
+ String objectId, Boolean includeSubRelationshipTypes,
+ RelationshipDirection relationshipDirection, String typeId,
+ String filter, Boolean includeAllowableActions,
+ BigInteger maxItems, BigInteger skipCount, ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkId("Object Id", objectId);
+ includeSubRelationshipTypes = getDefaultFalse(includeSubRelationshipTypes);
+ relationshipDirection = getDefault(relationshipDirection);
+ includeAllowableActions = getDefaultFalse(includeAllowableActions);
+ maxItems = getMaxItems(maxItems);
+ skipCount = getSkipCount(skipCount);
+
+ try {
+ return service.getObjectRelationships(repositoryId, objectId,
+ includeSubRelationshipTypes, relationshipDirection, typeId,
+ filter, includeAllowableActions, maxItems, skipCount,
+ extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ // --- ACL service ---
+
+ public Acl applyAcl(String repositoryId, String objectId, Acl aces,
+ AclPropagation aclPropagation) {
+ checkRepositoryId(repositoryId);
+ checkId("Object Id", objectId);
+ aclPropagation = getDefault(aclPropagation);
+
+ try {
+ return service.applyAcl(repositoryId, objectId, aces,
+ aclPropagation);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public Acl applyAcl(String repositoryId, String objectId, Acl addAces,
+ Acl removeAces, AclPropagation aclPropagation,
+ ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkId("Object Id", objectId);
+ aclPropagation = getDefault(aclPropagation);
+
+ try {
+ return service.applyAcl(repositoryId, objectId, addAces,
+ removeAces, aclPropagation, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public Acl getAcl(String repositoryId, String objectId,
+ Boolean onlyBasicPermissions, ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkId("Object Id", objectId);
+ onlyBasicPermissions = getDefaultTrue(onlyBasicPermissions);
+
+ try {
+ return service.getAcl(repositoryId, objectId, onlyBasicPermissions,
+ extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ // --- policy service ---
+
+ public void applyPolicy(String repositoryId, String policyId,
+ String objectId, ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkId("Policy Id", policyId);
+ checkId("Object Id", objectId);
+
+ try {
+ service.applyPolicy(repositoryId, policyId, objectId, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public List<ObjectData> getAppliedPolicies(String repositoryId,
+ String objectId, String filter, ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkId("Object Id", objectId);
+
+ try {
+ return service.getAppliedPolicies(repositoryId, objectId, filter,
+ extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
+
+ public void removePolicy(String repositoryId, String policyId,
+ String objectId, ExtensionsData extension) {
+ checkRepositoryId(repositoryId);
+ checkId("Policy Id", policyId);
+ checkId("Object Id", objectId);
+
+ try {
+ service.removePolicy(repositoryId, policyId, objectId, extension);
+ } catch (Exception e) {
+ throw createCmisException(e);
+ }
+ }
}