Merge from SEAMIST3

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@10735 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
David Caruana
2008-09-04 11:25:34 +00:00
parent 385ea356c4
commit 40bb33b90e
95 changed files with 5392 additions and 2278 deletions

View File

@@ -0,0 +1,115 @@
/*
* Copyright (C) 2005-2007 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.List;
import org.alfresco.cmis.CMISService;
import org.alfresco.cmis.CMISTypesFilterEnum;
import org.alfresco.repo.template.TemplateNode;
import org.alfresco.repo.web.scripts.RepositoryImageResolver;
import org.alfresco.service.ServiceRegistry;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.TemplateImageResolver;
import freemarker.ext.beans.BeanModel;
import freemarker.template.TemplateMethodModelEx;
import freemarker.template.TemplateModelException;
import freemarker.template.TemplateScalarModel;
/**
* Custom FreeMarker Template language method.
* <p>
* Lists the (CMIS) children of a TemplateNode
* <p>
* Usage: cmischildren(TemplateNode node)
* cmischildren(TemplateNode node, String typesFilter)
*
* @author davidc
*/
public class CMISChildrenMethod implements TemplateMethodModelEx
{
private CMISService cmisService;
private ServiceRegistry serviceRegistry;
private TemplateImageResolver imageResolver;
/**
* Construct
*/
public CMISChildrenMethod(CMISService cmisService, ServiceRegistry serviceRegistry, RepositoryImageResolver imageResolver)
{
this.cmisService = cmisService;
this.serviceRegistry = serviceRegistry;
this.imageResolver = imageResolver.getImageResolver();
}
@SuppressWarnings("unchecked")
public Object exec(List args) throws TemplateModelException
{
TemplateNode[] children = null;
if (args.size() > 0)
{
Object arg0 = args.get(0);
if (arg0 instanceof BeanModel)
{
// extract node ref
Object wrapped = ((BeanModel)arg0).getWrappedObject();
if (wrapped != null)
{
if (wrapped instanceof TemplateNode)
{
NodeRef nodeRef = ((TemplateNode)wrapped).getNodeRef();
CMISTypesFilterEnum typesFilter = CMISTypesFilterEnum.ANY;
if (args.size() > 1)
{
// extract types filter, if specified
Object arg1 = args.get(1);
if (arg1 instanceof TemplateScalarModel)
{
String typesFilterStr = ((TemplateScalarModel)arg1).getAsString();
if (typesFilterStr != null && typesFilterStr.length() > 0)
{
typesFilter = (CMISTypesFilterEnum)CMISTypesFilterEnum.FACTORY.toEnum(typesFilterStr);
}
}
}
// query children
NodeRef[] childNodeRefs = cmisService.getChildren(nodeRef, typesFilter);
children = new TemplateNode[childNodeRefs.length];
for (int i = 0; i < childNodeRefs.length; i++)
{
children[i] = new TemplateNode(childNodeRefs[i], serviceRegistry, imageResolver);
}
}
}
}
}
return children;
}
}

View File

@@ -38,6 +38,7 @@ import org.alfresco.web.scripts.FormatReader;
import org.alfresco.web.scripts.WebScriptException;
import org.alfresco.web.scripts.WebScriptRequest;
import org.alfresco.web.scripts.WebScriptResponse;
import org.apache.abdera.ext.cmis.CMISConstants;
/**
@@ -61,7 +62,7 @@ public class CMISQueryReader implements FormatReader<String>
*/
public String getSourceMimetype()
{
return "application/cmisrequest+xml;type=query";
return CMISConstants.MIMETYPE_QUERY;
}
/* (non-Javadoc)

View File

@@ -27,16 +27,17 @@ package org.alfresco.repo.cmis.rest;
import java.util.Collection;
import java.util.Iterator;
import org.alfresco.cmis.CMISFullTextSearchEnum;
import org.alfresco.cmis.CMISJoinEnum;
import org.alfresco.cmis.CMISQueryEnum;
import org.alfresco.cmis.CMISService;
import org.alfresco.cmis.CMISService.TypesFilter;
import org.alfresco.cmis.CMISTypesFilterEnum;
import org.alfresco.cmis.dictionary.CMISDictionaryService;
import org.alfresco.cmis.dictionary.CMISTypeDefinition;
import org.alfresco.cmis.dictionary.CMISTypeId;
import org.alfresco.cmis.search.CMISQueryOptions;
import org.alfresco.cmis.search.CMISQueryService;
import org.alfresco.cmis.search.CMISResultSet;
import org.alfresco.cmis.search.FullTextSearchSupport;
import org.alfresco.cmis.search.JoinSupport;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.repo.jscript.BaseScopableProcessorExtension;
import org.alfresco.repo.jscript.ScriptNode;
@@ -56,8 +57,6 @@ import org.alfresco.service.cmr.repository.NodeRef;
*/
public class CMISScript extends BaseScopableProcessorExtension
{
private static final TypesFilter defaultTypesFilter = TypesFilter.Any;
private ServiceRegistry services;
private Repository repository;
private CMISService cmisService;
@@ -191,7 +190,7 @@ public class CMISScript extends BaseScopableProcessorExtension
*/
public String getDefaultTypesFilter()
{
return defaultTypesFilter.toString();
return CMISTypesFilterEnum.FACTORY.defaultLabel();
}
/**
@@ -202,19 +201,7 @@ public class CMISScript extends BaseScopableProcessorExtension
*/
public boolean isValidTypesFilter(String typesFilter)
{
try
{
TypesFilter.valueOf(typesFilter);
return true;
}
catch(IllegalArgumentException e)
{
return false;
}
catch(NullPointerException e)
{
return false;
}
return CMISTypesFilterEnum.FACTORY.validLabel(typesFilter);
}
/**
@@ -226,16 +213,9 @@ public class CMISScript extends BaseScopableProcessorExtension
* @param typesFilter types filter
* @return resolved types filter
*/
private TypesFilter resolveTypesFilter(String typesFilter)
private CMISTypesFilterEnum resolveTypesFilter(String typesFilter)
{
if (isValidTypesFilter(typesFilter))
{
return TypesFilter.valueOf(typesFilter);
}
else
{
return defaultTypesFilter;
}
return (CMISTypesFilterEnum)CMISTypesFilterEnum.FACTORY.toEnum(typesFilter);
}
/**
@@ -266,7 +246,7 @@ public class CMISScript extends BaseScopableProcessorExtension
*/
public PagedResults queryChildren(ScriptNode parent, String typesFilter, Page page)
{
TypesFilter filter = resolveTypesFilter(typesFilter);
CMISTypesFilterEnum filter = resolveTypesFilter(typesFilter);
NodeRef[] children = cmisService.getChildren(parent.getNodeRef(), filter);
Cursor cursor = paging.createCursor(children.length, page);
@@ -408,7 +388,17 @@ public class CMISScript extends BaseScopableProcessorExtension
//
// SQL Query
//
/**
* Can you query the private working copy of a document.
*
* @return
*/
public boolean getPwcSearchable()
{
return cmisQueryService.getPwcSearchable();
}
/**
* Can you query non-latest versions of a document.
*
@@ -420,13 +410,23 @@ public class CMISScript extends BaseScopableProcessorExtension
{
return cmisQueryService.getAllVersionsSearchable();
}
/**
* Get the query support level.
*
* @return
*/
public CMISQueryEnum getQuerySupport()
{
return cmisQueryService.getQuerySupport();
}
/**
* Get the join support level in queries.
*
* @return
*/
public JoinSupport getJoinSupport()
public CMISJoinEnum getJoinSupport()
{
return cmisQueryService.getJoinSupport();
}
@@ -436,7 +436,7 @@ public class CMISScript extends BaseScopableProcessorExtension
*
* @return
*/
public FullTextSearchSupport getFullTextSearchSupport()
public CMISFullTextSearchEnum getFullTextSearchSupport()
{
return cmisQueryService.getFullTextSearchSupport();
}

View File

@@ -31,6 +31,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import org.alfresco.util.Base64;
import org.alfresco.util.GUID;
import org.alfresco.web.scripts.Format;
import org.alfresco.web.scripts.TestWebScriptServer.DeleteRequest;
@@ -53,6 +54,7 @@ import org.apache.abdera.model.Feed;
import org.apache.abdera.model.Link;
import org.apache.abdera.model.Service;
import org.apache.abdera.model.Workspace;
import org.apache.abdera.util.Constants;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -73,6 +75,7 @@ public class CMISTest extends BaseCMISWebScriptTest
protected static String username = "admin";
protected static String password = "admin";
protected static boolean argsAsHeaders = false;
// Logger
private static final Log logger = LogFactory.getLog(CMISTest.class);
@@ -84,8 +87,7 @@ public class CMISTest extends BaseCMISWebScriptTest
private static Entry testsFolder = null;
private static Entry testRunFolder = null;
@Override
protected void setUp()
throws Exception
@@ -213,7 +215,7 @@ public class CMISTest extends BaseCMISWebScriptTest
Entry entry = abdera.parseEntry(new StringReader(xml), null);
assertNotNull(entry);
assertEquals(name, entry.getTitle());
assertEquals(name + " (summary)", entry.getSummary());
//assertEquals(name + " (summary)", entry.getSummary());
CMISProperties props = entry.getExtension(CMISConstants.PROPERTIES);
assertEquals("folder", props.getBaseType());
String testFolderHREF = (String)res.getHeader("Location");
@@ -232,13 +234,14 @@ public class CMISTest extends BaseCMISWebScriptTest
{
String createFile = loadString(atomEntryFile);
createFile = createFile.replace("${NAME}", name);
createFile = createFile.replace("${CONTENT}", Base64.encodeBytes(name.getBytes()));
Response res = sendRequest(new PostRequest(parent.toString(), createFile, Format.ATOMENTRY.mimetype()), 201, getAtomValidator());
assertNotNull(res);
String xml = res.getContentAsString();
Entry entry = abdera.parseEntry(new StringReader(xml), null);
assertNotNull(entry);
assertEquals(name, entry.getTitle());
assertEquals(name + " (summary)", entry.getSummary());
//assertEquals(name + " (summary)", entry.getSummary());
assertNotNull(entry.getContentSrc());
CMISProperties props = entry.getExtension(CMISConstants.PROPERTIES);
assertEquals("document", props.getBaseType());
@@ -338,7 +341,7 @@ public class CMISTest extends BaseCMISWebScriptTest
Entry document = createDocument(children.getSelfLink().getHref(), "testCreateDocument");
Response documentContentRes = sendRequest(new GetRequest(document.getContentSrc().toString()), 200);
String resContent = documentContentRes.getContentAsString();
assertEquals("test content " + document.getTitle(), resContent);
assertEquals(document.getTitle(), resContent);
Feed feedFolderAfter = getFeed(childrenLink.getHref());
int entriesAfter = feedFolderAfter.getEntries().size();
assertEquals(entriesBefore +1, entriesAfter);
@@ -361,26 +364,27 @@ public class CMISTest extends BaseCMISWebScriptTest
assertEquals("1", resContent);
}
public void testCreateDocumentBase64()
throws Exception
{
Entry testFolder = createTestFolder("testCreateDocumentBase64");
Link childrenLink = testFolder.getLink(CMISConstants.REL_CHILDREN);
assertNotNull(childrenLink);
Feed children = getFeed(childrenLink.getHref());
assertNotNull(children);
int entriesBefore = children.getEntries().size();
Entry document = createDocument(children.getSelfLink().getHref(), "testCreateDocument", "/cmis/rest/createdocumentBase64.atomentry.xml");
Response documentContentRes = sendRequest(new GetRequest(document.getContentSrc().toString()), 200);
String testContent = loadString("/cmis/rest/createdocumentBase64.txt");
String resContent = documentContentRes.getContentAsString();
assertEquals(testContent, resContent);
Feed feedFolderAfter = getFeed(childrenLink.getHref());
int entriesAfter = feedFolderAfter.getEntries().size();
assertEquals(entriesBefore +1, entriesAfter);
Entry entry = feedFolderAfter.getEntry(document.getId().toString());
assertNotNull(entry);
}
// TODO: Test creation of document via Atom Entry containing plain text (non Base64 encoded)
// public void testCreateDocumentBase64()
// throws Exception
// {
// Entry testFolder = createTestFolder("testCreateDocumentBase64");
// Link childrenLink = testFolder.getLink(CMISConstants.REL_CHILDREN);
// assertNotNull(childrenLink);
// Feed children = getFeed(childrenLink.getHref());
// assertNotNull(children);
// int entriesBefore = children.getEntries().size();
// Entry document = createDocument(children.getSelfLink().getHref(), "testCreateDocument", "/cmis/rest/createdocumentBase64.atomentry.xml");
// Response documentContentRes = sendRequest(new GetRequest(document.getContentSrc().toString()), 200);
// String testContent = loadString("/cmis/rest/createdocumentBase64.txt");
// String resContent = documentContentRes.getContentAsString();
// assertEquals(testContent, resContent);
// Feed feedFolderAfter = getFeed(childrenLink.getHref());
// int entriesAfter = feedFolderAfter.getEntries().size();
// assertEquals(entriesBefore +1, entriesAfter);
// Entry entry = feedFolderAfter.getEntry(document.getId().toString());
// assertNotNull(entry);
// }
public void testCreateFolder()
throws Exception
@@ -418,25 +422,25 @@ public class CMISTest extends BaseCMISWebScriptTest
Entry testDocumentFromGet = getEntry(testDocument.getSelfLink().getHref());
assertEquals(testDocument.getId(), testDocumentFromGet.getId());
assertEquals(testDocument.getTitle(), testDocumentFromGet.getTitle());
assertEquals(testDocument.getSummary(), testDocumentFromGet.getSummary());
//assertEquals(testDocument.getSummary(), testDocumentFromGet.getSummary());
// get something that doesn't exist
Response res = sendRequest(new GetRequest(testDocument.getSelfLink().getHref().toString() + GUID.generate()), 404);
assertNotNull(res);
}
public void testChildren()
public void testGetChildren()
throws Exception
{
// create multiple children
Entry testFolder = createTestFolder("testChildren");
Entry testFolder = createTestFolder("testGetChildren");
Link childrenLink = testFolder.getLink(CMISConstants.REL_CHILDREN);
assertNotNull(childrenLink);
Entry document1 = createDocument(childrenLink.getHref(), "testChildren1");
Entry document1 = createDocument(childrenLink.getHref(), "testGetChildren1");
assertNotNull(document1);
Entry document2 = createDocument(childrenLink.getHref(), "testChildren2");
Entry document2 = createDocument(childrenLink.getHref(), "testGetChildren2");
assertNotNull(document2);
Entry document3 = createDocument(childrenLink.getHref(), "testChildren3");
Entry document3 = createDocument(childrenLink.getHref(), "testGetChildren3");
assertNotNull(document3);
// checkout one of the children to ensure private working copy isn't included
@@ -459,17 +463,17 @@ public class CMISTest extends BaseCMISWebScriptTest
assertNull(children.getEntry(pwc.getId().toString()));
}
public void testChildrenPaging()
public void testGetChildrenPaging()
throws Exception
{
// create multiple children
Set<IRI> docIds = new HashSet<IRI>();
Entry testFolder = createTestFolder("testChildrenPaging");
Entry testFolder = createTestFolder("testGetChildrenPaging");
Link childrenLink = testFolder.getLink(CMISConstants.REL_CHILDREN);
assertNotNull(childrenLink);
for (int i = 0; i < 15; i++)
{
Entry document = createDocument(childrenLink.getHref(), "testChildrenPaging" + i);
Entry document = createDocument(childrenLink.getHref(), "testGetChildrenPaging" + i);
assertNotNull(document);
docIds.add(document.getId());
}
@@ -493,6 +497,10 @@ public class CMISTest extends BaseCMISWebScriptTest
// next page
Link nextLink = types.getLink("next");
if (nextCount < 4)
{
assertNotNull(nextLink);
}
childrenHREF = (nextLink != null) ? nextLink.getHref() : null;
args = null;
};
@@ -515,8 +523,9 @@ public class CMISTest extends BaseCMISWebScriptTest
// invalid type filter
Map<String, String> args = new HashMap<String, String>();
args.put("types", "Invalid");
Response invalidRes = sendRequest(new GetRequest(childrenLink.getHref().toString()).setArgs(args), 400);
assertNotNull(invalidRes);
// TODO: potential spec issue
// Response invalidRes = sendRequest(new GetRequest(childrenLink.getHref().toString()).setArgs(args), 400);
// assertNotNull(invalidRes);
// no filter
Feed noFilters = getFeed(childrenLink.getHref());
@@ -544,6 +553,92 @@ public class CMISTest extends BaseCMISWebScriptTest
assertNotNull(documents.getEntry(document.getId().toString()));
}
public void testGetChildrenPropertyFilter()
throws Exception
{
// create children
Entry testFolder = createTestFolder("testGetChildrenPropertyFilter");
Link childrenLink = testFolder.getLink(CMISConstants.REL_CHILDREN);
assertNotNull(childrenLink);
Entry document1 = createDocument(childrenLink.getHref(), "testGetChildrenPropertyFilter1");
assertNotNull(document1);
{
// get children with all properties
Feed children = getFeed(childrenLink.getHref());
for (Entry entry : children.getEntries())
{
CMISProperties props = entry.getExtension(CMISConstants.PROPERTIES);
assertNotNull(props.getObjectId());
assertNotNull(props.getObjectType());
}
}
{
// get children with object_id only
Map<String, String> args = new HashMap<String, String>();
args.put("filter", "OBJECT_ID");
Feed children = getFeed(childrenLink.getHref(), args);
for (Entry entry : children.getEntries())
{
CMISProperties props = entry.getExtension(CMISConstants.PROPERTIES);
assertNotNull(props.getObjectId());
assertNull(props.getObjectType());
}
}
}
public void testGetDescendants()
throws Exception
{
// create multiple nested children
Entry testFolder = createTestFolder("testGetDescendants");
Link childrenLink = testFolder.getLink(CMISConstants.REL_CHILDREN);
assertNotNull(childrenLink);
Entry document1 = createDocument(childrenLink.getHref(), "testGetDescendants1");
assertNotNull(document1);
Entry folder2 = createFolder(childrenLink.getHref(), "testGetDescendants2");
assertNotNull(folder2);
Link childrenLink2 = folder2.getLink(CMISConstants.REL_CHILDREN);
assertNotNull(childrenLink2);
Entry document3 = createDocument(childrenLink2.getHref(), "testGetDescendants3");
assertNotNull(document3);
{
// get descendants (depth = 1, equivalent to getChildren)
Map<String, String> args = new HashMap<String, String>();
args.put("depth", "1");
Link descendantsLink = testFolder.getLink(CMISConstants.REL_DESCENDANTS);
Feed descendants = getFeed(descendantsLink.getHref(), args);
assertNotNull(descendants);
assertEquals(2, descendants.getEntries().size());
assertNotNull(descendants.getEntry(document1.getId().toString()));
assertNotNull(descendants.getEntry(folder2.getId().toString()));
Entry getFolder2 = descendants.getEntry(folder2.getId().toString());
Entry getFolder2Child = getFolder2.getFirstChild(CMISConstants.NESTED_ENTRY);
assertNull(getFolder2Child);
}
{
// get nested children
Map<String, String> args = new HashMap<String, String>();
args.put("depth", "2");
Link descendantsLink = testFolder.getLink(CMISConstants.REL_DESCENDANTS);
Feed descendants = getFeed(descendantsLink.getHref(), args);
assertNotNull(descendants);
assertEquals(2, descendants.getEntries().size());
assertNotNull(descendants.getEntry(document1.getId().toString()));
assertNotNull(descendants.getEntry(folder2.getId().toString()));
Entry getFolder2 = descendants.getEntry(folder2.getId().toString());
List<Entry> getFolder2Children = getFolder2.getExtensions(CMISConstants.NESTED_ENTRY);
assertNotNull(getFolder2Children);
assertEquals(1, getFolder2Children.size());
assertEquals(document3.getId(), getFolder2Children.get(0).getId());
}
}
public void testGetParent()
throws Exception
{
@@ -561,6 +656,8 @@ public class CMISTest extends BaseCMISWebScriptTest
assertEquals(1, parent.getEntries().size());
assertEquals(testFolder.getId(), parent.getEntries().get(0).getId());
// TODO: compare identity using OBJECT_ID property, not atom:id
// ensure there are ancestors 'testParent', "test run folder", "tests folder" and "root folder"
Map<String, String> args = new HashMap<String, String>();
args.put("returnToRoot", "true");
@@ -574,7 +671,8 @@ public class CMISTest extends BaseCMISWebScriptTest
assertEquals(testsFolder.getId(), parentsToRoot.getEntries().get(2).getId());
assertNotNull(parentsToRoot.getEntries().get(2).getLink(CMISConstants.REL_PARENT));
Feed root = getFeed(getRootCollection(getWorkspace(getRepository())));
assertEquals(root.getId(), parentsToRoot.getEntries().get(3).getId());
Entry rootEntry = getEntry(root.getLink(CMISConstants.REL_SOURCE).getHref());
assertEquals(rootEntry.getId(), parentsToRoot.getEntries().get(3).getId());
assertNull(parentsToRoot.getEntries().get(3).getLink(CMISConstants.REL_PARENT));
}
@@ -602,13 +700,14 @@ public class CMISTest extends BaseCMISWebScriptTest
assertNotNull(parentsToRoot);
assertEquals(4, parentsToRoot.getEntries().size());
assertEquals(testFolder.getId(), parentsToRoot.getEntries().get(0).getId());
assertNotNull(parentsToRoot.getEntries().get(0).getLink(CMISConstants.REL_PARENT));
//assertNotNull(parentsToRoot.getEntries().get(0).getLink(CMISConstants.REL_PARENT));
assertEquals(testRunFolder.getId(), parentsToRoot.getEntries().get(1).getId());
assertNotNull(parentsToRoot.getEntries().get(1).getLink(CMISConstants.REL_PARENT));
//assertNotNull(parentsToRoot.getEntries().get(1).getLink(CMISConstants.REL_PARENT));
assertEquals(testsFolder.getId(), parentsToRoot.getEntries().get(2).getId());
assertNotNull(parentsToRoot.getEntries().get(2).getLink(CMISConstants.REL_PARENT));
//assertNotNull(parentsToRoot.getEntries().get(2).getLink(CMISConstants.REL_PARENT));
Feed root = getFeed(getRootCollection(getWorkspace(getRepository())));
assertEquals(root.getId(), parentsToRoot.getEntries().get(3).getId());
Entry rootEntry = getEntry(root.getLink(CMISConstants.REL_SOURCE).getHref());
assertEquals(rootEntry.getId(), parentsToRoot.getEntries().get(3).getId());
assertNull(parentsToRoot.getEntries().get(3).getLink(CMISConstants.REL_PARENT));
}
@@ -653,8 +752,15 @@ public class CMISTest extends BaseCMISWebScriptTest
// create document for update
Entry document = createDocument(childrenLink.getHref(), "testUpdate");
assertNotNull(document);
assertEquals("text/html", document.getContentMimeType().toString());
String mimetype = (document.getContentMimeType() != null) ? document.getContentMimeType().toString() : null;
if (mimetype != null)
{
assertEquals("text/html", mimetype);
}
// TODO: check for content update allowable action
// if update allowed, perform update, else update and check for appropriate error
// update
String updateFile = loadString("/cmis/rest/updatedocument.atomentry.xml");
String guid = GUID.generate();
@@ -667,6 +773,7 @@ public class CMISTest extends BaseCMISWebScriptTest
assertEquals(document.getId(), updated.getId());
assertEquals(document.getPublished(), updated.getPublished());
assertEquals("Updated Title " + guid, updated.getTitle());
// TODO: why is this testing for text/plain? it should be test/html
assertEquals("text/plain", updated.getContentMimeType().toString());
Response contentRes = sendRequest(new GetRequest(updated.getContentSrc().toString()), 200);
assertEquals("updated content " + guid, contentRes.getContentAsString());
@@ -1144,7 +1251,7 @@ public class CMISTest extends BaseCMISWebScriptTest
String query = "SELECT OBJECT_ID, OBJECT_TYPE_ID, NAME FROM DOCUMENT_OBJECT_TYPE " +
"WHERE IN_FOLDER('" + testFolderProps.getObjectId() + "') " +
"AND NAME = 'apple1' " +
"AND CONTAINS('test content')";
"AND CONTAINS('apple1')";
String queryReq = queryDoc.replace("${STATEMENT}", query);
queryReq = queryReq.replace("${PAGESIZE}", "5");

