diff --git a/src/main/java/org/alfresco/opencmis/AlfrescoCmisServiceImpl.java b/src/main/java/org/alfresco/opencmis/AlfrescoCmisServiceImpl.java index 937d54064e..95e895b775 100644 --- a/src/main/java/org/alfresco/opencmis/AlfrescoCmisServiceImpl.java +++ b/src/main/java/org/alfresco/opencmis/AlfrescoCmisServiceImpl.java @@ -2385,18 +2385,6 @@ public class AlfrescoCmisServiceImpl extends AbstractCmisService implements Alfr // what kind of object is it? CMISNodeInfo info = getOrCreateNodeInfo(versionSeriesId, "Version Series"); - // when webservices binding is used, objectId points to null and versionSeriesId points to original node instead of PWC - // see MNT-13839 - if (objectId == null) - { - info = getOrCreateNodeInfo(versionSeriesId); - if (info.hasPWC()) - { - NodeRef nodeRef = info.getNodeRef(); - info = getOrCreateNodeInfo(connector.getCheckOutCheckInService().getWorkingCopy(nodeRef).toString()); - } - } - if (!info.isVariant(CMISObjectVariant.CURRENT_VERSION)) { // the version series id is the id of current version, which is a diff --git a/src/test/java/org/alfresco/opencmis/CMISTest.java b/src/test/java/org/alfresco/opencmis/CMISTest.java index 3bf2d5320d..4cd74da136 100644 --- a/src/test/java/org/alfresco/opencmis/CMISTest.java +++ b/src/test/java/org/alfresco/opencmis/CMISTest.java @@ -3920,4 +3920,61 @@ public class CMISTest AuthenticationUtil.popAuthentication(); } } + /* + * REPO-3627 / MNT-19630: CMIS: Unable to call getAllVersions() if node is checked out and if binding type is WSDL + * + * For WS binding the getAllVersions call is made with null objectId + */ + @Test + public void getAllVersionsWithNullObjectId() + { + AuthenticationUtil.pushAuthentication(); + AuthenticationUtil.setFullyAuthenticatedUser(AuthenticationUtil.getAdminUserName()); + + // Create folder with file + String folderName = "testfolder" + GUID.generate(); + String docName = "testdoc.txt" + GUID.generate(); + NodeRef folderRef = createContent(folderName, docName, false).getNodeRef(); + List folderFileList = fileFolderService.list(folderRef); + final NodeRef fileRef = folderFileList.get(0).getNodeRef(); + + // Create new version for file + transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() + { + @Override + public Void execute() throws Throwable + { + // create a new version + versionService.createVersion(fileRef, null); + + return null; + } + }); + + // Checkout document and get all versions + List versions = withCmisService(new CmisServiceCallback>() + { + @Override + public List execute(CmisService cmisService) + { + String repositoryId = cmisService.getRepositoryInfos(null).get(0).getId(); + ObjectData objectData = cmisService.getObjectByPath(repositoryId, "/" + folderName + "/" + docName, null, true, IncludeRelationships.NONE, null, + false, true, null); + + // Checkout + Holder objectId = new Holder(objectData.getId()); + cmisService.checkOut(repositoryId, objectId, null, new Holder(true)); + + // Call get all versions with null objectId + List versions = cmisService.getAllVersions(repositoryId, null, fileRef.toString(), null, null, null); + + return versions; + } + }); + + // Check that the correct versions are retrieved + assertEquals(2, versions.size()); + assertEquals(versions.get(0).getProperties().getProperties().get("cmis:versionLabel").getFirstValue(), "pwc"); + assertEquals(versions.get(1).getProperties().getProperties().get("cmis:versionLabel").getFirstValue(), "0.1"); + } }