From a814126aa035593ad1e1ec498455e866564a4b85 Mon Sep 17 00:00:00 2001 From: Nicola Fulvio Calabria <nicola.calabria@inaf.it> Date: Sat, 8 May 2021 00:54:33 +0200 Subject: [PATCH] Added convenience method to NodeUtils for last vos path element extraction --- .../oats/vospace/datamodel/NodeUtils.java | 16 +++++++++++++++ .../oats/vospace/datamodel/NodeUtilsTest.java | 20 ++++++++++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/main/java/it/inaf/oats/vospace/datamodel/NodeUtils.java b/src/main/java/it/inaf/oats/vospace/datamodel/NodeUtils.java index 2021bdb..fcee952 100644 --- a/src/main/java/it/inaf/oats/vospace/datamodel/NodeUtils.java +++ b/src/main/java/it/inaf/oats/vospace/datamodel/NodeUtils.java @@ -85,6 +85,22 @@ public class NodeUtils { return sb.toString(); } + public static String getLastPathElement(String path) { + if(path == null || path.isBlank() || !path.startsWith("/")) + { + throw new IllegalArgumentException(); + } + + String[] pathComponents = path.split("[/]+"); + if(pathComponents.length == 0) + { + return "/"; + } else { + return pathComponents[pathComponents.length-1]; + } + + } + public static List<String> subPathComponents(String path) { List resultList = new ArrayList<String>(); diff --git a/src/test/java/it/inaf/oats/vospace/datamodel/NodeUtilsTest.java b/src/test/java/it/inaf/oats/vospace/datamodel/NodeUtilsTest.java index 13df807..2a79f73 100644 --- a/src/test/java/it/inaf/oats/vospace/datamodel/NodeUtilsTest.java +++ b/src/test/java/it/inaf/oats/vospace/datamodel/NodeUtilsTest.java @@ -2,7 +2,6 @@ package it.inaf.oats.vospace.datamodel; import java.util.ArrayList; import java.util.List; -import net.ivoa.xml.vospace.v2.ContainerNode; import net.ivoa.xml.vospace.v2.DataNode; import net.ivoa.xml.vospace.v2.LinkNode; import net.ivoa.xml.vospace.v2.Node; @@ -10,6 +9,7 @@ import net.ivoa.xml.vospace.v2.Property; import static org.junit.jupiter.api.Assertions.assertArrayEquals; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; @@ -163,6 +163,24 @@ public class NodeUtilsTest { assertTrue(NodeUtils.checkIfReadable(node, "user2", List.of("group2", "group3"))); } + + @Test + public void testGetLastPathElement() { + + assertThrows(IllegalArgumentException.class,() -> + { NodeUtils.getLastPathElement(null);} ); + + assertThrows(IllegalArgumentException.class,() -> + { NodeUtils.getLastPathElement(" ");} ); + + assertThrows(IllegalArgumentException.class,() -> + { NodeUtils.getLastPathElement("http://asdasd");} ); + + assertEquals("/", NodeUtils.getLastPathElement("/")); + + assertEquals("f1", NodeUtils.getLastPathElement("/pippo/test/f1")); + + } @Test public void testCheckReadableGroupsFalse() { -- GitLab