View File

@@ -40,7 +40,7 @@ import freemarker.template.TemplateModelException;
* <p>
* Retrieve the CMIS Type Id for an Alfresco node
* <p>
* Usage: cmistypeid(TemplaateNode node)
* Usage: cmistypeid(TemplateNode node)
* cmistypeid(QName nodeType)
*
* @author davidc

View File

@@ -1,91 +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 junit.framework.TestSuite;
import junit.textui.TestRunner;
/**
* CMIS API Test Harness
*
* @author davidc
*/
public class TestRemoteCMIS extends CMISTest
{
/**
* Execute Unit Tests as client to remote CMIS Server
*
* args[0] = serverUrl
* args[1] = username/password
* args[2] = [params=url|headers]
*
* @param args args
*/
public static void main(String[] args)
{
remote = true;
if (args.length > 0)
{
repositoryUrl = args[0];
}
if (args.length > 1)
{
String[] credentials = args[1].split("/");
username = credentials[0];
if (credentials.length > 1)
{
password = credentials[1];
}
}
String params = "both";
if (args.length > 2)
{
String[] paramSegment = args[2].split("=");
if (paramSegment[0].equalsIgnoreCase("params"))
{
params = paramSegment[1].toLowerCase();
}
}
// execute cmis tests with url arguments
if (params.equals("both") || params.equals("url"))
{
TestRunner.run(new TestSuite(TestRemoteCMIS.class));
}
// execute cmis tests with headers
if (params.equals("both") || params.equals("headers"))
{
argsAsHeaders = true;
TestRunner.run(new TestSuite(TestRemoteCMIS.class));
}
}
}

View File

@@ -22,7 +22,7 @@
* the FLOSS exception, and it is also available here:
* http://www.alfresco.com/legal/licensing"
*/
package org.alfresco.repo.cmis.rest;
package org.alfresco.repo.cmis.rest.test;
import java.io.IOException;
import java.io.InputStream;

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,259 @@
/*
* 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.test;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import junit.framework.TestResult;
import junit.framework.TestSuite;
import org.alfresco.repo.cmis.rest.test.CMISTest.CMISTestListener;
import org.alfresco.repo.web.scripts.BaseWebScriptTest.RemoteServer;
import org.alfresco.repo.web.scripts.BaseWebScriptTest.WebScriptTestListener;
import org.alfresco.util.CachingDateFormat;
/**
* CMIS Test Runner
*
* @author davidc
*/
public class CMISTestRunner
{
private String match = null;
private WebScriptTestListener listener = new CMISTestListener(System.out);
private boolean traceReqRes = false;
private String serviceUrl = null;
private String userpass = null;
private String arguments = "url";
private boolean validateResponse = true;
/**
* @param match test name to execute (* for wildcards)
*/
public void setMatch(String match)
{
this.match = match;
}
/**
* @param listener test listener
*/
public void setListener(WebScriptTestListener listener)
{
this.listener = listener;
}
/**
* @param traceReqRes true => trace requests / responses
*/
public void setTraceReqRes(boolean traceReqRes)
{
this.traceReqRes = traceReqRes;
}
/**
* @param serviceUrl cmis service document url
*/
public void setServiceUrl(String serviceUrl)
{
this.serviceUrl = serviceUrl;
}
/**
* @param userpass user name / password
*/
public void setUserPass(String userpass)
{
this.userpass = userpass;
}
/**
* @param arguments "url" => url arguments, "headers" => request headers, "both" => url & headers
*/
public void setArguments(String arguments)
{
this.arguments = arguments;
}
/**
* @param validateResponse true => test response against CMIS XSDs
*/
public void setValidateResponse(boolean validateResponse)
{
this.validateResponse = validateResponse;
}
/**
* Gets the names of CMIS tests
*
* @param match * for wildcard
* @return array of test names
*/
public String[] getTestNames(String match)
{
List<String> namesList = new ArrayList<String>();
TestSuite allSuite = new TestSuite(CMISTest.class);
for (int i = 0; i < allSuite.countTestCases(); i++)
{
CMISTest test = (CMISTest)allSuite.testAt(i);
if (match == null || match.equals("*") || test.getName().matches(match.replace("*", "[A-Za-z0-9]*")))
{
namesList.add(test.getName());
}
}
String[] names = new String[namesList.size()];
namesList.toArray(names);
return names;
}
/**
* Execute CMIS Tests
*/
public void execute()
{
RemoteServer server = null;
if (serviceUrl != null)
{
server = new RemoteServer();
if (userpass != null)
{
String[] credentials = userpass.split("/");
server.username = credentials[0];
if (credentials.length > 1)
{
server.password = credentials[1];
}
}
}
// dump test parameters
if (listener != null)
{
Calendar today = Calendar.getInstance();
SimpleDateFormat df = CachingDateFormat.getDateFormat("yyyy-MM-dd HH:mm:ss.SSS", true);
listener.addLog(null, "Test Started at " + df.format(today.getTime()));
listener.addLog(null, "Service URL: " + (serviceUrl == null ? "[not set]" : serviceUrl));
listener.addLog(null, "User: " + (userpass == null ? "[not set]" : userpass));
listener.addLog(null, "Args: " + (arguments == null ? "[not set]" : arguments));
listener.addLog(null, "Validate Responses: " + validateResponse);
listener.addLog(null, "Trace Requests/Responses: " + traceReqRes);
listener.addLog(null, "Tests: " + (match == null ? "*" : match));
listener.addLog(null, "");
}
// execute cmis tests with url arguments
if (arguments.equals("both") || arguments.equals("url"))
{
executeSuite(match, server, false);
}
// execute cmis tests with headers
if (arguments.equals("both") || arguments.equals("headers"))
{
executeSuite(match, server, true);
}
}
/**
* Execute suite of CMIS Tests
*
* @param match tests to execute (* for wildcard)
* @param server remote server
* @param argsAsHeaders arguments passed in Headers
*/
private void executeSuite(String match, RemoteServer server, boolean argsAsHeaders)
{
TestSuite allSuite = new TestSuite(CMISTest.class);
TestSuite suite = new TestSuite();
for (int i = 0; i < allSuite.countTestCases(); i++)
{
CMISTest test = (CMISTest)allSuite.testAt(i);
if (match == null || match.equals("*") || test.getName().matches(match.replace("*", "[A-Za-z0-9]*")))
{
if (listener != null)
{
test.setListener(listener);
test.setTraceReqRes(traceReqRes);
}
if (server != null)
{
test.setServiceUrl(serviceUrl);
if (server != null)
{
test.setRemoteServer(server);
}
}
test.setArgsAsHeaders(argsAsHeaders);
test.setValidateResponse(validateResponse);
suite.addTest(test);
}
}
TestResult result = new TestResult();
if (listener != null)
{
result.addListener(listener);
}
suite.run(result);
}
/**
* Execute CMIS Tests from command-line
*
* url={serviceUrl}
* user={userpass}
* args={"url"|"headers"|"both"}
*/
public static void main(String[] args)
{
CMISTestRunner runner = new CMISTestRunner();
for (String arg : args)
{
String[] argSegment = arg.split("=");
if (argSegment[0].equals("url"))
{
runner.setServiceUrl(argSegment[1]);
}
else if (argSegment[0].equals("user"))
{
runner.setUserPass(argSegment[1]);
}
else if (argSegment[0].equalsIgnoreCase("args"))
{
runner.setArguments(argSegment[1].toLowerCase());
}
}
// execute
runner.execute();
System.exit(0);
}
}

View File

@@ -0,0 +1,91 @@
/*
* Copyright (C) 2005-2007 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.test;
import java.io.IOException;
import java.io.PrintStream;
import org.alfresco.repo.cmis.rest.test.CMISTest.CMISTestListener;
import org.alfresco.repo.web.scripts.BaseWebScriptTest.WebScriptTestListener;
import org.alfresco.web.scripts.AbstractWebScript;
import org.alfresco.web.scripts.WebScriptRequest;
import org.alfresco.web.scripts.WebScriptResponse;
/**
* Execute CMIS Tests
*
* @author davidc
*/
public class CMISTestRunnerWebScript extends AbstractWebScript
{
/* (non-Javadoc)
* @see org.alfresco.web.scripts.WebScript#execute(org.alfresco.web.scripts.WebScriptRequest, org.alfresco.web.scripts.WebScriptResponse)
*/
public void execute(WebScriptRequest req, WebScriptResponse res)
throws IOException
{
// setup CMIS tests
PrintStream printStream = new PrintStream(res.getOutputStream());
WebScriptTestListener testListener = new CMISTestListener(printStream);
CMISTestRunner runner = new CMISTestRunner();
runner.setListener(testListener);
// process test parameters
String serviceUrl = req.getParameter("url");
if (serviceUrl != null && serviceUrl.length() > 0)
{
runner.setServiceUrl(serviceUrl);
}
String userpass = req.getParameter("user");
if (userpass != null && userpass.length() > 0)
{
runner.setUserPass(userpass);
}
String args = req.getParameter("args");
if (args != null && args.length() > 0)
{
runner.setArguments(args);
}
String validate = req.getParameter("validate");
if (validate != null && validate.length() > 0)
{
runner.setValidateResponse(Boolean.valueOf(validate));
}
String trace = req.getParameter("trace");
if (trace != null && trace.length() > 0)
{
runner.setTraceReqRes(Boolean.valueOf(trace));
}
String match = req.getParameter("tests");
if (match != null && match.length() > 0)
{
runner.setMatch(match);
}
// execute tests
runner.execute();
}
}

View File

@@ -22,7 +22,7 @@
* the FLOSS exception, and it is also available here:
* http://www.alfresco.com/legal/licensing"
*/
package org.alfresco.repo.cmis.rest;
package org.alfresco.repo.cmis.rest.test;

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:cmis="http://www.cmis.org/2008/05">
<title>Updated Title ${NAME}</title>
<content>updated content ${NAME}</content>
</entry>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:cmis="http://www.cmis.org/2008/05"/>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:cmis="http://www.cmis.org/2008/05">
<title>${NAME}</title>
<summary>${NAME} (summary)</summary>
<content type="text/html">${CONTENT}</content>
<cmis:object>
<cmis:properties>
<cmis:propertyString cmis:name="ObjectTypeId"><cmis:value>document</cmis:value></cmis:propertyString>
</cmis:properties>
</cmis:object>
</entry>

View File

@@ -0,0 +1,10 @@
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:cmis="http://www.cmis.org/2008/05" xmlns:app="http://www.w3.org/2007/app">
<title type="text">onesentence.txt</title>
<content type="text/plain">MQ==&#xd;</content>
<cmis:object>
<cmis:properties>
<cmis:propertyString cmis:name="ObjectTypeId"><cmis:value>document</cmis:value></cmis:propertyString>
<cmis:propertyString cmis:name="DocumentTitle"><cmis:value>onesentence.txt</cmis:value></cmis:propertyString>
</cmis:properties>
</cmis:object>
</entry>

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:cmis="http://www.cmis.org/2008/05">
<title>${NAME}</title>
<summary>${NAME} (summary)</summary>
<content type="text/plain">
VGhpcyBtZXRob2QgZm9sbG93cyB0aGUgQXRvbSBQdWJsaXNoaW5nIG1vZGVsIHdoZXJlIHRoZSBl
bnRyeSBkb2N1bWVudCwgYXRvbSBvciBjbWlzLCBpcyBwb3N0ZWQgdG8gdGhlIHJvb3Qgb3Igc3Bl
Y2lmaWMgZm9sZGVyIFVSSS4gIEZvciB1bmZpbGVkIGRvY3VtZW50cywgcG9zdCB0aGUgZG9jdW1l
bnQgdG8gdGhlIHVuZmlsZWQgY29sbGVjdGlvbi4gICBUaGUgZG9jdW1lbnQgd2lsbCBiZSBjcmVh
dGVkIGluIHRoZSBmb2xkZXIgcG9zdGVkLiBJZiB0aGUgZG9jdW1lbnQgaXMgcG9zdGVkIHRvIHRo
ZSByb290IGNvbGxlY3Rpb24gYW5kIGEgZm9sZGVyIHByb3BlcnR5IGlzIHNwZWNpZmllZCwgdGhl
biB0aGUgcmVwb3NpdG9yeSB3aWxsIGNyZWF0ZSB0aGUgZG9jdW1lbnQgaW4gdGhlIHNwZWNpZmll
ZCBmb2xkZXIuICBJZiB0aGUgY29udGVudCBzdHJlYW0gaXMgc3BlY2lmaWVkIG9uIGNyZWF0ZSwg
aXQgc2hvdWxkIGJlIGJhc2U2NCBlbmNvZGVkIGluIHRoZSBhdG9tIGVudHJ5Lg==
</content>
<cmis:object>
<cmis:properties>
<cmis:propertyString cmis:name="ObjectTypeId"><cmis:value>document</cmis:value></cmis:propertyString>
</cmis:properties>
</cmis:object>
</entry>

View File

@@ -0,0 +1 @@
This method follows the Atom Publishing model where the entry document, atom or cmis, is posted to the root or specific folder URI. For unfiled documents, post the document to the unfiled collection. The document will be created in the folder posted. If the document is posted to the root collection and a folder property is specified, then the repository will create the document in the specified folder. If the content stream is specified on create, it should be base64 encoded in the atom entry.

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:cmis="http://www.cmis.org/2008/05">
<title>${NAME}</title>
<summary>${NAME} (summary)</summary>
<cmis:object>
<cmis:properties>
<cmis:propertyString cmis:name="ObjectTypeId"><cmis:value>folder</cmis:value></cmis:propertyString>
</cmis:properties>
</cmis:object>
</entry>

View File

@@ -0,0 +1,4 @@
<cmis:query xmlns:cmis="http://www.cmis.org/2008/05" >
<cmis:statement><![CDATA[${STATEMENT}]]></cmis:statement>
<cmis:pageSize>${PAGESIZE}</cmis:pageSize>
</cmis:query>

View File

@@ -0,0 +1,4 @@
<cmis:query xmlns:cmis="http://www.cmis.org/2008/05" >
<cmis:statement><![CDATA[${STATEMENT}]]></cmis:statement>
<cmis:pageSize>${PAGESIZE}</cmis:pageSize>
</cmis:query>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:cmis="http://www.cmis.org/2008/05">
<title>Updated Title ${NAME}</title>
<content>updated content ${NAME}</content>
</entry>

View File

@@ -6,11 +6,12 @@
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" targetNamespace="http://www.w3.org/2007/app"
xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app"
xmlns:cmis="http://www.cmis.org/2008/05">
xmlns:cmis="http://www.cmis.org/2008/05"
version="0.5">
<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" />
schemaLocation="CMIS.xsd" />
<xs:element name="service" type="app:appServiceType"></xs:element>
<xs:complexType name="appServiceType">
<xs:sequence>
@@ -35,11 +36,29 @@
<xs:complexType name="appCollectionType">
<xs:sequence>
<xs:element ref="atom:title"></xs:element>
<xs:element name="accept" type="xs:string" minOccurs="0"
maxOccurs="unbounded" />
<xs:element name="categories" type="app:appCategoriesType"
minOccurs="0" maxOccurs="unbounded" />
<xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"
namespace="##other" />
</xs:sequence>
<xs:attribute ref="cmis:id"></xs:attribute>
<xs:attribute ref="cmis:collectionType"></xs:attribute>
<xs:attribute name="href" type="xs:anyURI"></xs:attribute>
</xs:complexType>
<xs:complexType name="appCategoriesType">
<xs:sequence>
<xs:element name="category" type="app:appCategoryType"
minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="fixed" type="xs:boolean" />
</xs:complexType>
<xs:complexType name="appCategoryType">
<xs:sequence>
</xs:sequence>
<xs:attribute name="scheme" type="xs:anyURI" />
<xs:attribute name="term" type="xs:string" />
<xs:attribute name="label" type="xs:string" />
</xs:complexType>
<xs:attribute name="href" type="xs:anyURI"></xs:attribute>
</xs:schema>
<!-- EOF -->

View File

