Merged CMIS063 to HEAD

15242: 0.62c update: Abdera extension / AtomPub tests passing (except query)
  15277: 0.62c upgrade: AtomPub resources/links refactor
  15290: 0.62c Upgrade: AtomPub resource/link compliance.  Updated Test client / Custom Type test client / Abdera extension.
  15293: 0.62 final Upgrade: Introduce schemas and examples
  15318: 0.62 final upgrade: AtomPub server and tests updated
  15321: Fixes for CMIS custom model tests.

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@17229 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
David Caruana
2009-10-29 16:19:15 +00:00
parent f2e3183a5c
commit 1a5bb784b0
6 changed files with 48 additions and 15 deletions

View File

@@ -1,7 +1,7 @@
<model name="cmis:cmismodel" xmlns="http://www.alfresco.org/model/dictionary/1.0">
<description>CMIS Model Definitions</description>
<version>0.62c</version>
<version>0.62</version>
<imports>
<import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d" />
@@ -9,7 +9,7 @@
</imports>
<namespaces>
<namespace uri="http://www.alfresco.org/model/cmis/0.62c" prefix="cmis" />
<namespace uri="http://www.alfresco.org/model/cmis/0.62" prefix="cmis" />
</namespaces>
<data-types>
@@ -165,7 +165,7 @@
</properties>
</type>
<type name="cmis:Document">
<type name="cmis:document">
<title>Document</title>
<description>Document Type</description>
<parent>cmis:filesystemobject</parent>
@@ -311,7 +311,7 @@
</properties>
</type>
<type name="cmis:Folder">
<type name="cmis:folder">
<title>Folder</title>
<description>Folder Type</description>
<parent>cmis:filesystemobject</parent>
@@ -350,7 +350,7 @@
</properties>
</type>
<type name="cmis:Relationship">
<type name="cmis:relationship">
<title>Relationship</title>
<description>Relationship Type</description>
<parent>cmis:object</parent>
@@ -376,7 +376,7 @@
</properties>
</type>
<type name="cmis:Policy">
<type name="cmis:policy">
<title>Policy</title>
<description>Policy Type</description>
<parent>cmis:object</parent>

View File

@@ -47,7 +47,8 @@ public enum CMISAllowedActionEnum implements EnumLabel
CAN_GET_CONTENT_STREAM("canGetContentStream"),
CAN_UPDATE_PROPERTIES("canUpdateProperties"),
CAN_MOVE_OBJECT("canMoveObject"),
CAN_DELETE_OBJECT("canDelete"), // TODO: ISSUE - should be canDeleteObject
CAN_DELETE_OBJECT("canDeleteObject"),
CAN_DELETE_TREE("canDeleteTree"),
CAN_SET_CONTENT_STREAM("canSetContentStream"),
CAN_DELETE_CONTENT_STREAM("canDeleteContentStream"),

View File

