mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Merge from SEAMIST3
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@10730 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -36,7 +36,9 @@
|
|||||||
<cmis:propertyDateTime cmis:name="lastModificationDate">${xmldate(node.properties.modified)}</cmis:propertyDateTime>
|
<cmis:propertyDateTime cmis:name="lastModificationDate">${xmldate(node.properties.modified)}</cmis:propertyDateTime>
|
||||||
<cmis:propertyID cmis:name="objectId">${node.nodeRef}</cmis:propertyID>
|
<cmis:propertyID cmis:name="objectId">${node.nodeRef}</cmis:propertyID>
|
||||||
<cmis:propertyInteger cmis:name="contentStreamLength">${node.properties.content.size}</cmis:propertyInteger>
|
<cmis:propertyInteger cmis:name="contentStreamLength">${node.properties.content.size}</cmis:propertyInteger>
|
||||||
|
<cmis:propertyString cmis:name="name">${node.name}</cmis:propertyString>
|
||||||
<cmis:propertyString cmis:name="baseType">document</cmis:propertyString>
|
<cmis:propertyString cmis:name="baseType">document</cmis:propertyString>
|
||||||
|
<cmis:propertyString cmis:name="objectType">document</cmis:propertyString> [#-- TODO --]
|
||||||
<cmis:propertyString cmis:name="createdBy">${node.properties.creator}</cmis:propertyString>
|
<cmis:propertyString cmis:name="createdBy">${node.properties.creator}</cmis:propertyString>
|
||||||
<cmis:propertyString cmis:name="lastModifiedBy">${node.properties.modifier}</cmis:propertyString>
|
<cmis:propertyString cmis:name="lastModifiedBy">${node.properties.modifier}</cmis:propertyString>
|
||||||
<cmis:propertyString cmis:name="contentStreamMimetype">${node.properties.content.mimetype}</cmis:propertyString>
|
<cmis:propertyString cmis:name="contentStreamMimetype">${node.properties.content.mimetype}</cmis:propertyString>
|
||||||
@@ -125,10 +127,11 @@
|
|||||||
<cmis:propertyDateTime cmis:name="lastModificationDate">${xmldate(node.properties.modified)}</cmis:propertyDateTime>
|
<cmis:propertyDateTime cmis:name="lastModificationDate">${xmldate(node.properties.modified)}</cmis:propertyDateTime>
|
||||||
<cmis:propertyID cmis:name="objectId">${node.nodeRef}</cmis:propertyID>
|
<cmis:propertyID cmis:name="objectId">${node.nodeRef}</cmis:propertyID>
|
||||||
<cmis:propertyID cmis:name="parent">${node.parent.nodeRef}</cmis:propertyID>
|
<cmis:propertyID cmis:name="parent">${node.parent.nodeRef}</cmis:propertyID>
|
||||||
|
<cmis:propertyString cmis:name="name">${node.name}</cmis:propertyString>
|
||||||
|
<cmis:propertyString cmis:name="objectType">document</cmis:propertyString> [#-- TODO --]
|
||||||
<cmis:propertyString cmis:name="baseType">folder</cmis:propertyString>
|
<cmis:propertyString cmis:name="baseType">folder</cmis:propertyString>
|
||||||
<cmis:propertyString cmis:name="createdBy">${node.properties.creator}</cmis:propertyString>
|
<cmis:propertyString cmis:name="createdBy">${node.properties.creator}</cmis:propertyString>
|
||||||
<cmis:propertyString cmis:name="lastModifiedBy">${node.properties.modifier}</cmis:propertyString>
|
<cmis:propertyString cmis:name="lastModifiedBy">${node.properties.modifier}</cmis:propertyString>
|
||||||
<cmis:propertyString cmis:name="name">${node.name}</cmis:propertyString>
|
|
||||||
</cmis:properties>
|
</cmis:properties>
|
||||||
[/#macro]
|
[/#macro]
|
||||||
|
|
||||||
|
@@ -26,6 +26,7 @@
|
|||||||
<icon>${absurl(url.context)}/images/logo/AlfrescoLogo16.ico</icon>
|
<icon>${absurl(url.context)}/images/logo/AlfrescoLogo16.ico</icon>
|
||||||
<id>urn:uuid:${node.id}</id>
|
<id>urn:uuid:${node.id}</id>
|
||||||
<link rel="self" href="${absurl(encodeuri(url.full))?xml}"/>
|
<link rel="self" href="${absurl(encodeuri(url.full))?xml}"/>
|
||||||
|
<link rel="cmis-source" href="${absurl(url.serviceContext)}/api/node/${node.nodeRef.storeRef.protocol}/${node.nodeRef.storeRef.identifier}/${node.nodeRef.id}"/>
|
||||||
[#nested] [#-- NOTE: Custom links --]
|
[#nested] [#-- NOTE: Custom links --]
|
||||||
<title>${node.name}</title>
|
<title>${node.name}</title>
|
||||||
<updated>${xmldate(node.properties.modified)}</updated>
|
<updated>${xmldate(node.properties.modified)}</updated>
|
||||||
|
@@ -19,9 +19,10 @@
|
|||||||
<cmis:capabilityVersionSpecificFiling>false</cmis:capabilityVersionSpecificFiling>
|
<cmis:capabilityVersionSpecificFiling>false</cmis:capabilityVersionSpecificFiling>
|
||||||
<cmis:capabilityPWCUpdateable>true</cmis:capabilityPWCUpdateable>
|
<cmis:capabilityPWCUpdateable>true</cmis:capabilityPWCUpdateable>
|
||||||
<cmis:capabilityAllVersionsSearchable>false</cmis:capabilityAllVersionsSearchable>
|
<cmis:capabilityAllVersionsSearchable>false</cmis:capabilityAllVersionsSearchable>
|
||||||
<cmis:capabilityJoin>innerAndOuter</cmis:capabilityJoin> <#-- TODO: check -->
|
<cmis:capabilityJoin>noJoin</cmis:capabilityJoin>
|
||||||
<cmis:capabilityFullText>fulltextandstructured</cmis:capabilityFullText>
|
<cmis:capabilityFullText>fulltextandstructured</cmis:capabilityFullText>
|
||||||
</cmis:capabilities>
|
</cmis:capabilities>
|
||||||
|
<cmis:cmisVersionsSupported>${cmisVersion}</cmis:cmisVersionsSupported>
|
||||||
<cmis:repositorySpecificInformation></cmis:repositorySpecificInformation>
|
<cmis:repositorySpecificInformation></cmis:repositorySpecificInformation>
|
||||||
</cmis:repositoryInfo>
|
</cmis:repositoryInfo>
|
||||||
|
|
||||||
|
@@ -2,6 +2,7 @@
|
|||||||
<shortname>Repository AtomPub Service Document</shortname>
|
<shortname>Repository AtomPub Service Document</shortname>
|
||||||
<description>Repository ATOM Publishing Service Document</description>
|
<description>Repository ATOM Publishing Service Document</description>
|
||||||
<url>/api/repository</url>
|
<url>/api/repository</url>
|
||||||
|
<url>/api/cmis</url>
|
||||||
<format default="atom"/>
|
<format default="atom"/>
|
||||||
<authentication>none</authentication>
|
<authentication>none</authentication>
|
||||||
<family>CMIS</family>
|
<family>CMIS</family>
|
||||||
|
@@ -0,0 +1,63 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<title>Alfresco CMIS v${cmisVersion}</title>
|
||||||
|
<link rel="stylesheet" href="${url.context}/css/base.css" TYPE="text/css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td><img src="${url.context}/images/logo/AlfrescoLogo32.png" alt="Alfresco" /></td>
|
||||||
|
<td><nobr><span class="title">Alfresco CMIS v${cmisVersion} (REST Binding)</span></nobr></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<br>
|
||||||
|
<table>
|
||||||
|
<tr><td><a href="${url.serviceContext}/index">Back to Web Scripts Home</a></td></tr>
|
||||||
|
</table>
|
||||||
|
<br>
|
||||||
|
<span class="mainSubTitle">Introduction</span>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>The Content Management Interoperability Services (CMIS) standard defines a domain
|
||||||
|
model and set of API bindings, such as Web Services and REST/Atom that can be used
|
||||||
|
by applications to work with one or more Content Management repositories/systems.</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<br>
|
||||||
|
<span class="mainSubTitle">REST Binding</span>
|
||||||
|
<table>
|
||||||
|
<tr><td>Alfresco's Content Repository provides the CMIS REST binding, an extension of the Atom Publishing Protocol.
|
||||||
|
All CMIS services are implemented as <a href="http://wiki.alfresco.com/wiki/Web Scripts">Web Scripts</a>,
|
||||||
|
therefore support all Web Script capabilities such as authentication, content negotiation, tunelling etc.</td></tr>
|
||||||
|
</table>
|
||||||
|
<br>
|
||||||
|
<span class="mainSubTitle">CMIS Services</span>
|
||||||
|
<table>
|
||||||
|
<tr><td>A description of each CMIS service is available in the <a href="${url.serviceContext}/index/family/CMIS">reference documentation.</a></td></tr>
|
||||||
|
</table>
|
||||||
|
<br>
|
||||||
|
<span class="mainSubTitle">CMIS Repository Information</span>
|
||||||
|
<table>
|
||||||
|
<tr><td>(also available as an <a href="${url.serviceContext}/api/repository">APP Service Document</a>)</td></tr>
|
||||||
|
</table>
|
||||||
|
<br>
|
||||||
|
<table>
|
||||||
|
<tr><td>Repository Id:</td><td>${server.id}</td></tr>
|
||||||
|
<tr><td>Repository Name:</td><td>${server.name}</td></tr>
|
||||||
|
<tr><td>Repository Description:</td><td>[none]</td></tr>
|
||||||
|
<tr><td>Vendor Name:</td><td>Alfresco</td></tr>
|
||||||
|
<tr><td>Product Name:</td><td>Alfresco Repository (${server.edition})</td></tr>
|
||||||
|
<tr><td>Product Version:</td><td>${server.version}</td></tr>
|
||||||
|
<tr><td>Multifiling:</td><td>true</td></tr>
|
||||||
|
<tr><td>Unfiling:</td><td>false</td></tr>
|
||||||
|
<tr><td>VersionSpecificFiling:</td><td>false</td></tr>
|
||||||
|
<tr><td>PWCUpdateable:</td><td>true</td></tr>
|
||||||
|
<tr><td>AllVersionsSearchable:</td><td>false</td></tr>
|
||||||
|
<tr><td>Join:</td><td>noJoin</td></tr>
|
||||||
|
<tr><td>FullText:</td></td><td>fulltextandstructured</td></tr>
|
||||||
|
<tr><td>VersionsSupported:</td><td>${cmisVersion}</td></tr>
|
||||||
|
<tr><td>repositorySpecificInformation:</td><td>[none]</td></tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
@@ -1 +1,2 @@
|
|||||||
|
model.cmisVersion = cmis.version;
|
||||||
model.defaultRootFolderPath = cmis.defaultRootFolderPath;
|
model.defaultRootFolderPath = cmis.defaultRootFolderPath;
|
@@ -10,7 +10,6 @@
|
|||||||
|
|
||||||
[@feedLib.node node=node]
|
[@feedLib.node node=node]
|
||||||
[@pagingLib.links cursor=cursor/]
|
[@pagingLib.links cursor=cursor/]
|
||||||
[@entryLib.folderCMISLinks node=node/] [#-- TODO: not part of 0.42 schema --]
|
|
||||||
[/@feedLib.node]
|
[/@feedLib.node]
|
||||||
|
|
||||||
[#list results as child]
|
[#list results as child]
|
||||||
@@ -24,7 +23,6 @@
|
|||||||
[/#list]
|
[/#list]
|
||||||
|
|
||||||
[@feedLib.hasMore more=cursor/]
|
[@feedLib.hasMore more=cursor/]
|
||||||
[@entryLib.folderCMISProps node=node/] [#-- TODO: not part of 0.42 schema --]
|
|
||||||
[@pagingLib.opensearch cursor=cursor/]
|
[@pagingLib.opensearch cursor=cursor/]
|
||||||
|
|
||||||
</feed>
|
</feed>
|
||||||
|
@@ -394,20 +394,11 @@
|
|||||||
<property name="extensionName"><value>cmis</value></property>
|
<property name="extensionName"><value>cmis</value></property>
|
||||||
<property name="serviceRegistry" ref="ServiceRegistry" />
|
<property name="serviceRegistry" ref="ServiceRegistry" />
|
||||||
<property name="repository" ref="repositoryHelper" />
|
<property name="repository" ref="repositoryHelper" />
|
||||||
<property name="CMISService" ref="webscripts.cmis.service" />
|
<property name="CMISService" ref="CMISService" />
|
||||||
<property name="paging" ref="webscripts.js.paging" />
|
<property name="paging" ref="webscripts.js.paging" />
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<!-- CMIS Helpers -->
|
<!-- CMIS Helpers -->
|
||||||
<bean id="webscripts.cmis.service" class="org.alfresco.repo.cmis.rest.CMISService">
|
|
||||||
<property name="defaultRootPath"><value>workspace/SpacesStore/Company Home</value></property>
|
|
||||||
<property name="dictionaryService" ref="dictionaryService" />
|
|
||||||
<property name="searchService" ref="searchService" />
|
|
||||||
<property name="transactionHelper" ref="retryingTransactionHelper" />
|
|
||||||
<property name="tenantDeployerService" ref="tenantAdminService" />
|
|
||||||
<property name="nodeService" ref="nodeService" />
|
|
||||||
<property name="repository" ref="repositoryHelper" />
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="webscripts.cmis.atom.extension" class="org.alfresco.web.scripts.atom.AbderaExtension">
|
<bean id="webscripts.cmis.atom.extension" class="org.alfresco.web.scripts.atom.AbderaExtension">
|
||||||
<property name="abderaService" ref="webscripts.abdera"/>
|
<property name="abderaService" ref="webscripts.abdera"/>
|
||||||
|
@@ -24,7 +24,8 @@
|
|||||||
*/
|
*/
|
||||||
package org.alfresco.repo.cmis.rest;
|
package org.alfresco.repo.cmis.rest;
|
||||||
|
|
||||||
import org.alfresco.repo.cmis.rest.CMISService.TypesFilter;
|
import org.alfresco.cmis.CMISService;
|
||||||
|
import org.alfresco.cmis.CMISService.TypesFilter;
|
||||||
import org.alfresco.repo.jscript.BaseScopableProcessorExtension;
|
import org.alfresco.repo.jscript.BaseScopableProcessorExtension;
|
||||||
import org.alfresco.repo.jscript.ScriptNode;
|
import org.alfresco.repo.jscript.ScriptNode;
|
||||||
import org.alfresco.repo.model.Repository;
|
import org.alfresco.repo.model.Repository;
|
||||||
@@ -91,6 +92,16 @@ public class CMISScript extends BaseScopableProcessorExtension
|
|||||||
this.cmisService = cmisService;
|
this.cmisService = cmisService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the supported CMIS Version
|
||||||
|
*
|
||||||
|
* @return CMIS version
|
||||||
|
*/
|
||||||
|
public String getVersion()
|
||||||
|
{
|
||||||
|
return cmisService.getCMISVersion();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the default root folder path
|
* Gets the default root folder path
|
||||||
*
|
*
|
||||||
|
@@ -1,440 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2005-2008 Alfresco Software Limited.
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License
|
|
||||||
* as published by the Free Software Foundation; either version 2
|
|
||||||
* of the License, or (at your option) any later version.
|
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
|
|
||||||
* As a special exception to the terms and conditions of version 2.0 of
|
|
||||||
* the GPL, you may redistribute this Program in connection with Free/Libre
|
|
||||||
* and Open Source Software ("FLOSS") applications as described in Alfresco's
|
|
||||||
* FLOSS exception. You should have recieved a copy of the text describing
|
|
||||||
* the FLOSS exception, and it is also available here:
|
|
||||||
* http://www.alfresco.com/legal/licensing"
|
|
||||||
*/
|
|
||||||
package org.alfresco.repo.cmis.rest;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.alfresco.error.AlfrescoRuntimeException;
|
|
||||||
import org.alfresco.model.ContentModel;
|
|
||||||
import org.alfresco.repo.model.Repository;
|
|
||||||
import org.alfresco.repo.search.QueryParameterDefImpl;
|
|
||||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
|
||||||
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
|
|
||||||
import org.alfresco.repo.tenant.TenantDeployer;
|
|
||||||
import org.alfresco.repo.tenant.TenantDeployerService;
|
|
||||||
import org.alfresco.repo.transaction.RetryingTransactionHelper;
|
|
||||||
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
|
|
||||||
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
|
|
||||||
import org.alfresco.service.cmr.dictionary.DictionaryService;
|
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
|
||||||
import org.alfresco.service.cmr.repository.NodeService;
|
|
||||||
import org.alfresco.service.cmr.repository.StoreRef;
|
|
||||||
import org.alfresco.service.cmr.search.QueryParameterDefinition;
|
|
||||||
import org.alfresco.service.cmr.search.ResultSet;
|
|
||||||
import org.alfresco.service.cmr.search.SearchParameters;
|
|
||||||
import org.alfresco.service.cmr.search.SearchService;
|
|
||||||
import org.alfresco.service.namespace.NamespaceService;
|
|
||||||
import org.alfresco.service.namespace.QName;
|
|
||||||
import org.alfresco.util.AbstractLifecycleBean;
|
|
||||||
import org.springframework.beans.BeansException;
|
|
||||||
import org.springframework.context.ApplicationContext;
|
|
||||||
import org.springframework.context.ApplicationContextAware;
|
|
||||||
import org.springframework.context.ApplicationEvent;
|
|
||||||
import org.springframework.context.ApplicationListener;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* CMIS Service
|
|
||||||
*
|
|
||||||
* @author davidc
|
|
||||||
*/
|
|
||||||
public class CMISService implements ApplicationContextAware, ApplicationListener, TenantDeployer
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Types Filter
|
|
||||||
*
|
|
||||||
* @author davidc
|
|
||||||
*/
|
|
||||||
public enum TypesFilter
|
|
||||||
{
|
|
||||||
Folders,
|
|
||||||
FoldersAndDocuments,
|
|
||||||
Documents
|
|
||||||
};
|
|
||||||
|
|
||||||
/** Query Parameters */
|
|
||||||
private static final QName PARAM_PARENT = QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "parent");
|
|
||||||
private static final QName PARAM_USERNAME = QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "username");
|
|
||||||
|
|
||||||
/** Shallow search for all files and folders */
|
|
||||||
private static final String LUCENE_QUERY_SHALLOW_FOLDERS =
|
|
||||||
"+PARENT:\"${cm:parent}\" " +
|
|
||||||
"-TYPE:\"" + ContentModel.TYPE_SYSTEM_FOLDER + "\" " +
|
|
||||||
"+TYPE:\"" + ContentModel.TYPE_FOLDER + "\"";
|
|
||||||
|
|
||||||
/** Shallow search for all files and folders */
|
|
||||||
private static final String LUCENE_QUERY_SHALLOW_FILES =
|
|
||||||
"+PARENT:\"${cm:parent}\" " +
|
|
||||||
"-TYPE:\"" + ContentModel.TYPE_SYSTEM_FOLDER + "\" " +
|
|
||||||
"+TYPE:\"" + ContentModel.TYPE_CONTENT + "\" " +
|
|
||||||
"-ASPECT:\"" + ContentModel.ASPECT_WORKING_COPY + "\"";
|
|
||||||
|
|
||||||
private static final String LUCENE_QUERY_CHECKEDOUT =
|
|
||||||
"+@cm\\:workingCopyOwner:${cm:username}";
|
|
||||||
|
|
||||||
private static final String LUCENE_QUERY_CHECKEDOUT_IN_FOLDER =
|
|
||||||
"+@cm\\:workingCopyOwner:${cm:username} " +
|
|
||||||
"+PARENT:\"${cm:parent}\"";
|
|
||||||
|
|
||||||
|
|
||||||
// dependencies
|
|
||||||
private Repository repository;
|
|
||||||
private RetryingTransactionHelper retryingTransactionHelper;
|
|
||||||
private DictionaryService dictionaryService;
|
|
||||||
private SearchService searchService;
|
|
||||||
private NodeService nodeService;
|
|
||||||
private TenantDeployerService tenantDeployerService;
|
|
||||||
private ProcessorLifecycle lifecycle = new ProcessorLifecycle();
|
|
||||||
|
|
||||||
// default CMIS store and path
|
|
||||||
private String defaultRootPath;
|
|
||||||
private Map<String, NodeRef> defaultRootNodeRefs;
|
|
||||||
|
|
||||||
// data types for query
|
|
||||||
private DataTypeDefinition nodeRefDataType;
|
|
||||||
private DataTypeDefinition textDataType;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the default root path
|
|
||||||
*
|
|
||||||
* store_type/store_id/path...
|
|
||||||
*
|
|
||||||
* @param path store_type/store_id/path...
|
|
||||||
*/
|
|
||||||
public void setDefaultRootPath(String path)
|
|
||||||
{
|
|
||||||
defaultRootPath = path;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the tenant deployer service
|
|
||||||
*
|
|
||||||
* @param tenantDeployerService
|
|
||||||
*/
|
|
||||||
public void setTenantDeployerService(TenantDeployerService tenantDeployerService)
|
|
||||||
{
|
|
||||||
this.tenantDeployerService = tenantDeployerService;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets helper that provides transaction callbacks
|
|
||||||
*/
|
|
||||||
public void setTransactionHelper(RetryingTransactionHelper retryingTransactionHelper)
|
|
||||||
{
|
|
||||||
this.retryingTransactionHelper = retryingTransactionHelper;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param dictionaryService
|
|
||||||
*/
|
|
||||||
public void setDictionaryService(DictionaryService dictionaryService)
|
|
||||||
{
|
|
||||||
this.dictionaryService = dictionaryService;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param searchService
|
|
||||||
*/
|
|
||||||
public void setSearchService(SearchService searchService)
|
|
||||||
{
|
|
||||||
this.searchService = searchService;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param nodeService
|
|
||||||
*/
|
|
||||||
public void setNodeService(NodeService nodeService)
|
|
||||||
{
|
|
||||||
this.nodeService = nodeService;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param repository
|
|
||||||
*/
|
|
||||||
public void setRepository(Repository repository)
|
|
||||||
{
|
|
||||||
this.repository = repository;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see org.springframework.context.ApplicationContextAware#setApplicationContext(org.springframework.context.ApplicationContext)
|
|
||||||
*/
|
|
||||||
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException
|
|
||||||
{
|
|
||||||
lifecycle.setApplicationContext(applicationContext);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see org.springframework.context.ApplicationListener#onApplicationEvent(org.springframework.context.ApplicationEvent)
|
|
||||||
*/
|
|
||||||
public void onApplicationEvent(ApplicationEvent event)
|
|
||||||
{
|
|
||||||
lifecycle.onApplicationEvent(event);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Hooks into Spring Application Lifecycle
|
|
||||||
*/
|
|
||||||
private class ProcessorLifecycle extends AbstractLifecycleBean
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
protected void onBootstrap(ApplicationEvent event)
|
|
||||||
{
|
|
||||||
init();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void onShutdown(ApplicationEvent event)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see org.alfresco.repo.tenant.TenantDeployer#onEnableTenant()
|
|
||||||
*/
|
|
||||||
public void onEnableTenant()
|
|
||||||
{
|
|
||||||
init();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see org.alfresco.repo.tenant.TenantDeployer#onDisableTenant()
|
|
||||||
*/
|
|
||||||
public void onDisableTenant()
|
|
||||||
{
|
|
||||||
destroy();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see org.alfresco.repo.tenant.TenantDeployer#init()
|
|
||||||
*/
|
|
||||||
public void init()
|
|
||||||
{
|
|
||||||
// initialise data types
|
|
||||||
nodeRefDataType = dictionaryService.getDataType(DataTypeDefinition.NODE_REF);
|
|
||||||
textDataType = dictionaryService.getDataType(DataTypeDefinition.TEXT);
|
|
||||||
|
|
||||||
// initialise root node ref
|
|
||||||
tenantDeployerService.register(this);
|
|
||||||
if (defaultRootNodeRefs == null)
|
|
||||||
{
|
|
||||||
defaultRootNodeRefs = new HashMap<String, NodeRef>(1);
|
|
||||||
}
|
|
||||||
getDefaultRootNodeRef();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see org.alfresco.repo.tenant.TenantDeployer#destroy()
|
|
||||||
*/
|
|
||||||
public void destroy()
|
|
||||||
{
|
|
||||||
defaultRootNodeRefs.remove(tenantDeployerService.getCurrentUserDomain());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the default root node path
|
|
||||||
*
|
|
||||||
* @return root node path
|
|
||||||
*/
|
|
||||||
public String getDefaultRootPath()
|
|
||||||
{
|
|
||||||
return defaultRootPath;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the default root node ref
|
|
||||||
*
|
|
||||||
* @return root node ref
|
|
||||||
*/
|
|
||||||
public NodeRef getDefaultRootNodeRef()
|
|
||||||
{
|
|
||||||
String tenantDomain = tenantDeployerService.getCurrentUserDomain();
|
|
||||||
NodeRef defaultNodeRef = defaultRootNodeRefs.get(tenantDomain);
|
|
||||||
if (defaultNodeRef == null)
|
|
||||||
{
|
|
||||||
defaultNodeRef = AuthenticationUtil.runAs(new RunAsWork<NodeRef>()
|
|
||||||
{
|
|
||||||
public NodeRef doWork() throws Exception
|
|
||||||
{
|
|
||||||
return retryingTransactionHelper.doInTransaction(new RetryingTransactionCallback<NodeRef>()
|
|
||||||
{
|
|
||||||
public NodeRef execute() throws Exception
|
|
||||||
{
|
|
||||||
return repository.findNodeRef("path", defaultRootPath.split("/"));
|
|
||||||
};
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}, AuthenticationUtil.getSystemUserName());
|
|
||||||
|
|
||||||
if (defaultNodeRef == null)
|
|
||||||
{
|
|
||||||
throw new AlfrescoRuntimeException("Default root folder path '" + defaultRootPath + "' not found");
|
|
||||||
}
|
|
||||||
defaultRootNodeRefs.put(tenantDomain, defaultNodeRef);
|
|
||||||
}
|
|
||||||
return defaultNodeRef;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the default store ref
|
|
||||||
*
|
|
||||||
* @return store ref
|
|
||||||
*/
|
|
||||||
public StoreRef getDefaultRootStoreRef()
|
|
||||||
{
|
|
||||||
return getDefaultRootNodeRef().getStoreRef();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Query for node children
|
|
||||||
*
|
|
||||||
* @param parent node to query children for
|
|
||||||
* @param typesFilter types filter
|
|
||||||
* @return children of node
|
|
||||||
*/
|
|
||||||
public NodeRef[] getChildren(NodeRef parent, TypesFilter typesFilter)
|
|
||||||
{
|
|
||||||
if (typesFilter == TypesFilter.FoldersAndDocuments)
|
|
||||||
{
|
|
||||||
NodeRef[] folders = queryChildren(parent, TypesFilter.Folders);
|
|
||||||
NodeRef[] docs = queryChildren(parent, TypesFilter.Documents);
|
|
||||||
NodeRef[] foldersAndDocs = new NodeRef[folders.length + docs.length];
|
|
||||||
System.arraycopy(folders, 0, foldersAndDocs, 0, folders.length);
|
|
||||||
System.arraycopy(docs, 0, foldersAndDocs, folders.length, docs.length);
|
|
||||||
return foldersAndDocs;
|
|
||||||
}
|
|
||||||
else if (typesFilter == TypesFilter.Folders)
|
|
||||||
{
|
|
||||||
NodeRef[] folders = queryChildren(parent, TypesFilter.Folders);
|
|
||||||
return folders;
|
|
||||||
}
|
|
||||||
else if (typesFilter == TypesFilter.Documents)
|
|
||||||
{
|
|
||||||
NodeRef[] docs = queryChildren(parent, TypesFilter.Documents);
|
|
||||||
return docs;
|
|
||||||
}
|
|
||||||
|
|
||||||
return new NodeRef[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Query for checked out items
|
|
||||||
*
|
|
||||||
* @param username for user
|
|
||||||
* @param folder (optional) within folder
|
|
||||||
* @param includeDescendants true => include descendants of folder, false => only children of folder
|
|
||||||
* @return checked out items
|
|
||||||
*/
|
|
||||||
public NodeRef[] getCheckedOut(String username, NodeRef folder, boolean includeDescendants)
|
|
||||||
{
|
|
||||||
SearchParameters params = new SearchParameters();
|
|
||||||
params.setLanguage(SearchService.LANGUAGE_LUCENE);
|
|
||||||
QueryParameterDefinition usernameDef = new QueryParameterDefImpl(PARAM_USERNAME, textDataType, true, username);
|
|
||||||
params.addQueryParameterDefinition(usernameDef);
|
|
||||||
|
|
||||||
if (folder == null)
|
|
||||||
{
|
|
||||||
// get all checked-out items
|
|
||||||
params.setQuery(LUCENE_QUERY_CHECKEDOUT);
|
|
||||||
params.addStore(getDefaultRootStoreRef());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// get all checked-out items within folder
|
|
||||||
// NOTE: special-case for all descendants in root folder (treat as all checked-out items)
|
|
||||||
if (includeDescendants && nodeService.getRootNode(folder.getStoreRef()) == folder)
|
|
||||||
{
|
|
||||||
// get all checked-out items within specified folder store
|
|
||||||
params.setQuery(LUCENE_QUERY_CHECKEDOUT);
|
|
||||||
params.addStore(folder.getStoreRef());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// TODO: implement descendants of folder
|
|
||||||
params.setQuery(LUCENE_QUERY_CHECKEDOUT_IN_FOLDER);
|
|
||||||
params.addStore(folder.getStoreRef());
|
|
||||||
QueryParameterDefinition parentDef = new QueryParameterDefImpl(PARAM_PARENT, nodeRefDataType, true, folder.toString());
|
|
||||||
params.addQueryParameterDefinition(parentDef);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ResultSet resultSet = null;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
resultSet = searchService.query(params);
|
|
||||||
List<NodeRef> results = resultSet.getNodeRefs();
|
|
||||||
NodeRef[] nodeRefs = new NodeRef[results.size()];
|
|
||||||
return results.toArray(nodeRefs);
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
if (resultSet != null) resultSet.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Query children helper
|
|
||||||
*
|
|
||||||
* NOTE: Queries for folders only or documents only
|
|
||||||
*
|
|
||||||
* @param parent node to query children for
|
|
||||||
* @param typesFilter folders or documents
|
|
||||||
* @return node children
|
|
||||||
*/
|
|
||||||
private NodeRef[] queryChildren(NodeRef parent, TypesFilter typesFilter)
|
|
||||||
{
|
|
||||||
SearchParameters params = new SearchParameters();
|
|
||||||
params.setLanguage(SearchService.LANGUAGE_LUCENE);
|
|
||||||
params.addStore(parent.getStoreRef());
|
|
||||||
QueryParameterDefinition parentDef = new QueryParameterDefImpl(PARAM_PARENT, nodeRefDataType, true, parent.toString());
|
|
||||||
params.addQueryParameterDefinition(parentDef);
|
|
||||||
|
|
||||||
if (typesFilter == TypesFilter.Folders)
|
|
||||||
{
|
|
||||||
params.setQuery(LUCENE_QUERY_SHALLOW_FOLDERS);
|
|
||||||
}
|
|
||||||
else if (typesFilter == TypesFilter.Documents)
|
|
||||||
{
|
|
||||||
params.setQuery(LUCENE_QUERY_SHALLOW_FILES);
|
|
||||||
}
|
|
||||||
|
|
||||||
ResultSet resultSet = null;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
resultSet = searchService.query(params);
|
|
||||||
List<NodeRef> results = resultSet.getNodeRefs();
|
|
||||||
NodeRef[] nodeRefs = new NodeRef[results.size()];
|
|
||||||
return results.toArray(nodeRefs);
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
if (resultSet != null) resultSet.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -473,10 +473,7 @@ public class CMISTest extends BaseCMISWebScriptTest
|
|||||||
{
|
{
|
||||||
// retrieve test folder for checkouts
|
// retrieve test folder for checkouts
|
||||||
Entry testFolder = createTestFolder("testGetCheckedOut");
|
Entry testFolder = createTestFolder("testGetCheckedOut");
|
||||||
Link childrenLink = testFolder.getLink(CMISConstants.REL_CHILDREN);
|
CMISProperties props = testFolder.getExtension(CMISConstants.PROPERTIES);
|
||||||
Feed scope = getFeed(childrenLink.getHref());
|
|
||||||
assertNotNull(scope);
|
|
||||||
CMISProperties props = scope.getExtension(CMISConstants.PROPERTIES);
|
|
||||||
String scopeId = props.getObjectId();
|
String scopeId = props.getObjectId();
|
||||||
assertNotNull(scopeId);
|
assertNotNull(scopeId);
|
||||||
|
|
||||||
@@ -497,10 +494,9 @@ public class CMISTest extends BaseCMISWebScriptTest
|
|||||||
// retrieve test folder for checkouts
|
// retrieve test folder for checkouts
|
||||||
Entry testFolder = createTestFolder("testCheckout");
|
Entry testFolder = createTestFolder("testCheckout");
|
||||||
Link childrenLink = testFolder.getLink(CMISConstants.REL_CHILDREN);
|
Link childrenLink = testFolder.getLink(CMISConstants.REL_CHILDREN);
|
||||||
Feed scope = getFeed(childrenLink.getHref());
|
|
||||||
|
|
||||||
// create document for checkout
|
// create document for checkout
|
||||||
Entry document = createDocument(scope.getSelfLink().getHref(), "testCheckout");
|
Entry document = createDocument(childrenLink.getHref(), "testCheckout");
|
||||||
Response documentRes = sendRequest(new GetRequest(document.getSelfLink().getHref().toString()), 200, getAtomValidator());
|
Response documentRes = sendRequest(new GetRequest(document.getSelfLink().getHref().toString()), 200, getAtomValidator());
|
||||||
assertNotNull(documentRes);
|
assertNotNull(documentRes);
|
||||||
String documentXML = documentRes.getContentAsString();
|
String documentXML = documentRes.getContentAsString();
|
||||||
@@ -528,10 +524,9 @@ public class CMISTest extends BaseCMISWebScriptTest
|
|||||||
// retrieve test folder for checkouts
|
// retrieve test folder for checkouts
|
||||||
Entry testFolder = createTestFolder("testCancelCheckout");
|
Entry testFolder = createTestFolder("testCancelCheckout");
|
||||||
Link childrenLink = testFolder.getLink(CMISConstants.REL_CHILDREN);
|
Link childrenLink = testFolder.getLink(CMISConstants.REL_CHILDREN);
|
||||||
Feed scope = getFeed(childrenLink.getHref());
|
|
||||||
|
|
||||||
// create document for checkout
|
// create document for checkout
|
||||||
Entry document = createDocument(scope.getSelfLink().getHref(), "testCancelCheckout");
|
Entry document = createDocument(childrenLink.getHref(), "testCancelCheckout");
|
||||||
Response documentRes = sendRequest(new GetRequest(document.getSelfLink().getHref().toString()), 200, getAtomValidator());
|
Response documentRes = sendRequest(new GetRequest(document.getSelfLink().getHref().toString()), 200, getAtomValidator());
|
||||||
assertNotNull(documentRes);
|
assertNotNull(documentRes);
|
||||||
String xml = documentRes.getContentAsString();
|
String xml = documentRes.getContentAsString();
|
||||||
@@ -574,10 +569,9 @@ public class CMISTest extends BaseCMISWebScriptTest
|
|||||||
// retrieve test folder for checkins
|
// retrieve test folder for checkins
|
||||||
Entry testFolder = createTestFolder("testCheckIn");
|
Entry testFolder = createTestFolder("testCheckIn");
|
||||||
Link childrenLink = testFolder.getLink(CMISConstants.REL_CHILDREN);
|
Link childrenLink = testFolder.getLink(CMISConstants.REL_CHILDREN);
|
||||||
Feed scope = getFeed(childrenLink.getHref());
|
|
||||||
|
|
||||||
// create document for checkout
|
// create document for checkout
|
||||||
Entry document = createDocument(scope.getSelfLink().getHref(), "testCheckin");
|
Entry document = createDocument(childrenLink.getHref(), "testCheckin");
|
||||||
Response documentRes = sendRequest(new GetRequest(document.getSelfLink().getHref().toString()), 200, getAtomValidator());
|
Response documentRes = sendRequest(new GetRequest(document.getSelfLink().getHref().toString()), 200, getAtomValidator());
|
||||||
assertNotNull(documentRes);
|
assertNotNull(documentRes);
|
||||||
String xml = documentRes.getContentAsString();
|
String xml = documentRes.getContentAsString();
|
||||||
@@ -648,10 +642,9 @@ public class CMISTest extends BaseCMISWebScriptTest
|
|||||||
// retrieve test folder for checkins
|
// retrieve test folder for checkins
|
||||||
Entry testFolder = createTestFolder("testUpdateOnCheckIn");
|
Entry testFolder = createTestFolder("testUpdateOnCheckIn");
|
||||||
Link childrenLink = testFolder.getLink(CMISConstants.REL_CHILDREN);
|
Link childrenLink = testFolder.getLink(CMISConstants.REL_CHILDREN);
|
||||||
Feed scope = getFeed(childrenLink.getHref());
|
|
||||||
|
|
||||||
// create document for checkout
|
// create document for checkout
|
||||||
Entry document = createDocument(scope.getSelfLink().getHref(), "testUpdateOnCheckIn");
|
Entry document = createDocument(childrenLink.getHref(), "testUpdateOnCheckIn");
|
||||||
Response documentRes = sendRequest(new GetRequest(document.getSelfLink().getHref().toString()), 200, getAtomValidator());
|
Response documentRes = sendRequest(new GetRequest(document.getSelfLink().getHref().toString()), 200, getAtomValidator());
|
||||||
assertNotNull(documentRes);
|
assertNotNull(documentRes);
|
||||||
String xml = documentRes.getContentAsString();
|
String xml = documentRes.getContentAsString();
|
||||||
@@ -711,10 +704,9 @@ public class CMISTest extends BaseCMISWebScriptTest
|
|||||||
// retrieve test folder for checkins
|
// retrieve test folder for checkins
|
||||||
Entry testFolder = createTestFolder("testGetAllVersions");
|
Entry testFolder = createTestFolder("testGetAllVersions");
|
||||||
Link childrenLink = testFolder.getLink(CMISConstants.REL_CHILDREN);
|
Link childrenLink = testFolder.getLink(CMISConstants.REL_CHILDREN);
|
||||||
Feed scope = getFeed(childrenLink.getHref());
|
|
||||||
|
|
||||||
// create document for checkout
|
// create document for checkout
|
||||||
Entry document = createDocument(scope.getSelfLink().getHref(), "testGetAllVersions");
|
Entry document = createDocument(childrenLink.getHref(), "testGetAllVersions");
|
||||||
Response documentRes = sendRequest(new GetRequest(document.getSelfLink().getHref().toString()), 200, getAtomValidator());
|
Response documentRes = sendRequest(new GetRequest(document.getSelfLink().getHref().toString()), 200, getAtomValidator());
|
||||||
assertNotNull(documentRes);
|
assertNotNull(documentRes);
|
||||||
String xml = documentRes.getContentAsString();
|
String xml = documentRes.getContentAsString();
|
||||||
|
@@ -1,46 +1,37 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!--
|
<!--
|
||||||
-*- rnc -*-
|
-*- rnc -*- RELAX NG Compact Syntax Grammar for the Atom Format
|
||||||
RELAX NG Compact Syntax Grammar for the
|
Specification Version 11
|
||||||
Atom Format Specification Version 11
|
-->
|
||||||
-->
|
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||||
<xs:schema
|
elementFormDefault="qualified" targetNamespace="http://www.w3.org/2007/app"
|
||||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app"
|
||||||
elementFormDefault="qualified"
|
xmlns:cmis="http://www.cmis.org/2008/05">
|
||||||
targetNamespace="http://www.w3.org/2007/app"
|
<xs:import namespace="http://www.w3.org/2005/Atom"
|
||||||
xmlns:atom="http://www.w3.org/2005/Atom"
|
schemaLocation="ATOM4CMIS.xsd" />
|
||||||
xmlns:app="http://www.w3.org/2007/app"
|
<xs:import namespace="http://www.cmis.org/2008/05"
|
||||||
xmlns:cmis="http://www.cmis.org/2008/05"
|
schemaLocation="CMIS-REST.xsd" />
|
||||||
>
|
|
||||||
<xs:import namespace="http://www.w3.org/2005/Atom" schemaLocation="ATOM4CMIS.xsd"/>
|
|
||||||
<xs:import namespace="http://www.cmis.org/2008/05" schemaLocation="CMIS-REST.xsd"/>
|
|
||||||
|
|
||||||
|
|
||||||
<xs:element name="service" type="app:appServiceType"></xs:element>
|
<xs:element name="service" type="app:appServiceType"></xs:element>
|
||||||
|
|
||||||
<xs:complexType name="appServiceType">
|
<xs:complexType name="appServiceType">
|
||||||
<xs:sequence>
|
<xs:sequence>
|
||||||
<xs:element ref="atom:author" minOccurs="0" maxOccurs="1"></xs:element>
|
<xs:element ref="atom:author" minOccurs="0" maxOccurs="1"></xs:element>
|
||||||
<xs:element ref="app:workspace" minOccurs="1" maxOccurs="unbounded"></xs:element>
|
<xs:element ref="app:workspace" minOccurs="1" maxOccurs="unbounded"></xs:element>
|
||||||
<xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax" namespace="##other"/>
|
<xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"
|
||||||
|
namespace="##other" />
|
||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
|
|
||||||
<xs:element name="workspace" type="app:appWorkspaceType"></xs:element>
|
<xs:element name="workspace" type="app:appWorkspaceType"></xs:element>
|
||||||
|
|
||||||
<xs:complexType name="appWorkspaceType">
|
<xs:complexType name="appWorkspaceType">
|
||||||
|
|
||||||
<xs:sequence>
|
<xs:sequence>
|
||||||
<xs:element ref="atom:title"></xs:element>
|
<xs:element ref="atom:title"></xs:element>
|
||||||
<xs:element ref="cmis:repositoryInfo" minOccurs="0" maxOccurs="1"></xs:element>
|
<xs:element ref="cmis:repositoryInfo" minOccurs="0"
|
||||||
|
maxOccurs="1"></xs:element>
|
||||||
<xs:element ref="app:collection" minOccurs="0" maxOccurs="unbounded"></xs:element>
|
<xs:element ref="app:collection" minOccurs="0" maxOccurs="unbounded"></xs:element>
|
||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
<xs:attribute ref="cmis:id"></xs:attribute>
|
<xs:attribute ref="cmis:id"></xs:attribute>
|
||||||
<xs:attribute ref="cmis:repositoryRelationship"></xs:attribute>
|
<xs:attribute ref="cmis:repositoryRelationship"></xs:attribute>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
|
|
||||||
<xs:element name="collection" type="app:appCollectionType"></xs:element>
|
<xs:element name="collection" type="app:appCollectionType"></xs:element>
|
||||||
|
|
||||||
<xs:complexType name="appCollectionType">
|
<xs:complexType name="appCollectionType">
|
||||||
<xs:sequence>
|
<xs:sequence>
|
||||||
<xs:element ref="atom:title"></xs:element>
|
<xs:element ref="atom:title"></xs:element>
|
||||||
@@ -49,7 +40,6 @@
|
|||||||
<xs:attribute ref="cmis:collectionType"></xs:attribute>
|
<xs:attribute ref="cmis:collectionType"></xs:attribute>
|
||||||
<xs:attribute name="href" type="xs:anyURI"></xs:attribute>
|
<xs:attribute name="href" type="xs:anyURI"></xs:attribute>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
|
|
||||||
<xs:attribute name="href" type="xs:anyURI"></xs:attribute>
|
<xs:attribute name="href" type="xs:anyURI"></xs:attribute>
|
||||||
</xs:schema>
|
</xs:schema>
|
||||||
<!-- EOF -->
|
<!-- EOF -->
|
@@ -1,20 +1,15 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!--
|
<!--
|
||||||
-*- rnc -*-
|
-*- rnc -*- RELAX NG Compact Syntax Grammar for the Atom Format
|
||||||
RELAX NG Compact Syntax Grammar for the
|
Specification Version 11
|
||||||
Atom Format Specification Version 11
|
-->
|
||||||
-->
|
|
||||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||||
elementFormDefault="qualified"
|
elementFormDefault="qualified" targetNamespace="http://www.cmis.org/2008/05"
|
||||||
targetNamespace="http://www.cmis.org/2008/05"
|
xmlns:atom="http://www.w3.org/2005/Atom" xmlns:xhtml="http://www.w3.org/1999/xhtml"
|
||||||
xmlns:atom="http://www.w3.org/2005/Atom"
|
|
||||||
xmlns:xhtml="http://www.w3.org/1999/xhtml"
|
|
||||||
xmlns:cmis="http://www.cmis.org/2008/05">
|
xmlns:cmis="http://www.cmis.org/2008/05">
|
||||||
|
|
||||||
<xs:import namespace="http://www.w3.org/XML/1998/namespace" />
|
<xs:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
|
||||||
<xs:attribute name="id" type="xs:string" />
|
<xs:attribute name="id" type="xs:string" />
|
||||||
<xs:attribute name="index" type="xs:int" />
|
<xs:attribute name="index" type="xs:integer" />
|
||||||
<xs:attribute name="collectionType">
|
<xs:attribute name="collectionType">
|
||||||
<xs:simpleType>
|
<xs:simpleType>
|
||||||
<xs:restriction base="xs:string">
|
<xs:restriction base="xs:string">
|
||||||
@@ -26,9 +21,7 @@
|
|||||||
</xs:restriction>
|
</xs:restriction>
|
||||||
</xs:simpleType>
|
</xs:simpleType>
|
||||||
</xs:attribute>
|
</xs:attribute>
|
||||||
|
|
||||||
<xs:attribute name="repositoryRelationship" type="xs:string" />
|
<xs:attribute name="repositoryRelationship" type="xs:string" />
|
||||||
|
|
||||||
<xs:element name="repositoryInfo" type="cmis:repositoryInfoType" />
|
<xs:element name="repositoryInfo" type="cmis:repositoryInfoType" />
|
||||||
<xs:element name="property" type="cmis:propertyDefinitionType" />
|
<xs:element name="property" type="cmis:propertyDefinitionType" />
|
||||||
<xs:element name="parentId" type="xs:string" />
|
<xs:element name="parentId" type="xs:string" />
|
||||||
@@ -37,26 +30,24 @@
|
|||||||
<xs:element name="description" type="xs:string" />
|
<xs:element name="description" type="xs:string" />
|
||||||
<xs:element name="isQueryable" type="xs:boolean" />
|
<xs:element name="isQueryable" type="xs:boolean" />
|
||||||
<xs:element name="isCreatable" type="xs:boolean" />
|
<xs:element name="isCreatable" type="xs:boolean" />
|
||||||
|
<xs:element name="isFileable" type="xs:boolean" />
|
||||||
<xs:element name="queryName" type="xs:string" />
|
<xs:element name="queryName" type="xs:string" />
|
||||||
<xs:element name="baseTypeQueryName" type="xs:string" />
|
<xs:element name="baseTypeQueryName" type="xs:string" />
|
||||||
<xs:element name="isContentStreamAllowed" type="xs:boolean" />
|
|
||||||
<xs:element name="AllowedSourceTypes" type="xs:string" />
|
<xs:element name="AllowedSourceTypes" type="xs:string" />
|
||||||
<xs:element name="AllowedTargetTypes" type="xs:string" />
|
<xs:element name="AllowedTargetTypes" type="xs:string" />
|
||||||
<xs:element name="constraints" type="xs:string" />
|
<xs:element name="constraints" type="xs:string" />
|
||||||
<xs:element name="objectId" type="xs:string" />
|
<xs:element name="objectId" type="xs:string" />
|
||||||
<xs:element name="type" type="cmis:typeType" />
|
<xs:element name="type" type="cmis:typeType" />
|
||||||
<xs:element name="parentUrl" type="xs:anyURI" />
|
<xs:element name="parentUrl" type="xs:anyURI" />
|
||||||
<xs:element name="maxLength" type="xs:int" />
|
<xs:element name="maxLength" type="xs:integer" />
|
||||||
<xs:element name="schemaURI" type="xs:string" />
|
<xs:element name="schemaURI" type="xs:string" />
|
||||||
<xs:element name="encoding" type="xs:string" />
|
<xs:element name="encoding" type="xs:string" />
|
||||||
<xs:element name="isOpenChoice" type="xs:boolean" />
|
<xs:element name="isOpenChoice" type="xs:boolean" />
|
||||||
<xs:element name="isRequired" type="xs:boolean" />
|
<xs:element name="isRequired" type="xs:boolean" />
|
||||||
<xs:element name="defaultValue" type="xs:string" />
|
<xs:element name="defaultValue" type="xs:string" />
|
||||||
|
|
||||||
<xs:element name="creationDate" type="xs:dateTime" />
|
<xs:element name="creationDate" type="xs:dateTime" />
|
||||||
<xs:element name="lastModifiedBy" type="xs:dateTime" />
|
<xs:element name="lastModifiedBy" type="xs:dateTime" />
|
||||||
<xs:element name="baseType" type="cmis:baseObjectType" />
|
<xs:element name="baseType" type="cmis:baseObjectType" />
|
||||||
|
|
||||||
<xs:element name="canDelete" type="xs:boolean" />
|
<xs:element name="canDelete" type="xs:boolean" />
|
||||||
<xs:element name="canUpdateProperties" type="xs:boolean" />
|
<xs:element name="canUpdateProperties" type="xs:boolean" />
|
||||||
<xs:element name="canGetProperties" type="xs:boolean" />
|
<xs:element name="canGetProperties" type="xs:boolean" />
|
||||||
@@ -76,22 +67,23 @@
|
|||||||
<xs:element name="canRemovePolicy" type="xs:boolean" />
|
<xs:element name="canRemovePolicy" type="xs:boolean" />
|
||||||
<xs:element name="canGetChildren" type="xs:boolean" />
|
<xs:element name="canGetChildren" type="xs:boolean" />
|
||||||
<xs:element name="canGetDescendants" type="xs:boolean" />
|
<xs:element name="canGetDescendants" type="xs:boolean" />
|
||||||
|
<xs:element name="canGetRelationships" type="xs:boolean" />
|
||||||
<xs:element name="isControllable" type="xs:boolean" />
|
<xs:element name="isControllable" type="xs:boolean" />
|
||||||
<xs:element name="source" type="xs:string" />
|
<xs:element name="source" type="xs:string" />
|
||||||
<xs:element name="target" type="xs:string" />
|
<xs:element name="target" type="xs:string" />
|
||||||
<xs:element name="isImmutable" type="xs:boolean" />
|
<xs:element name="isImmutable" type="xs:boolean" />
|
||||||
<xs:element name="hasMoreItems" type="xs:boolean" />
|
<xs:element name="hasMoreItems" type="xs:boolean" />
|
||||||
<xs:element name="allowableActions" type="cmis:allowableActions" />
|
<xs:element name="allowableActions" type="cmis:allowableActionsType" />
|
||||||
<xs:element name="query" type="cmis:queryType" />
|
<xs:element name="query" type="cmis:queryType" />
|
||||||
<xs:element name="isOrderable" type="xs:boolean" />
|
<xs:element name="isOrderable" type="xs:boolean" />
|
||||||
<xs:element name="statement" type="xs:string" />
|
<xs:element name="statement" type="xs:string" />
|
||||||
<xs:element name="pageSize" type="xs:int" />
|
<xs:element name="pageSize" type="xs:integer" />
|
||||||
<xs:element name="skipCount" type="xs:int" />
|
<xs:element name="skipCount" type="xs:integer" />
|
||||||
<xs:element name="returnAllowableActions" type="xs:boolean" />
|
<xs:element name="returnAllowableActions" type="xs:boolean" />
|
||||||
<xs:element name="searchAllVersions" type="xs:boolean" />
|
<xs:element name="searchAllVersions" type="xs:boolean" />
|
||||||
|
<xs:element name="isInherited" type="xs:boolean" />
|
||||||
|
<xs:element name="propertyName" type="xs:string" />
|
||||||
|
<xs:element name="propertyId" type="xs:string" />
|
||||||
<xs:element name="propertyType">
|
<xs:element name="propertyType">
|
||||||
<xs:simpleType>
|
<xs:simpleType>
|
||||||
<xs:restriction base="xs:string">
|
<xs:restriction base="xs:string">
|
||||||
@@ -108,7 +100,15 @@
|
|||||||
</xs:restriction>
|
</xs:restriction>
|
||||||
</xs:simpleType>
|
</xs:simpleType>
|
||||||
</xs:element>
|
</xs:element>
|
||||||
|
<xs:element name="contentStreamAllowed">
|
||||||
|
<xs:simpleType>
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="notallowed" />
|
||||||
|
<xs:enumeration value="allowed" />
|
||||||
|
<xs:enumeration value="required" />
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
</xs:element>
|
||||||
<xs:element name="cardinality">
|
<xs:element name="cardinality">
|
||||||
<xs:simpleType>
|
<xs:simpleType>
|
||||||
<xs:restriction base="xs:string">
|
<xs:restriction base="xs:string">
|
||||||
@@ -117,18 +117,15 @@
|
|||||||
</xs:restriction>
|
</xs:restriction>
|
||||||
</xs:simpleType>
|
</xs:simpleType>
|
||||||
</xs:element>
|
</xs:element>
|
||||||
|
|
||||||
<xs:element name="choices">
|
<xs:element name="choices">
|
||||||
<xs:complexType>
|
<xs:complexType>
|
||||||
<xs:simpleContent>
|
<xs:simpleContent>
|
||||||
<xs:extension base="xs:string">
|
<xs:extension base="xs:string">
|
||||||
<xs:attribute name="index"
|
<xs:attribute name="index" type="xs:positiveInteger" />
|
||||||
type="xs:positiveInteger" />
|
|
||||||
</xs:extension>
|
</xs:extension>
|
||||||
</xs:simpleContent>
|
</xs:simpleContent>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</xs:element>
|
||||||
|
|
||||||
<xs:element name="updateability">
|
<xs:element name="updateability">
|
||||||
<xs:simpleType>
|
<xs:simpleType>
|
||||||
<xs:restriction base="xs:string">
|
<xs:restriction base="xs:string">
|
||||||
@@ -138,52 +135,38 @@
|
|||||||
</xs:restriction>
|
</xs:restriction>
|
||||||
</xs:simpleType>
|
</xs:simpleType>
|
||||||
</xs:element>
|
</xs:element>
|
||||||
|
|
||||||
<xs:complexType name="repositoryInfoType">
|
<xs:complexType name="repositoryInfoType">
|
||||||
<xs:sequence minOccurs="1">
|
<xs:sequence minOccurs="1">
|
||||||
<xs:element name="repositoryId" type="xs:string"
|
<xs:element name="repositoryId" type="xs:string"
|
||||||
minOccurs="1" />
|
minOccurs="1" />
|
||||||
|
|
||||||
<xs:element name="repositoryName" type="xs:string"
|
<xs:element name="repositoryName" type="xs:string"
|
||||||
minOccurs="1" />
|
minOccurs="1" />
|
||||||
|
|
||||||
<xs:element name="repositoryDescription" type="xs:string"
|
<xs:element name="repositoryDescription" type="xs:string"
|
||||||
minOccurs="1" />
|
minOccurs="1" />
|
||||||
|
|
||||||
<xs:element name="vendorName" type="xs:string" />
|
<xs:element name="vendorName" type="xs:string" />
|
||||||
<xs:element name="productName" type="xs:string" />
|
<xs:element name="productName" type="xs:string" />
|
||||||
<xs:element name="productVersion" type="xs:string" />
|
<xs:element name="productVersion" type="xs:string" />
|
||||||
<xs:element name="capabilities"
|
<xs:element name="capabilities" type="cmis:RepositoryInfoCapabilities" />
|
||||||
type="cmis:RepositoryInfoCapabilities" />
|
<xs:element name="cmisVersionsSupported" type="xs:string" />
|
||||||
|
<xs:element name="repositorySpecificInformation" type="xs:string"
|
||||||
<xs:element name="repositorySpecificInformation"
|
maxOccurs="1" minOccurs="0" />
|
||||||
type="xs:string" maxOccurs="1" minOccurs="0" />
|
<xs:any namespace="##other" processContents="lax" minOccurs="0"
|
||||||
|
maxOccurs="unbounded" />
|
||||||
<xs:any namespace="##other" processContents="skip"
|
|
||||||
minOccurs="0" maxOccurs="unbounded" />
|
|
||||||
|
|
||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
|
|
||||||
<xs:complexType name="RepositoryInfoCapabilities">
|
<xs:complexType name="RepositoryInfoCapabilities">
|
||||||
<xs:sequence>
|
<xs:sequence>
|
||||||
<xs:element name="capabilityMultifiling" type="xs:boolean"
|
<xs:element name="capabilityMultifiling" type="xs:boolean"
|
||||||
minOccurs="1" maxOccurs="1" />
|
minOccurs="1" maxOccurs="1" />
|
||||||
|
|
||||||
<xs:element name="capabilityUnfiling" type="xs:boolean"
|
<xs:element name="capabilityUnfiling" type="xs:boolean"
|
||||||
minOccurs="1" maxOccurs="1" />
|
minOccurs="1" maxOccurs="1" />
|
||||||
|
<xs:element name="capabilityVersionSpecificFiling" type="xs:boolean"
|
||||||
<xs:element name="capabilityVersionSpecificFiling"
|
minOccurs="1" maxOccurs="1" />
|
||||||
type="xs:boolean" minOccurs="1" maxOccurs="1" />
|
|
||||||
|
|
||||||
<xs:element name="capabilityPWCUpdateable" type="xs:boolean"
|
<xs:element name="capabilityPWCUpdateable" type="xs:boolean"
|
||||||
minOccurs="1" maxOccurs="1" />
|
minOccurs="1" maxOccurs="1" />
|
||||||
|
<xs:element name="capabilityAllVersionsSearchable" type="xs:boolean"
|
||||||
<xs:element name="capabilityAllVersionsSearchable"
|
minOccurs="1" maxOccurs="1" />
|
||||||
type="xs:boolean" minOccurs="1" maxOccurs="1" />
|
<xs:element name="capabilityJoin" minOccurs="1" maxOccurs="1">
|
||||||
|
|
||||||
<xs:element name="capabilityJoin" minOccurs="1"
|
|
||||||
maxOccurs="1">
|
|
||||||
<xs:simpleType>
|
<xs:simpleType>
|
||||||
<xs:restriction base="xs:string">
|
<xs:restriction base="xs:string">
|
||||||
<xs:enumeration value="noJoin" />
|
<xs:enumeration value="noJoin" />
|
||||||
@@ -201,9 +184,10 @@
|
|||||||
</xs:restriction>
|
</xs:restriction>
|
||||||
</xs:simpleType>
|
</xs:simpleType>
|
||||||
</xs:element>
|
</xs:element>
|
||||||
|
<xs:any namespace="##other" processContents="skip" minOccurs="0"
|
||||||
|
maxOccurs="unbounded" />
|
||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
|
|
||||||
<xs:simpleType name="baseObjectType">
|
<xs:simpleType name="baseObjectType">
|
||||||
<xs:restriction base="xs:string">
|
<xs:restriction base="xs:string">
|
||||||
<xs:enumeration value="document" />
|
<xs:enumeration value="document" />
|
||||||
@@ -212,7 +196,6 @@
|
|||||||
<xs:enumeration value="policy" />
|
<xs:enumeration value="policy" />
|
||||||
</xs:restriction>
|
</xs:restriction>
|
||||||
</xs:simpleType>
|
</xs:simpleType>
|
||||||
|
|
||||||
<xs:element name="contentStreamMimetype">
|
<xs:element name="contentStreamMimetype">
|
||||||
<xs:simpleType>
|
<xs:simpleType>
|
||||||
<xs:restriction base="xs:string">
|
<xs:restriction base="xs:string">
|
||||||
@@ -220,197 +203,140 @@
|
|||||||
</xs:restriction>
|
</xs:restriction>
|
||||||
</xs:simpleType>
|
</xs:simpleType>
|
||||||
</xs:element>
|
</xs:element>
|
||||||
|
|
||||||
<xs:complexType name="propertyDefinitionType">
|
<xs:complexType name="propertyDefinitionType">
|
||||||
<xs:sequence>
|
<xs:sequence>
|
||||||
|
<xs:element ref="cmis:propertyName" minOccurs="1"
|
||||||
|
maxOccurs="1" />
|
||||||
|
<xs:element ref="cmis:propertyId" minOccurs="1" maxOccurs="1" />
|
||||||
<xs:element ref="cmis:displayName" minOccurs="1"
|
<xs:element ref="cmis:displayName" minOccurs="1"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
|
||||||
<xs:element ref="cmis:description" minOccurs="0"
|
<xs:element ref="cmis:description" minOccurs="0"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
<xs:element ref="cmis:isInherited" minOccurs="0"
|
||||||
|
maxOccurs="1" />
|
||||||
<xs:element ref="cmis:propertyType" minOccurs="1"
|
<xs:element ref="cmis:propertyType" minOccurs="1"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
|
||||||
<xs:element ref="cmis:cardinality" minOccurs="1"
|
<xs:element ref="cmis:cardinality" minOccurs="1"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
<xs:element ref="cmis:maxLength" minOccurs="0" maxOccurs="1" />
|
||||||
<xs:element ref="cmis:maxLength" minOccurs="0"
|
<xs:element ref="cmis:schemaURI" minOccurs="0" maxOccurs="1" />
|
||||||
maxOccurs="1" />
|
|
||||||
|
|
||||||
<xs:element ref="cmis:schemaURI" minOccurs="0"
|
|
||||||
maxOccurs="1" />
|
|
||||||
|
|
||||||
<xs:element ref="cmis:encoding" minOccurs="0" maxOccurs="1" />
|
<xs:element ref="cmis:encoding" minOccurs="0" maxOccurs="1" />
|
||||||
|
<xs:element ref="cmis:choices" minOccurs="0" maxOccurs="unbounded" />
|
||||||
<xs:element ref="cmis:choices" minOccurs="0"
|
|
||||||
maxOccurs="unbounded" />
|
|
||||||
|
|
||||||
<xs:element ref="cmis:isOpenChoice" minOccurs="0"
|
<xs:element ref="cmis:isOpenChoice" minOccurs="0"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
<xs:element ref="cmis:isRequired" minOccurs="1" maxOccurs="1" />
|
||||||
<xs:element ref="cmis:isRequired" minOccurs="1"
|
|
||||||
maxOccurs="1" />
|
|
||||||
|
|
||||||
<xs:element ref="cmis:defaultValue" minOccurs="0"
|
<xs:element ref="cmis:defaultValue" minOccurs="0"
|
||||||
maxOccurs="unbounded" />
|
maxOccurs="unbounded" />
|
||||||
|
|
||||||
<xs:element ref="cmis:updateability" minOccurs="1"
|
<xs:element ref="cmis:updateability" minOccurs="1"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
|
||||||
<xs:element ref="cmis:isQueryable" minOccurs="1"
|
<xs:element ref="cmis:isQueryable" minOccurs="1"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
|
||||||
<xs:element ref="cmis:isOrderable" minOccurs="1"
|
<xs:element ref="cmis:isOrderable" minOccurs="1"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
<xs:any processContents="lax" namespace="##other" minOccurs="0"
|
||||||
|
maxOccurs="unbounded" />
|
||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
<xs:attribute ref="cmis:id" />
|
<xs:attribute ref="cmis:id" />
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
|
<xs:complexType name="allowableActionsType">
|
||||||
<xs:complexType name="allowableActions">
|
<xs:sequence>
|
||||||
<xs:all>
|
|
||||||
<xs:element ref="cmis:canDelete" minOccurs="0"
|
|
||||||
maxOccurs="1" />
|
|
||||||
|
|
||||||
<xs:element ref="cmis:parentId" minOccurs="0" maxOccurs="1" />
|
<xs:element ref="cmis:parentId" minOccurs="0" maxOccurs="1" />
|
||||||
|
<xs:element ref="cmis:parentUrl" minOccurs="0" maxOccurs="1" />
|
||||||
<xs:element ref="cmis:parentUrl" minOccurs="0"
|
<xs:element ref="cmis:canDelete" minOccurs="0" maxOccurs="1" />
|
||||||
maxOccurs="1" />
|
|
||||||
|
|
||||||
<xs:element ref="cmis:canUpdateProperties" minOccurs="0"
|
<xs:element ref="cmis:canUpdateProperties" minOccurs="0"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
|
||||||
<xs:element ref="cmis:canGetProperties" minOccurs="0"
|
<xs:element ref="cmis:canGetProperties" minOccurs="0"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
<xs:element ref="cmis:canGetRelationships" minOccurs="0"
|
||||||
|
maxOccurs="1" />
|
||||||
<xs:element ref="cmis:canGetParents" minOccurs="0"
|
<xs:element ref="cmis:canGetParents" minOccurs="0"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
|
||||||
<xs:element ref="cmis:canGetDescendants" minOccurs="0"
|
<xs:element ref="cmis:canGetDescendants" minOccurs="0"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
|
||||||
<xs:element ref="cmis:canMove" minOccurs="0" maxOccurs="1" />
|
<xs:element ref="cmis:canMove" minOccurs="0" maxOccurs="1" />
|
||||||
|
|
||||||
<xs:element ref="cmis:canDeleteVersion" minOccurs="0"
|
<xs:element ref="cmis:canDeleteVersion" minOccurs="0"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
|
||||||
<xs:element ref="cmis:canDeleteContent" minOccurs="0"
|
<xs:element ref="cmis:canDeleteContent" minOccurs="0"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
|
||||||
<xs:element ref="cmis:canCheckout" minOccurs="0"
|
<xs:element ref="cmis:canCheckout" minOccurs="0"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
|
||||||
<xs:element ref="cmis:canCancelCheckout" minOccurs="0"
|
<xs:element ref="cmis:canCancelCheckout" minOccurs="0"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
<xs:element ref="cmis:canCheckin" minOccurs="0" maxOccurs="1" />
|
||||||
<xs:element ref="cmis:canCheckin" minOccurs="0"
|
|
||||||
maxOccurs="1" />
|
|
||||||
|
|
||||||
<xs:element ref="cmis:canSetContent" minOccurs="0"
|
<xs:element ref="cmis:canSetContent" minOccurs="0"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
|
||||||
<xs:element ref="cmis:canGetAllVersions" minOccurs="0"
|
<xs:element ref="cmis:canGetAllVersions" minOccurs="0"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
|
||||||
<xs:element ref="cmis:canAddToFolder" minOccurs="0"
|
<xs:element ref="cmis:canAddToFolder" minOccurs="0"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
|
||||||
<xs:element ref="cmis:canRemoveFromFolder" minOccurs="0"
|
<xs:element ref="cmis:canRemoveFromFolder" minOccurs="0"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
|
||||||
<xs:element ref="cmis:canViewContent" minOccurs="0"
|
<xs:element ref="cmis:canViewContent" minOccurs="0"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
|
||||||
<xs:element ref="cmis:canAddPolicy" minOccurs="0"
|
<xs:element ref="cmis:canAddPolicy" minOccurs="0"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
|
||||||
<xs:element ref="cmis:canRemovePolicy" minOccurs="0"
|
<xs:element ref="cmis:canRemovePolicy" minOccurs="0"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
|
||||||
<xs:element ref="cmis:canGetChildren" minOccurs="0"
|
<xs:element ref="cmis:canGetChildren" minOccurs="0"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
|
||||||
</xs:all>
|
processContents="lax" />
|
||||||
</xs:complexType>
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
<xs:complexType name="queryType">
|
<xs:complexType name="queryType">
|
||||||
<xs:sequence>
|
<xs:sequence>
|
||||||
<xs:element ref="cmis:statement" minOccurs="1"
|
<xs:element ref="cmis:statement" minOccurs="1" maxOccurs="1" />
|
||||||
maxOccurs="1" />
|
<xs:element ref="cmis:searchAllVersions" minOccurs="0"
|
||||||
|
maxOccurs="1" />
|
||||||
<xs:element ref="cmis:searchAllVersions" minOccurs="0"
|
<xs:element ref="cmis:pageSize" minOccurs="0" maxOccurs="1" />
|
||||||
maxOccurs="1" />
|
<xs:element ref="cmis:skipCount" minOccurs="0" maxOccurs="1" />
|
||||||
|
<xs:element ref="cmis:returnAllowableActions" minOccurs="0"
|
||||||
<xs:element ref="cmis:pageSize" minOccurs="0" maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
|
||||||
<xs:element ref="cmis:skipCount" minOccurs="0"
|
processContents="lax" />
|
||||||
maxOccurs="1" />
|
|
||||||
|
|
||||||
<xs:element ref="cmis:returnAllowableActions" minOccurs="0"
|
|
||||||
maxOccurs="1" />
|
|
||||||
|
|
||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
|
|
||||||
<xs:complexType name="typeType">
|
<xs:complexType name="typeType">
|
||||||
<xs:sequence>
|
<xs:sequence>
|
||||||
<xs:element ref="cmis:objectId" minOccurs="1" maxOccurs="1" />
|
<xs:element ref="cmis:objectId" minOccurs="1" maxOccurs="1" />
|
||||||
|
|
||||||
<xs:element ref="cmis:baseType" minOccurs="1" maxOccurs="1" />
|
<xs:element ref="cmis:baseType" minOccurs="1" maxOccurs="1" />
|
||||||
|
|
||||||
<xs:element ref="cmis:lastModifiedBy" minOccurs="1"
|
<xs:element ref="cmis:lastModifiedBy" minOccurs="1"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
|
||||||
<xs:element ref="cmis:creationDate" minOccurs="1"
|
<xs:element ref="cmis:creationDate" minOccurs="1"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
<xs:element ref="cmis:queryName" minOccurs="1" maxOccurs="1" />
|
||||||
|
|
||||||
<xs:element ref="cmis:queryName" minOccurs="1"
|
|
||||||
maxOccurs="1" />
|
|
||||||
|
|
||||||
<xs:element ref="cmis:displayName" minOccurs="1"
|
<xs:element ref="cmis:displayName" minOccurs="1"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
|
||||||
<xs:element ref="cmis:baseTypeQueryName" minOccurs="1"
|
<xs:element ref="cmis:baseTypeQueryName" minOccurs="1"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
|
||||||
<xs:element ref="cmis:parentId" minOccurs="1" maxOccurs="1" />
|
<xs:element ref="cmis:parentId" minOccurs="1" maxOccurs="1" />
|
||||||
|
|
||||||
<xs:element ref="cmis:description" minOccurs="0"
|
<xs:element ref="cmis:description" minOccurs="0"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
|
||||||
<xs:element ref="cmis:isCreatable" minOccurs="1"
|
<xs:element ref="cmis:isCreatable" minOccurs="1"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
<xs:element ref="cmis:isFileable" minOccurs="1" maxOccurs="1" />
|
||||||
<xs:element ref="cmis:isVersionable" minOccurs="1"
|
|
||||||
maxOccurs="1" />
|
|
||||||
|
|
||||||
<xs:element ref="cmis:isQueryable" minOccurs="1"
|
<xs:element ref="cmis:isQueryable" minOccurs="1"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
|
||||||
<xs:element ref="cmis:isContentStreamAllowed" minOccurs="1"
|
|
||||||
maxOccurs="1" />
|
|
||||||
|
|
||||||
<xs:element ref="cmis:isControllable" minOccurs="1"
|
<xs:element ref="cmis:isControllable" minOccurs="1"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
<xs:element ref="cmis:isVersionable" minOccurs="1"
|
||||||
|
maxOccurs="1" />
|
||||||
|
<xs:element ref="cmis:contentStreamAllowed" minOccurs="1"
|
||||||
|
maxOccurs="1" />
|
||||||
<xs:element ref="cmis:AllowedSourceTypes" minOccurs="0"
|
<xs:element ref="cmis:AllowedSourceTypes" minOccurs="0"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
|
||||||
<xs:element ref="cmis:AllowedTargetTypes" minOccurs="0"
|
<xs:element ref="cmis:AllowedTargetTypes" minOccurs="0"
|
||||||
maxOccurs="1" />
|
maxOccurs="1" />
|
||||||
|
<xs:element ref="cmis:property" minOccurs="0" maxOccurs="unbounded" />
|
||||||
<xs:element ref="cmis:property" minOccurs="0"
|
<xs:element ref="cmis:type" minOccurs="0" maxOccurs="unbounded" />
|
||||||
maxOccurs="unbounded" />
|
<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
|
||||||
|
processContents="lax" />
|
||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
|
|
||||||
|
|
||||||
<!-- properties -->
|
<!-- properties -->
|
||||||
<xs:element name="properties" type="cmis:propertiesType" />
|
<xs:element name="properties" type="cmis:propertiesType" />
|
||||||
|
|
||||||
<xs:complexType name="propertiesType">
|
<xs:complexType name="propertiesType">
|
||||||
<xs:sequence>
|
<xs:sequence>
|
||||||
<xs:element ref="cmis:propertyBoolean" minOccurs="0"
|
<xs:element ref="cmis:propertyBoolean" minOccurs="0"
|
||||||
@@ -419,8 +345,7 @@
|
|||||||
maxOccurs="unbounded" />
|
maxOccurs="unbounded" />
|
||||||
<xs:element ref="cmis:propertyDecimal" minOccurs="0"
|
<xs:element ref="cmis:propertyDecimal" minOccurs="0"
|
||||||
maxOccurs="unbounded" />
|
maxOccurs="unbounded" />
|
||||||
<xs:element ref="cmis:propertyID" minOccurs="0"
|
<xs:element ref="cmis:propertyID" minOccurs="0" maxOccurs="unbounded" />
|
||||||
maxOccurs="unbounded" />
|
|
||||||
<xs:element ref="cmis:propertyInteger" minOccurs="0"
|
<xs:element ref="cmis:propertyInteger" minOccurs="0"
|
||||||
maxOccurs="unbounded" />
|
maxOccurs="unbounded" />
|
||||||
<xs:element ref="cmis:propertyString" minOccurs="0"
|
<xs:element ref="cmis:propertyString" minOccurs="0"
|
||||||
@@ -431,12 +356,10 @@
|
|||||||
maxOccurs="unbounded" />
|
maxOccurs="unbounded" />
|
||||||
<xs:element ref="cmis:propertyHTML" minOccurs="0"
|
<xs:element ref="cmis:propertyHTML" minOccurs="0"
|
||||||
maxOccurs="unbounded" />
|
maxOccurs="unbounded" />
|
||||||
<xs:any namespace="##other" processContents="lax"
|
<xs:any namespace="##other" processContents="lax" minOccurs="0"
|
||||||
minOccurs="0" maxOccurs="unbounded" />
|
maxOccurs="unbounded" />
|
||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
|
|
||||||
|
|
||||||
<xs:element name="propertyString">
|
<xs:element name="propertyString">
|
||||||
<xs:complexType>
|
<xs:complexType>
|
||||||
<xs:simpleContent>
|
<xs:simpleContent>
|
||||||
@@ -447,7 +370,6 @@
|
|||||||
</xs:simpleContent>
|
</xs:simpleContent>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</xs:element>
|
||||||
|
|
||||||
<xs:element name="propertyHTML">
|
<xs:element name="propertyHTML">
|
||||||
<xs:complexType>
|
<xs:complexType>
|
||||||
<xs:simpleContent>
|
<xs:simpleContent>
|
||||||
@@ -458,8 +380,6 @@
|
|||||||
</xs:simpleContent>
|
</xs:simpleContent>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</xs:element>
|
||||||
|
|
||||||
|
|
||||||
<xs:element name="propertyXML">
|
<xs:element name="propertyXML">
|
||||||
<xs:complexType>
|
<xs:complexType>
|
||||||
<xs:simpleContent>
|
<xs:simpleContent>
|
||||||
@@ -470,7 +390,6 @@
|
|||||||
</xs:simpleContent>
|
</xs:simpleContent>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</xs:element>
|
||||||
|
|
||||||
<xs:element name="propertyBoolean">
|
<xs:element name="propertyBoolean">
|
||||||
<xs:complexType>
|
<xs:complexType>
|
||||||
<xs:simpleContent>
|
<xs:simpleContent>
|
||||||
@@ -481,7 +400,6 @@
|
|||||||
</xs:simpleContent>
|
</xs:simpleContent>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</xs:element>
|
||||||
|
|
||||||
<xs:element name="propertyID">
|
<xs:element name="propertyID">
|
||||||
<xs:complexType>
|
<xs:complexType>
|
||||||
<xs:simpleContent>
|
<xs:simpleContent>
|
||||||
@@ -492,7 +410,6 @@
|
|||||||
</xs:simpleContent>
|
</xs:simpleContent>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</xs:element>
|
||||||
|
|
||||||
<xs:element name="propertyURI">
|
<xs:element name="propertyURI">
|
||||||
<xs:complexType>
|
<xs:complexType>
|
||||||
<xs:simpleContent>
|
<xs:simpleContent>
|
||||||
@@ -503,19 +420,16 @@
|
|||||||
</xs:simpleContent>
|
</xs:simpleContent>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</xs:element>
|
||||||
|
|
||||||
<xs:element name="propertyDecimal">
|
<xs:element name="propertyDecimal">
|
||||||
<xs:complexType>
|
<xs:complexType>
|
||||||
<xs:simpleContent>
|
<xs:simpleContent>
|
||||||
<xs:extension base="xs:float">
|
<xs:extension base="xs:decimal">
|
||||||
<xs:attribute ref="cmis:name" />
|
<xs:attribute ref="cmis:name" />
|
||||||
<xs:attribute ref="cmis:index" />
|
<xs:attribute ref="cmis:index" />
|
||||||
</xs:extension>
|
</xs:extension>
|
||||||
</xs:simpleContent>
|
</xs:simpleContent>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</xs:element>
|
||||||
|
|
||||||
|
|
||||||
<xs:element name="propertyDateTime">
|
<xs:element name="propertyDateTime">
|
||||||
<xs:complexType>
|
<xs:complexType>
|
||||||
<xs:simpleContent>
|
<xs:simpleContent>
|
||||||
@@ -526,18 +440,16 @@
|
|||||||
</xs:simpleContent>
|
</xs:simpleContent>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</xs:element>
|
||||||
|
|
||||||
<xs:element name="propertyInteger">
|
<xs:element name="propertyInteger">
|
||||||
<xs:complexType>
|
<xs:complexType>
|
||||||
<xs:simpleContent>
|
<xs:simpleContent>
|
||||||
<xs:extension base="xs:int">
|
<xs:extension base="xs:integer">
|
||||||
<xs:attribute ref="cmis:name" />
|
<xs:attribute ref="cmis:name" />
|
||||||
<xs:attribute ref="cmis:index" />
|
<xs:attribute ref="cmis:index" />
|
||||||
</xs:extension>
|
</xs:extension>
|
||||||
</xs:simpleContent>
|
</xs:simpleContent>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</xs:element>
|
||||||
|
|
||||||
<xs:attribute name="name" type="xs:string" />
|
<xs:attribute name="name" type="xs:string" />
|
||||||
</xs:schema>
|
</xs:schema>
|
||||||
<!-- EOF -->
|
<!-- EOF -->
|
@@ -5,13 +5,13 @@
|
|||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xsi:schemaLocation="http://www.w3.org/2005/Atom ATOM4CMIS.xsd http://www.cmis.org/2008/05 CMIS-REST.xsd ">
|
xsi:schemaLocation="http://www.w3.org/2005/Atom ATOM4CMIS.xsd http://www.cmis.org/2008/05 CMIS-REST.xsd ">
|
||||||
|
|
||||||
<!-- all -->
|
|
||||||
<cmis:canDelete>true</cmis:canDelete>
|
|
||||||
|
|
||||||
<!-- if not embedded in entry -->
|
<!-- if not embedded in entry -->
|
||||||
<cmis:parentId>cmis:parentId</cmis:parentId>
|
<cmis:parentId>cmis:parentId</cmis:parentId>
|
||||||
<cmis:parentUrl>http://tempuri.org</cmis:parentUrl>
|
<cmis:parentUrl>http://tempuri.org</cmis:parentUrl>
|
||||||
|
|
||||||
|
<!-- all -->
|
||||||
|
<cmis:canDelete>true</cmis:canDelete>
|
||||||
|
|
||||||
<!-- all -->
|
<!-- all -->
|
||||||
<cmis:canUpdateProperties>true</cmis:canUpdateProperties>
|
<cmis:canUpdateProperties>true</cmis:canUpdateProperties>
|
||||||
<cmis:canGetProperties>true</cmis:canGetProperties>
|
<cmis:canGetProperties>true</cmis:canGetProperties>
|
||||||
|
@@ -23,6 +23,7 @@
|
|||||||
<cmis:capabilityJoin>innerAndOuter</cmis:capabilityJoin>
|
<cmis:capabilityJoin>innerAndOuter</cmis:capabilityJoin>
|
||||||
<cmis:capabilityFullText>fulltextandstructured</cmis:capabilityFullText>
|
<cmis:capabilityFullText>fulltextandstructured</cmis:capabilityFullText>
|
||||||
</cmis:capabilities>
|
</cmis:capabilities>
|
||||||
|
<cmis:cmisVersionsSupported>0.43</cmis:cmisVersionsSupported>
|
||||||
<cmis:repositorySpecificInformation>Welcome to ACME 99</cmis:repositorySpecificInformation>
|
<cmis:repositorySpecificInformation>Welcome to ACME 99</cmis:repositorySpecificInformation>
|
||||||
</cmis:repositoryInfo>
|
</cmis:repositoryInfo>
|
||||||
<app:collection cmis:collectionType="unfiled" href="http://www.cmis.org/rep1/unfiled">
|
<app:collection cmis:collectionType="unfiled" href="http://www.cmis.org/rep1/unfiled">
|
||||||
|
@@ -13,17 +13,21 @@
|
|||||||
<cmis:baseTypeQueryName>document</cmis:baseTypeQueryName>
|
<cmis:baseTypeQueryName>document</cmis:baseTypeQueryName>
|
||||||
<cmis:parentId></cmis:parentId>
|
<cmis:parentId></cmis:parentId>
|
||||||
<cmis:description>The document type</cmis:description>
|
<cmis:description>The document type</cmis:description>
|
||||||
|
|
||||||
<cmis:isCreatable>true</cmis:isCreatable>
|
<cmis:isCreatable>true</cmis:isCreatable>
|
||||||
<cmis:isVersionable>true</cmis:isVersionable>
|
<cmis:isFileable>true</cmis:isFileable>
|
||||||
<cmis:isQueryable>true</cmis:isQueryable>
|
<cmis:isQueryable>true</cmis:isQueryable>
|
||||||
<cmis:isContentStreamAllowed>true</cmis:isContentStreamAllowed>
|
|
||||||
<cmis:isControllable>true</cmis:isControllable>
|
<cmis:isControllable>true</cmis:isControllable>
|
||||||
|
<cmis:isVersionable>true</cmis:isVersionable>
|
||||||
|
<cmis:contentStreamAllowed>allowed</cmis:contentStreamAllowed>
|
||||||
|
|
||||||
|
|
||||||
<!-- optional property definitions -->
|
<!-- optional property definitions -->
|
||||||
<cmis:property cmis:id="foo1">
|
<cmis:property cmis:id="foo1">
|
||||||
|
<cmis:propertyName>foo1</cmis:propertyName>
|
||||||
|
<cmis:propertyId>propIdForFoo1</cmis:propertyId>
|
||||||
<cmis:displayName>foo1</cmis:displayName>
|
<cmis:displayName>foo1</cmis:displayName>
|
||||||
<cmis:description>Description of foo1</cmis:description>
|
<cmis:description>Description of foo1</cmis:description>
|
||||||
|
<cmis:isInherited>false</cmis:isInherited>
|
||||||
<cmis:propertyType>String</cmis:propertyType>
|
<cmis:propertyType>String</cmis:propertyType>
|
||||||
<cmis:cardinality>Single</cmis:cardinality>
|
<cmis:cardinality>Single</cmis:cardinality>
|
||||||
<cmis:maxLength>64</cmis:maxLength>
|
<cmis:maxLength>64</cmis:maxLength>
|
||||||
|
Reference in New Issue
Block a user