@@ -1,24 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-*- rnc -*-
RELAX NG Compact Syntax Grammar for the
Atom Format Specification Version 11
-->
<!--
-*- rnc -*- RELAX NG Compact Syntax Grammar for the Atom Format
Specification Version 11
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
targetNamespace="http://www.w3.org/2005/Atom"
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:xml="http://www.w3.org/XML/1998/namespace"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
jaxb:extensionBindingPrefixes="xjc" jaxb:version="2.1">
elementFormDefault="qualified" targetNamespace="http://www.w3.org/2005/Atom"
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:xml="http://www.w3.org/XML/1998/namespace"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
jaxb:extensionBindingPrefixes="xjc" jaxb:version="2.1" version="0.5">
<xs:import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="http://www.w3.org/2001/xml.xsd" />
schemaLocation="xml.xsd" />
<xs:import namespace="http://www.cmis.org/2008/05"
schemaLocation="CMIS-REST.xsd" />
schemaLocation="CMIS.xsd" />
<!-- Common attributes -->
@@ -41,8 +35,7 @@
</xs:attributeGroup>
<xs:group name="atomXHTMLTextConstruct">
<xs:sequence>
<!-- xs:element ref="xhtml:div"/> -->
<xs:element name="xhtmldivhere" type="xs:string" />
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="http://www.w3.org/1999/xhtml" />
</xs:sequence>
</xs:group>
<xs:attributeGroup name="atomXHTMLTextConstruct">
@@ -71,10 +64,11 @@
<!-- Person Construct -->
<xs:complexType name="atomPersonConstruct">
<xs:sequence>
<xs:element ref="atom:name" minOccurs="0" maxOccurs="1"/>
<xs:element ref="atom:uri" minOccurs="0" maxOccurs="1"/>
<xs:element ref="atom:email" minOccurs="0" maxOccurs="1"/>
<xs:group ref="atom:extensionElement" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="atom:name" minOccurs="0" maxOccurs="1" />
<xs:element ref="atom:uri" minOccurs="0" maxOccurs="1" />
<xs:element ref="atom:email" minOccurs="0" maxOccurs="1" />
<xs:group ref="atom:extensionElement" minOccurs="0"
maxOccurs="unbounded" />
</xs:sequence>
<xs:attributeGroup ref="atom:atomCommonAttributes" />
</xs:complexType>
@@ -91,38 +85,27 @@
</xs:complexType>
<!-- atom:feed -->
<xs:element name="feed" type="atom:feedType"></xs:element>
<xs:complexType name="feedType">
<xs:sequence>
<xs:element ref="atom:author" minOccurs="0"
maxOccurs="unbounded" />
<xs:element ref="atom:category" minOccurs="0"
maxOccurs="unbounded" />
<xs:element ref="atom:author" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="atom:category" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="atom:contributor" minOccurs="0"
maxOccurs="1" />
<xs:element ref="atom:generator" minOccurs="0"
maxOccurs="unbounded" />
<xs:element ref="atom:icon" minOccurs="0"
maxOccurs="unbounded" />
<xs:element ref="atom:generator" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="atom:icon" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="atom:id" minOccurs="1" maxOccurs="1" />
<xs:element ref="atom:link" minOccurs="0"
maxOccurs="unbounded" />
<xs:element ref="atom:link" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="atom:logo" minOccurs="0" maxOccurs="1" />
<xs:element ref="atom:rights" minOccurs="0" maxOccurs="1" />
<xs:element ref="atom:subtitle" minOccurs="0" maxOccurs="1" />
<xs:element ref="atom:title" minOccurs="1" maxOccurs="1" />
<xs:element ref="atom:updated" minOccurs="1" maxOccurs="1" />
<xs:element minOccurs="0" maxOccurs="unbounded"
ref="atom:entry" />
<xs:element minOccurs="0" maxOccurs="unbounded" ref="atom:entry" />
<!-- Start Atom's extension here -->
<xs:element minOccurs="0" maxOccurs="unbounded"
ref="cmis:type" />
<xs:element ref="cmis:hasMoreItems" minOccurs="1"
maxOccurs="1" />
<!-- original atom extension element -->
<xs:group ref="atom:extensionElement" />
</xs:sequence>
@@ -130,55 +113,54 @@
</xs:complexType>
<!-- atom:entry -->
<xs:element name="entry" type="atom:entryType">
</xs:element>
<xs:complexType name="entryType">
<xs:sequence>
<xs:sequence>
<xs:element ref="atom:author" minOccurs="0"
maxOccurs="unbounded" />
<xs:element ref="atom:category" minOccurs="0"
maxOccurs="unbounded" />
<xs:element ref="atom:content" minOccurs="0"
maxOccurs="1" />
<xs:element ref="atom:author" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="atom:category" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="atom:content" minOccurs="0" maxOccurs="1" />
<xs:element ref="atom:contributor" minOccurs="0"
maxOccurs="1" />
<xs:element ref="atom:id" minOccurs="1" maxOccurs="1" />
<xs:element ref="atom:link" minOccurs="0"
maxOccurs="unbounded" />
<xs:element ref="atom:published" minOccurs="0"
maxOccurs="1" />
<xs:element ref="atom:rights" minOccurs="0"
maxOccurs="1" />
<xs:element ref="atom:source" minOccurs="0"
maxOccurs="1" />
<xs:element ref="atom:summary" minOccurs="0"
maxOccurs="1" />
<xs:element ref="atom:link" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="atom:published" minOccurs="0" maxOccurs="1" />
<xs:element ref="atom:rights" minOccurs="0" maxOccurs="1" />
<xs:element ref="atom:source" minOccurs="0" maxOccurs="1" />
<xs:element ref="atom:summary" minOccurs="0" maxOccurs="1" />
<xs:element ref="atom:title" minOccurs="1" maxOccurs="1" />
<xs:element ref="atom:updated" minOccurs="1" maxOccurs="1" />
<xs:element ref="atom:title" minOccurs="1"
maxOccurs="1" />
<xs:element ref="atom:updated" minOccurs="1"
maxOccurs="1" />
<!-- CMIS type, optional if not CMIS -->
<xs:choice minOccurs="0" maxOccurs="1">
<xs:choice minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<jaxb:property name="type" />
</xs:appinfo>
</xs:annotation>
<xs:element ref="cmis:documentType" />
<xs:element ref="cmis:folderType" />
<xs:element ref="cmis:policyType" />
<xs:element ref="cmis:relationshipType" />
</xs:choice>
<!-- CMIS AllowableActions, optional for CMIS -->
<xs:element ref="cmis:allowableActions" minOccurs="0" maxOccurs="1" />
<!-- CMIS Properties, optional if not CMIS -->
<xs:element ref="cmis:properties" minOccurs="1" maxOccurs="1" />
<!-- This is necessary for nested entries such as descendants -->
<xs:element ref="atom:entry" minOccurs="0" maxOccurs="unbounded" />
<!-- Normal ATOM extension element -->
<!-- CMIS object, optional if not CMIS -->
<xs:element ref="cmis:object" minOccurs="0" maxOccurs="1" />
</xs:choice>
<!-- This is necessary for nested entries such as descendants -->
<xs:element ref="atom:entry" minOccurs="0" maxOccurs="unbounded" />
<!-- syntactic sugar -->
<xs:element ref="cmis:terminator" minOccurs="1"
maxOccurs="1" />
<!-- Normal ATOM extension element -->
<xs:group ref="atom:extensionElement" />
</xs:sequence>
</xs:sequence>
<xs:attributeGroup ref="atom:atomCommonAttributes" />
</xs:complexType>
@@ -197,8 +179,7 @@
</xs:attributeGroup>
<xs:group name="atomInlineOtherConstruct">
<xs:sequence>
<xs:group minOccurs="0" maxOccurs="unbounded"
ref="atom:anyElement" />
<xs:group minOccurs="0" maxOccurs="unbounded" ref="atom:anyElement" />
</xs:sequence>
</xs:group>
<xs:attributeGroup name="atomInlineOtherConstruct">
@@ -233,8 +214,7 @@
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:union
memberTypes="atom:atomMediaType">
<xs:union memberTypes="atom:atomMediaType">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="xhtml" />
@@ -302,6 +282,7 @@
element.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="atom:undefinedContent">
@@ -309,10 +290,10 @@
<xs:attribute name="href" use="required" />
<xs:attribute name="rel"></xs:attribute>
<xs:attribute name="type" type="atom:atomMediaType" />
<xs:attribute name="hreflang"
type="atom:atomLanguageTag" />
<xs:attribute name="hreflang" type="atom:atomLanguageTag" />
<xs:attribute name="title" />
<xs:attribute name="length" />
<xs:attribute ref="cmis:id" use="optional" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
@@ -397,8 +378,8 @@
</xs:restriction>
</xs:simpleType>
<!--
Unconstrained; it's not entirely clear how IRI fit into
xsd:anyURI so let's not try to constrain it here
Unconstrained; it's not entirely clear how IRI fit into xsd:anyURI so
let's not try to constrain it here
-->
<!-- Whatever an email address is, it contains at least one @ -->
<xs:simpleType name="atomEmailAddress">
@@ -409,16 +390,16 @@
<!-- Simple Extension -->
<xs:group name="extensionElement">
<xs:sequence>
<xs:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded">
<xs:any namespace="##other" processContents="lax" minOccurs="0"
maxOccurs="unbounded">
<xs:annotation>
<xs:appinfo>
<jaxb:property name='anyOther' />
</xs:appinfo>
</xs:annotation>
</xs:any>
<xs:any namespace="##local" processContents="lax"
minOccurs="0" maxOccurs="unbounded">
<xs:any namespace="##local" processContents="lax" minOccurs="0"
maxOccurs="unbounded">
<xs:annotation>
<xs:appinfo>
<jaxb:property name='anyLocal' />
@@ -427,13 +408,11 @@
</xs:any>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="undefinedAttribute">
<xs:anyAttribute namespace="##other" processContents="lax" />
</xs:attributeGroup>
<xs:complexType name="undefinedContent" mixed="true">
<xs:group minOccurs="0" maxOccurs="unbounded"
ref="atom:anyForeignElement" />
<xs:group minOccurs="0" maxOccurs="unbounded" ref="atom:anyForeignElement" />
</xs:complexType>
<xs:group name="anyElement">
<xs:sequence>
@@ -453,6 +432,5 @@
processContents="lax" />
</xs:sequence>
</xs:group>
</xs:schema>
<!-- EOF -->
<!-- EOF -->

View File

@@ -1,455 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
-*- rnc -*- RELAX NG Compact Syntax Grammar for the Atom Format
Specification Version 11
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" targetNamespace="http://www.cmis.org/2008/05"
xmlns:atom="http://www.w3.org/2005/Atom" xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:cmis="http://www.cmis.org/2008/05">
<xs:import namespace="http://www.w3.org/XML/1998/namespace" />
<xs:attribute name="id" type="xs:string" />
<xs:attribute name="index" type="xs:integer" />
<xs:attribute name="collectionType">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="root" />
<xs:enumeration value="unfiled" />
<xs:enumeration value="checkedout" />
<xs:enumeration value="types" />
<xs:enumeration value="query" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="repositoryRelationship" type="xs:string" />
<xs:element name="repositoryInfo" type="cmis:repositoryInfoType" />
<xs:element name="property" type="cmis:propertyDefinitionType" />
<xs:element name="parentId" type="xs:string" />
<xs:element name="displayName" type="xs:string" />
<xs:element name="isVersionable" type="xs:boolean" />
<xs:element name="description" type="xs:string" />
<xs:element name="isQueryable" 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="baseTypeQueryName" type="xs:string" />
<xs:element name="AllowedSourceTypes" type="xs:string" />
<xs:element name="AllowedTargetTypes" type="xs:string" />
<xs:element name="constraints" type="xs:string" />
<xs:element name="objectId" type="xs:string" />
<xs:element name="type" type="cmis:typeType" />
<xs:element name="parentUrl" type="xs:anyURI" />
<xs:element name="maxLength" type="xs:integer" />
<xs:element name="schemaURI" type="xs:string" />
<xs:element name="encoding" type="xs:string" />
<xs:element name="isOpenChoice" type="xs:boolean" />
<xs:element name="isRequired" type="xs:boolean" />
<xs:element name="defaultValue" type="xs:string" />
<xs:element name="creationDate" type="xs:dateTime" />
<xs:element name="lastModifiedBy" type="xs:dateTime" />
<xs:element name="baseType" type="cmis:baseObjectType" />
<xs:element name="canDelete" type="xs:boolean" />
<xs:element name="canUpdateProperties" type="xs:boolean" />
<xs:element name="canGetProperties" type="xs:boolean" />
<xs:element name="canGetParents" type="xs:boolean" />
<xs:element name="canMove" type="xs:boolean" />
<xs:element name="canDeleteVersion" type="xs:boolean" />
<xs:element name="canDeleteContent" type="xs:boolean" />
<xs:element name="canCheckout" type="xs:boolean" />
<xs:element name="canCancelCheckout" type="xs:boolean" />
<xs:element name="canCheckin" type="xs:boolean" />
<xs:element name="canSetContent" type="xs:boolean" />
<xs:element name="canGetAllVersions" type="xs:boolean" />
<xs:element name="canAddToFolder" type="xs:boolean" />
<xs:element name="canRemoveFromFolder" type="xs:boolean" />
<xs:element name="canViewContent" type="xs:boolean" />
<xs:element name="canAddPolicy" type="xs:boolean" />
<xs:element name="canRemovePolicy" type="xs:boolean" />
<xs:element name="canGetChildren" 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="source" type="xs:string" />
<xs:element name="target" type="xs:string" />
<xs:element name="isImmutable" type="xs:boolean" />
<xs:element name="hasMoreItems" type="xs:boolean" />
<xs:element name="allowableActions" type="cmis:allowableActionsType" />
<xs:element name="query" type="cmis:queryType" />
<xs:element name="isOrderable" type="xs:boolean" />
<xs:element name="statement" type="xs:string" />
<xs:element name="pageSize" type="xs:integer" />
<xs:element name="skipCount" type="xs:integer" />
<xs:element name="returnAllowableActions" 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:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="String" />
<xs:enumeration value="Decimal" />
<xs:enumeration value="Integer" />
<xs:enumeration value="Boolean" />
<xs:enumeration value="DateTime" />
<xs:enumeration value="URI" />
<xs:enumeration value="HTML" />
<xs:enumeration value="XML" />
<xs:enumeration value="ID" />
<xs:enumeration value="TypeID" />
</xs:restriction>
</xs:simpleType>
</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:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Single" />
<xs:enumeration value="Multi" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="choices">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="index" type="xs:positiveInteger" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="updateability">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="ro" />
<xs:enumeration value="rw" />
<xs:enumeration value="checkedout" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:complexType name="repositoryInfoType">
<xs:sequence minOccurs="1">
<xs:element name="repositoryId" type="xs:string"
minOccurs="1" />
<xs:element name="repositoryName" type="xs:string"
minOccurs="1" />
<xs:element name="repositoryDescription" type="xs:string"
minOccurs="1" />
<xs:element name="vendorName" type="xs:string" />
<xs:element name="productName" type="xs:string" />
<xs:element name="productVersion" type="xs:string" />
<xs:element name="capabilities" type="cmis:RepositoryInfoCapabilities" />
<xs:element name="cmisVersionsSupported" type="xs:string" />
<xs:element name="repositorySpecificInformation" type="xs:string"
maxOccurs="1" minOccurs="0" />
<xs:any namespace="##other" processContents="lax" minOccurs="0"
maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="RepositoryInfoCapabilities">
<xs:sequence>
<xs:element name="capabilityMultifiling" type="xs:boolean"
minOccurs="1" maxOccurs="1" />
<xs:element name="capabilityUnfiling" type="xs:boolean"
minOccurs="1" maxOccurs="1" />
<xs:element name="capabilityVersionSpecificFiling" type="xs:boolean"
minOccurs="1" maxOccurs="1" />
<xs:element name="capabilityPWCUpdateable" type="xs:boolean"
minOccurs="1" maxOccurs="1" />
<xs:element name="capabilityAllVersionsSearchable" type="xs:boolean"
minOccurs="1" maxOccurs="1" />
<xs:element name="capabilityJoin" minOccurs="1" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="noJoin" />
<xs:enumeration value="innerOnly" />
<xs:enumeration value="innerAndOuter" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="capabilityFullText">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="none" />
<xs:enumeration value="fulltextonly" />
<xs:enumeration value="fulltextandstructured" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:any namespace="##other" processContents="skip" minOccurs="0"
maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:simpleType name="baseObjectType">
<xs:restriction base="xs:string">
<xs:enumeration value="document" />
<xs:enumeration value="folder" />
<xs:enumeration value="relationship" />
<xs:enumeration value="policy" />
</xs:restriction>
</xs:simpleType>
<xs:element name="contentStreamMimetype">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value=".*/.*" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:complexType name="propertyDefinitionType">
<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"
maxOccurs="1" />
<xs:element ref="cmis:description" minOccurs="0"
maxOccurs="1" />
<xs:element ref="cmis:isInherited" minOccurs="0"
maxOccurs="1" />
<xs:element ref="cmis:propertyType" minOccurs="1"
maxOccurs="1" />
<xs:element ref="cmis:cardinality" minOccurs="1"
maxOccurs="1" />
<xs:element ref="cmis:maxLength" minOccurs="0" maxOccurs="1" />
<xs:element ref="cmis:schemaURI" 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:isOpenChoice" minOccurs="0"
maxOccurs="1" />
<xs:element ref="cmis:isRequired" minOccurs="1" maxOccurs="1" />
<xs:element ref="cmis:defaultValue" minOccurs="0"
maxOccurs="unbounded" />
<xs:element ref="cmis:updateability" minOccurs="1"
maxOccurs="1" />
<xs:element ref="cmis:isQueryable" minOccurs="1"
maxOccurs="1" />
<xs:element ref="cmis:isOrderable" minOccurs="1"
maxOccurs="1" />
<xs:any processContents="lax" namespace="##other" minOccurs="0"
maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute ref="cmis:id" />
</xs:complexType>
<xs:complexType name="allowableActionsType">
<xs:sequence>
<xs:element ref="cmis:parentId" minOccurs="0" maxOccurs="1" />
<xs:element ref="cmis:parentUrl" minOccurs="0" maxOccurs="1" />
<xs:element ref="cmis:canDelete" minOccurs="0" maxOccurs="1" />
<xs:element ref="cmis:canUpdateProperties" minOccurs="0"
maxOccurs="1" />
<xs:element ref="cmis:canGetProperties" minOccurs="0"
maxOccurs="1" />
<xs:element ref="cmis:canGetRelationships" minOccurs="0"
maxOccurs="1" />
<xs:element ref="cmis:canGetParents" minOccurs="0"
maxOccurs="1" />
<xs:element ref="cmis:canGetDescendants" minOccurs="0"
maxOccurs="1" />
<xs:element ref="cmis:canMove" minOccurs="0" maxOccurs="1" />
<xs:element ref="cmis:canDeleteVersion" minOccurs="0"
maxOccurs="1" />
<xs:element ref="cmis:canDeleteContent" minOccurs="0"
maxOccurs="1" />
<xs:element ref="cmis:canCheckout" minOccurs="0"
maxOccurs="1" />
<xs:element ref="cmis:canCancelCheckout" minOccurs="0"
maxOccurs="1" />
<xs:element ref="cmis:canCheckin" minOccurs="0" maxOccurs="1" />
<xs:element ref="cmis:canSetContent" minOccurs="0"
maxOccurs="1" />
<xs:element ref="cmis:canGetAllVersions" minOccurs="0"
maxOccurs="1" />
<xs:element ref="cmis:canAddToFolder" minOccurs="0"
maxOccurs="1" />
<xs:element ref="cmis:canRemoveFromFolder" minOccurs="0"
maxOccurs="1" />
<xs:element ref="cmis:canViewContent" minOccurs="0"
maxOccurs="1" />
<xs:element ref="cmis:canAddPolicy" minOccurs="0"
maxOccurs="1" />
<xs:element ref="cmis:canRemovePolicy" minOccurs="0"
maxOccurs="1" />
<xs:element ref="cmis:canGetChildren" minOccurs="0"
maxOccurs="1" />
<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="queryType">
<xs:sequence>
<xs:element ref="cmis:statement" minOccurs="1" maxOccurs="1" />
<xs:element ref="cmis:searchAllVersions" minOccurs="0"
maxOccurs="1" />
<xs:element ref="cmis:pageSize" minOccurs="0" maxOccurs="1" />
<xs:element ref="cmis:skipCount" minOccurs="0" maxOccurs="1" />
<xs:element ref="cmis:returnAllowableActions" minOccurs="0"
maxOccurs="1" />
<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
processContents="lax" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="typeType">
<xs:sequence>
<xs:element ref="cmis:objectId" minOccurs="1" maxOccurs="1" />
<xs:element ref="cmis:baseType" minOccurs="1" maxOccurs="1" />
<xs:element ref="cmis:lastModifiedBy" minOccurs="1"
maxOccurs="1" />
<xs:element ref="cmis:creationDate" minOccurs="1"
maxOccurs="1" />
<xs:element ref="cmis:queryName" minOccurs="1" maxOccurs="1" />
<xs:element ref="cmis:displayName" minOccurs="1"
maxOccurs="1" />
<xs:element ref="cmis:baseTypeQueryName" minOccurs="1"
maxOccurs="1" />
<xs:element ref="cmis:parentId" minOccurs="1" maxOccurs="1" />
<xs:element ref="cmis:description" minOccurs="0"
maxOccurs="1" />
<xs:element ref="cmis:isCreatable" minOccurs="1"
maxOccurs="1" />
<xs:element ref="cmis:isFileable" minOccurs="1" maxOccurs="1" />
<xs:element ref="cmis:isQueryable" minOccurs="1"
maxOccurs="1" />
<xs:element ref="cmis:isControllable" minOccurs="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"
maxOccurs="1" />
<xs:element ref="cmis:AllowedTargetTypes" minOccurs="0"
maxOccurs="1" />
<xs:element ref="cmis:property" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="cmis:type" minOccurs="0" maxOccurs="unbounded" />
<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
processContents="lax" />
</xs:sequence>
</xs:complexType>
<!-- properties -->
<xs:element name="properties" type="cmis:propertiesType" />
<xs:complexType name="propertiesType">
<xs:sequence>
<xs:element ref="cmis:propertyBoolean" minOccurs="0"
maxOccurs="unbounded" />
<xs:element ref="cmis:propertyDateTime" minOccurs="0"
maxOccurs="unbounded" />
<xs:element ref="cmis:propertyDecimal" minOccurs="0"
maxOccurs="unbounded" />
<xs:element ref="cmis:propertyID" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="cmis:propertyInteger" minOccurs="0"
maxOccurs="unbounded" />
<xs:element ref="cmis:propertyString" minOccurs="0"
maxOccurs="unbounded" />
<xs:element ref="cmis:propertyURI" minOccurs="0"
maxOccurs="unbounded" />
<xs:element ref="cmis:propertyXML" minOccurs="0"
maxOccurs="unbounded" />
<xs:element ref="cmis:propertyHTML" minOccurs="0"
maxOccurs="unbounded" />
<xs:any namespace="##other" processContents="lax" minOccurs="0"
maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:element name="propertyString">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute ref="cmis:name" />
<xs:attribute ref="cmis:index" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="propertyHTML">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute ref="cmis:name" />
<xs:attribute ref="cmis:index" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="propertyXML">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute ref="cmis:name" />
<xs:attribute ref="cmis:index" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="propertyBoolean">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:boolean">
<xs:attribute ref="cmis:name" />
<xs:attribute ref="cmis:index" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="propertyID">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute ref="cmis:name" />
<xs:attribute ref="cmis:index" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="propertyURI">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:anyURI">
<xs:attribute ref="cmis:name" />
<xs:attribute ref="cmis:index" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="propertyDecimal">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:decimal">
<xs:attribute ref="cmis:name" />
<xs:attribute ref="cmis:index" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="propertyDateTime">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:dateTime">
<xs:attribute ref="cmis:name" />
<xs:attribute ref="cmis:index" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="propertyInteger">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attribute ref="cmis:name" />
<xs:attribute ref="cmis:index" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:attribute name="name" type="xs:string" />
</xs:schema>
<!-- EOF -->

File diff suppressed because it is too large Load Diff

View File

@@ -3,7 +3,7 @@
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
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.xsd ">
<!-- if not embedded in entry -->
<cmis:parentId>cmis:parentId</cmis:parentId>

View File

