From 2280b0ada7c50e546d70ffd56b19ae103eeb0d36 Mon Sep 17 00:00:00 2001 From: David Caruana Date: Thu, 26 Mar 2009 19:05:28 +0000 Subject: [PATCH] CMIS Web Services: Fix retrieval of content stream for sub-types of Content. For AIIM demo. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@13756 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../repo/cmis/rest/test/CMISCustomTypeTest.java | 1 + .../repo/cmis/ws/utils/CmisObjectsUtils.java | 15 ++++++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/source/java/org/alfresco/repo/cmis/rest/test/CMISCustomTypeTest.java b/source/java/org/alfresco/repo/cmis/rest/test/CMISCustomTypeTest.java index 4857b6b68c..fb0d1aed49 100644 --- a/source/java/org/alfresco/repo/cmis/rest/test/CMISCustomTypeTest.java +++ b/source/java/org/alfresco/repo/cmis/rest/test/CMISCustomTypeTest.java @@ -117,6 +117,7 @@ public class CMISCustomTypeTest extends BaseCMISWebScriptTest props.put(QName.createQName(TEST_NAMESPACE, "Title"), "createSubTypeTitle"); props.put(QName.createQName(TEST_NAMESPACE, "Authors"), (Serializable)Arrays.asList(new String[] { "Dave", "Fred" })); nodeService.addProperties(file.getNodeRef(), props); + fileFolderService.getWriter(file.getNodeRef()).putContent("Some test content"); return null; } }, getDefaultRunAs()); diff --git a/source/java/org/alfresco/repo/cmis/ws/utils/CmisObjectsUtils.java b/source/java/org/alfresco/repo/cmis/ws/utils/CmisObjectsUtils.java index 0481098e9b..a4ad9aa4f8 100755 --- a/source/java/org/alfresco/repo/cmis/ws/utils/CmisObjectsUtils.java +++ b/source/java/org/alfresco/repo/cmis/ws/utils/CmisObjectsUtils.java @@ -29,6 +29,8 @@ import java.util.List; import org.alfresco.cmis.dictionary.CMISDictionaryService; import org.alfresco.cmis.dictionary.CMISMapping; +import org.alfresco.cmis.dictionary.CMISScope; +import org.alfresco.cmis.dictionary.CMISTypeId; import org.alfresco.model.ContentModel; import org.alfresco.repo.cmis.ws.EnumObjectType; import org.alfresco.repo.cmis.ws.InvalidArgumentException; @@ -135,7 +137,7 @@ public class CmisObjectsUtils return result; } - throw new InvalidArgumentException("Unexpected object type of the specified Object Identifier"); + throw new InvalidArgumentException("Unexpected object type of the specified Object Identifier " + identifier); } public void deleteFolder(NodeRef folderNodeReference, boolean continueOnFailure, boolean totalDeletion, List resultList) @@ -352,13 +354,16 @@ public class CmisObjectsUtils private AlfrescoObjectType determineActualObjectType(AlfrescoObjectType expectedType, QName objectType) { - if (expectedType != AlfrescoObjectType.DOCUMENT_OR_FOLDER_OBJECT) + CMISTypeId typeId = cmisMapping.getCmisTypeId(objectType); + if ((expectedType == AlfrescoObjectType.DOCUMENT_OBJECT || expectedType == AlfrescoObjectType.DOCUMENT_OR_FOLDER_OBJECT) + && typeId.getScope() == CMISScope.DOCUMENT) { - return AlfrescoObjectType.fromValue(objectType.toString()); + return expectedType; } - else if (DOCUMENT_AND_FOLDER_TYPES.contains(objectType)) + if ((expectedType == AlfrescoObjectType.FOLDER_OBJECT || expectedType == AlfrescoObjectType.DOCUMENT_OR_FOLDER_OBJECT) + && typeId.getScope() == CMISScope.FOLDER) { - return AlfrescoObjectType.DOCUMENT_OR_FOLDER_OBJECT; + return expectedType; } return AlfrescoObjectType.ANY_OBJECT; }