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