@@ -1,13 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<atom:entry xml:base="http://tempuri.org" xml:lang=""
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:cmis="http://www.cmis.org/2008/05"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cmis="http://www.cmis.org/2008/05"
xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xhtml="http://www.w3.org/1999/xhtml"
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.xsd ">
<atom:author xml:base="http://tempuri.org" xml:lang="">
<atom:name>Al Brown</atom:name>
</atom:author>
@@ -20,10 +16,8 @@
<atom:id>http://www.cmis.org/rep1/document-entry</atom:id>
<!-- atom links -->
<atom:link rel='self'
href="http://www.cmis.org/rep1/document-entry" />
<atom:link rel="edit"
href="http://www.cmis.org/rep1/document-entry" />
<atom:link rel='self' href="http://www.cmis.org/rep1/document-entry" />
<atom:link rel="edit" href="http://www.cmis.org/rep1/document-entry" />
<atom:link rel="edit-media"
href="http://www.cmis.org/rep1/media/document-entry" />
<atom:link rel="enclosure"
@@ -42,73 +36,65 @@
href="http://www.cmis.org/rep1/document-entry/latestversion" />
<atom:link rel="cmis-relationships"
href="http://www.cmis.org/rep1/document-entry/relationships" />
<atom:link rel="cmis-type"
href="http://www.cmis.org/rep1/type/email" />
<atom:link rel="cmis-type" href="http://www.cmis.org/rep1/type/email" />
<atom:link rel="cmis-stream"
href="http://www.cmis.org/rep1/media/document-entry" />
<!-- createdDate -->
<atom:published>2001-12-31T12:00:00</atom:published>
<atom:summary>
<!-- auto-generated HTML table of properties -->
</atom:summary>
<atom:title>Document Entry example</atom:title>
<!-- lastModifiedDate -->
<atom:updated>2001-12-31T12:00:00</atom:updated>
<!-- Optional Allowable actions -->
<cmis:allowableActions>
<cmis:canDelete>true</cmis:canDelete>
<cmis:canUpdateProperties>true</cmis:canUpdateProperties>
<cmis:canGetProperties>true</cmis:canGetProperties>
<cmis:canGetParents>true</cmis:canGetParents>
<cmis:canMove>true</cmis:canMove>
<cmis:canDeleteVersion>true</cmis:canDeleteVersion>
<cmis:canDeleteContent>true</cmis:canDeleteContent>
<cmis:canCheckout>true</cmis:canCheckout>
<cmis:canCancelCheckout>true</cmis:canCancelCheckout>
<cmis:canCheckin>true</cmis:canCheckin>
<cmis:canSetContent>true</cmis:canSetContent>
<cmis:canGetAllVersions>true</cmis:canGetAllVersions>
<cmis:canAddToFolder>true</cmis:canAddToFolder>
<cmis:canRemoveFromFolder>true</cmis:canRemoveFromFolder>
<cmis:canViewContent>true</cmis:canViewContent>
<cmis:canAddPolicy>true</cmis:canAddPolicy>
<cmis:canRemovePolicy>true</cmis:canRemovePolicy>
</cmis:allowableActions>
<cmis:properties>
<cmis:propertyBoolean cmis:name="isCheckedOut">false</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isLatestVersion">true</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isMajorVersion">true</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isLatestMajorVersion">true</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isImmutable">false</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isVersionSeriesCheckedOut">false</cmis:propertyBoolean>
<cmis:propertyDateTime cmis:name="lastModifiedBy">2001-12-31T12:00:00</cmis:propertyDateTime>
<cmis:propertyDateTime cmis:name="creationDate">2001-12-31T12:00:00</cmis:propertyDateTime>
<cmis:propertyID cmis:name="objectId">docid1</cmis:propertyID>
<cmis:propertyID cmis:name="versionSeriesCheckedOutID"></cmis:propertyID>
<cmis:propertyInteger cmis:name="contentStreamLength">70</cmis:propertyInteger>
<cmis:propertyString cmis:name="objectType">email</cmis:propertyString>
<cmis:propertyString cmis:name="baseType">document</cmis:propertyString>
<cmis:propertyString cmis:name="versionSeriesCheckedOutBy"></cmis:propertyString>
<cmis:propertyString cmis:name="checkinComment">This is the initial checkin comment</cmis:propertyString>
<cmis:propertyString cmis:name="versionLabel">1.0</cmis:propertyString>
<cmis:propertyString cmis:name="contentStreamMimetype">text/plain</cmis:propertyString>
<cmis:propertyString cmis:name="contentStreamName">foo.txt</cmis:propertyString>
<cmis:propertyURI cmis:name="contentStreamURI">
http://www.cmis.org/rep1/media/document-entry
</cmis:propertyURI>
</cmis:properties>
</atom:entry>
<cmis:object>
<cmis:properties>
<cmis:propertyBoolean cmis:name="isCheckedOut" cmis:propertyType="boolean"><cmis:value>false</cmis:value></cmis:propertyBoolean>
<cmis:propertyUri cmis:name="contentStreamURI" cmis:propertyType="uri"><cmis:value>
http://www.cmis.org/rep1/media/document-entry</cmis:value> </cmis:propertyUri>
<cmis:propertyBoolean cmis:name="isLatestVersion" cmis:propertyType="boolean"><cmis:value>true</cmis:value></cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isMajorVersion" cmis:propertyType="boolean"><cmis:value>true</cmis:value></cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isLatestMajorVersion" cmis:propertyType="boolean"><cmis:value>true</cmis:value></cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isImmutable" cmis:propertyType="boolean"><cmis:value>false</cmis:value></cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isVersionSeriesCheckedOut" cmis:propertyType="boolean"><cmis:value>false</cmis:value></cmis:propertyBoolean>
<cmis:propertyString cmis:name="lastModifiedBy" cmis:propertyType="string"><cmis:value>abrown</cmis:value></cmis:propertyString>
<cmis:propertyDateTime cmis:name="creationDate" cmis:propertyType="datetime"><cmis:value>2001-12-31T12:00:00</cmis:value></cmis:propertyDateTime>
<cmis:propertyId cmis:name="objectId" cmis:propertyType="id"><cmis:value>docid1</cmis:value></cmis:propertyId>
<cmis:propertyId cmis:name="versionSeriesCheckedOutID" cmis:propertyType="id" />
<cmis:propertyInteger cmis:name="contentStreamLength" cmis:propertyType="integer"><cmis:value>70</cmis:value></cmis:propertyInteger>
<cmis:propertyInteger cmis:name="contentStreamLength" cmis:propertyType="integer" />
<cmis:propertyString cmis:name="objectType" cmis:propertyType="string"><cmis:value>email</cmis:value></cmis:propertyString>
<cmis:propertyString cmis:name="baseType" cmis:propertyType="string"><cmis:value>document</cmis:value></cmis:propertyString>
<cmis:propertyString cmis:name="versionSeriesCheckedOutBy" cmis:propertyType="string" />
<cmis:propertyString cmis:name="checkinComment" cmis:propertyType="string"><cmis:value>This is the
initial comment</cmis:value></cmis:propertyString>
<cmis:propertyString cmis:name="versionLabel" cmis:propertyType="string"><cmis:value>1.0</cmis:value></cmis:propertyString>
<cmis:propertyString cmis:name="contentStreamMimetype" cmis:propertyType="string"><cmis:value>text/plain</cmis:value></cmis:propertyString>
<cmis:propertyString cmis:name="contentStreamName" cmis:propertyType="string"><cmis:value>name</cmis:value></cmis:propertyString>
</cmis:properties>
<cmis:allowableActions>
<cmis:canDelete>true</cmis:canDelete>
<cmis:canUpdateProperties>true</cmis:canUpdateProperties>
<cmis:canGetProperties>true</cmis:canGetProperties>
<cmis:canGetParents>true</cmis:canGetParents>
<cmis:canMove>true</cmis:canMove>
<cmis:canDeleteVersion>true</cmis:canDeleteVersion>
<cmis:canDeleteContent>true</cmis:canDeleteContent>
<cmis:canCheckout>true</cmis:canCheckout>
<cmis:canCancelCheckout>true</cmis:canCancelCheckout>
<cmis:canCheckin>true</cmis:canCheckin>
<cmis:canSetContent>true</cmis:canSetContent>
<cmis:canGetAllVersions>true</cmis:canGetAllVersions>
<cmis:canAddToFolder>true</cmis:canAddToFolder>
<cmis:canRemoveFromFolder>true</cmis:canRemoveFromFolder>
<cmis:canViewContent>true</cmis:canViewContent>
<cmis:canAddPolicy>true</cmis:canAddPolicy>
<cmis:canRemovePolicy>true</cmis:canRemovePolicy>
</cmis:allowableActions>
</cmis:object>
<cmis:terminator />
</atom:entry>

View File

@@ -1,13 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<atom:entry xml:base="http://tempuri.org" xml:lang=""
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:cmis="http://www.cmis.org/2008/05"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cmis="http://www.cmis.org/2008/05"
xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xhtml="http://www.w3.org/1999/xhtml"
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.xsd ">
<atom:author xml:base="http://tempuri.org" xml:lang="">
<atom:name>Al Brown</atom:name>
</atom:author>
@@ -20,10 +16,8 @@
<atom:id>http://www.cmis.org/rep1/document-entry</atom:id>
<!-- atom links -->
<atom:link rel='self'
href="http://www.cmis.org/rep1/document-entry" />
<atom:link rel="edit"
href="http://www.cmis.org/rep1/document-entry" />
<atom:link rel='self' href="http://www.cmis.org/rep1/document-entry" />
<atom:link rel="edit" href="http://www.cmis.org/rep1/document-entry" />
<atom:link rel="edit-media"
href="http://www.cmis.org/rep1/media/document-entry" />
<atom:link rel="enclosure"
@@ -42,84 +36,80 @@
href="http://www.cmis.org/rep1/document-entry/latestversion" />
<atom:link rel="cmis-relationships"
href="http://www.cmis.org/rep1/document-entry/relationships" />
<atom:link rel="cmis-type"
href="http://www.cmis.org/rep1/type/email" />
<atom:link rel="cmis-type" href="http://www.cmis.org/rep1/type/email" />
<atom:link rel="cmis-stream"
href="http://www.cmis.org/rep1/media/document-entry" />
<!-- createdDate -->
<atom:published>2001-12-31T12:00:00</atom:published>
<atom:summary>
<!-- auto-generated HTML table of properties -->
</atom:summary>
<atom:title>Document Entry example</atom:title>
<!-- lastModifiedDate -->
<atom:updated>2001-12-31T12:00:00</atom:updated>
<!-- Optional Allowable actions -->
<cmis:allowableActions>
<cmis:canDelete>true</cmis:canDelete>
<cmis:canUpdateProperties>true</cmis:canUpdateProperties>
<cmis:canGetProperties>true</cmis:canGetProperties>
<cmis:canGetParents>true</cmis:canGetParents>
<cmis:canMove>true</cmis:canMove>
<cmis:canDeleteVersion>true</cmis:canDeleteVersion>
<cmis:canDeleteContent>true</cmis:canDeleteContent>
<cmis:canCheckout>true</cmis:canCheckout>
<cmis:canCancelCheckout>true</cmis:canCancelCheckout>
<cmis:canCheckin>true</cmis:canCheckin>
<cmis:canSetContent>true</cmis:canSetContent>
<cmis:canGetAllVersions>true</cmis:canGetAllVersions>
<cmis:canAddToFolder>true</cmis:canAddToFolder>
<cmis:canRemoveFromFolder>true</cmis:canRemoveFromFolder>
<cmis:canViewContent>true</cmis:canViewContent>
<cmis:canAddPolicy>true</cmis:canAddPolicy>
<cmis:canRemovePolicy>true</cmis:canRemovePolicy>
</cmis:allowableActions>
<cmis:properties>
<cmis:object>
<cmis:properties>
<!-- PWC -->
<cmis:propertyBoolean cmis:name="isCheckedOut">true</cmis:propertyBoolean>
<cmis:propertyId cmis:name="objectId"><cmis:value>docid1pwc</cmis:value></cmis:propertyId>
<cmis:propertyString cmis:name="objectType"><cmis:value>email</cmis:value></cmis:propertyString>
<!-- PWC -->
<cmis:propertyBoolean cmis:name="isLatestVersion">true</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isMajorVersion">false</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isLatestMajorVersion">false</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isImmutable">false</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isCheckedOut"><cmis:value>true</cmis:value></cmis:propertyBoolean>
<!-- PWC -->
<cmis:propertyBoolean cmis:name="isLatestVersion"><cmis:value>true</cmis:value></cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isMajorVersion"><cmis:value>false</cmis:value></cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isLatestMajorVersion"><cmis:value>false</cmis:value></cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isImmutable"><cmis:value>false</cmis:value></cmis:propertyBoolean>
<!-- PWC -->
<cmis:propertyBoolean cmis:name="isVersionSeriesCheckedOut">true</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isVersionSeriesCheckedOut"><cmis:value>true</cmis:value></cmis:propertyBoolean>
<cmis:propertyDateTime cmis:name="lastModifiedBy"><cmis:value>2007-12-31T12:00:00</cmis:value></cmis:propertyDateTime>
<cmis:propertyDateTime cmis:name="creationDate"><cmis:value>2007-12-31T12:00:00</cmis:value></cmis:propertyDateTime>
<cmis:propertyDateTime cmis:name="lastModifiedBy">2007-12-31T12:00:00</cmis:propertyDateTime>
<cmis:propertyDateTime cmis:name="creationDate">2007-12-31T12:00:00</cmis:propertyDateTime>
<!-- PWC -->
<cmis:propertyID cmis:name="objectId">docid1pwc</cmis:propertyID>
<!-- PWC -->
<cmis:propertyID cmis:name="versionSeriesCheckedOutID">docidpwc</cmis:propertyID>
<cmis:propertyId cmis:name="versionSeriesCheckedOutID"><cmis:value>docidpwc</cmis:value></cmis:propertyId>
<cmis:propertyInteger cmis:name="contentStreamLength"><cmis:value>70</cmis:value></cmis:propertyInteger>
<cmis:propertyInteger cmis:name="contentStreamLength">70</cmis:propertyInteger>
<cmis:propertyString cmis:name="objectType">email</cmis:propertyString>
<cmis:propertyString cmis:name="baseType">document</cmis:propertyString>
<cmis:propertyString cmis:name="baseType"><cmis:value>document</cmis:value></cmis:propertyString>
<!-- PWC -->
<cmis:propertyString cmis:name="versionSeriesCheckedOutBy">Al Brown</cmis:propertyString>
<cmis:propertyString cmis:name="checkinComment">This is the initial checkin comment</cmis:propertyString>
<cmis:propertyString cmis:name="versionSeriesCheckedOutBy"><cmis:value>Al Brown</cmis:value></cmis:propertyString>
<cmis:propertyString cmis:name="checkinComment"><cmis:value>This is the
initial checkin comment</cmis:value></cmis:propertyString>
<!-- PWC -->
<cmis:propertyString cmis:name="versionLabel">1.1</cmis:propertyString>
<cmis:propertyString cmis:name="contentStreamMimetype">text/plain</cmis:propertyString>
<cmis:propertyString cmis:name="contentStreamName">foo.txt</cmis:propertyString>
<cmis:propertyURI cmis:name="contentStreamURI">
http://www.cmis.org/rep1/media/document-entry
</cmis:propertyURI>
</cmis:properties>
<cmis:propertyString cmis:name="versionLabel"><cmis:value>1.1</cmis:value></cmis:propertyString>
<cmis:propertyString cmis:name="contentStreamMimetype"><cmis:value>text/plain</cmis:value></cmis:propertyString>
<cmis:propertyString cmis:name="contentStreamName"><cmis:value>foo.txt</cmis:value></cmis:propertyString>
<cmis:propertyUri cmis:name="contentStreamURI"><cmis:value>
http://www.cmis.org/rep1/media/document-entry</cmis:value></cmis:propertyUri>
</cmis:properties>
<cmis:allowableActions>
<cmis:canDelete>true</cmis:canDelete>
<cmis:canUpdateProperties>true</cmis:canUpdateProperties>
<cmis:canGetProperties>true</cmis:canGetProperties>
<cmis:canGetParents>true</cmis:canGetParents>
<cmis:canMove>true</cmis:canMove>
<cmis:canDeleteVersion>true</cmis:canDeleteVersion>
<cmis:canDeleteContent>true</cmis:canDeleteContent>
<cmis:canCheckout>true</cmis:canCheckout>
<cmis:canCancelCheckout>true</cmis:canCancelCheckout>
<cmis:canCheckin>true</cmis:canCheckin>
<cmis:canSetContent>true</cmis:canSetContent>
<cmis:canGetAllVersions>true</cmis:canGetAllVersions>
<cmis:canAddToFolder>true</cmis:canAddToFolder>
<cmis:canRemoveFromFolder>true</cmis:canRemoveFromFolder>
<cmis:canViewContent>true</cmis:canViewContent>
<cmis:canAddPolicy>true</cmis:canAddPolicy>
<cmis:canRemovePolicy>true</cmis:canRemovePolicy>
</cmis:allowableActions>
</atom:entry>
</cmis:object>
<cmis:terminator />
</atom:entry>

View File

