diff --git a/src/main/java/it/inaf/oats/vospace/CreateNodeController.java b/src/main/java/it/inaf/oats/vospace/CreateNodeController.java index 16418249bf8b4a3b5399676c2693b101f0f33efc..1979ee7624914fc100570b6ea4bab77ad860118d 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 7439a9a3c20caf60adeb2c076e57030e1100cead..d812ef1c645ab4a420f8b430685b6736e2424f7c 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")