From 07beefbee79208d6f3d4923b7e05eece3e94ec6c Mon Sep 17 00:00:00 2001 From: Alan Davis Date: Wed, 12 Feb 2014 14:01:07 +0000 Subject: [PATCH] Merged HEAD-BUG-FIX (4.3/Cloud) to HEAD (4.3/Cloud) 60578: Merged V4.2-BUG-FIX (4.2.2) to HEAD-BUG-FIX (Cloud/4.3) 60246: Merged DEV to V4.2-BUG-FIX 59624 : MNT-10176 : Cmisaction:setContent: No minor version created Create a new version when execute "Set content stream" or "update properties" actions in CMIS workbench. Add new unit test. 59749 : Merged DEV 59276 : MNT-10175 : CMIS 1.1 API: Two versions are created after appending content stream with isLastChunk=true Create new version of document only on appending last chunk of content 59656 : MNT-10175 : CMIS 1.1 API: Two versions are created after appending content stream with isLastChunk=true Test for versioning around content appending 60185 : MNT-10176 : Cmisaction:setContent: No minor version created Fix some unit test. 60218 : MNT-10176 : Cmisaction:setContent: No minor version created Corrected TestCMIS.testVersioning. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@62312 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../alfresco/opencmis/AlfrescoCmisServiceImpl.java | 12 ++++++++++++ source/java/org/alfresco/opencmis/CMISConnector.java | 9 +++++---- source/test-java/org/alfresco/opencmis/CMISTest.java | 12 +++++++++++- 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/source/java/org/alfresco/opencmis/AlfrescoCmisServiceImpl.java b/source/java/org/alfresco/opencmis/AlfrescoCmisServiceImpl.java index 98a633a705..b745a8c871 100644 --- a/source/java/org/alfresco/opencmis/AlfrescoCmisServiceImpl.java +++ b/source/java/org/alfresco/opencmis/AlfrescoCmisServiceImpl.java @@ -1382,6 +1382,12 @@ public class AlfrescoCmisServiceImpl extends AbstractCmisService implements Alfr removeTempFile(tempFile); } + // MNT-10176 Cmisaction:setContent; The properties don't update. + if (connector.getNodeService().exists(nodeRef) && connector.getNodeService().hasAspect(nodeRef, ContentModel.ASPECT_VERSIONABLE)) + { + connector.createVersion(nodeRef, VersionType.MINOR, "Set content stream"); + } + objectId.setValue(connector.createObjectId(nodeRef)); connector.getActivityPoster().postFileFolderUpdated(info.isFolder(), nodeRef); @@ -1490,6 +1496,12 @@ public class AlfrescoCmisServiceImpl extends AbstractCmisService implements Alfr connector.setProperties(nodeRef, info.getType(), properties, new String[0]); + // MNT-10176 Cmisaction:setContent; The properties don't update. + if(connector.getNodeService().exists(nodeRef) && connector.getNodeService().hasAspect(nodeRef, ContentModel.ASPECT_VERSIONABLE)) + { + connector.createVersion(nodeRef, VersionType.MINOR, "Update properties"); + } + objectId.setValue(connector.createObjectId(nodeRef)); boolean isObjectInfoRequired = getContext().isObjectInfoRequired(); diff --git a/source/java/org/alfresco/opencmis/CMISConnector.java b/source/java/org/alfresco/opencmis/CMISConnector.java index 612e96206e..3191233d88 100644 --- a/source/java/org/alfresco/opencmis/CMISConnector.java +++ b/source/java/org/alfresco/opencmis/CMISConnector.java @@ -1205,7 +1205,7 @@ public class CMISConnector implements ApplicationContextAware, ApplicationListen return sb.toString(); } - private void createVersion(NodeRef nodeRef, VersionType versionType, String reason) + public void createVersion(NodeRef nodeRef, VersionType versionType, String reason) { if(versionService.getVersionHistory(nodeRef) == null) { @@ -1674,11 +1674,10 @@ public class CMISConnector implements ApplicationContextAware, ApplicationListen { NodeRef nodeRef = nodeInfo.getNodeRef(); + this.disableBehaviour(ContentModel.ASPECT_VERSIONABLE, nodeRef); + if(!nodeService.hasAspect(nodeRef, ContentModel.ASPECT_CMIS_UPDATE_CONTEXT)) { - // version on first chunk - createVersion(nodeRef, VersionType.MINOR, "Append content stream"); - Map props = new HashMap(); props.put(ContentModel.PROP_GOT_FIRST_CHUNK, true); nodeService.addAspect(nodeRef, ContentModel.ASPECT_CMIS_UPDATE_CONTEXT, props); @@ -1723,6 +1722,8 @@ public class CMISConnector implements ApplicationContextAware, ApplicationListen { out.close(); } + + this.enableBehaviour(ContentModel.ASPECT_VERSIONABLE, nodeRef); } } diff --git a/source/test-java/org/alfresco/opencmis/CMISTest.java b/source/test-java/org/alfresco/opencmis/CMISTest.java index 0967e6f130..b1cb2e4555 100644 --- a/source/test-java/org/alfresco/opencmis/CMISTest.java +++ b/source/test-java/org/alfresco/opencmis/CMISTest.java @@ -495,7 +495,17 @@ public class CMISTest // checkout/checkin object with mimetype and encoding { - objectIdHolder.setValue(objectId); + ObjectData objectDa = withCmisService(new CmisServiceCallback() + { + @Override + public ObjectData execute(CmisService cmisService) + { + return cmisService.getObjectByPath(repositoryId, path, null, false, IncludeRelationships.NONE, null, false, false, null); + } + }); + + + objectIdHolder.setValue(objectDa.getId()); withCmisService(new CmisServiceCallback() { @Override