@@ -7,11 +7,6 @@
<link rel="self" href="http://localhost:80/alfresco/service/api/path/workspace/SpacesStore/Company%20Home/children"/>
<link rel="first" href="http://localhost:80/alfresco/service/api/path/workspace/SpacesStore/Company%20Home/children?pageNo=1&amp;guest=&amp;format=atomfeed" type="application/atom+xml;type=feed"/>
<link rel="last" href="http://localhost:80/alfresco/service/api/path/workspace/SpacesStore/Company%20Home/children?pageNo=1&amp;guest=&amp;format=atomfeed" type="application/atom+xml;type=feed"/>
<link rel="cmis-allowableactions" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/ffddcc48-0c6a-4aa3-b9e2-1121c35f6504/permissions"/>
<link rel="cmis-relationships" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/ffddcc48-0c6a-4aa3-b9e2-1121c35f6504/associations"/>
<link rel="cmis-parent" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/ffddcc48-0c6a-4aa3-b9e2-1121c35f6504/parent"/>
<link rel="cmis-children" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/ffddcc48-0c6a-4aa3-b9e2-1121c35f6504/children"/>
<link rel="cmis-descendants" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/ffddcc48-0c6a-4aa3-b9e2-1121c35f6504/descendants"/>
<title>Company Home</title>
<updated>2008-07-11T16:51:03.508+01:00</updated>
<entry>
@@ -29,170 +24,23 @@
<summary>Site Collaboration Spaces</summary>
<title>Sites</title>
<updated>2008-07-11T16:51:03.854+01:00</updated>
<cmis:object>
<cmis:properties>
<cmis:propertyDateTime cmis:name="creationDate">2008-07-11T16:51:03.086+01:00</cmis:propertyDateTime>
<cmis:propertyDateTime cmis:name="lastModificationDate">2008-07-11T16:51:03.854+01:00</cmis:propertyDateTime>
<cmis:propertyID cmis:name="objectId">workspace://SpacesStore/b09bc7f5-19c3-4ad1-9c5d-8f3a95a3417d</cmis:propertyID>
<cmis:propertyID cmis:name="parent">workspace://SpacesStore/ffddcc48-0c6a-4aa3-b9e2-1121c35f6504</cmis:propertyID>
<cmis:propertyString cmis:name="baseType">document</cmis:propertyString>
<cmis:propertyString cmis:name="createdBy">System</cmis:propertyString>
<cmis:propertyString cmis:name="lastModifiedBy">System</cmis:propertyString>
<cmis:propertyString cmis:name="name">Sites</cmis:propertyString>
<cmis:propertyDateTime cmis:name="creationDate"><cmis:value>2008-07-11T16:51:03.086+01:00</cmis:value></cmis:propertyDateTime>
<cmis:propertyDateTime cmis:name="lastModificationDate"><cmis:value>2008-07-11T16:51:03.854+01:00</cmis:value></cmis:propertyDateTime>
<cmis:propertyId cmis:name="objectId"><cmis:value>workspace://SpacesStore/b09bc7f5-19c3-4ad1-9c5d-8f3a95a3417d</cmis:value></cmis:propertyId>
<cmis:propertyId cmis:name="parent"><cmis:value>workspace://SpacesStore/ffddcc48-0c6a-4aa3-b9e2-1121c35f6504</cmis:value></cmis:propertyId>
<cmis:propertyString cmis:name="baseType"><cmis:value>document</cmis:value></cmis:propertyString>
<cmis:propertyString cmis:name="createdBy"><cmis:value>System</cmis:value></cmis:propertyString>
<cmis:propertyString cmis:name="lastModifiedBy"><cmis:value>System</cmis:value></cmis:propertyString>
<cmis:propertyString cmis:name="name"><cmis:value>Sites</cmis:value></cmis:propertyString>
</cmis:properties>
</cmis:object>
<cmis:terminator/>
<app:edited>2008-07-11T16:51:03.854+01:00</app:edited>
<alf:icon>http://localhost:80/alfresco/images/icons/space-icon-default-16.gif</alf:icon>
</entry>
<entry>
<author><name>System</name></author>
<content>dd4f66e4-df9a-4910-94dd-4bc2a5e59443</content>
<id>urn:uuid:dd4f66e4-df9a-4910-94dd-4bc2a5e59443</id>
<link rel="self" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/dd4f66e4-df9a-4910-94dd-4bc2a5e59443"/>
<link rel="edit" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/dd4f66e4-df9a-4910-94dd-4bc2a5e59443"/>
<link rel="cmis-allowableactions" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/dd4f66e4-df9a-4910-94dd-4bc2a5e59443/permissions"/>
<link rel="cmis-relationships" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/dd4f66e4-df9a-4910-94dd-4bc2a5e59443/associations"/>
<link rel="cmis-parent" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/dd4f66e4-df9a-4910-94dd-4bc2a5e59443/parent"/>
<link rel="cmis-children" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/dd4f66e4-df9a-4910-94dd-4bc2a5e59443/children"/>
<link rel="cmis-descendants" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/dd4f66e4-df9a-4910-94dd-4bc2a5e59443/descendants"/>
<published>2008-07-11T16:50:25.286+01:00</published>
<summary>User managed definitions</summary>
<title>Data Dictionary</title>
<updated>2008-07-11T16:51:03.509+01:00</updated>
<cmis:properties>
<cmis:propertyDateTime cmis:name="creationDate">2008-07-11T16:50:25.286+01:00</cmis:propertyDateTime>
<cmis:propertyDateTime cmis:name="lastModificationDate">2008-07-11T16:51:03.509+01:00</cmis:propertyDateTime>
<cmis:propertyID cmis:name="objectId">workspace://SpacesStore/dd4f66e4-df9a-4910-94dd-4bc2a5e59443</cmis:propertyID>
<cmis:propertyID cmis:name="parent">workspace://SpacesStore/ffddcc48-0c6a-4aa3-b9e2-1121c35f6504</cmis:propertyID>
<cmis:propertyString cmis:name="baseType">document</cmis:propertyString>
<cmis:propertyString cmis:name="createdBy">System</cmis:propertyString>
<cmis:propertyString cmis:name="lastModifiedBy">System</cmis:propertyString>
<cmis:propertyString cmis:name="name">Data Dictionary</cmis:propertyString>
</cmis:properties>
<app:edited>2008-07-11T16:51:03.509+01:00</app:edited>
<alf:icon>http://localhost:80/alfresco/images/icons/space-icon-default-16.gif</alf:icon>
</entry>
<entry>
<author><name>System</name></author>
<content>6dc1e4b5-d959-4ca8-b20c-21ce05fe8889</content>
<id>urn:uuid:6dc1e4b5-d959-4ca8-b20c-21ce05fe8889</id>
<link rel="self" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/6dc1e4b5-d959-4ca8-b20c-21ce05fe8889"/>
<link rel="edit" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/6dc1e4b5-d959-4ca8-b20c-21ce05fe8889"/>
<link rel="cmis-allowableactions" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/6dc1e4b5-d959-4ca8-b20c-21ce05fe8889/permissions"/>
<link rel="cmis-relationships" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/6dc1e4b5-d959-4ca8-b20c-21ce05fe8889/associations"/>
<link rel="cmis-parent" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/6dc1e4b5-d959-4ca8-b20c-21ce05fe8889/parent"/>
<link rel="cmis-children" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/6dc1e4b5-d959-4ca8-b20c-21ce05fe8889/children"/>
<link rel="cmis-descendants" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/6dc1e4b5-d959-4ca8-b20c-21ce05fe8889/descendants"/>
<published>2008-07-11T16:50:25.698+01:00</published>
<summary>The guest root space</summary>
<title>Guest Home</title>
<updated>2008-07-11T16:51:03.515+01:00</updated>
<cmis:properties>
<cmis:propertyDateTime cmis:name="creationDate">2008-07-11T16:50:25.698+01:00</cmis:propertyDateTime>
<cmis:propertyDateTime cmis:name="lastModificationDate">2008-07-11T16:51:03.515+01:00</cmis:propertyDateTime>
<cmis:propertyID cmis:name="objectId">workspace://SpacesStore/6dc1e4b5-d959-4ca8-b20c-21ce05fe8889</cmis:propertyID>
<cmis:propertyID cmis:name="parent">workspace://SpacesStore/ffddcc48-0c6a-4aa3-b9e2-1121c35f6504</cmis:propertyID>
<cmis:propertyString cmis:name="baseType">document</cmis:propertyString>
<cmis:propertyString cmis:name="createdBy">System</cmis:propertyString>
<cmis:propertyString cmis:name="lastModifiedBy">System</cmis:propertyString>
<cmis:propertyString cmis:name="name">Guest Home</cmis:propertyString>
</cmis:properties>
<app:edited>2008-07-11T16:51:03.515+01:00</app:edited>
<alf:icon>http://localhost:80/alfresco/images/icons/space-icon-default-16.gif</alf:icon>
</entry>
<entry>
<author><name>System</name></author>
<content>7d35ea01-5bfd-4785-92c3-3dc19623b162</content>
<id>urn:uuid:7d35ea01-5bfd-4785-92c3-3dc19623b162</id>
<link rel="self" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/7d35ea01-5bfd-4785-92c3-3dc19623b162"/>
<link rel="edit" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/7d35ea01-5bfd-4785-92c3-3dc19623b162"/>
<link rel="cmis-allowableactions" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/7d35ea01-5bfd-4785-92c3-3dc19623b162/permissions"/>
<link rel="cmis-relationships" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/7d35ea01-5bfd-4785-92c3-3dc19623b162/associations"/>
<link rel="cmis-parent" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/7d35ea01-5bfd-4785-92c3-3dc19623b162/parent"/>
<link rel="cmis-children" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/7d35ea01-5bfd-4785-92c3-3dc19623b162/children"/>
<link rel="cmis-descendants" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/7d35ea01-5bfd-4785-92c3-3dc19623b162/descendants"/>
<published>2008-07-11T16:50:25.822+01:00</published>
<summary>User Homes</summary>
<title>User Homes</title>
<updated>2008-07-11T16:51:03.516+01:00</updated>
<cmis:properties>
<cmis:propertyDateTime cmis:name="creationDate">2008-07-11T16:50:25.822+01:00</cmis:propertyDateTime>
<cmis:propertyDateTime cmis:name="lastModificationDate">2008-07-11T16:51:03.516+01:00</cmis:propertyDateTime>
<cmis:propertyID cmis:name="objectId">workspace://SpacesStore/7d35ea01-5bfd-4785-92c3-3dc19623b162</cmis:propertyID>
<cmis:propertyID cmis:name="parent">workspace://SpacesStore/ffddcc48-0c6a-4aa3-b9e2-1121c35f6504</cmis:propertyID>
<cmis:propertyString cmis:name="baseType">document</cmis:propertyString>
<cmis:propertyString cmis:name="createdBy">System</cmis:propertyString>
<cmis:propertyString cmis:name="lastModifiedBy">System</cmis:propertyString>
<cmis:propertyString cmis:name="name">User Homes</cmis:propertyString>
</cmis:properties>
<app:edited>2008-07-11T16:51:03.516+01:00</app:edited>
<alf:icon>http://localhost:80/alfresco/images/icons/space-icon-default-16.gif</alf:icon>
</entry>
<entry>
<author><name>admin</name></author>
<content>605a7b77-c3b7-4583-85e6-04183ba69e44</content>
<id>urn:uuid:605a7b77-c3b7-4583-85e6-04183ba69e44</id>
<link rel="self" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/605a7b77-c3b7-4583-85e6-04183ba69e44"/>
<link rel="edit" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/605a7b77-c3b7-4583-85e6-04183ba69e44"/>
<link rel="cmis-allowableactions" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/605a7b77-c3b7-4583-85e6-04183ba69e44/permissions"/>
<link rel="cmis-relationships" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/605a7b77-c3b7-4583-85e6-04183ba69e44/associations"/>
<link rel="cmis-parent" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/605a7b77-c3b7-4583-85e6-04183ba69e44/parent"/>
<link rel="cmis-children" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/605a7b77-c3b7-4583-85e6-04183ba69e44/children"/>
<link rel="cmis-descendants" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/605a7b77-c3b7-4583-85e6-04183ba69e44/descendants"/>
<published>2008-07-11T16:51:20.786+01:00</published>
<summary>CMIS Tests (summary)</summary>
<title>CMIS Tests</title>
<updated>2008-07-11T16:51:20.830+01:00</updated>
<cmis:properties>
<cmis:propertyDateTime cmis:name="creationDate">2008-07-11T16:51:20.786+01:00</cmis:propertyDateTime>
<cmis:propertyDateTime cmis:name="lastModificationDate">2008-07-11T16:51:20.830+01:00</cmis:propertyDateTime>
<cmis:propertyID cmis:name="objectId">workspace://SpacesStore/605a7b77-c3b7-4583-85e6-04183ba69e44</cmis:propertyID>
<cmis:propertyID cmis:name="parent">workspace://SpacesStore/ffddcc48-0c6a-4aa3-b9e2-1121c35f6504</cmis:propertyID>
<cmis:propertyString cmis:name="baseType">document</cmis:propertyString>
<cmis:propertyString cmis:name="createdBy">admin</cmis:propertyString>
<cmis:propertyString cmis:name="lastModifiedBy">admin</cmis:propertyString>
<cmis:propertyString cmis:name="name">CMIS Tests</cmis:propertyString>
</cmis:properties>
<app:edited>2008-07-11T16:51:20.830+01:00</app:edited>
<alf:icon>http://localhost:80/alfresco/images/icons/space-icon-default-16.gif</alf:icon>
</entry>
<entry>
<author><name>System</name></author>
<content>79f2bb8b-a0ff-4e96-908c-85e794684104</content>
<id>urn:uuid:79f2bb8b-a0ff-4e96-908c-85e794684104</id>
<link rel="self" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/79f2bb8b-a0ff-4e96-908c-85e794684104"/>
<link rel="edit" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/79f2bb8b-a0ff-4e96-908c-85e794684104"/>
<link rel="cmis-allowableactions" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/79f2bb8b-a0ff-4e96-908c-85e794684104/permissions"/>
<link rel="cmis-relationships" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/79f2bb8b-a0ff-4e96-908c-85e794684104/associations"/>
<link rel="cmis-parent" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/79f2bb8b-a0ff-4e96-908c-85e794684104/parent"/>
<link rel="cmis-children" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/79f2bb8b-a0ff-4e96-908c-85e794684104/children"/>
<link rel="cmis-descendants" href="http://localhost:80/alfresco/service/api/node/workspace/SpacesStore/79f2bb8b-a0ff-4e96-908c-85e794684104/descendants"/>
<published>2008-07-11T22:08:33.603+01:00</published>
<summary>Web Content Management Spaces</summary>
<title>Web Projects</title>
<updated>2008-07-11T22:08:33.676+01:00</updated>
<cmis:properties>
<cmis:propertyDateTime cmis:name="creationDate">2008-07-11T22:08:33.603+01:00</cmis:propertyDateTime>
<cmis:propertyDateTime cmis:name="lastModificationDate">2008-07-11T22:08:33.676+01:00</cmis:propertyDateTime>
<cmis:propertyID cmis:name="objectId">workspace://SpacesStore/79f2bb8b-a0ff-4e96-908c-85e794684104</cmis:propertyID>
<cmis:propertyID cmis:name="parent">workspace://SpacesStore/ffddcc48-0c6a-4aa3-b9e2-1121c35f6504</cmis:propertyID>
<cmis:propertyString cmis:name="baseType">document</cmis:propertyString>
<cmis:propertyString cmis:name="createdBy">System</cmis:propertyString>
<cmis:propertyString cmis:name="lastModifiedBy">System</cmis:propertyString>
<cmis:propertyString cmis:name="name">Web Projects</cmis:propertyString>
</cmis:properties>
<app:edited>2008-07-11T22:08:33.676+01:00</app:edited>
<alf:icon>http://localhost:80/alfresco/images/icons/space-icon-default-16.gif</alf:icon>
</entry>
<cmis:hasMoreItems>false</cmis:hasMoreItems>
<cmis:properties>
<cmis:propertyDateTime cmis:name="creationDate">2008-07-11T16:50:25.179+01:00</cmis:propertyDateTime>
<cmis:propertyDateTime cmis:name="lastModificationDate">2008-07-11T16:51:03.508+01:00</cmis:propertyDateTime>
<cmis:propertyID cmis:name="objectId">workspace://SpacesStore/ffddcc48-0c6a-4aa3-b9e2-1121c35f6504</cmis:propertyID>
<cmis:propertyID cmis:name="parent">workspace://SpacesStore/b9a00044-9a14-4733-a745-2bfb83915da8</cmis:propertyID>
<cmis:propertyString cmis:name="baseType">document</cmis:propertyString>
<cmis:propertyString cmis:name="createdBy">System</cmis:propertyString>
<cmis:propertyString cmis:name="lastModifiedBy">System</cmis:propertyString>
<cmis:propertyString cmis:name="name">Company Home</cmis:propertyString>
</cmis:properties>
<opensearch:totalResults>6</opensearch:totalResults>
<opensearch:startIndex>0</opensearch:startIndex>
<opensearch:itemsPerPage>0</opensearch:itemsPerPage>

View File

@@ -5,7 +5,7 @@
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
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.xsd ">
<!-- This is a feed of folder1 containing:
folder2
@@ -76,7 +76,31 @@
<!-- lastModifiedDate -->
<atom:updated>2001-12-31T12:00:00</atom:updated>
<!-- Optional Allowable actions -->
<cmis:object>
<cmis:properties>
<cmis:propertyDateTime cmis:name="lastModifiedBy">
<cmis:value>2001-12-31T12:00:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyDateTime cmis:name="creationDate">
<cmis:value>2001-12-31T12:00:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyId cmis:name="objectId">
<cmis:value>folderid1</cmis:value>
</cmis:propertyId>
<cmis:propertyId cmis:name="parentId">
<cmis:value>parentFolderId1</cmis:value>
</cmis:propertyId>
<cmis:propertyString cmis:name="objectType">
<cmis:value>emailfolder</cmis:value>
</cmis:propertyString>
<cmis:propertyString cmis:name="baseType">
<cmis:value>folder</cmis:value>
</cmis:propertyString>
</cmis:properties>
<!-- Optional Allowable actions -->
<cmis:allowableActions>
<cmis:canDelete>true</cmis:canDelete>
<cmis:canUpdateProperties>true</cmis:canUpdateProperties>
@@ -88,29 +112,9 @@
<cmis:canRemovePolicy>true</cmis:canRemovePolicy>
<cmis:canGetChildren>true</cmis:canGetChildren>
</cmis:allowableActions>
<cmis:properties>
<cmis:propertyDateTime cmis:name="lastModifiedBy">
2001-12-31T12:00:00
</cmis:propertyDateTime>
<cmis:propertyDateTime cmis:name="creationDate">
2001-12-31T12:00:00
</cmis:propertyDateTime>
<cmis:propertyID cmis:name="objectId">
folderid1
</cmis:propertyID>
<cmis:propertyID cmis:name="parentId">
parentFolderId1
</cmis:propertyID>
<cmis:propertyString cmis:name="objectType">
emailfolder
</cmis:propertyString>
<cmis:propertyString cmis:name="baseType">
folder
</cmis:propertyString>
</cmis:properties>
</cmis:object>
<cmis:terminator />
</atom:entry>
<!-- child doc -->
@@ -167,7 +171,71 @@
<!-- lastModifiedDate -->
<atom:updated>2001-12-31T12:00:00</atom:updated>
<!-- Optional Allowable actions -->
<cmis:object>
<cmis:properties>
<cmis:propertyId cmis:name="objectId">
<cmis:value>docid1</cmis:value>
</cmis:propertyId>
<cmis:propertyBoolean cmis:name="isCheckedOut">
<cmis:value>false</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isLatestVersion">
<cmis:value>true</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isMajorVersion">
<cmis:value>true</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isLatestMajorVersion">
<cmis:value>true</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isImmutable">
<cmis:value>false</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean
cmis:name="isVersionSeriesCheckedOut">
<cmis:value>false</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyDateTime cmis:name="lastModifiedBy">
<cmis:value>2001-12-31T12:00:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyDateTime cmis:name="creationDate">
<cmis:value>2001-12-31T12:00:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyId cmis:name="versionSeriesCheckedOutID"></cmis:propertyId>
<cmis:propertyInteger cmis:name="contentStreamLength">
<cmis:value>70</cmis:value>
</cmis:propertyInteger>
<cmis:propertyString cmis:name="objectType">
<cmis:value>email</cmis:value>
</cmis:propertyString>
<cmis:propertyString cmis:name="baseType">
<cmis:value>document</cmis:value>
</cmis:propertyString>
<cmis:propertyString
cmis:name="versionSeriesCheckedOutBy" />
<cmis:propertyString cmis:name="checkinComment">
<cmis:value>This is the initial checkin comment</cmis:value>
</cmis:propertyString>
<cmis:propertyString cmis:name="versionLabel">
<cmis:value>1.0</cmis:value>
</cmis:propertyString>
<cmis:propertyString cmis:name="contentStreamMimetype">
<cmis:value>text/plain</cmis:value>
</cmis:propertyString>
<cmis:propertyString cmis:name="contentStreamName">
<cmis:value>foo.txt</cmis:value>
</cmis:propertyString>
<cmis:propertyUri cmis:name="contentStreamURI"><cmis:value>
http://www.cmis.org/rep1/media/document-entry</cmis:value>
</cmis:propertyUri>
</cmis:properties>
<!-- Optional Allowable actions -->
<cmis:allowableActions>
<cmis:canDelete>true</cmis:canDelete>
<cmis:canUpdateProperties>true</cmis:canUpdateProperties>
@@ -187,72 +255,11 @@
<cmis:canAddPolicy>true</cmis:canAddPolicy>
<cmis:canRemovePolicy>true</cmis:canRemovePolicy>
</cmis:allowableActions>
<cmis:properties>
<cmis:propertyBoolean cmis:name="isCheckedOut">
false
</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isLatestVersion">
true
</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isMajorVersion">
true
</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isLatestMajorVersion">
true
</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isImmutable">
false
</cmis:propertyBoolean>
<cmis:propertyBoolean
cmis:name="isVersionSeriesCheckedOut">
false
</cmis:propertyBoolean>
<cmis:propertyDateTime cmis:name="lastModifiedBy">
2001-12-31T12:00:00
</cmis:propertyDateTime>
<cmis:propertyDateTime cmis:name="creationDate">
2001-12-31T12:00:00
</cmis:propertyDateTime>
<cmis:propertyID cmis:name="objectId">
docid1
</cmis:propertyID>
<cmis:propertyID cmis:name="versionSeriesCheckedOutID"></cmis:propertyID>
<cmis:propertyInteger cmis:name="contentStreamLength">
70
</cmis:propertyInteger>
<cmis:propertyString cmis:name="objectType">
email
</cmis:propertyString>
<cmis:propertyString cmis:name="baseType">
document
</cmis:propertyString>
<cmis:propertyString
cmis:name="versionSeriesCheckedOutBy">
</cmis:propertyString>
<cmis:propertyString cmis:name="checkinComment">
This is the initial checkin comment
</cmis:propertyString>
<cmis:propertyString cmis:name="versionLabel">
1.0
</cmis:propertyString>
<cmis:propertyString cmis:name="contentStreamMimetype">
text/plain
</cmis:propertyString>
<cmis:propertyString cmis:name="contentStreamName">
foo.txt
</cmis:propertyString>
<cmis:propertyURI cmis:name="contentStreamURI">
http://www.cmis.org/rep1/media/document-entry
</cmis:propertyURI>
</cmis:properties>
</cmis:object>
<cmis:terminator />
</atom:entry>
<!-- notification of more items -->
<cmis:hasMoreItems>true</cmis:hasMoreItems>
</atom:feed>
</atom:feed>

View File

