From 3cec0ef7956c6b99cc87773ca0652d8b96498f1d Mon Sep 17 00:00:00 2001 From: Nicola Fulvio Calabria <nicola.calabria@inaf.it> Date: Sun, 17 Jan 2021 20:01:36 +0100 Subject: [PATCH] Bug #3612 - Fixed method getParentPath() in CreateNodeController class. Passes testSubPath() test in CreateNodeControllerTest now. --- .../oats/vospace/CreateNodeController.java | 23 +++++++++++++++---- .../vospace/CreateNodeControllerTest.java | 2 +- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/main/java/it/inaf/oats/vospace/CreateNodeController.java b/src/main/java/it/inaf/oats/vospace/CreateNodeController.java index 1641824..1979ee7 100644 --- a/src/main/java/it/inaf/oats/vospace/CreateNodeController.java +++ b/src/main/java/it/inaf/oats/vospace/CreateNodeController.java @@ -63,8 +63,8 @@ public class CreateNodeController extends BaseNodeController { List<String> nodeGroups = Arrays.asList(groupWritePropValues.get(0).split(" ", -1)); - if (userGroups == null || - !nodeGroups.stream().anyMatch((i) -> userGroups.contains(i))) { + if (userGroups == null + || !nodeGroups.stream().anyMatch((i) -> userGroups.contains(i))) { // If groups don't match check ownership at least List<String> nodeOwner = getNodePropertyByURI(parentNode, "ivo://ivoa.net/vospace/core#creator"); @@ -114,13 +114,26 @@ public class CreateNodeController extends BaseNodeController { } + // This method assumes that URL is in the format /node1/node2/... + // multiple slashes as a single separator are allowed + // But the output has only single slash separators private String getParentPath(String path) { - String[] parsedPath = path.split("/"); + + String[] parsedPath = path.split("[/]+"); + + if (parsedPath.length < 2 || !parsedPath[0].isEmpty()) { + throw new IllegalArgumentException(); + } StringBuilder sb = new StringBuilder(); + sb.append("/"); - for (int i = 0; i < parsedPath.length - 1; i++) { - sb.append("/").append(parsedPath[i]); + System.out.println(parsedPath.length); + for (int i = 1; i < parsedPath.length - 1; i++) { + sb.append(parsedPath[i]); + if (i < parsedPath.length - 2) { + sb.append("/"); + } } return sb.toString(); diff --git a/src/test/java/it/inaf/oats/vospace/CreateNodeControllerTest.java b/src/test/java/it/inaf/oats/vospace/CreateNodeControllerTest.java index 7439a9a..d812ef1 100644 --- a/src/test/java/it/inaf/oats/vospace/CreateNodeControllerTest.java +++ b/src/test/java/it/inaf/oats/vospace/CreateNodeControllerTest.java @@ -278,7 +278,7 @@ public class CreateNodeControllerTest { verifyArguments(); } - //@Test + @Test public void testSubPath() throws Exception { String requestBody = getResourceFileContent("create-unstructured-data-node.xml") -- GitLab