/*
* Copyright (c) 2006, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* Licensed 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.wso2.carbon.registry.cmis;
import org.apache.chemistry.opencmis.commons.data.*;
import org.apache.chemistry.opencmis.commons.definitions.TypeDefinition;
import org.apache.chemistry.opencmis.commons.definitions.TypeDefinitionContainer;
import org.apache.chemistry.opencmis.commons.definitions.TypeDefinitionList;
import org.apache.chemistry.opencmis.commons.enums.IncludeRelationships;
import org.apache.chemistry.opencmis.commons.enums.UnfileObject;
import org.apache.chemistry.opencmis.commons.enums.VersioningState;
import org.apache.chemistry.opencmis.commons.impl.server.AbstractCmisService;
import org.apache.chemistry.opencmis.commons.server.CallContext;
import org.apache.chemistry.opencmis.commons.spi.Holder;
import java.math.BigInteger;
import java.util.List;
/**
* Registry service implementation for CMIS.
*/
public class CMISService extends AbstractCmisService {
private final CMISRepository gregRepository;
//private final Map<String, Session> sessions = new HashMap<String, Session>();
private CallContext context;
public CMISService(CMISRepository gregRepository) {
this.gregRepository = gregRepository;
}
/*
*@Override
*public void close() {
* gregRepository.getRegistry().;
*
* super.close();
*}
*/
public void setCallContext(CallContext context) {
this.context = context;
}
public CallContext getCallContext() {
return context;
}
@Override
public RepositoryInfo getRepositoryInfo(String repositoryId, ExtensionsData extension) {
return gregRepository.getRepositoryInfo();
}
@Override
public List<RepositoryInfo> getRepositoryInfos(ExtensionsData extension) {
return gregRepository.getRepositoryInfos();
}
@Override
public TypeDefinitionList getTypeChildren(String repositoryId, String typeId, Boolean includePropertyDefinitions,
BigInteger maxItems, BigInteger skipCount, ExtensionsData extension) {
return gregRepository.getTypeChildren(typeId, includePropertyDefinitions, maxItems, skipCount);
}
@Override
public TypeDefinition getTypeDefinition(String repositoryId, String typeId, ExtensionsData extension) {
return gregRepository.getTypeDefinition(typeId);
}
@Override
public List<TypeDefinitionContainer> getTypeDescendants(String repositoryId, String typeId, BigInteger depth,
Boolean includePropertyDefinitions, ExtensionsData extension) {
return gregRepository.getTypesDescendants(typeId, depth, includePropertyDefinitions);
}
// navigation service
@Override
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) {
return gregRepository.getChildren(folderId, filter, includeAllowableActions,
includePathSegment, maxItems, skipCount, this, context.isObjectInfoRequired());
}
@Override
public List<ObjectInFolderContainer> getDescendants(String repositoryId, String folderId, BigInteger depth,
String filter, Boolean includeAllowableActions, IncludeRelationships includeRelationships,
String renditionFilter, Boolean includePathSegment, ExtensionsData extension) {
return gregRepository.getDescendants(folderId, depth, filter, includeAllowableActions,
includePathSegment, this, context.isObjectInfoRequired(), false);
}
@Override
public ObjectData getFolderParent(String repositoryId, String folderId, String filter, ExtensionsData extension) {
return gregRepository.getFolderParent(folderId, filter, this, context.isObjectInfoRequired());
}
@Override
public List<ObjectInFolderContainer> getFolderTree(String repositoryId, String folderId, BigInteger depth,
String filter, Boolean includeAllowableActions, IncludeRelationships includeRelationships,
String renditionFilter, Boolean includePathSegment, ExtensionsData extension) {
return gregRepository.getDescendants(folderId, depth, filter, includeAllowableActions,
includePathSegment, this, context.isObjectInfoRequired(), true);
}
@Override
public List<ObjectParentData> getObjectParents(String repositoryId, String objectId, String filter,
Boolean includeAllowableActions, IncludeRelationships includeRelationships, String renditionFilter,
Boolean includeRelativePathSegment, ExtensionsData extension) {
return gregRepository.getObjectParents(objectId, filter, includeAllowableActions,
includeRelativePathSegment, this, context.isObjectInfoRequired());
}
@Override
public ObjectList getCheckedOutDocs(String repositoryId, String folderId, String filter, String orderBy,
Boolean includeAllowableActions, IncludeRelationships includeRelationships, String renditionFilter,
BigInteger maxItems, BigInteger skipCount, ExtensionsData extension) {
return gregRepository.getCheckedOutDocs(folderId, filter, orderBy, includeAllowableActions,
maxItems, skipCount);
}
//object service
@Override
public String createDocument(String repositoryId, Properties properties, String folderId,
ContentStream contentStream, VersioningState versioningState, List<String> policies, Acl addAces,
Acl removeAces, ExtensionsData extension) {
return gregRepository.createDocument(properties, folderId, contentStream, versioningState);
}
@Override
public String createDocumentFromSource(String repositoryId, String sourceId, Properties properties,
String folderId, VersioningState versioningState, List<String> policies, Acl addAces, Acl removeAces,
ExtensionsData extension) {
return gregRepository.createDocumentFromSource(sourceId, properties, folderId, versioningState);
}
@Override
public void setContentStream(String repositoryId, Holder<String> objectId, Boolean overwriteFlag,
Holder<String> changeToken, ContentStream contentStream, ExtensionsData extension) {
gregRepository.setContentStream(objectId, overwriteFlag, contentStream);
}
@Override
public void deleteContentStream(String repositoryId, Holder<String> objectId, Holder<String> changeToken,
ExtensionsData extension) {
gregRepository.setContentStream(objectId, true, null);
}
@Override
public String createFolder(String repositoryId, Properties properties, String folderId, List<String> policies,
Acl addAces, Acl removeAces, ExtensionsData extension) {
return gregRepository.createFolder(properties, folderId);
}
@Override
public void deleteObjectOrCancelCheckOut(String repositoryId, String objectId, Boolean allVersions,
ExtensionsData extension) {
gregRepository.deleteObject(objectId, allVersions);
}
@Override
public FailedToDeleteData deleteTree(String repositoryId, String folderId, Boolean allVersions,
UnfileObject unfileObjects, Boolean continueOnFailure, ExtensionsData extension) {
return gregRepository.deleteTree(folderId);
}
@Override
public AllowableActions getAllowableActions(String repositoryId, String objectId, ExtensionsData extension) {
return gregRepository.getAllowableActions(objectId);
}
@Override
public ContentStream getContentStream(String repositoryId, String objectId, String streamId, BigInteger offset,
BigInteger length, ExtensionsData extension) {
return gregRepository.getContentStream(objectId, offset, length);
}
@Override
public ObjectData getObject(String repositoryId, String objectId, String filter, Boolean includeAllowableActions,
IncludeRelationships includeRelationships, String renditionFilter, Boolean includePolicyIds,
Boolean includeAcl, ExtensionsData extension) {
return gregRepository.getObject(objectId, filter, includeAllowableActions, this,
context.isObjectInfoRequired());
}
@Override
public ObjectData getObjectByPath(String repositoryId, String path, String filter, Boolean includeAllowableActions,
IncludeRelationships includeRelationships, String renditionFilter, Boolean includePolicyIds,
Boolean includeAcl, ExtensionsData extension) {
return gregRepository.getObjectByPath(path, filter, includeAllowableActions, includeAcl,
this, context.isObjectInfoRequired());
}
@Override
public Properties getProperties(String repositoryId, String objectId, String filter, ExtensionsData extension) {
return gregRepository.getProperties(objectId, filter, false, this,
context.isObjectInfoRequired());
}
@Override
public void moveObject(String repositoryId, Holder<String> objectId, String targetFolderId, String sourceFolderId,
ExtensionsData extension) {
gregRepository.moveObject(objectId, targetFolderId, this, context.isObjectInfoRequired());
}
@Override
public void updateProperties(String repositoryId, Holder<String> objectId, Holder<String> changeToken,
Properties properties, ExtensionsData extension) {
gregRepository.updateProperties(objectId, properties, this, context.isObjectInfoRequired());
}
//versioning service
@Override
public void checkOut(String repositoryId, Holder<String> objectId, ExtensionsData extension,
Holder<Boolean> contentCopied) {
gregRepository.checkOut(objectId, contentCopied);
}
@Override
public void cancelCheckOut(String repositoryId, String objectId, ExtensionsData extension) {
gregRepository.cancelCheckout(objectId);
}
@Override
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) {
gregRepository.checkIn(objectId, major, properties, contentStream, checkinComment);
}
@Override
public List<ObjectData> getAllVersions(String repositoryId, String objectId, String versionSeriesId, String filter,
Boolean includeAllowableActions, ExtensionsData extension) {
return gregRepository.getAllVersions(versionSeriesId == null ? objectId : versionSeriesId,
filter, includeAllowableActions, this, context.isObjectInfoRequired());
}
@Override
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 gregRepository.getObject(versionSeriesId == null ? objectId : versionSeriesId,
filter, includeAllowableActions, this, context.isObjectInfoRequired());
}
@Override
public Properties getPropertiesOfLatestVersion(String repositoryId, String objectId, String versionSeriesId,
Boolean major, String filter, ExtensionsData extension) {
ObjectData object = getObjectOfLatestVersion(repositoryId, objectId, versionSeriesId, major, filter, false,
null, null, false, false, extension);
return object.getProperties();
}
//discovery service
@Override
public ObjectList query(String repositoryId, String statement, Boolean searchAllVersions,
Boolean includeAllowableActions, IncludeRelationships includeRelationships, String renditionFilter,
BigInteger maxItems, BigInteger skipCount, ExtensionsData extension) {
return gregRepository.query(statement, searchAllVersions, includeAllowableActions,
maxItems, skipCount);
}
}