@@ -1,41 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<atom:feed xml:base="http://tempuri.org" xml:lang=""
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:cmis="http://www.cmis.org/2008/05"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cmis="http://www.cmis.org/2008/05"
xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xml="http://www.w3.org/XML/1998/namespace"
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 ">
<!-- This is a feed of folder1 containing:
folder2\
docid2
docid1
xsi:schemaLocation="http://www.w3.org/2005/Atom ATOM4CMIS.xsd http://www.cmis.org/2008/05 CMIS.xsd ">
<!--
This is a feed of folder1 containing: folder2\ docid2 docid1
-->
<atom:author xml:base="http://tempuri.org" xml:lang="">
<atom:name>Al Brown</atom:name>
</atom:author>
<atom:id>http://www.cmis.org/rep1/folder1/children/3</atom:id>
<atom:link href="http://www.cmis.org/rep1/folder1/children/3" />
<!-- Points to the folder entry document -->
<atom:link rel="cmis-source"
href="http://www.cmis.org/rep1/folder1" />
<atom:link rel="cmis-source" href="http://www.cmis.org/rep1/folder1" />
<!-- RFC 5005 Feed Paging -->
<atom:link rel="first"
href="http://www.cmis.org/rep1/folder1/children" />
<atom:link rel="next"
href="http://www.cmis.org/rep1/folder1/children/4" />
<atom:link rel="previous"
href="http://www.cmis.org/rep1/folder1/children/2" />
<atom:link rel="first" href="http://www.cmis.org/rep1/folder1/children" />
<atom:link rel="next" href="http://www.cmis.org/rep1/folder1/children/4" />
<atom:link rel="previous" href="http://www.cmis.org/rep1/folder1/children/2" />
<atom:link rel="last"
href="http://www.cmis.org/rep1/folder1/children/last" />
<atom:title>Folder1's Children - page 3</atom:title>
<atom:updated>2007-12-31T12:00:00</atom:updated>
<!-- child folder2 -->
@@ -54,10 +41,8 @@
<atom:id>http://www.cmis.org/rep1/folder-entry2</atom:id>
<!-- atom links -->
<atom:link rel='self'
href="http://www.cmis.org/rep1/folder-entry2" />
<atom:link rel="edit"
href="http://www.cmis.org/rep1/folder-entry2" />
<atom:link rel='self' href="http://www.cmis.org/rep1/folder-entry2" />
<atom:link rel="edit" href="http://www.cmis.org/rep1/folder-entry2" />
<!-- CMIS Links -->
<atom:link rel="cmis-parent"
@@ -66,52 +51,49 @@
href="http://www.cmis.org/rep1/folder-entry2/actions" />
<atom:link rel="cmis-relationships"
href="http://www.cmis.org/rep1/folder-entry2/relationships" />
<atom:link rel="cmis-type"
href="http://www.cmis.org/rep1/type/emailfolder" />
<atom:link rel="cmis-type" href="http://www.cmis.org/rep1/type/emailfolder" />
<!-- createdDate -->
<atom:published>2001-12-31T12:00:00</atom:published>
<atom:title>Folder Entry2 example</atom:title>
<!-- lastModifiedDate -->
<atom:updated>2001-12-31T12:00:00</atom:updated>
<!-- Optional Allowable actions -->
<cmis:allowableActions>
<cmis:canDelete>true</cmis:canDelete>
<cmis:canUpdateProperties>true</cmis:canUpdateProperties>
<cmis:canGetProperties>true</cmis:canGetProperties>
<cmis:canGetParents>true</cmis:canGetParents>
<cmis:canGetDescendants>true</cmis:canGetDescendants>
<cmis:canMove>true</cmis:canMove>
<cmis:canAddPolicy>true</cmis:canAddPolicy>
<cmis:canRemovePolicy>true</cmis:canRemovePolicy>
<cmis:canGetChildren>true</cmis:canGetChildren>
</cmis:allowableActions>
<cmis:properties>
<cmis:propertyDateTime cmis:name="lastModifiedBy">
2001-12-31T12:00:00
</cmis:propertyDateTime>
<cmis:propertyDateTime cmis:name="creationDate">
2001-12-31T12:00:00
</cmis:propertyDateTime>
<cmis:propertyID cmis:name="objectId">
folderid2
</cmis:propertyID>
<cmis:propertyID cmis:name="parentId">
folderid1
</cmis:propertyID>
<cmis:propertyString cmis:name="objectType">
emailfolder
</cmis:propertyString>
<cmis:propertyString cmis:name="baseType">
folder
</cmis:propertyString>
</cmis:properties>
<cmis:object>
<cmis:properties>
<cmis:propertyDateTime cmis:name="lastModifiedBy">
<cmis:value>2001-12-31T12:00:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyDateTime cmis:name="creationDate">
<cmis:value>2001-12-31T12:00:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyId cmis:name="objectId">
<cmis:value>folderid2</cmis:value>
</cmis:propertyId>
<cmis:propertyId cmis:name="parentId">
<cmis:value>folderid1</cmis:value>
</cmis:propertyId>
<cmis:propertyString cmis:name="objectType">
<cmis:value>emailfolder</cmis:value>
</cmis:propertyString>
<cmis:propertyString cmis:name="baseType">
<cmis:value>folder</cmis:value>
</cmis:propertyString>
</cmis:properties>
<!-- Optional Allowable actions -->
<cmis:allowableActions>
<cmis:canDelete>true</cmis:canDelete>
<cmis:canUpdateProperties>true</cmis:canUpdateProperties>
<cmis:canGetProperties>true</cmis:canGetProperties>
<cmis:canGetParents>true</cmis:canGetParents>
<cmis:canGetDescendants>true</cmis:canGetDescendants>
<cmis:canMove>true</cmis:canMove>
<cmis:canAddPolicy>true</cmis:canAddPolicy>
<cmis:canRemovePolicy>true</cmis:canRemovePolicy>
<cmis:canGetChildren>true</cmis:canGetChildren>
</cmis:allowableActions>
</cmis:object>
<atom:entry>
<atom:author xml:base="http://tempuri.org" xml:lang="">
@@ -119,18 +101,15 @@
</atom:author>
<!-- atom:content -->
<atom:content
src="http://www.cmis.org/rep1/media/document-entry2">
<atom:content src="http://www.cmis.org/rep1/media/document-entry2">
</atom:content>
<!-- URI to document entry resource -->
<atom:id>http://www.cmis.org/rep1/document-entry2</atom:id>
<!-- atom links -->
<atom:link rel='self'
href="http://www.cmis.org/rep1/document-entry2" />
<atom:link rel="edit"
href="http://www.cmis.org/rep1/document-entry2" />
<atom:link rel='self' href="http://www.cmis.org/rep1/document-entry2" />
<atom:link rel="edit" href="http://www.cmis.org/rep1/document-entry2" />
<atom:link rel="edit-media"
href="http://www.cmis.org/rep1/media/document-entry2" />
<atom:link rel="enclosure"
@@ -149,117 +128,100 @@
href="http://www.cmis.org/rep1/document-entry2/latestversion" />
<atom:link rel="cmis-relationships"
href="http://www.cmis.org/rep1/document-entry2/relationships" />
<atom:link rel="cmis-type"
href="http://www.cmis.org/rep1/type/email" />
<atom:link rel="cmis-type" href="http://www.cmis.org/rep1/type/email" />
<atom:link rel="cmis-stream"
href="http://www.cmis.org/rep1/media/document-entry2" />
<!-- createdDate -->
<atom:published>2001-12-31T12:00:00</atom:published>
<atom:summary>
<!-- auto-generated HTML table of properties -->
</atom:summary>
<atom:title>Document Entry2 example</atom:title>
<!-- lastModifiedDate -->
<atom:updated>2001-12-31T12:00:00</atom:updated>
<!-- Optional Allowable actions -->
<cmis:allowableActions>
<cmis:canDelete>true</cmis:canDelete>
<cmis:canUpdateProperties>
true
</cmis:canUpdateProperties>
<cmis:canGetProperties>true</cmis:canGetProperties>
<cmis:canGetParents>true</cmis:canGetParents>
<cmis:canMove>true</cmis:canMove>
<cmis:canDeleteVersion>true</cmis:canDeleteVersion>
<cmis:canDeleteContent>true</cmis:canDeleteContent>
<cmis:canCheckout>true</cmis:canCheckout>
<cmis:canCancelCheckout>true</cmis:canCancelCheckout>
<cmis:canCheckin>true</cmis:canCheckin>
<cmis:canSetContent>true</cmis:canSetContent>
<cmis:canGetAllVersions>true</cmis:canGetAllVersions>
<cmis:canAddToFolder>true</cmis:canAddToFolder>
<cmis:canRemoveFromFolder>
true
</cmis:canRemoveFromFolder>
<cmis:canViewContent>true</cmis:canViewContent>
<cmis:canAddPolicy>true</cmis:canAddPolicy>
<cmis:canRemovePolicy>true</cmis:canRemovePolicy>
</cmis:allowableActions>
<cmis:properties>
<cmis:propertyBoolean cmis:name="isCheckedOut">
false
</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isLatestVersion">
true
</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isMajorVersion">
true
</cmis:propertyBoolean>
<cmis:propertyBoolean
cmis:name="isLatestMajorVersion">
true
</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isImmutable">
false
</cmis:propertyBoolean>
<cmis:propertyBoolean
cmis:name="isVersionSeriesCheckedOut">
false
</cmis:propertyBoolean>
<cmis:propertyDateTime cmis:name="lastModifiedBy">
2001-12-31T12:00:00
</cmis:propertyDateTime>
<cmis:propertyDateTime cmis:name="creationDate">
2001-12-31T12:00:00
</cmis:propertyDateTime>
<cmis:propertyID cmis:name="objectId">
docid2
</cmis:propertyID>
<cmis:propertyID
cmis:name="versionSeriesCheckedOutID">
</cmis:propertyID>
<cmis:propertyInteger cmis:name="contentStreamLength">
70
</cmis:propertyInteger>
<cmis:propertyString cmis:name="objectType">
email
</cmis:propertyString>
<cmis:propertyString cmis:name="baseType">
document
</cmis:propertyString>
<cmis:propertyString
cmis:name="versionSeriesCheckedOutBy">
</cmis:propertyString>
<cmis:propertyString cmis:name="checkinComment">
This is the initial checkin comment
</cmis:propertyString>
<cmis:propertyString cmis:name="versionLabel">
1.0
</cmis:propertyString>
<cmis:propertyString
cmis:name="contentStreamMimetype">
text/plain
</cmis:propertyString>
<cmis:propertyString cmis:name="contentStreamName">
foo.txt
</cmis:propertyString>
<cmis:propertyURI cmis:name="contentStreamURI">
http://www.cmis.org/rep1/media/document-entry
</cmis:propertyURI>
</cmis:properties>
<cmis:object>
<cmis:properties>
<cmis:propertyBoolean cmis:name="isCheckedOut">
<cmis:value>false</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isLatestVersion">
<cmis:value>true</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isMajorVersion">
<cmis:value>true</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isLatestMajorVersion">
<cmis:value>true</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isImmutable">
<cmis:value>false</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isVersionSeriesCheckedOut">
<cmis:value>false</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyDateTime cmis:name="lastModifiedBy">
<cmis:value>2001-12-31T12:00:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyDateTime cmis:name="creationDate">
<cmis:value>2001-12-31T12:00:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyId cmis:name="objectId">
<cmis:value>docid2</cmis:value>
</cmis:propertyId>
<cmis:propertyId cmis:name="versionSeriesCheckedOutID" />
<cmis:propertyInteger cmis:name="contentStreamLength">
<cmis:value>70</cmis:value>
</cmis:propertyInteger>
<cmis:propertyString cmis:name="objectType">
<cmis:value>email</cmis:value>
</cmis:propertyString>
<cmis:propertyString cmis:name="baseType">
<cmis:value>document</cmis:value>
</cmis:propertyString>
<cmis:propertyString cmis:name="versionSeriesCheckedOutBy" />
<cmis:propertyString cmis:name="checkinComment">
<cmis:value>This is the initial checkin comment</cmis:value>
</cmis:propertyString>
<cmis:propertyString cmis:name="versionLabel">
<cmis:value>1.0</cmis:value>
</cmis:propertyString>
<cmis:propertyString cmis:name="contentStreamMimetype">
<cmis:value>text/plain</cmis:value>
</cmis:propertyString>
<cmis:propertyString cmis:name="contentStreamName">
<cmis:value>foo.txt</cmis:value>
</cmis:propertyString>
<cmis:propertyUri cmis:name="contentStreamURI">
<cmis:value>http://www.cmis.org/rep1/media/document-entry
</cmis:value>
</cmis:propertyUri>
</cmis:properties>
<!-- Optional Allowable actions -->
<cmis:allowableActions>
<cmis:canDelete>true</cmis:canDelete>
<cmis:canUpdateProperties> true </cmis:canUpdateProperties>
<cmis:canGetProperties>true</cmis:canGetProperties>
<cmis:canGetParents>true</cmis:canGetParents>
<cmis:canMove>true</cmis:canMove>
<cmis:canDeleteVersion>true</cmis:canDeleteVersion>
<cmis:canDeleteContent>true</cmis:canDeleteContent>
<cmis:canCheckout>true</cmis:canCheckout>
<cmis:canCancelCheckout>true</cmis:canCancelCheckout>
<cmis:canCheckin>true</cmis:canCheckin>
<cmis:canSetContent>true</cmis:canSetContent>
<cmis:canGetAllVersions>true</cmis:canGetAllVersions>
<cmis:canAddToFolder>true</cmis:canAddToFolder>
<cmis:canRemoveFromFolder> true </cmis:canRemoveFromFolder>
<cmis:canViewContent>true</cmis:canViewContent>
<cmis:canAddPolicy>true</cmis:canAddPolicy>
<cmis:canRemovePolicy>true</cmis:canRemovePolicy>
</cmis:allowableActions>
</cmis:object>
<cmis:terminator />
</atom:entry>
<cmis:terminator />
</atom:entry>
<!-- child doc -->
@@ -269,18 +231,15 @@
</atom:author>
<!-- atom:content -->
<atom:content
src="http://www.cmis.org/rep1/media/document-entry">
<atom:content src="http://www.cmis.org/rep1/media/document-entry">
</atom:content>
<!-- URI to document entry resource -->
<atom:id>http://www.cmis.org/rep1/document-entry</atom:id>
<!-- atom links -->
<atom:link rel='self'
href="http://www.cmis.org/rep1/document-entry" />
<atom:link rel="edit"
href="http://www.cmis.org/rep1/document-entry" />
<atom:link rel='self' href="http://www.cmis.org/rep1/document-entry" />
<atom:link rel="edit" href="http://www.cmis.org/rep1/document-entry" />
<atom:link rel="edit-media"
href="http://www.cmis.org/rep1/media/document-entry" />
<atom:link rel="enclosure"
@@ -299,110 +258,82 @@
href="http://www.cmis.org/rep1/document-entry/latestversion" />
<atom:link rel="cmis-relationships"
href="http://www.cmis.org/rep1/document-entry/relationships" />
<atom:link rel="cmis-type"
href="http://www.cmis.org/rep1/type/email" />
<atom:link rel="cmis-type" href="http://www.cmis.org/rep1/type/email" />
<atom:link rel="cmis-stream"
href="http://www.cmis.org/rep1/media/document-entry" />
<!-- createdDate -->
<atom:published>2001-12-31T12:00:00</atom:published>
<atom:summary>
<!-- auto-generated HTML table of properties -->
</atom:summary>
<atom:title>Document Entry example</atom:title>
<!-- lastModifiedDate -->
<atom:updated>2001-12-31T12:00:00</atom:updated>
<!-- Optional Allowable actions -->
<cmis:allowableActions>
<cmis:canDelete>true</cmis:canDelete>
<cmis:canUpdateProperties>true</cmis:canUpdateProperties>
<cmis:canGetProperties>true</cmis:canGetProperties>
<cmis:canGetParents>true</cmis:canGetParents>
<cmis:canMove>true</cmis:canMove>
<cmis:canDeleteVersion>true</cmis:canDeleteVersion>
<cmis:canDeleteContent>true</cmis:canDeleteContent>
<cmis:canCheckout>true</cmis:canCheckout>
<cmis:canCancelCheckout>true</cmis:canCancelCheckout>
<cmis:canCheckin>true</cmis:canCheckin>
<cmis:canSetContent>true</cmis:canSetContent>
<cmis:canGetAllVersions>true</cmis:canGetAllVersions>
<cmis:canAddToFolder>true</cmis:canAddToFolder>
<cmis:canRemoveFromFolder>true</cmis:canRemoveFromFolder>
<cmis:canViewContent>true</cmis:canViewContent>
<cmis:canAddPolicy>true</cmis:canAddPolicy>
<cmis:canRemovePolicy>true</cmis:canRemovePolicy>
</cmis:allowableActions>
<cmis:properties>
<cmis:propertyBoolean cmis:name="isCheckedOut">
false
</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isLatestVersion">
true
</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isMajorVersion">
true
</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isLatestMajorVersion">
true
</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isImmutable">
false
</cmis:propertyBoolean>
<cmis:propertyBoolean
cmis:name="isVersionSeriesCheckedOut">
false
</cmis:propertyBoolean>
<cmis:propertyDateTime cmis:name="lastModifiedBy">
2001-12-31T12:00:00
</cmis:propertyDateTime>
<cmis:propertyDateTime cmis:name="creationDate">
2001-12-31T12:00:00
</cmis:propertyDateTime>
<cmis:propertyID cmis:name="objectId">
docid1
</cmis:propertyID>
<cmis:propertyID cmis:name="versionSeriesCheckedOutID"></cmis:propertyID>
<cmis:propertyInteger cmis:name="contentStreamLength">
70
</cmis:propertyInteger>
<cmis:propertyString cmis:name="objectType">
email
</cmis:propertyString>
<cmis:propertyString cmis:name="baseType">
document
</cmis:propertyString>
<cmis:propertyString
cmis:name="versionSeriesCheckedOutBy">
</cmis:propertyString>
<cmis:propertyString cmis:name="checkinComment">
This is the initial checkin comment
</cmis:propertyString>
<cmis:propertyString cmis:name="versionLabel">
1.0
</cmis:propertyString>
<cmis:propertyString cmis:name="contentStreamMimetype">
text/plain
</cmis:propertyString>
<cmis:propertyString cmis:name="contentStreamName">
foo.txt
</cmis:propertyString>
<cmis:propertyURI cmis:name="contentStreamURI">
http://www.cmis.org/rep1/media/document-entry
</cmis:propertyURI>
</cmis:properties>
<cmis:object>
<cmis:properties>
<cmis:propertyBoolean cmis:name="isCheckedOut">
<cmis:value>false</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isLatestVersion">
<cmis:value>true</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isMajorVersion">
<cmis:value>true</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isLatestMajorVersion">
<cmis:value>true</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isImmutable">
<cmis:value>false</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyBoolean cmis:name="isVersionSeriesCheckedOut">
<cmis:value>false</cmis:value>
</cmis:propertyBoolean>
<cmis:propertyDateTime cmis:name="lastModifiedBy">
<cmis:value>2001-12-31T12:00:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyDateTime cmis:name="creationDate">
<cmis:value>2001-12-31T12:00:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyId cmis:name="objectId">
<cmis:value>docid1</cmis:value>
</cmis:propertyId>
<cmis:propertyId cmis:name="versionSeriesCheckedOutID"></cmis:propertyId>
<cmis:propertyInteger cmis:name="contentStreamLength">
<cmis:value>70</cmis:value>
</cmis:propertyInteger>
<cmis:propertyString cmis:name="objectType">
<cmis:value>email</cmis:value>
</cmis:propertyString>
<cmis:propertyString cmis:name="baseType">
<cmis:value>document</cmis:value>
</cmis:propertyString>
<cmis:propertyString cmis:name="versionSeriesCheckedOutBy">
</cmis:propertyString>
<cmis:propertyString cmis:name="checkinComment">
<cmis:value>This is the initial checkin comment</cmis:value>
</cmis:propertyString>
<cmis:propertyString cmis:name="versionLabel">
<cmis:value>1.0</cmis:value>
</cmis:propertyString>
<cmis:propertyString cmis:name="contentStreamMimetype">
<cmis:value>text/plain</cmis:value>
</cmis:propertyString>
<cmis:propertyString cmis:name="contentStreamName">
<cmis:value>foo.txt</cmis:value>
</cmis:propertyString>
<cmis:propertyUri cmis:name="contentStreamURI">
<cmis:value>http://www.cmis.org/rep1/media/document-entry
</cmis:value>
</cmis:propertyUri>
</cmis:properties>
</cmis:object>
<cmis:terminator />
</atom:entry>
<!-- notification of more items -->
<cmis:hasMoreItems>true</cmis:hasMoreItems>
</atom:feed>
</atom:feed>

View File

@@ -1,13 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<atom:entry xml:base="http://tempuri.org" xml:lang="en-US"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:cmis="http://www.cmis.org/2008/05"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cmis="http://www.cmis.org/2008/05"
xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xhtml="http://www.w3.org/1999/xhtml"
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.xsd ">
<atom:author xml:base="http://tempuri.org" xml:lang="">
<atom:name>Al Brown</atom:name>
</atom:author>
@@ -24,50 +20,52 @@
<!-- atom links -->
<atom:link rel='self' href="http://www.cmis.org/rep1/folder-entry" />
<atom:link rel="edit"
href="http://www.cmis.org/rep1/folder-entry" />
<atom:link rel="edit" href="http://www.cmis.org/rep1/folder-entry" />
<!-- CMIS Links -->
<atom:link rel="cmis-parent"
href="http://www.cmis.org/rep1/folder-entry/parent" />
<atom:link rel="cmis-parent" href="http://www.cmis.org/rep1/folder-entry/parent" />
<atom:link rel="cmis-allowableactions"
href="http://www.cmis.org/rep1/folder-entry/actions" />
<atom:link rel="cmis-relationships"
href="http://www.cmis.org/rep1/folder-entry/relationships" />
<atom:link rel="cmis-type"
href="http://www.cmis.org/rep1/type/emailfolder" />
<atom:link rel="cmis-type" href="http://www.cmis.org/rep1/type/emailfolder" />
<!-- createdDate -->
<atom:published>2001-12-31T12:00:00</atom:published>
<atom:title>Folder Entry example</atom:title>
<!-- lastModifiedDate -->
<atom:updated>2001-12-31T12:00:00</atom:updated>
<!-- Optional Allowable actions -->
<cmis:allowableActions>
<cmis:canDelete>true</cmis:canDelete>
<cmis:canUpdateProperties>true</cmis:canUpdateProperties>
<cmis:canGetProperties>true</cmis:canGetProperties>
<cmis:canGetParents>true</cmis:canGetParents>
<cmis:canGetDescendants>true</cmis:canGetDescendants>
<cmis:canMove>true</cmis:canMove>
<cmis:canAddPolicy>true</cmis:canAddPolicy>
<cmis:canRemovePolicy>true</cmis:canRemovePolicy>
<cmis:canGetChildren>true</cmis:canGetChildren>
</cmis:allowableActions>
<cmis:object>
<cmis:properties>
<cmis:propertyDateTime cmis:name="lastModifiedBy">
<cmis:value>2001-12-31T12:00:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyDateTime cmis:name="creationDate">
<cmis:value>2001-12-31T12:00:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyId cmis:name="objectId"><cmis:value>folderid1</cmis:value></cmis:propertyId>
<cmis:propertyId cmis:name="parentId"><cmis:value>parentFolderId1</cmis:value></cmis:propertyId>
<cmis:propertyString cmis:name="objectType">
<cmis:value>emailfolder</cmis:value>
</cmis:propertyString>
<cmis:propertyString cmis:name="baseType">
<cmis:value>folder</cmis:value>
</cmis:propertyString>
</cmis:properties>
<!-- Optional Allowable actions -->
<cmis:allowableActions>
<cmis:canDelete>true</cmis:canDelete>
<cmis:canUpdateProperties>true</cmis:canUpdateProperties>
<cmis:canGetProperties>true</cmis:canGetProperties>
<cmis:canGetParents>true</cmis:canGetParents>
<cmis:canGetDescendants>true</cmis:canGetDescendants>
<cmis:canMove>true</cmis:canMove>
<cmis:canAddPolicy>true</cmis:canAddPolicy>
<cmis:canRemovePolicy>true</cmis:canRemovePolicy>
<cmis:canGetChildren>true</cmis:canGetChildren>
</cmis:allowableActions>
</cmis:object>
<cmis:properties>
<cmis:propertyDateTime cmis:name="lastModifiedBy">2001-12-31T12:00:00</cmis:propertyDateTime>
<cmis:propertyDateTime cmis:name="creationDate">2001-12-31T12:00:00</cmis:propertyDateTime>
<cmis:propertyID cmis:name="objectId">folderid1</cmis:propertyID>
<cmis:propertyID cmis:name="parentId">parentFolderId1</cmis:propertyID>
<cmis:propertyString cmis:name="objectType">emailfolder</cmis:propertyString>
<cmis:propertyString cmis:name="baseType">folder</cmis:propertyString>
</cmis:properties>
</atom:entry>
<cmis:terminator />
</atom:entry>

View File

