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; }