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