@@ -1,12 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<atom:entry xml:base="http://tempuri.org" xml:lang="en-US"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:cmis="http://www.cmis.org/2008/05"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cmis="http://www.cmis.org/2008/05"
xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xhtml="http://www.w3.org/1999/xhtml"
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.xsd ">
<atom:author xml:base="http://tempuri.org" xml:lang="">
<atom:name>Al Brown</atom:name>
</atom:author>
@@ -21,46 +18,48 @@
<atom:id>http://www.cmis.org/rep1/policy-entry</atom:id>
<!-- atom links -->
<atom:link rel='self'
href="http://www.cmis.org/rep1/policy-entry" />
<atom:link rel="edit"
href="http://www.cmis.org/rep1/v-entry" />
<atom:link rel='self' href="http://www.cmis.org/rep1/policy-entry" />
<atom:link rel="edit" href="http://www.cmis.org/rep1/v-entry" />
<!-- CMIS Links -->
<atom:link rel="cmis-allowableactions"
href="http://www.cmis.org/rep1/policy-entry/actions" />
<atom:link rel="cmis-type"
href="http://www.cmis.org/rep1/type/securitypolicy" />
<atom:link rel="cmis-source"
href="http://www.cmis.org/rep1/policy-entry/source" />
<atom:link rel="cmis-target"
href="http://www.cmis.org/rep1/policy-entry/target" />
<atom:link rel="cmis-type" href="http://www.cmis.org/rep1/type/securitypolicy" />
<atom:link rel="cmis-source" href="http://www.cmis.org/rep1/policy-entry/source" />
<atom:link rel="cmis-target" href="http://www.cmis.org/rep1/policy-entry/target" />
<!-- createdDate -->
<atom:published>2001-12-31T12:00:00</atom:published>
<atom:title>Policy Entry example</atom:title>
<!-- lastModifiedDate -->
<atom:updated>2001-12-31T12:00:00</atom:updated>
<cmis:object>
<cmis:properties>
<cmis:propertyDateTime cmis:name="lastModifiedBy">
<cmis:value>2001-12-31T12:00:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyDateTime cmis:name="creationDate">
<cmis:value>2001-12-31T12:00:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyId cmis:name="objectId">
<cmis:value>policyid1</cmis:value>
</cmis:propertyId>
<cmis:propertyString cmis:name="objectType">
<cmis:value>security policy</cmis:value>
</cmis:propertyString>
<cmis:propertyString cmis:name="baseType">
<cmis:value>policy</cmis:value>
</cmis:propertyString>
</cmis:properties>
<!-- Optional Allowable actions -->
<cmis:allowableActions>
<cmis:canDelete>true</cmis:canDelete>
<cmis:canUpdateProperties>true</cmis:canUpdateProperties>
<cmis:canGetProperties>true</cmis:canGetProperties>
<cmis:canAddPolicy>true</cmis:canAddPolicy>
<cmis:canRemovePolicy>true</cmis:canRemovePolicy>
</cmis:allowableActions>
<cmis:properties>
<cmis:propertyDateTime cmis:name="lastModifiedBy">2001-12-31T12:00:00</cmis:propertyDateTime>
<cmis:propertyDateTime cmis:name="creationDate">2001-12-31T12:00:00</cmis:propertyDateTime>
<cmis:propertyID cmis:name="objectId">policyid1</cmis:propertyID>
<cmis:propertyString cmis:name="objectType">security policy</cmis:propertyString>
<cmis:propertyString cmis:name="baseType">policy</cmis:propertyString>
</cmis:properties>
</atom:entry>
<cmis:allowableActions>
<cmis:canDelete>true</cmis:canDelete>
<cmis:canUpdateProperties>true</cmis:canUpdateProperties>
<cmis:canGetProperties>true</cmis:canGetProperties>
<cmis:canAddPolicy>true</cmis:canAddPolicy>
<cmis:canRemovePolicy>true</cmis:canRemovePolicy>
</cmis:allowableActions>
</cmis:object>
<cmis:terminator />
</atom:entry>

View File

@@ -2,10 +2,10 @@
<cmis:query xmlns:cmis="http://www.cmis.org/2008/05"
xmlns:p="http://www.w3.org/1999/xhtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.cmis.org/2008/05 CMIS-REST.xsd ">
xsi:schemaLocation="http://www.cmis.org/2008/05 CMIS.xsd ">
<cmis:statement>SELECT * FROM document</cmis:statement>
<cmis:searchAllVersions>true</cmis:searchAllVersions>
<cmis:pageSize>0</cmis:pageSize>
<cmis:skipCount>0</cmis:skipCount>
<cmis:returnAllowableActions>false</cmis:returnAllowableActions>
</cmis:query>
</cmis:query>

View File

@@ -1,12 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<atom:entry xml:base="http://tempuri.org" xml:lang="en-US"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:cmis="http://www.cmis.org/2008/05"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cmis="http://www.cmis.org/2008/05"
xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xhtml="http://www.w3.org/1999/xhtml"
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.xsd ">
<atom:author xml:base="http://tempuri.org" xml:lang="">
<atom:name>Al Brown</atom:name>
</atom:author>
@@ -21,16 +18,13 @@
<atom:id>http://www.cmis.org/rep1/relationship-entry</atom:id>
<!-- atom links -->
<atom:link rel='self'
href="http://www.cmis.org/rep1/relationship-entry" />
<atom:link rel="edit"
href="http://www.cmis.org/rep1/relationship-entry" />
<atom:link rel='self' href="http://www.cmis.org/rep1/relationship-entry" />
<atom:link rel="edit" href="http://www.cmis.org/rep1/relationship-entry" />
<!-- CMIS Links -->
<atom:link rel="cmis-allowableactions"
href="http://www.cmis.org/rep1/relationship-entry/actions" />
<atom:link rel="cmis-type"
href="http://www.cmis.org/rep1/type/emaillink" />
<atom:link rel="cmis-type" href="http://www.cmis.org/rep1/type/emaillink" />
<atom:link rel="cmis-source"
href="http://www.cmis.org/rep1/relationship-entry/source" />
<atom:link rel="cmis-target"
@@ -38,30 +32,43 @@
<!-- createdDate -->
<atom:published>2001-12-31T12:00:00</atom:published>
<atom:title>Relationship Entry example</atom:title>
<!-- lastModifiedDate -->
<atom:updated>2001-12-31T12:00:00</atom:updated>
<!-- Optional Allowable actions -->
<cmis:allowableActions>
<cmis:canDelete>true</cmis:canDelete>
<cmis:canUpdateProperties>true</cmis:canUpdateProperties>
<cmis:canGetProperties>true</cmis:canGetProperties>
<cmis:canAddPolicy>true</cmis:canAddPolicy>
<cmis:canRemovePolicy>true</cmis:canRemovePolicy>
</cmis:allowableActions>
<cmis:object>
<cmis:properties>
<cmis:propertyDateTime cmis:name="lastModifiedBy">
<cmis:value>2001-12-31T12:00:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyDateTime cmis:name="creationDate">
<cmis:value>2001-12-31T12:00:00</cmis:value>
</cmis:propertyDateTime>
<cmis:propertyId cmis:name="objectId">
<cmis:value>relid1</cmis:value>
</cmis:propertyId>
<cmis:propertyId cmis:name="source">
<cmis:value>docid1</cmis:value>
</cmis:propertyId>
<cmis:propertyId cmis:name="target">
<cmis:value>docid2</cmis:value>
</cmis:propertyId>
<cmis:propertyString cmis:name="objectType">
<cmis:value>emaillink</cmis:value>
</cmis:propertyString>
<cmis:propertyString cmis:name="baseType">
<cmis:value>relationship</cmis:value>
</cmis:propertyString>
</cmis:properties>
<!-- Optional Allowable actions -->
<cmis:allowableActions>
<cmis:canDelete>true</cmis:canDelete>
<cmis:canUpdateProperties>true</cmis:canUpdateProperties>
<cmis:canGetProperties>true</cmis:canGetProperties>
<cmis:canAddPolicy>true</cmis:canAddPolicy>
<cmis:canRemovePolicy>true</cmis:canRemovePolicy>
</cmis:allowableActions>
</cmis:object>
<cmis:properties>
<cmis:propertyDateTime cmis:name="lastModifiedBy">2001-12-31T12:00:00</cmis:propertyDateTime>
<cmis:propertyDateTime cmis:name="creationDate">2001-12-31T12:00:00</cmis:propertyDateTime>
<cmis:propertyID cmis:name="objectId">relid1</cmis:propertyID>
<cmis:propertyID cmis:name="source">docid1</cmis:propertyID>
<cmis:propertyID cmis:name="target">docid2</cmis:propertyID>
<cmis:propertyString cmis:name="objectType">emaillink</cmis:propertyString>
<cmis:propertyString cmis:name="baseType">relationship</cmis:propertyString>
</cmis:properties>
</atom:entry>
<cmis:terminator />
</atom:entry>

View File

@@ -1,45 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<app:service xmlns:app="http://www.w3.org/2007/app"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:cmis="http://www.cmis.org/2008/05"
xmlns:cmis="http://www.cmis.org/2008/05"
xmlns:cmisother="http://www.cmis-vendor.org/2008/05"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xsi:schemaLocation="http://www.w3.org/2007/app APP.xsd http://www.w3.org/2005/Atom ATOM4CMIS.xsd http://www.cmis.org/2008/05 CMIS-REST.xsd ">
xsi:schemaLocation="http://www.w3.org/2007/app APP.xsd http://www.w3.org/2005/Atom ATOM4CMIS.xsd http://www.cmis.org/2008/05 CMIS.xsd ">
<app:workspace cmis:repositoryRelationship="self">
<atom:title>Repository 1</atom:title>
<cmis:repositoryInfo>
<cmis:repositoryId>repid1</cmis:repositoryId>
<cmis:repositoryName>repository1</cmis:repositoryName>
<cmis:repositoryRelationship>Self</cmis:repositoryRelationship>
<cmis:repositoryDescription>Repository Description</cmis:repositoryDescription>
<cmis:vendorName>ACME Vendor</cmis:vendorName>
<cmis:productName>ACME Repository</cmis:productName>
<cmis:productVersion>ACME Version 99.01</cmis:productVersion>
<cmis:rootFolderId>rootFolderId</cmis:rootFolderId>
<cmis:capabilities>
<cmis:capabilityMultifiling>true</cmis:capabilityMultifiling>
<cmis:capabilityUnfiling>true</cmis:capabilityUnfiling>
<cmis:capabilityVersionSpecificFiling>true</cmis:capabilityVersionSpecificFiling>
<cmis:capabilityPWCUpdateable>true</cmis:capabilityPWCUpdateable>
<cmis:capabilityPWCSearchable>true</cmis:capabilityPWCSearchable>
<cmis:capabilityAllVersionsSearchable>true</cmis:capabilityAllVersionsSearchable>
<cmis:capabilityJoin>innerAndOuter</cmis:capabilityJoin>
<cmis:capabilityQuery>fulltextonly</cmis:capabilityQuery>
<cmis:capabilityJoin>innerandouter</cmis:capabilityJoin>
<cmis:capabilityFullText>fulltextandstructured</cmis:capabilityFullText>
</cmis:capabilities>
<cmis:cmisVersionsSupported>0.43</cmis:cmisVersionsSupported>
<cmis:repositorySpecificInformation>Welcome to ACME 99</cmis:repositorySpecificInformation>
<cmis:repositorySpecificInformation><cmisother:Local>Local Message in vendor specific schema</cmisother:Local></cmis:repositorySpecificInformation>
</cmis:repositoryInfo>
<app:collection cmis:collectionType="unfiled" href="http://www.cmis.org/rep1/unfiled">
<atom:title>unfiled collection</atom:title>
</app:collection>
<app:collection cmis:collectionType="root" href="http://www.cmis.org/rep1/root">
<app:collection cmis:collectionType="root-children" href="http://www.cmis.org/rep1/root">
<atom:title>root collection</atom:title>
</app:collection>
<app:collection cmis:collectionType="root-descendants" href="http://www.cmis.org/rep1/root-descendants">
<atom:title>root collection</atom:title>
</app:collection>
<app:collection cmis:collectionType="checkedout" href="http://www.cmis.org/rep1/checkedout">
<atom:title>checkedout collection</atom:title>
</app:collection>
<app:collection cmis:collectionType="types" href="http://www.cmis.org/rep1/types">
<app:collection cmis:collectionType="types-children" href="http://www.cmis.org/rep1/types">
<atom:title>type collection</atom:title>
</app:collection>
<app:collection cmis:collectionType="types-descendants" href="http://www.cmis.org/rep1/types-descendants">
<atom:title>type collection</atom:title>
</app:collection>
<app:collection cmis:collectionType="query" href="http://www.cmis.org/rep1/query">
<atom:title>type collection</atom:title>
</app:collection>
</app:workspace>
</app:service>
</app:service>

View File

@@ -1,43 +1,68 @@
<?xml version="1.0" encoding="UTF-8"?>
<cmis:type xmlns:cmis="http://www.cmis.org/2008/05"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.cmis.org/2008/05 CMIS-REST.xsd ">
<cmis:objectId>documentTypeId</cmis:objectId>
<cmis:baseType>document</cmis:baseType>
<cmis:lastModifiedBy>2001-12-31T12:00:00</cmis:lastModifiedBy>
<cmis:creationDate>2001-12-31T12:00:00</cmis:creationDate>
<cmis:queryName>document</cmis:queryName>
<cmis:displayName>document</cmis:displayName>
<cmis:baseTypeQueryName>document</cmis:baseTypeQueryName>
<cmis:parentId></cmis:parentId>
<cmis:description>The document type</cmis:description>
<cmis:isCreatable>true</cmis:isCreatable>
<cmis:isFileable>true</cmis:isFileable>
<cmis:isQueryable>true</cmis:isQueryable>
<cmis:isControllable>true</cmis:isControllable>
<cmis:isVersionable>true</cmis:isVersionable>
<cmis:contentStreamAllowed>allowed</cmis:contentStreamAllowed>
<atom:entry xmlns:cmis="http://www.cmis.org/2008/05"
xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:atom="http://www.w3.org/2005/Atom"
xsi:schemaLocation="http://www.cmis.org/2008/05 CMIS.xsd http://www.w3.org/2005/Atom ATOM4CMIS.xsd">
<atom:author><atom:name>System</atom:name></atom:author>
<atom:content>Document Type</atom:content>
<atom:id>http://www.cmis.org/id1</atom:id>
<atom:title>document</atom:title>
<atom:updated>2001-12-31T12:00:00</atom:updated>
<cmis:documentType>
<cmis:typeId>documentTypeId</cmis:typeId>
<cmis:queryName>document</cmis:queryName>
<cmis:displayName>document</cmis:displayName>
<cmis:baseType>document</cmis:baseType>
<cmis:baseTypeQueryName>document</cmis:baseTypeQueryName>
<cmis:parentId></cmis:parentId>
<cmis:description>The document type</cmis:description>
<cmis:creatable>true</cmis:creatable>
<cmis:fileable>true</cmis:fileable>
<cmis:queryable>true</cmis:queryable>
<cmis:controllable>true</cmis:controllable>
<cmis:includedInSupertypeQuery>true</cmis:includedInSupertypeQuery>
<!-- optional property definitions -->
<cmis:property cmis:id="foo1">
<cmis:propertyName>foo1</cmis:propertyName>
<cmis:propertyId>propIdForFoo1</cmis:propertyId>
<cmis:displayName>foo1</cmis:displayName>
<cmis:description>Description of foo1</cmis:description>
<cmis:isInherited>false</cmis:isInherited>
<cmis:propertyType>String</cmis:propertyType>
<cmis:cardinality>Single</cmis:cardinality>
<cmis:maxLength>64</cmis:maxLength>
<cmis:choices index="1">cmis:choices</cmis:choices>
<cmis:isOpenChoice>true</cmis:isOpenChoice>
<cmis:isRequired>true</cmis:isRequired>
<cmis:defaultValue>cmis:defaultValue</cmis:defaultValue>
<cmis:updateability>ro</cmis:updateability>
<cmis:isQueryable>true</cmis:isQueryable>
<cmis:isOrderable>true</cmis:isOrderable>
</cmis:property>
<!-- optional property definitions -->
<cmis:propertyStringDefinition>
<cmis:name>foo1</cmis:name>
<cmis:id>
propIdForFoo1
</cmis:id>
<cmis:displayName>foo1</cmis:displayName>
<cmis:description>Description of foo1</cmis:description>
<cmis:propertyType>string</cmis:propertyType>
<cmis:cardinality>single</cmis:cardinality>
<cmis:updateability>readonly</cmis:updateability>
<cmis:inherited>false</cmis:inherited>
<cmis:required>true</cmis:required>
<cmis:queryable>true</cmis:queryable>
<cmis:orderable>true</cmis:orderable>
<cmis:choiceString cmis:index="0"><cmis:value>foo1</cmis:value></cmis:choiceString>
<cmis:choiceString cmis:index="1"><cmis:value>foo2</cmis:value></cmis:choiceString>
</cmis:type>
<!-- is the choice open? -->
<cmis:openChoice>true</cmis:openChoice>
<!-- default value for property -->
<cmis:defaultValue cmis:index="0"><cmis:value>default value</cmis:value></cmis:defaultValue>
<!-- extra property definition for type -->
<cmis:maxLength>1024</cmis:maxLength>
</cmis:propertyStringDefinition>
<!-- for docs -->
<cmis:versionable>true</cmis:versionable>
<cmis:contentStreamAllowed>allowed</cmis:contentStreamAllowed>
</cmis:documentType>
<!-- helps identify end of CMIS objects -->
<cmis:terminator />
</atom:entry>

View File

@@ -1,5 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema version="1.0" xml:lang="en" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/1999/xhtml" xmlns:xml="http://www.w3.org/XML/1998/namespace" elementFormDefault="qualified">
<xs:schema version="1.0" xml:lang="en"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3.org/1999/xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
elementFormDefault="qualified">
<xs:annotation>
<xs:documentation>
@@ -211,7 +216,7 @@
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="[\-+]?(\d+|\d+(\.\d+)?%)"/>
<xs:pattern value="[-+]?(\d+|\d+(\.\d+)?%)"/>
</xs:restriction>
</xs:simpleType>
@@ -222,7 +227,7 @@
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="[\-+]?(\d+|\d+(\.\d+)?%)|[1-9]?(\d+)?\*"/>
<xs:pattern value="[-+]?(\d+|\d+(\.\d+)?%)|[1-9]?(\d+)?\*"/>
</xs:restriction>
</xs:simpleType>
@@ -257,7 +262,7 @@
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="[\-+]?(\d+|\d+(\.\d+)?%)(,\s*[\-+]?(\d+|\d+(\.\d+)?%))*"/>
<xs:pattern value="[-+]?(\d+|\d+(\.\d+)?%)(,\s*[-+]?(\d+|\d+(\.\d+)?%))*"/>
</xs:restriction>
</xs:simpleType>

View File

@@ -1,145 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="en">
<xsd:schema
targetNamespace="http://www.w3.org/XML/1998/namespace"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xml:lang="en">
<xsd:attribute name="lang">
<xsd:simpleType>
<xsd:union memberTypes="xsd:language">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value=""/>
</xsd:restriction>
</xsd:simpleType>
</xsd:union>
</xsd:simpleType>
</xsd:attribute>
<xs:annotation>
<xs:documentation>
See http://www.w3.org/XML/1998/namespace.html and
http://www.w3.org/TR/REC-xml for information about this namespace.
<xsd:attribute name="space">
<xsd:simpleType>
<xsd:restriction base="xsd:NCName">
<xsd:enumeration value="default"/>
<xsd:enumeration value="preserve"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
This schema document describes the XML namespace, in a form
suitable for import by other schema documents.
Note that local names in this namespace are intended to be defined
only by the World Wide Web Consortium or its subgroups. The
following names are currently defined in this namespace and should
not be used with conflicting semantics by any Working Group,
specification, or document instance:
base (as an attribute name): denotes an attribute whose value
provides a URI to be used as the base for interpreting any
relative URIs in the scope of the element on which it
appears; its value is inherited. This name is reserved
by virtue of its definition in the XML Base specification.
id (as an attribute name): denotes an attribute whose value
should be interpreted as if declared to be of type ID.
This name is reserved by virtue of its definition in the
xml:id specification.
lang (as an attribute name): denotes an attribute whose value
is a language code for the natural language of the content of
any element; its value is inherited. This name is reserved
by virtue of its definition in the XML specification.
space (as an attribute name): denotes an attribute whose
value is a keyword indicating what whitespace processing
discipline is intended for the content of the element; its
value is inherited. This name is reserved by virtue of its
definition in the XML specification.
Father (in any context at all): denotes Jon Bosak, the chair of
the original XML Working Group. This name is reserved by
the following decision of the W3C XML Plenary and
XML Coordination groups:
In appreciation for his vision, leadership and dedication
the W3C XML Plenary on this 10th day of February, 2000
reserves for Jon Bosak in perpetuity the XML name
xml:Father
</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>This schema defines attributes and an attribute group
suitable for use by
schemas wishing to allow xml:base, xml:lang, xml:space or xml:id
attributes on elements they define.
To enable this, such a schema must import this schema
for the XML namespace, e.g. as follows:
&lt;schema . . .&gt;
. . .
&lt;import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="http://www.w3.org/2001/xml.xsd"/&gt;
Subsequently, qualified reference to any of the attributes
or the group defined below will have the desired effect, e.g.
&lt;type . . .&gt;
. . .
&lt;attributeGroup ref="xml:specialAttrs"/&gt;
<xsd:attribute name="base" type="xsd:anyURI">
<xsd:annotation>
<xsd:documentation>See http://www.w3.org/TR/xmlbase/ for
information about this attribute.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
will define a type which will schema-validate an instance
element with any of those attributes</xs:documentation>
</xs:annotation>
<xsd:attribute name="id" type="xsd:ID">
<xsd:annotation>
<xsd:documentation>See http://www.w3.org/TR/xml-id/ for
information about this attribute.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xs:annotation>
<xs:documentation>In keeping with the XML Schema WG's standard versioning
policy, this schema document will persist at
http://www.w3.org/2007/08/xml.xsd.
At the date of issue it can also be found at
http://www.w3.org/2001/xml.xsd.
The schema document at that URI may however change in the future,
in order to remain compatible with the latest version of XML Schema
itself, or with the XML namespace itself. In other words, if the XML
Schema or XML namespaces change, the version of this document at
http://www.w3.org/2001/xml.xsd will change
accordingly; the version at
http://www.w3.org/2007/08/xml.xsd will not change.
</xs:documentation>
</xs:annotation>
<xsd:attributeGroup name="specialAttrs">
<xsd:attribute ref="xml:base"/>
<xsd:attribute ref="xml:lang"/>
<xsd:attribute ref="xml:space"/>
<xsd:attribute ref="xml:id"/>
</xsd:attributeGroup>
<xs:attribute name="lang">
<xs:annotation>
<xs:documentation>Attempting to install the relevant ISO 2- and 3-letter
codes as the enumerated possible values is probably never
going to be a realistic possibility. See
RFC 3066 at http://www.ietf.org/rfc/rfc3066.txt and the IANA registry
at http://www.iana.org/assignments/lang-tag-apps.htm for
further information.
The union allows for the 'un-declaration' of xml:lang with
the empty string.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:union memberTypes="xs:language">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value=""/>
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="space">
<xs:simpleType>
<xs:restriction base="xs:NCName">
<xs:enumeration value="default"/>
<xs:enumeration value="preserve"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="base" type="xs:anyURI">
<xs:annotation>
<xs:documentation>See http://www.w3.org/TR/xmlbase/ for
information about this attribute.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="id" type="xs:ID">
<xs:annotation>
<xs:documentation>See http://www.w3.org/TR/xml-id/ for
information about this attribute.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attributeGroup name="specialAttrs">
<xs:attribute ref="xml:base"/>
<xs:attribute ref="xml:lang"/>
<xs:attribute ref="xml:space"/>
<xs:attribute ref="xml:id"/>
</xs:attributeGroup>
</xs:schema>
</xsd:schema>

View File

