From 0f933c16829a16de7d486c25154af6f1dbe90b70 Mon Sep 17 00:00:00 2001 From: Sonia Zorba <sonia.zorba@inaf.it> Date: Wed, 28 Jul 2021 15:29:06 +0200 Subject: [PATCH] Set transfer target element as string instead of list of strings again. Used view with include param instead of custom protocol for async recall operations --- .../ui/controller/DownloadController.java | 3 +-- .../vospace/ui/controller/JobController.java | 27 +++++++++++++------ .../ui/controller/NodesController.java | 7 +++-- .../ui/controller/UploadController.java | 2 +- .../vospace/ui/client/VOSpaceClientTest.java | 6 ++--- .../ui/controller/JobControllerTest.java | 7 ++++- 6 files changed, 33 insertions(+), 19 deletions(-) diff --git a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/controller/DownloadController.java b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/controller/DownloadController.java index 71fadfa..1282fd3 100644 --- a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/controller/DownloadController.java +++ b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/controller/DownloadController.java @@ -12,7 +12,6 @@ import it.inaf.ia2.vospace.ui.client.VOSpaceClient; import it.inaf.ia2.vospace.ui.exception.PermissionDeniedException; import it.inaf.oats.vospace.datamodel.NodeUtils; import static it.inaf.oats.vospace.datamodel.NodeUtils.urlEncodePath; -import java.util.Arrays; import javax.servlet.http.HttpServletRequest; import net.ivoa.xml.vospace.v2.Protocol; import net.ivoa.xml.vospace.v2.Transfer; @@ -52,7 +51,7 @@ public class DownloadController { Transfer transfer = new Transfer(); transfer.setDirection("pullFromVoSpace"); - transfer.setTarget(Arrays.asList("vos://" + authority + urlEncodePath(path))); + transfer.setTarget("vos://" + authority + urlEncodePath(path)); Protocol protocol = new Protocol(); protocol.setUri("ivo://ivoa.net/vospace/core#httpget"); diff --git a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/controller/JobController.java b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/controller/JobController.java index 352507f..d185feb 100644 --- a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/controller/JobController.java +++ b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/controller/JobController.java @@ -8,15 +8,16 @@ package it.inaf.ia2.vospace.ui.controller; import it.inaf.ia2.vospace.ui.client.VOSpaceClient; import it.inaf.ia2.vospace.ui.data.Job; import it.inaf.ia2.vospace.ui.exception.BadRequestException; +import it.inaf.oats.vospace.datamodel.Views; import java.util.ArrayList; import java.util.List; import java.util.concurrent.CompletableFuture; -import java.util.stream.Collectors; import net.ivoa.xml.uws.v1.ErrorType; import net.ivoa.xml.uws.v1.ExecutionPhase; import net.ivoa.xml.uws.v1.JobSummary; -import net.ivoa.xml.vospace.v2.Protocol; +import net.ivoa.xml.vospace.v2.Param; import net.ivoa.xml.vospace.v2.Transfer; +import net.ivoa.xml.vospace.v2.View; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -46,15 +47,25 @@ public class JobController extends BaseController { throw new BadRequestException("Received empty list of nodes"); } - List<String> targets = paths.stream().map(p -> "vos://" + authority + p).collect(Collectors.toList()); - Transfer transfer = new Transfer(); transfer.setDirection("pullToVoSpace"); - transfer.setTarget(targets); - Protocol protocol = new Protocol(); - protocol.setUri("ia2:async-recall"); - transfer.getProtocols().add(protocol); + View view = new View(); + view.setUri(Views.ASYNC_RECALL_VIEW_URI); + transfer.setView(view); + + if (paths.size() == 1) { + transfer.setTarget("vos://" + authority + paths.get(0)); + } else { + String parent = paths.get(0).substring(0, paths.get(0).lastIndexOf("/")); + transfer.setTarget("vos://" + authority + parent); + for (String path : paths) { + Param param = new Param(); + param.setUri(Views.ASYNC_RECALL_VIEW_URI + "/include"); + param.setValue(path.substring(parent.length() + 1)); + view.getParam().add(param); + } + } JobSummary job = client.startTransferJob(transfer); diff --git a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/controller/NodesController.java b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/controller/NodesController.java index bdcda11..5560317 100644 --- a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/controller/NodesController.java +++ b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/controller/NodesController.java @@ -14,7 +14,6 @@ import it.inaf.ia2.vospace.ui.service.MainNodesHtmlGenerator; import it.inaf.ia2.vospace.ui.service.MoveNodeModalHtmlGenerator; import it.inaf.oats.vospace.datamodel.NodeUtils; import static it.inaf.oats.vospace.datamodel.NodeUtils.urlEncodePath; -import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Optional; @@ -161,10 +160,10 @@ public class NodesController extends BaseController { transfer.setView(view); if (paths.size() == 1) { - transfer.setTarget(Arrays.asList("vos://" + authority + paths.get(0))); + transfer.setTarget("vos://" + authority + paths.get(0)); } else { String parent = getCommonParent(paths); - transfer.setTarget(Arrays.asList("vos://" + authority + parent)); + transfer.setTarget("vos://" + authority + parent); for (String path : paths) { String childName = path.substring(parent.length() + 1); Param param = new Param(); @@ -211,7 +210,7 @@ public class NodesController extends BaseController { String direction = urlEncodePath(getRequiredParam(params, "direction")); Transfer transfer = new Transfer(); - transfer.setTarget(Arrays.asList("vos://" + authority + target)); + transfer.setTarget("vos://" + authority + target); transfer.setDirection("vos://" + authority + direction); JobSummary job = client.startTransferJob(transfer); diff --git a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/controller/UploadController.java b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/controller/UploadController.java index a77fc82..fb9a422 100644 --- a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/controller/UploadController.java +++ b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/controller/UploadController.java @@ -99,7 +99,7 @@ public class UploadController extends BaseController { Transfer transfer = new Transfer(); transfer.setDirection("pushToVoSpace"); - transfer.setTarget(Arrays.asList(uri)); + transfer.setTarget(uri); Protocol protocol = new Protocol(); protocol.setUri("ivo://ivoa.net/vospace/core#httpput"); diff --git a/vospace-ui-backend/src/test/java/it/inaf/ia2/vospace/ui/client/VOSpaceClientTest.java b/vospace-ui-backend/src/test/java/it/inaf/ia2/vospace/ui/client/VOSpaceClientTest.java index 2fa498d..11a0b2a 100644 --- a/vospace-ui-backend/src/test/java/it/inaf/ia2/vospace/ui/client/VOSpaceClientTest.java +++ b/vospace-ui-backend/src/test/java/it/inaf/ia2/vospace/ui/client/VOSpaceClientTest.java @@ -120,7 +120,7 @@ public class VOSpaceClientTest { Transfer transfer = new Transfer(); transfer.setDirection("pushToVoSpace"); - transfer.setTarget(Arrays.asList("vos://ia2.inaf.it!vospace/mynode")); + transfer.setTarget("vos://ia2.inaf.it!vospace/mynode"); Protocol protocol = new Protocol(); protocol.setUri("ivo://ivoa.net/vospace/core#httpput"); @@ -137,7 +137,7 @@ public class VOSpaceClientTest { Transfer transfer = new Transfer(); transfer.setDirection("pushToVoSpace"); - transfer.setTarget(Arrays.asList("vos://ia2.inaf.it!vospace/mynode")); + transfer.setTarget("vos://ia2.inaf.it!vospace/mynode"); Protocol protocol = new Protocol(); protocol.setUri("ivo://ivoa.net/vospace/core#httpput"); @@ -166,7 +166,7 @@ public class VOSpaceClientTest { Transfer transfer = new Transfer(); transfer.setDirection("pushToVoSpace"); - transfer.setTarget(Arrays.asList("vos://ia2.inaf.it!vospace/mynode")); + transfer.setTarget("vos://ia2.inaf.it!vospace/mynode"); Protocol protocol = new Protocol(); protocol.setUri("ivo://ivoa.net/vospace/core#httpput"); diff --git a/vospace-ui-backend/src/test/java/it/inaf/ia2/vospace/ui/controller/JobControllerTest.java b/vospace-ui-backend/src/test/java/it/inaf/ia2/vospace/ui/controller/JobControllerTest.java index b4209c9..00b1a26 100644 --- a/vospace-ui-backend/src/test/java/it/inaf/ia2/vospace/ui/controller/JobControllerTest.java +++ b/vospace-ui-backend/src/test/java/it/inaf/ia2/vospace/ui/controller/JobControllerTest.java @@ -13,6 +13,7 @@ import net.ivoa.xml.uws.v1.ErrorSummary; import net.ivoa.xml.uws.v1.ErrorType; import net.ivoa.xml.uws.v1.ExecutionPhase; import net.ivoa.xml.uws.v1.JobSummary; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.fail; import org.junit.jupiter.api.Test; @@ -67,7 +68,11 @@ public class JobControllerTest { job.setPhase(ExecutionPhase.PENDING); when(client.startTransferJob(argThat(transfer -> { - return transfer.getTarget().size() > 1; + assertEquals(2, transfer.getView().getParam().size()); + assertEquals("vos://example.com!vospace/path/to", transfer.getTarget()); + assertEquals("file1", transfer.getView().getParam().get(0).getValue()); + assertEquals("file2", transfer.getView().getParam().get(1).getValue()); + return true; }))).thenReturn(job); when(client.getFileServiceEndpoint(any())).thenReturn("http://file-service/path/to/file"); -- GitLab