From 2ad586a112d1b3ffc069cc53368216e573bbb649 Mon Sep 17 00:00:00 2001
From: Sonia Zorba <sonia.zorba@inaf.it>
Date: Wed, 15 Sep 2021 10:53:13 +0200
Subject: [PATCH] Fixed issue in link nodes paths

---
 .../ui/service/MainNodesHtmlGenerator.java      |  3 ++-
 .../inaf/ia2/vospace/ui/service/NodeInfo.java   | 17 ++++++++---------
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/service/MainNodesHtmlGenerator.java b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/service/MainNodesHtmlGenerator.java
index 26446f6..4a6ffd2 100644
--- a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/service/MainNodesHtmlGenerator.java
+++ b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/service/MainNodesHtmlGenerator.java
@@ -159,7 +159,8 @@ public class MainNodesHtmlGenerator extends NodesHtmlGenerator {
             Element link = cell.appendElement("a");
             String href;
             if (nodeInfo.isFolder()) {
-                href = "#/nodes" + urlEncodePath(nodeInfo.getPath());
+                String path = nodeInfo.isLink() ? nodeInfo.getTarget() : nodeInfo.getPath();
+                href = "#/nodes" + urlEncodePath(path);
             } else {
                 href = "download" + urlEncodePath(nodeInfo.getPath());
                 link.attr("target", "blank_");
diff --git a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/service/NodeInfo.java b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/service/NodeInfo.java
index 21a802e..e7137be 100644
--- a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/service/NodeInfo.java
+++ b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/service/NodeInfo.java
@@ -14,7 +14,6 @@ import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
 import java.util.Optional;
 import java.util.stream.Collectors;
-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;
@@ -28,7 +27,7 @@ public class NodeInfo {
 
     private final String authority;
 
-    private String path;
+    private final String path;
     private final String name;
     private final String size;
     private String type;
@@ -41,7 +40,7 @@ public class NodeInfo {
     private final boolean busy;
     private final boolean writable;
     private final boolean deletable;
-    private final boolean link;
+    private String target;
 
     public NodeInfo(Node node, User user, String authority, Node linkedNode) {
         this.authority = authority;
@@ -58,13 +57,9 @@ public class NodeInfo {
         this.busy = isBusy(node);
         this.writable = NodeUtils.checkIfWritable(node, user.getName(), user.getGroups()) && !busy;
         this.deletable = writable && !sticky && !asyncTrans;
-        this.link = linkedNode != null;
         if (linkedNode != null) {
             String prefix = "vos://" + authority;
-            String target = ((LinkNode) node).getTarget();
-            if (linkedNode instanceof ContainerNode) {
-                this.path = decodePath(target, prefix);
-            }
+            this.target = decodePath(((LinkNode) node).getTarget(), prefix);
             this.type = linkedNode.getType();
         }
     }
@@ -209,7 +204,11 @@ public class NodeInfo {
         return deletable;
     }
 
+    public String getTarget() {
+        return target;
+    }
+
     public boolean isLink() {
-        return link;
+        return target != null;
     }
 }
-- 
GitLab