@@ -36,7 +36,6 @@ import javax.xml.datatype.XMLGregorianCalendar;
import org.alfresco.cmis.CMISService;
import org.alfresco.cmis.dictionary.CMISDictionaryService;
import org.alfresco.cmis.dictionary.CMISMapping;
import org.alfresco.cmis.property.CMISPropertyNameMapping;
import org.alfresco.cmis.property.CMISPropertyService;
import org.alfresco.cmis.search.CMISQueryService;
import org.alfresco.error.AlfrescoRuntimeException;
@@ -108,7 +107,7 @@ public class DMAbstractServicePort
if (filter.allow(name) && value != null)
{
PropertyBooleanType propBoolean = new PropertyBooleanType();
propBoolean.setName(CMISPropertyNameMapping.getWebServiceName(name));
propBoolean.setName(name);
propBoolean.setValue((Boolean) value);
properties.getPropertyBoolean().add(propBoolean);
}
@@ -120,7 +119,7 @@ public class DMAbstractServicePort
if (filter.allow(name) && value != null)
{
PropertyDateTimeType propDateTime = new PropertyDateTimeType();
propDateTime.setName(CMISPropertyNameMapping.getWebServiceName(name));
propDateTime.setName(name);
propDateTime.setValue(convert((Date) value));
properties.getPropertyDateTime().add(propDateTime);
}
@@ -132,7 +131,7 @@ public class DMAbstractServicePort
if (filter.allow(name) && value != null)
{
PropertyIDType propID = new PropertyIDType();
propID.setName(CMISPropertyNameMapping.getWebServiceName(name));
propID.setName(name);
propID.setValue(value.toString());
properties.getPropertyID().add(propID);
}
@@ -144,7 +143,7 @@ public class DMAbstractServicePort
if (filter.allow(name) && value != null)
{
PropertyIntegerType propInteger = new PropertyIntegerType();
propInteger.setName(CMISPropertyNameMapping.getWebServiceName(name));
propInteger.setName(name);
propInteger.setValue(BigInteger.valueOf((Long) value));
properties.getPropertyInteger().add(propInteger);
}
@@ -156,7 +155,7 @@ public class DMAbstractServicePort
if (filter.allow(name) && value != null)
{
PropertyStringType propString = new PropertyStringType();
propString.setName(CMISPropertyNameMapping.getWebServiceName(name));
propString.setName(name);
propString.setValue(value.toString());
properties.getPropertyString().add(propString);
}
@@ -179,7 +178,7 @@ public class DMAbstractServicePort
if (filter.allow(name) && value != null)
{
PropertyURIType propString = new PropertyURIType();
propString.setName(CMISPropertyNameMapping.getWebServiceName(name));
propString.setName(name);
propString.setValue(value.toString());
properties.getPropertyURI().add(propString);
}
@@ -205,7 +204,7 @@ public class DMAbstractServicePort
addBooleanProperty(properties, filter, CMISMapping.PROP_IS_LATEST_VERSION, nodeRef);
addBooleanProperty(properties, filter, CMISMapping.PROP_IS_MAJOR_VERSION, nodeRef);
addBooleanProperty(properties, filter, CMISMapping.PROP_IS_LATEST_MAJOR_VERSION, nodeRef);
addBooleanProperty(properties, filter, CMISMapping.PROP_VERSION_SERIES_IS_CHECKED_OUT, nodeRef);
addBooleanProperty(properties, filter, CMISMapping.PROP_IS_VERSION_SERIES_CHECKED_OUT, nodeRef);
addDateTimeProperty(properties, filter, CMISMapping.PROP_CREATION_DATE, nodeRef);
addDateTimeProperty(properties, filter, CMISMapping.PROP_LAST_MODIFICATION_DATE, nodeRef);
addIDProperty(properties, filter, CMISMapping.PROP_OBJECT_ID, nodeRef);
@@ -229,7 +228,7 @@ public class DMAbstractServicePort
addDateTimeProperty(properties, filter, CMISMapping.PROP_CREATION_DATE, nodeRef);
addDateTimeProperty(properties, filter, CMISMapping.PROP_LAST_MODIFICATION_DATE, nodeRef);
addIDProperty(properties, filter, CMISMapping.PROP_OBJECT_ID, nodeRef);
addIDProperty(properties, filter, CMISMapping.PROP_PARENT, nodeRef);
addIDProperty(properties, filter, CMISMapping.PROP_PARENT_ID, nodeRef);
addStringProperty(properties, filter, CMISMapping.PROP_NAME, nodeRef);
addStringProperty(properties, filter, "baseType", "folder");
addIDProperty(properties, filter, CMISMapping.PROP_OBJECT_TYPE_ID, nodeRef);

View File

@@ -27,7 +27,7 @@ package org.alfresco.repo.cmis.ws;
import java.math.BigInteger;
import java.util.List;
import org.alfresco.cmis.CMISService.TypesFilter;
import org.alfresco.cmis.CMISTypesFilterEnum;
import org.alfresco.cmis.dictionary.CMISMapping;
import org.alfresco.service.cmr.repository.NodeRef;
@@ -75,15 +75,15 @@ public class DMNavigationServicePort extends DMAbstractServicePort implements Na
switch (parameters.getType())
{
case DOCUMENTS:
listing = cmisService.getChildren(folderNodeRef, TypesFilter.Documents);
listing = cmisService.getChildren(folderNodeRef, CMISTypesFilterEnum.DOCUMENTS);
break;
case FOLDERS:
listing = cmisService.getChildren(folderNodeRef, TypesFilter.Folders);
listing = cmisService.getChildren(folderNodeRef, CMISTypesFilterEnum.FOLDERS);
break;
case POLICIES:
throw new OperationNotSupportedException("Policies listing isn't supported", ExceptionUtils.createBasicFault(null, "Policies listing isn't supported"));
case ANY:
listing = cmisService.getChildren(folderNodeRef, TypesFilter.Any);
listing = cmisService.getChildren(folderNodeRef, CMISTypesFilterEnum.ANY);
break;
}

View File

@@ -31,15 +31,15 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.alfresco.cmis.dictionary.CMISCardinality;
import org.alfresco.cmis.CMISCardinalityEnum;
import org.alfresco.cmis.CMISContentStreamAllowedEnum;
import org.alfresco.cmis.CMISFullTextSearchEnum;
import org.alfresco.cmis.CMISJoinEnum;
import org.alfresco.cmis.CMISPropertyTypeEnum;
import org.alfresco.cmis.CMISUpdatabilityEnum;
import org.alfresco.cmis.dictionary.CMISPropertyDefinition;
import org.alfresco.cmis.dictionary.CMISPropertyType;
import org.alfresco.cmis.dictionary.CMISTypeDefinition;
import org.alfresco.cmis.dictionary.CMISTypeId;
import org.alfresco.cmis.dictionary.CMISUpdatability;
import org.alfresco.cmis.dictionary.ContentStreamAllowed;
import org.alfresco.cmis.search.FullTextSearchSupport;
import org.alfresco.cmis.search.JoinSupport;
import org.alfresco.service.descriptor.Descriptor;
/**
@@ -51,49 +51,49 @@ import org.alfresco.service.descriptor.Descriptor;
@javax.jws.WebService(name = "RepositoryServicePort", serviceName = "RepositoryService", portName = "RepositoryServicePort", targetNamespace = "http://www.cmis.org/ns/1.0", endpointInterface = "org.alfresco.repo.cmis.ws.RepositoryServicePort")
public class DMRepositoryServicePort extends DMAbstractServicePort implements RepositoryServicePort
{
private static Map<FullTextSearchSupport, FulltextEnum> fulltextEnumMapping;
private static Map<JoinSupport, JoinEnum> joinEnumMapping;
private static Map<ContentStreamAllowed, ContentStreamAllowedEnum> contentStreamAllowedEnumMapping;
private static Map<CMISUpdatability, UpdatabilityEnum> updatabilityEnumMapping;
private static Map<CMISCardinality, CardinalityEnum> cardinalityEnumMapping;
private static Map<CMISPropertyType, PropertyTypeEnum> propertyTypeEnumMapping;
private static Map<CMISFullTextSearchEnum, FulltextEnum> fulltextEnumMapping;
private static Map<CMISJoinEnum, JoinEnum> joinEnumMapping;
private static Map<CMISContentStreamAllowedEnum, ContentStreamAllowedEnum> contentStreamAllowedEnumMapping;
private static Map<CMISUpdatabilityEnum, UpdatabilityEnum> updatabilityEnumMapping;
private static Map<CMISCardinalityEnum, CardinalityEnum> cardinalityEnumMapping;
private static Map<CMISPropertyTypeEnum, PropertyTypeEnum> propertyTypeEnumMapping;
static
{
fulltextEnumMapping = new HashMap<FullTextSearchSupport, FulltextEnum>();
fulltextEnumMapping.put(FullTextSearchSupport.NO_FULL_TEXT, FulltextEnum.NO_FULLTEXT);
fulltextEnumMapping.put(FullTextSearchSupport.FULL_TEXT_ONLY, FulltextEnum.FULLTEXT_ONLY);
fulltextEnumMapping.put(FullTextSearchSupport.FULL_TEXT_AND_STRUCTURED, FulltextEnum.FULLTEXT_AND_STRUCTURED);
fulltextEnumMapping = new HashMap<CMISFullTextSearchEnum, FulltextEnum>();
fulltextEnumMapping.put(CMISFullTextSearchEnum.NO_FULL_TEXT, FulltextEnum.NO_FULLTEXT);
fulltextEnumMapping.put(CMISFullTextSearchEnum.FULL_TEXT_ONLY, FulltextEnum.FULLTEXT_ONLY);
fulltextEnumMapping.put(CMISFullTextSearchEnum.FULL_TEXT_AND_STRUCTURED, FulltextEnum.FULLTEXT_AND_STRUCTURED);
joinEnumMapping = new HashMap<JoinSupport, JoinEnum>();
joinEnumMapping.put(JoinSupport.INNER_AND_OUTER_JOIN_SUPPORT, JoinEnum.INNER_AND_OUTER);
joinEnumMapping.put(JoinSupport.INNER_JOIN_SUPPORT, JoinEnum.INNER_ONLY);
joinEnumMapping.put(JoinSupport.NO_JOIN_SUPPORT, JoinEnum.NO_JOIN);
joinEnumMapping = new HashMap<CMISJoinEnum, JoinEnum>();
joinEnumMapping.put(CMISJoinEnum.INNER_AND_OUTER_JOIN_SUPPORT, JoinEnum.INNER_AND_OUTER);
joinEnumMapping.put(CMISJoinEnum.INNER_JOIN_SUPPORT, JoinEnum.INNER_ONLY);
joinEnumMapping.put(CMISJoinEnum.NO_JOIN_SUPPORT, JoinEnum.NO_JOIN);
contentStreamAllowedEnumMapping = new HashMap<ContentStreamAllowed, ContentStreamAllowedEnum>();
contentStreamAllowedEnumMapping.put(ContentStreamAllowed.ALLOWED, ContentStreamAllowedEnum.ALLOWED);
contentStreamAllowedEnumMapping.put(ContentStreamAllowed.NOT_ALLOWED, ContentStreamAllowedEnum.NOT_ALLOWED);
contentStreamAllowedEnumMapping.put(ContentStreamAllowed.REQUIRED, ContentStreamAllowedEnum.REQUIRED);
contentStreamAllowedEnumMapping = new HashMap<CMISContentStreamAllowedEnum, ContentStreamAllowedEnum>();
contentStreamAllowedEnumMapping.put(CMISContentStreamAllowedEnum.ALLOWED, ContentStreamAllowedEnum.ALLOWED);
contentStreamAllowedEnumMapping.put(CMISContentStreamAllowedEnum.NOT_ALLOWED, ContentStreamAllowedEnum.NOT_ALLOWED);
contentStreamAllowedEnumMapping.put(CMISContentStreamAllowedEnum.REQUIRED, ContentStreamAllowedEnum.REQUIRED);
updatabilityEnumMapping = new HashMap<CMISUpdatability, UpdatabilityEnum>();
updatabilityEnumMapping.put(CMISUpdatability.READ_AND_WRITE, UpdatabilityEnum.READ_WRITE);
updatabilityEnumMapping.put(CMISUpdatability.READ_AND_WRITE_WHEN_CHECKED_OUT, UpdatabilityEnum.READ_WRITE_WHEN_CHECKED_OUT);
updatabilityEnumMapping.put(CMISUpdatability.READ_ONLY, UpdatabilityEnum.READ_ONLY);
updatabilityEnumMapping = new HashMap<CMISUpdatabilityEnum, UpdatabilityEnum>();
updatabilityEnumMapping.put(CMISUpdatabilityEnum.READ_AND_WRITE, UpdatabilityEnum.READ_WRITE);
updatabilityEnumMapping.put(CMISUpdatabilityEnum.READ_AND_WRITE_WHEN_CHECKED_OUT, UpdatabilityEnum.READ_WRITE_WHEN_CHECKED_OUT);
updatabilityEnumMapping.put(CMISUpdatabilityEnum.READ_ONLY, UpdatabilityEnum.READ_ONLY);
cardinalityEnumMapping = new HashMap<CMISCardinality, CardinalityEnum>();
cardinalityEnumMapping.put(CMISCardinality.MULTI_VALUED, CardinalityEnum.MULTI_VALUED);
cardinalityEnumMapping.put(CMISCardinality.SINGLE_VALUED, CardinalityEnum.SINGLE_VALUED);
cardinalityEnumMapping = new HashMap<CMISCardinalityEnum, CardinalityEnum>();
cardinalityEnumMapping.put(CMISCardinalityEnum.MULTI_VALUED, CardinalityEnum.MULTI_VALUED);
cardinalityEnumMapping.put(CMISCardinalityEnum.SINGLE_VALUED, CardinalityEnum.SINGLE_VALUED);
propertyTypeEnumMapping = new HashMap<CMISPropertyType, PropertyTypeEnum>();
propertyTypeEnumMapping.put(CMISPropertyType.Boolean, PropertyTypeEnum.BOOLEAN);
propertyTypeEnumMapping.put(CMISPropertyType.DateTime, PropertyTypeEnum.DATE_TIME);
propertyTypeEnumMapping.put(CMISPropertyType.Decimal, PropertyTypeEnum.DECIMAL);
propertyTypeEnumMapping.put(CMISPropertyType.HTML, PropertyTypeEnum.HTML);
propertyTypeEnumMapping.put(CMISPropertyType.ID, PropertyTypeEnum.ID);
propertyTypeEnumMapping.put(CMISPropertyType.Integer, PropertyTypeEnum.INTEGER);
propertyTypeEnumMapping.put(CMISPropertyType.String, PropertyTypeEnum.STRING);
propertyTypeEnumMapping.put(CMISPropertyType.URI, PropertyTypeEnum.URI);
propertyTypeEnumMapping.put(CMISPropertyType.XML, PropertyTypeEnum.XML);
propertyTypeEnumMapping = new HashMap<CMISPropertyTypeEnum, PropertyTypeEnum>();
propertyTypeEnumMapping.put(CMISPropertyTypeEnum.BOOLEAN, PropertyTypeEnum.BOOLEAN);
propertyTypeEnumMapping.put(CMISPropertyTypeEnum.DATETIME, PropertyTypeEnum.DATE_TIME);
propertyTypeEnumMapping.put(CMISPropertyTypeEnum.DECIMAL, PropertyTypeEnum.DECIMAL);
propertyTypeEnumMapping.put(CMISPropertyTypeEnum.HTML, PropertyTypeEnum.HTML);
propertyTypeEnumMapping.put(CMISPropertyTypeEnum.ID, PropertyTypeEnum.ID);
propertyTypeEnumMapping.put(CMISPropertyTypeEnum.INTEGER, PropertyTypeEnum.INTEGER);
propertyTypeEnumMapping.put(CMISPropertyTypeEnum.STRING, PropertyTypeEnum.STRING);
propertyTypeEnumMapping.put(CMISPropertyTypeEnum.URI, PropertyTypeEnum.URI);
propertyTypeEnumMapping.put(CMISPropertyTypeEnum.XML, PropertyTypeEnum.XML);
}
public List<RepositoryType> getRepositories() throws RuntimeException, InvalidArgumentException, OperationNotSupportedException, UpdateConflictException,
@@ -102,7 +102,6 @@ public class DMRepositoryServicePort extends DMAbstractServicePort implements Re
RepositoryType repositoryType = new RepositoryType();
Descriptor serverDescriptor = descriptorService.getCurrentRepositoryDescriptor();
repositoryType.setRepositoryID(serverDescriptor.getId());
System.out.println("**** ID: " + serverDescriptor.getId());
repositoryType.setRepositoryName(serverDescriptor.getName());
return Collections.singletonList(repositoryType);
}

View File

@@ -25,10 +25,15 @@
package org.alfresco.repo.web.scripts;
import java.io.IOException;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
import java.util.Map;
import junit.framework.AssertionFailedError;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestListener;
import junit.textui.ResultPrinter;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
@@ -47,8 +52,6 @@ import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.PutMethod;
import org.apache.commons.httpclient.params.HttpClientParams;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* Base unit test class for web scripts.
@@ -57,14 +60,111 @@ import org.apache.commons.logging.LogFactory;
*/
public abstract class BaseWebScriptTest extends TestCase
{
// Logger
private static final Log logger = LogFactory.getLog(BaseWebScriptTest.class);
// Test Listener
private WebScriptTestListener listener = null;
private boolean traceReqRes = false;
/** Local / Remote Server access */
private String defaultRunAs = null;
private RemoteServer remoteServer = null;
private HttpClient httpClient = null;
/**
* Web Script Test Listener
*/
public static interface WebScriptTestListener extends TestListener
{
public void addLog(Test test, String log);
}
/**
* Default Test Listener
*/
public static class BaseWebScriptTestListener extends ResultPrinter implements WebScriptTestListener
{
/**
* Construct
*
* @param writer
*/
public BaseWebScriptTestListener(PrintStream writer)
{
super(writer);
}
/* (non-Javadoc)
* @see junit.textui.ResultPrinter#addError(junit.framework.Test, java.lang.Throwable)
*/
@Override
public void addError(Test test, Throwable t)
{
getWriter().println("*** Error: " + ((BaseWebScriptTest)test).getName());
t.printStackTrace(getWriter());
}
/* (non-Javadoc)
* @see junit.textui.ResultPrinter#addFailure(junit.framework.Test, junit.framework.AssertionFailedError)
*/
@Override
public void addFailure(Test test, AssertionFailedError t)
{
getWriter().println("*** Failed: " + ((BaseWebScriptTest)test).getName());
t.printStackTrace(getWriter());
}
/* (non-Javadoc)
* @see junit.textui.ResultPrinter#endTest(junit.framework.Test)
*/
@Override
public void endTest(Test test)
{
getWriter().println();
getWriter().println("*** Test completed: " + ((BaseWebScriptTest)test).getName());
}
/* (non-Javadoc)
* @see junit.textui.ResultPrinter#startTest(junit.framework.Test)
*/
@Override
public void startTest(Test test)
{
getWriter().println();
getWriter().println("*** Test started: " + ((BaseWebScriptTest)test).getName() + " (remote: " + (((BaseWebScriptTest)test).getRemoteServer() != null));
}
/**
* Add an arbitrary log statement
*
* @param test
* @param log
*/
public void addLog(Test test, String log)
{
this.getWriter().println(log);
}
}
/**
* Sets Test Listener
*
* @param resultPrinter
*/
public void setListener(WebScriptTestListener listener)
{
this.listener = listener;
}
/**
* Sets whether to trace request / response bodies
*
* @param traceReqRes
*/
public void setTraceReqRes(boolean traceReqRes)
{
this.traceReqRes = traceReqRes;
}
/**
* Set Remote Server context
*
@@ -74,6 +174,16 @@ public abstract class BaseWebScriptTest extends TestCase
{
remoteServer = server;
}
/**
* Gets Remote Server
*
* @return
*/
public RemoteServer getRemoteServer()
{
return remoteServer;
}
/**
* Set Local Run As User
@@ -97,7 +207,6 @@ public abstract class BaseWebScriptTest extends TestCase
httpClient.getState().setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT), new UsernamePasswordCredentials(remoteServer.username, remoteServer.password));
}
}
/** Test web script server */
private static TestWebScriptServer server = null;
@@ -111,6 +220,28 @@ public abstract class BaseWebScriptTest extends TestCase
return BaseWebScriptTest.server;
}
/**
* Is Log Enabled?
*
* @return true => enabled
*/
protected boolean isLogEnabled()
{
return listener != null;
}
/**
* Log Message to Test Listener
*
* @param log
*/
protected void log(String log)
{
if (listener != null)
{
listener.addLog(this, log);
}
}
/**
* Send Request to Test Web Script Server (as admin)
@@ -138,8 +269,11 @@ public abstract class BaseWebScriptTest extends TestCase
protected Response sendRequest(Request req, int expectedStatus, String asUser)
throws IOException
{
if (logger.isInfoEnabled())
logger.info("Request: " + req.getMethod() + " " + req.getFullUri() + (req.getBody() == null ? "" : "\n" + new String(req.getBody())));
if (traceReqRes && isLogEnabled())
{
log("");
log("* Request: " + req.getMethod() + " " + req.getFullUri() + (req.getBody() == null ? "" : "\n" + new String(req.getBody())));
}
Response res = null;
if (remoteServer == null)
@@ -151,15 +285,14 @@ public abstract class BaseWebScriptTest extends TestCase
res = sendRemoteRequest(req, expectedStatus);
}
if (logger.isInfoEnabled())
logger.info("Response: " + res.getStatus() + " " + req.getMethod() + " " + req.getFullUri() + "\n" + res.getContentAsString());
if (traceReqRes && isLogEnabled())
{
log("");
log("* Response: " + res.getStatus() + " " + req.getMethod() + " " + req.getFullUri() + "\n" + res.getContentAsString());
}
if (expectedStatus > 0 && expectedStatus != res.getStatus())
{
// if (res.getStatus() == 500)
// {
// System.out.println(res.getContentAsString());
// }
fail("Status code " + res.getStatus() + " returned, but expected " + expectedStatus + " for " + req.getFullUri() + " (" + req.getMethod() + ")\n" + res.getContentAsString());
}