@@ -67,6 +67,11 @@ public interface CMISDictionaryService
*/
public CMISTypeDefinition findTypeForTable(String tableName);
/**
* Get Base Types
*/
public Collection<CMISTypeDefinition> getBaseTypes();
/**
* Get all Types
*

View File

@@ -127,6 +127,7 @@ public abstract class CMISAbstractDictionaryService extends AbstractLifecycleBea
Map<CMISTypeId, CMISAbstractTypeDefinition> objectDefsByTypeId = new HashMap<CMISTypeId, CMISAbstractTypeDefinition>();
Map<CMISTypeId, CMISTypeDefinition> typeDefsByTypeId = new HashMap<CMISTypeId, CMISTypeDefinition>();
Map<String, CMISTypeDefinition> typeDefsByTable = new HashMap<String, CMISTypeDefinition>();
List<CMISTypeDefinition> baseTypes = new ArrayList<CMISTypeDefinition>();
// Property Definitions Index
Map<String, CMISPropertyDefinition> propDefsById = new HashMap<String, CMISPropertyDefinition>();
@@ -212,6 +213,7 @@ public abstract class CMISAbstractDictionaryService extends AbstractLifecycleBea
StringBuilder builder = new StringBuilder();
builder.append("DictionaryRegistry[");
builder.append("Types=").append(typeDefsByTypeId.size()).append(", ");
builder.append("Base Types=").append(baseTypes.size()).append(", ");
builder.append("Properties=").append(propDefsByPropId.size());
builder.append("]");
return builder.toString();
@@ -308,6 +310,15 @@ public abstract class CMISAbstractDictionaryService extends AbstractLifecycleBea
return typeDef;
}
/*
* (non-Javadoc)
* @see org.alfresco.cmis.CMISDictionaryService#getBaseTypes()
*/
public Collection<CMISTypeDefinition> getBaseTypes()
{
return Collections.unmodifiableCollection(getRegistry().baseTypes);
}
/*
* (non-Javadoc)
* @see org.alfresco.cmis.dictionary.CMISDictionaryService#getAllTypes()
@@ -446,11 +457,20 @@ public abstract class CMISAbstractDictionaryService extends AbstractLifecycleBea
typeDef.assertComplete();
}
// phase 5: register base types
for (CMISAbstractTypeDefinition typeDef : registry.objectDefsByTypeId.values())
{
if (typeDef.isPublic() && typeDef.getParentType() == null)
{
registry.baseTypes.add(typeDef);
}
}
// publish new registry
registryMap.put(tenantService.getCurrentUserDomain(), registry);
if (logger.isInfoEnabled())
logger.info("Initialized CMIS Dictionary. Types:" + registry.typeDefsByTypeId.size() + ", Properties:" + registry.propDefsByPropId.size());
logger.info("Initialized CMIS Dictionary. Types:" + registry.typeDefsByTypeId.size() + ", Base Types: " + registry.baseTypes.size() + ", Properties:" + registry.propDefsByPropId.size());
}
/*

View File

@@ -30,7 +30,7 @@ import org.alfresco.cmis.mapping.BaseCMISTest;
public class CMISDictionaryTest extends BaseCMISTest
{
public void testBasicTypes()
public void testAllTypes()
{
for (CMISTypeDefinition type : cmisDictionaryService.getAllTypes())
{
@@ -38,6 +38,13 @@ public class CMISDictionaryTest extends BaseCMISTest
}
}
public void testBaseTypes()
{
for (CMISTypeDefinition type : cmisDictionaryService.getBaseTypes())
{
System.out.println(type);
}
}
public void testSubTypes()
{
for (CMISTypeDefinition type : cmisDictionaryService.getAllTypes())

View File

@@ -31,7 +31,6 @@ import java.util.Map;
import org.alfresco.cmis.CMISActionEvaluator;
import org.alfresco.cmis.CMISAllowedActionEnum;
import org.alfresco.cmis.CMISContentStreamAllowedEnum;
import org.alfresco.cmis.CMISDataTypeEnum;
import org.alfresco.cmis.CMISDictionaryModel;
import org.alfresco.cmis.CMISPropertyId;
@@ -65,7 +64,7 @@ public class CMISMapping implements InitializingBean
* The Alfresco CMIS Namespace
*/
public static String CMIS_MODEL_NS = "cmis";
public static String CMIS_MODEL_URI = "http://www.alfresco.org/model/cmis/0.62c";
public static String CMIS_MODEL_URI = "http://www.alfresco.org/model/cmis/0.62";
/**
* The Alfresco CMIS Model name.
@@ -86,10 +85,10 @@ public class CMISMapping implements InitializingBean
// CMIS Types
public static QName OBJECT_QNAME = QName.createQName(CMIS_MODEL_URI, "object");
public static QName FILESYSTEM_OBJECT_QNAME = QName.createQName(CMIS_MODEL_URI, "filesystemobject");
public static QName DOCUMENT_QNAME = QName.createQName(CMIS_MODEL_URI, "Document");
public static QName FOLDER_QNAME = QName.createQName(CMIS_MODEL_URI, "Folder");
public static QName RELATIONSHIP_QNAME = QName.createQName(CMIS_MODEL_URI, "Relationship");
public static QName POLICY_QNAME = QName.createQName(CMIS_MODEL_URI, "Policy");
public static QName DOCUMENT_QNAME = QName.createQName(CMIS_MODEL_URI, "document");
public static QName FOLDER_QNAME = QName.createQName(CMIS_MODEL_URI, "folder");
public static QName RELATIONSHIP_QNAME = QName.createQName(CMIS_MODEL_URI, "relationship");
public static QName POLICY_QNAME = QName.createQName(CMIS_MODEL_URI, "policy");
// CMIS Internal Type Ids
public static CMISTypeId OBJECT_TYPE_ID = new CMISTypeId(CMISScope.OBJECT, OBJECT_QNAME, CMIS_MODEL_NS + ":" + OBJECT_QNAME.getLocalName(), OBJECT_QNAME);
@@ -242,6 +241,7 @@ public class CMISMapping implements InitializingBean
registerEvaluator(CMISScope.FOLDER, new PermissionActionEvaluator(serviceRegistry, CMISAllowedActionEnum.CAN_CREATE_FOLDER, PermissionService.CREATE_CHILDREN));
registerEvaluator(CMISScope.FOLDER, new PermissionActionEvaluator(serviceRegistry, CMISAllowedActionEnum.CAN_CREATE_RELATIONSHIP, PermissionService.CREATE_ASSOCIATIONS));
registerEvaluator(CMISScope.FOLDER, new FixedValueActionEvaluator(serviceRegistry, CMISAllowedActionEnum.CAN_CREATE_POLICY, false));
registerEvaluator(CMISScope.FOLDER, new PermissionActionEvaluator(serviceRegistry, CMISAllowedActionEnum.CAN_DELETE_TREE, PermissionService.DELETE_NODE));
registerEvaluator(CMISScope.FOLDER, new FixedValueActionEvaluator(serviceRegistry, CMISAllowedActionEnum.CAN_GET_ACL, false));
registerEvaluator(CMISScope.FOLDER, new FixedValueActionEvaluator(serviceRegistry, CMISAllowedActionEnum.CAN_APPLY_ACL, false));