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 2021bdbfd4fe1c18ea142e34ac93e234ed762571..fcee9523d97eecc311777cc6447b3538125e4d2f 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 13df807889f49a0ba3ec6e653dafba92fbf9b0b3..2a79f73a950411f84f6a2a015ccca4cf81bc62f4 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() {