From cd339edad4882e2b50710f285bf30d71819bf78f Mon Sep 17 00:00:00 2001 From: David Caruana Date: Tue, 2 Mar 2010 18:08:21 +0000 Subject: [PATCH] Update to latest Chemistry TCK for new relationship tests - also fix relationship issues as found by relationship tests git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@18954 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- config/alfresco/model/cmisModel.xml | 2 +- .../public-services-security-context.xml | 1 + .../cmis/mapping/CMISServicesImpl.java | 20 +++++++++++++------ 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/config/alfresco/model/cmisModel.xml b/config/alfresco/model/cmisModel.xml index 583ce20702..1a23e46f06 100644 --- a/config/alfresco/model/cmisModel.xml +++ b/config/alfresco/model/cmisModel.xml @@ -334,7 +334,7 @@ Relationship Relationship Type - cmis:object + cmis:filesystemobject Source Id diff --git a/config/alfresco/public-services-security-context.xml b/config/alfresco/public-services-security-context.xml index a227d72f73..18798e8b3f 100644 --- a/config/alfresco/public-services-security-context.xml +++ b/config/alfresco/public-services-security-context.xml @@ -378,6 +378,7 @@ org.alfresco.service.cmr.repository.NodeService.removeAssociation=ACL_ALLOW org.alfresco.service.cmr.repository.NodeService.getTargetAssocs=ACL_ALLOW org.alfresco.service.cmr.repository.NodeService.getSourceAssocs=ACL_ALLOW + org.alfresco.service.cmr.repository.NodeService.getAssoc=ACL_ALLOW org.alfresco.service.cmr.repository.NodeService.getPath=ACL_NODE.0.sys:base.ReadProperties org.alfresco.service.cmr.repository.NodeService.getPaths=ACL_NODE.0.sys:base.ReadProperties org.alfresco.service.cmr.repository.NodeService.getStoreArchiveNode=ACL_NODE.0.sys:base.Read diff --git a/source/java/org/alfresco/cmis/mapping/CMISServicesImpl.java b/source/java/org/alfresco/cmis/mapping/CMISServicesImpl.java index 09ab404dab..8043ede029 100644 --- a/source/java/org/alfresco/cmis/mapping/CMISServicesImpl.java +++ b/source/java/org/alfresco/cmis/mapping/CMISServicesImpl.java @@ -1129,7 +1129,7 @@ public class CMISServicesImpl implements CMISServices, ApplicationContextAware, } Object object = getReadableObject(objectId, Object.class); - NodeRef result; + Object result; // Map version nodes back to their source node if (object instanceof Version) { @@ -1148,14 +1148,22 @@ public class CMISServicesImpl implements CMISServices, ApplicationContextAware, { result = nodeRef; } + if (isVersionable) + { + validateVersionable((NodeRef)result); + } + } + else if (requiredType.isAssignableFrom(object.getClass())) + { + if (isVersionable) + { + throw new CMISConstraintException(objectId + " is not versionable"); + } + result = object; } else { - throw new CMISConstraintException("Object " + objectId + " is not of required type"); - } - if (isVersionable) - { - validateVersionable(result); + throw new CMISConstraintException("Object " + objectId + " is not of required type"); } return (T)result; }