From 33a3c91e994bb0dd4b00ffd3369f5faeffc64dd9 Mon Sep 17 00:00:00 2001 From: Martin Muller Date: Fri, 5 Aug 2016 13:49:42 +0000 Subject: [PATCH] Merged RETURN-OF-THE-API (5.2.0) to 5.2.N (5.2.1) 129050 jvonka: V1 REST API: fix 500 (NPE) when trying to get a version (info or content) for a node that has no version history REPO-1051, REPO-327, REPO-229 git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@129194 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../rest/api/nodes/NodeVersionsRelation.java | 7 ++++++- .../rest/api/tests/NodeVersionsApiTest.java | 20 +++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/source/java/org/alfresco/rest/api/nodes/NodeVersionsRelation.java b/source/java/org/alfresco/rest/api/nodes/NodeVersionsRelation.java index fcd0a55275..95b4fbca5f 100644 --- a/source/java/org/alfresco/rest/api/nodes/NodeVersionsRelation.java +++ b/source/java/org/alfresco/rest/api/nodes/NodeVersionsRelation.java @@ -282,6 +282,11 @@ public class NodeVersionsRelation extends AbstractNodeRelation implements private Version findVersion(String nodeId, String versionLabelId) { NodeRef nodeRef = nodes.validateOrLookupNode(nodeId, null); - return versionService.getVersionHistory(nodeRef).getVersion(versionLabelId); + VersionHistory vh = versionService.getVersionHistory(nodeRef); + if (vh != null) + { + return vh.getVersion(versionLabelId); + } + return null; } } diff --git a/source/test-java/org/alfresco/rest/api/tests/NodeVersionsApiTest.java b/source/test-java/org/alfresco/rest/api/tests/NodeVersionsApiTest.java index 30ecd14e54..7c6638bdd1 100644 --- a/source/test-java/org/alfresco/rest/api/tests/NodeVersionsApiTest.java +++ b/source/test-java/org/alfresco/rest/api/tests/NodeVersionsApiTest.java @@ -1128,7 +1128,27 @@ public class NodeVersionsApiTest extends AbstractSingleNetworkSiteTest // -ve test - unknown node getAll(getNodeVersionsUrl("dummy"), paging, null, 404); + + // + // -ve tests for non-versionable node with no version history (could be content, folder or some other node type) + // + + // folder node - no version history + String f99Id = createFolder(f1Id, "f99").getId(); + getSingle(getNodeVersionsUrl(f99Id), "1.0", null, 404); + getSingle(getNodeVersionsUrl(f99Id), "1.0/content", null, 404); + + //content node - no version history + n = new Node(); + n.setName("z1"); + n.setNodeType(TYPE_CM_CONTENT); + response = post(getNodeChildrenUrl(f1Id), toJsonAsStringNonNull(n), 201); + String z1Id = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Node.class).getId(); + + getSingle(getNodeVersionsUrl(z1Id), "1.0", null, 404); + getSingle(getNodeVersionsUrl(z1Id), "1.0/content", null, 404); } + } finally {