From 8339cc204b702dea94bb86de5bdb5e4a3a76123a Mon Sep 17 00:00:00 2001
From: Nicola Fulvio Calabria <nicola.calabria@inaf.it>
Date: Thu, 11 Mar 2021 11:35:15 +0100
Subject: [PATCH] Fixed Task #6363 disappearance (likely due to local git
 client/IDE bug). Commit from fresh cloned local copy.

---
 .../inaf/oats/vospace/ListNodeController.java  | 18 ++++++++++++++++++
 .../oats/vospace/ListNodeControllerTest.java   |  2 +-
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/src/main/java/it/inaf/oats/vospace/ListNodeController.java b/src/main/java/it/inaf/oats/vospace/ListNodeController.java
index 7dd303f..9f53335 100644
--- a/src/main/java/it/inaf/oats/vospace/ListNodeController.java
+++ b/src/main/java/it/inaf/oats/vospace/ListNodeController.java
@@ -7,6 +7,7 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.http.ResponseEntity;
 
 import net.ivoa.xml.vospace.v2.Node;
+import net.ivoa.xml.vospace.v2.ContainerNode;
 
 import it.inaf.oats.vospace.persistence.NodeDAO;
 import javax.servlet.http.HttpServletRequest;
@@ -17,6 +18,8 @@ import it.inaf.ia2.aa.data.User;
 import it.inaf.oats.vospace.datamodel.NodeUtils;
 import java.util.Optional;
 import it.inaf.oats.vospace.exception.PermissionDeniedException;
+import java.util.stream.Collectors;
+import java.util.List;
 
 @RestController
 public class ListNodeController extends BaseNodeController {
@@ -42,7 +45,22 @@ public class ListNodeController extends BaseNodeController {
                 throw new PermissionDeniedException(path);
             }
         }
+        
+        Node node = optNode.get();
+
+        if (node instanceof ContainerNode) {
+            ContainerNode cnd = (ContainerNode) node;
+            List<Node> children
+                    = cnd.getNodes().stream().filter(
+                            (n) -> NodeUtils.checkIfReadable(
+                                    n, principal.getName(),
+                                    principal.getGroups()))
+                            .collect(Collectors.toList());
+            cnd.setNodes(children);
+            optNode = Optional.of(cnd);
+        }
 
         return ResponseEntity.ok(optNode.get());
+
     }
 }
diff --git a/src/test/java/it/inaf/oats/vospace/ListNodeControllerTest.java b/src/test/java/it/inaf/oats/vospace/ListNodeControllerTest.java
index 54dc45e..18b4a60 100644
--- a/src/test/java/it/inaf/oats/vospace/ListNodeControllerTest.java
+++ b/src/test/java/it/inaf/oats/vospace/ListNodeControllerTest.java
@@ -111,7 +111,7 @@ public class ListNodeControllerTest {
                 .andExpect(status().is2xxSuccessful());       
     }
     
-    //@Test
+    @Test
     public void testListOnlyReadableChildren() throws Exception {
 
         ContainerNode node = new ContainerNode();
-- 
GitLab