diff --git a/src/main/java/it/inaf/oats/vospace/FileServiceClient.java b/src/main/java/it/inaf/oats/vospace/FileServiceClient.java index ed3bf416d82480def75d3663a7bd2ffbbb1e7af3..83a8f1b3a888406d158334adf6b944f18b6b9835 100644 --- a/src/main/java/it/inaf/oats/vospace/FileServiceClient.java +++ b/src/main/java/it/inaf/oats/vospace/FileServiceClient.java @@ -41,12 +41,7 @@ public class FileServiceClient { public String startArchiveJob(Transfer transfer, String jobId) { - if (transfer.getTarget().size() != 1) { - throw new IllegalArgumentException("Target size is " + transfer.getTarget().size()); - } - - String target = transfer.getTarget().get(0) - .substring("vos://".length() + authority.length()); + String target = transfer.getTarget().substring("vos://".length() + authority.length()); String viewUri = transfer.getView().getUri(); diff --git a/src/main/java/it/inaf/oats/vospace/JobService.java b/src/main/java/it/inaf/oats/vospace/JobService.java index 15abb442b8181f9da0e44cc1a7f27915a69a8758..7d0d971ce672b19c460b4c24617ba6e411c9d805 100644 --- a/src/main/java/it/inaf/oats/vospace/JobService.java +++ b/src/main/java/it/inaf/oats/vospace/JobService.java @@ -6,6 +6,7 @@ package it.inaf.oats.vospace; import it.inaf.ia2.aa.data.User; +import it.inaf.oats.vospace.datamodel.Views; import it.inaf.oats.vospace.exception.InternalFaultException; import it.inaf.oats.vospace.persistence.JobDAO; import net.ivoa.xml.uws.v1.ExecutionPhase; @@ -17,6 +18,7 @@ import it.inaf.oats.vospace.exception.InvalidArgumentException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import it.inaf.oats.vospace.exception.VoSpaceErrorSummarizableException; +import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.function.Function; import javax.servlet.http.HttpServletRequest; @@ -96,7 +98,7 @@ public class JobService { Transfer transfer = uriService.getTransfer(job); ExecutionPhase phase; - if (transfer.getProtocols().stream().anyMatch(p -> "ia2:async-recall".equals(p.getUri()))) { + if (isAsyncRecall(transfer)) { // Async recall from tape jobs are queued. They will be started by VOSpace transfer service phase = ExecutionPhase.QUEUED; } else { @@ -138,16 +140,15 @@ public class JobService { private Transfer handlePullToVoSpace(JobSummary job, Transfer transfer) { + if (isAsyncRecall(transfer)) { + asyncTransfService.startJob(job); + return transfer; + } + for (Protocol protocol : transfer.getProtocols()) { switch (protocol.getUri()) { - case "ia2:async-recall": - asyncTransfService.startJob(job); - return transfer; case "ivo://ivoa.net/vospace/core#httpget": - if (transfer.getTarget().size() != 1) { - throw new InvalidArgumentException("Invalid target size for pullToVoSpace: " + transfer.getTarget().size()); - } - String nodeUri = transfer.getTarget().get(0); + String nodeUri = transfer.getTarget(); String contentUri = protocol.getEndpoint(); uriService.setNodeRemoteLocation(nodeUri, contentUri); Transfer negotiatedTransfer = uriService.getNegotiatedTransfer(job, transfer); @@ -164,6 +165,11 @@ public class JobService { throw new InvalidArgumentException("Transfer contains no protocols"); } + private boolean isAsyncRecall(Transfer transfer) { + return transfer.getView() != null + && Views.ASYNC_RECALL_VIEW_URI.equals(transfer.getView().getUri()); + } + private void handleMoveNode(JobSummary jobSummary, Transfer transfer) { // User data must be extracted before starting the new thread // to avoid the "No thread-bound request found" exception @@ -222,8 +228,9 @@ public class JobService { * compliance with specifications * */ - public void createSyncJobResult(JobSummary job) { + public Optional<VoSpaceErrorSummarizableException> createSyncJobResult(JobSummary job) { Transfer negotiatedTransfer = null; + VoSpaceErrorSummarizableException exception = null; try { Transfer transfer = uriService.getTransfer(job); negotiatedTransfer = uriService.getNegotiatedTransfer(job, transfer); @@ -234,14 +241,16 @@ public class JobService { job.setPhase(ExecutionPhase.ERROR); stripProtocols(job, negotiatedTransfer); job.setErrorSummary(ErrorSummaryFactory.newErrorSummary(e)); + exception = e; } catch (Exception e) { job.setPhase(ExecutionPhase.ERROR); stripProtocols(job, negotiatedTransfer); - job.setErrorSummary(ErrorSummaryFactory.newErrorSummary( - new InternalFaultException(e))); + exception = new InternalFaultException(e); + job.setErrorSummary(ErrorSummaryFactory.newErrorSummary(exception)); } finally { jobDAO.createJob(job, negotiatedTransfer); } + return Optional.ofNullable(exception); } private void stripProtocols(JobSummary job, Transfer negotiatedTransfer) { @@ -265,7 +274,7 @@ public class JobService { case pushToVoSpace: ResultReference dataNodeRef = new ResultReference(); dataNodeRef.setId("dataNode"); - dataNodeRef.setHref(transfer.getTarget().get(0)); + dataNodeRef.setHref(transfer.getTarget()); jobSummary.getResults().add(dataNodeRef); break; } diff --git a/src/main/java/it/inaf/oats/vospace/MoveService.java b/src/main/java/it/inaf/oats/vospace/MoveService.java index f83bcdc5fac7359111d7eb368f9937c0bcf7280d..c852a0fb60454cb1c36216dd881675cab3ec006c 100644 --- a/src/main/java/it/inaf/oats/vospace/MoveService.java +++ b/src/main/java/it/inaf/oats/vospace/MoveService.java @@ -8,7 +8,6 @@ package it.inaf.oats.vospace; import it.inaf.ia2.aa.data.User; import it.inaf.oats.vospace.datamodel.NodeUtils; import it.inaf.oats.vospace.exception.InternalFaultException; -import it.inaf.oats.vospace.exception.InvalidArgumentException; import it.inaf.oats.vospace.exception.NodeBusyException; import it.inaf.oats.vospace.exception.NodeNotFoundException; import it.inaf.oats.vospace.exception.PermissionDeniedException; @@ -33,12 +32,8 @@ public class MoveService extends AbstractNodeService { @Transactional(rollbackFor = { Exception.class }, isolation = Isolation.REPEATABLE_READ) public void processMoveJob(Transfer transfer, User user) { - if (transfer.getTarget().size() != 1) { - throw new InvalidArgumentException("Invalid target size for moveNode: " + transfer.getTarget().size()); - } - // Get Source Vos Path - String sourcePath = URIUtils.returnVosPathFromNodeURI(transfer.getTarget().get(0), authority); + String sourcePath = URIUtils.returnVosPathFromNodeURI(transfer.getTarget(), authority); // Get Destination Vos Path (it's in transfer direction) String destinationPath = URIUtils.returnVosPathFromNodeURI(transfer.getDirection(), authority); diff --git a/src/main/java/it/inaf/oats/vospace/TransferController.java b/src/main/java/it/inaf/oats/vospace/TransferController.java index c7c2d512381c907e0f0e85c1909f271c6ca36b62..96805bad16f771cd86d6381449773795b83becd3 100644 --- a/src/main/java/it/inaf/oats/vospace/TransferController.java +++ b/src/main/java/it/inaf/oats/vospace/TransferController.java @@ -81,7 +81,7 @@ public class TransferController { @RequestParam("DIRECTION") String direction, @RequestParam("PROTOCOL") String protocolUris, User principal) { Transfer transfer = new Transfer(); - transfer.setTarget(Arrays.asList(target)); + transfer.setTarget(target); transfer.setDirection(direction); // CADC client sends multiple protocol parameters and Spring join them using a comma separator. @@ -93,16 +93,12 @@ public class TransferController { } JobSummary jobSummary = newJobSummary(transfer, principal); - jobService.createSyncJobResult(jobSummary); - - if (jobSummary.getErrorSummary() != null) { - // TODO: decide how to hanlde HTTP error codes + jobService.createSyncJobResult(jobSummary).ifPresent(ex -> { // If an error occurs with the synchronous convenience mode where the preferred endpoint // is immediately returned as a redirect, the error information is returned directly in // the response body with the associated HTTP status code. - return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) - .body(jobSummary.getErrorSummary().getMessage()); - } + throw ex; + }); // Behaves as if REQUEST=redirect was set, for compatibility with CADC client String endpoint = transfer.getProtocols().get(0).getEndpoint(); diff --git a/src/main/java/it/inaf/oats/vospace/UriService.java b/src/main/java/it/inaf/oats/vospace/UriService.java index 06ed2b41cbf29ad73aeaa2c9484958f94356b749..13f755d74518c207527828637561dd8d97f6e4b0 100644 --- a/src/main/java/it/inaf/oats/vospace/UriService.java +++ b/src/main/java/it/inaf/oats/vospace/UriService.java @@ -144,13 +144,8 @@ public class UriService { } private String getEndpoint(JobSummary job, Transfer transfer) { - boolean isArchiveView = isArchiveView(transfer); - if (!isArchiveView && transfer.getTarget().size() != 1) { - throw new InvalidArgumentException("Invalid target size: " + transfer.getTarget().size()); - } - - String relativePath = URIUtils.returnVosPathFromNodeURI(transfer.getTarget().get(0), authority); + String relativePath = URIUtils.returnVosPathFromNodeURI(transfer.getTarget(), authority); User user = (User) servletRequest.getUserPrincipal(); String creator = user.getName(); @@ -183,7 +178,7 @@ public class UriService { throw new NodeBusyException(relativePath); } - if (isArchiveView) { + if (isArchiveView(transfer)) { return fileServiceClient.startArchiveJob(transfer, job.getJobId()); } diff --git a/src/test/java/it/inaf/oats/vospace/AsyncTransferServiceTest.java b/src/test/java/it/inaf/oats/vospace/AsyncTransferServiceTest.java index da76598edebee54fecad120a0ef4c9c3870b2474..75dd4e4adf7d757e5ddb0b3b784d9e3ea64c1e21 100644 --- a/src/test/java/it/inaf/oats/vospace/AsyncTransferServiceTest.java +++ b/src/test/java/it/inaf/oats/vospace/AsyncTransferServiceTest.java @@ -5,12 +5,13 @@ */ package it.inaf.oats.vospace; +import it.inaf.oats.vospace.datamodel.Views; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; 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 static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.fail; import org.junit.jupiter.api.Test; @@ -26,7 +27,7 @@ import redis.clients.jedis.Jedis; @ExtendWith(MockitoExtension.class) public class AsyncTransferServiceTest { - private static final String JSON_JOB = "{\"jobId\":\"job_id\",\"runId\":null,\"ownerId\":null,\"phase\":null,\"quote\":null,\"creationTime\":null,\"startTime\":null,\"endTime\":null,\"executionDuration\":0,\"destruction\":null,\"parameters\":null,\"results\":[],\"errorSummary\":null,\"jobInfo\":{\"transfer\":{\"target\":[\"vos://example.com!vospace/my-node\"],\"direction\":\"pullToVoSpace\",\"view\":null,\"protocols\":[],\"keepBytes\":null,\"version\":null,\"param\":[]}},\"version\":null}\n"; + private static final String JSON_JOB = "{\"jobId\":\"job_id\",\"runId\":null,\"ownerId\":null,\"phase\":null,\"quote\":null,\"creationTime\":null,\"startTime\":null,\"endTime\":null,\"executionDuration\":0,\"destruction\":null,\"parameters\":null,\"results\":[],\"errorSummary\":null,\"jobInfo\":{\"transfer\":{\"target\":\"vos://example.com!vospace/my-node\",\"direction\":\"pullToVoSpace\",\"view\":{\"param\":[{\"value\":\"file1.txt\",\"uri\":\"ivo://ia2.inaf.it/vospace/views#async-recall/include\"},{\"value\":\"file2.txt\",\"uri\":\"ivo://ia2.inaf.it/vospace/views#async-recall/include\"}],\"uri\":\"ivo://ia2.inaf.it/vospace/views#async-recall\",\"original\":true},\"protocols\":[],\"keepBytes\":false,\"version\":null,\"param\":[]}},\"version\":null}"; @Test public void testRedisRpc() { @@ -53,18 +54,31 @@ public class AsyncTransferServiceTest { try { asyncTransferService.startJob(getFakeJob()); fail(); - } catch(IllegalStateException ex) { + } catch (IllegalStateException ex) { } } } - + private JobSummary getFakeJob() { Transfer transfer = new Transfer(); transfer.setDirection("pullToVoSpace"); - Protocol protocol = new Protocol(); - protocol.setUri("ia2:async-recall"); - transfer.getProtocols().add(protocol); - transfer.setTarget(Arrays.asList("vos://example.com!vospace/my-node")); + + transfer.setTarget("vos://example.com!vospace/my-node"); + + View view = new View(); + view.setUri(Views.ASYNC_RECALL_VIEW_URI); + + Param p1 = new Param(); + p1.setUri(Views.ASYNC_RECALL_VIEW_URI + "/include"); + p1.setValue("file1.txt"); + view.getParam().add(p1); + + Param p2 = new Param(); + p2.setUri(Views.ASYNC_RECALL_VIEW_URI + "/include"); + p2.setValue("file2.txt"); + view.getParam().add(p2); + + transfer.setView(view); JobSummary job = new JobSummary(); job.setJobId("job_id"); diff --git a/src/test/java/it/inaf/oats/vospace/FileServiceClientTest.java b/src/test/java/it/inaf/oats/vospace/FileServiceClientTest.java index c5c10183d1c2ca8ae6c90a4b0ca6199cf65da559..b57b7d19a533e08049b6e2581a02f3a33d3480af 100644 --- a/src/test/java/it/inaf/oats/vospace/FileServiceClientTest.java +++ b/src/test/java/it/inaf/oats/vospace/FileServiceClientTest.java @@ -14,7 +14,6 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.UncheckedIOException; import java.net.URI; -import java.util.Arrays; import javax.servlet.http.HttpServletRequest; import net.ivoa.xml.vospace.v2.Param; import net.ivoa.xml.vospace.v2.Transfer; @@ -89,7 +88,7 @@ public class FileServiceClientTest { Transfer transfer = new Transfer(); transfer.setDirection("pullFromVoSpace"); - transfer.setTarget(Arrays.asList("vos://example.com!vospace/mydir")); + transfer.setTarget("vos://example.com!vospace/mydir"); View view = new View(); view.setUri(Views.ZIP_VIEW_URI); transfer.setView(view); @@ -105,7 +104,7 @@ public class FileServiceClientTest { Transfer transfer = new Transfer(); transfer.setDirection("pullFromVoSpace"); - transfer.setTarget(Arrays.asList("vos://example.com!vospace/parent_dir")); + transfer.setTarget("vos://example.com!vospace/parent_dir"); View view = new View(); view.setUri(Views.TAR_VIEW_URI); transfer.setView(view); @@ -123,7 +122,7 @@ public class FileServiceClientTest { Transfer transfer = new Transfer(); transfer.setDirection("pullFromVoSpace"); - transfer.setTarget(Arrays.asList("vos://example.com!vospace/parent_dir")); + transfer.setTarget("vos://example.com!vospace/parent_dir"); View view = new View(); view.setUri(Views.TAR_VIEW_URI); transfer.setView(view); @@ -140,7 +139,7 @@ public class FileServiceClientTest { Transfer transfer = new Transfer(); transfer.setDirection("pullFromVoSpace"); - transfer.setTarget(Arrays.asList("vos://example.com!vospace/parent_dir")); + transfer.setTarget("vos://example.com!vospace/parent_dir"); View view = new View(); view.setUri(viewUri); transfer.setView(view); diff --git a/src/test/java/it/inaf/oats/vospace/JobServiceTest.java b/src/test/java/it/inaf/oats/vospace/JobServiceTest.java index f276397fc5a30473e0a04465863632d7e7c9d6ff..ee017edcda9962af8959c83a3774a482027113a5 100644 --- a/src/test/java/it/inaf/oats/vospace/JobServiceTest.java +++ b/src/test/java/it/inaf/oats/vospace/JobServiceTest.java @@ -5,16 +5,17 @@ */ package it.inaf.oats.vospace; +import it.inaf.oats.vospace.datamodel.Views; import it.inaf.oats.vospace.exception.NodeBusyException; import it.inaf.oats.vospace.persistence.JobDAO; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import javax.servlet.http.HttpServletRequest; 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.Transfer; +import net.ivoa.xml.vospace.v2.View; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -218,7 +219,7 @@ public class JobServiceTest { private Transfer getPullFromVoSpaceHttpTransfer() { Transfer transfer = new Transfer(); - transfer.setTarget(Arrays.asList("vos://example.com!vospace/myfile")); + transfer.setTarget("vos://example.com!vospace/myfile"); transfer.setDirection("pullFromVoSpace"); Protocol protocol = new Protocol(); protocol.setUri("ivo://ivoa.net/vospace/core#httpget"); @@ -229,9 +230,9 @@ public class JobServiceTest { private Transfer getTapeTransfer() { Transfer transfer = new Transfer(); transfer.setDirection("pullToVoSpace"); - 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); return transfer; } diff --git a/src/test/java/it/inaf/oats/vospace/MoveServiceTest.java b/src/test/java/it/inaf/oats/vospace/MoveServiceTest.java index 729657f3827c2b5ffc855dd171299059c6e460ae..e5f8aaf7370fe296dce276d4eb2c395b6438e4e6 100644 --- a/src/test/java/it/inaf/oats/vospace/MoveServiceTest.java +++ b/src/test/java/it/inaf/oats/vospace/MoveServiceTest.java @@ -11,7 +11,6 @@ import it.inaf.oats.vospace.exception.NodeNotFoundException; import it.inaf.oats.vospace.exception.PermissionDeniedException; import it.inaf.oats.vospace.persistence.DataSourceConfigSingleton; import it.inaf.oats.vospace.persistence.NodeDAO; -import java.util.Arrays; import java.util.List; import java.util.Optional; import net.ivoa.xml.vospace.v2.Transfer; @@ -209,7 +208,7 @@ public class MoveServiceTest { private Transfer getTransfer(String vosTarget, String vosDestination) { Transfer transfer = new Transfer(); - transfer.setTarget(Arrays.asList("vos://" + this.authority + vosTarget)); + transfer.setTarget("vos://" + this.authority + vosTarget); transfer.setDirection("vos://" + this.authority + vosDestination); return transfer; } diff --git a/src/test/java/it/inaf/oats/vospace/TransferControllerTest.java b/src/test/java/it/inaf/oats/vospace/TransferControllerTest.java index 2b6fa1f48d3cdeb6f745d59b20595c8ede9a6a13..2a523876e00ffd6e1c23d0bdbf5325c985d2d6e9 100644 --- a/src/test/java/it/inaf/oats/vospace/TransferControllerTest.java +++ b/src/test/java/it/inaf/oats/vospace/TransferControllerTest.java @@ -11,6 +11,7 @@ import it.inaf.oats.vospace.datamodel.NodeProperties; import it.inaf.oats.vospace.datamodel.Views; import it.inaf.oats.vospace.exception.ErrorSummaryFactory; import it.inaf.oats.vospace.exception.PermissionDeniedException; +import it.inaf.oats.vospace.exception.ProtocolNotSupportedException; import it.inaf.oats.vospace.persistence.JobDAO; import it.inaf.oats.vospace.persistence.LocationDAO; import it.inaf.oats.vospace.persistence.NodeDAO; @@ -22,7 +23,6 @@ import java.nio.charset.StandardCharsets; import java.sql.Timestamp; import java.time.LocalDateTime; import java.util.ArrayList; -import java.util.Arrays; import java.util.Optional; import net.ivoa.xml.uws.v1.ExecutionPhase; import net.ivoa.xml.uws.v1.JobSummary; @@ -428,6 +428,20 @@ public class TransferControllerTest { .andExpect(status().is3xxRedirection()); } + @Test + public void testSyncTransferUrlParamsModeUnsupportedProtocol() throws Exception { + + Exception ex = mockMvc.perform(get("/synctrans") + .header("Authorization", "Bearer user1_token") + .param("TARGET", "vos://example.com!vospace/mynode") + .param("DIRECTION", "pullFromVoSpace") + .param("PROTOCOL", "ivo://ivoa.net/vospace/core#httpput")) + .andExpect(status().isBadRequest()) + .andReturn().getResolvedException(); + + assertTrue(ex instanceof ProtocolNotSupportedException); + } + private Jobs getFakeJobs() { Jobs jobs = new Jobs(); jobs.setVersion("1.1"); @@ -458,7 +472,7 @@ public class TransferControllerTest { Transfer transfer = new Transfer(); transfer.setDirection("pullFromVoSpace"); - transfer.setTarget(Arrays.asList("vos://example.com!vospace/mynode")); + transfer.setTarget("vos://example.com!vospace/mynode"); Protocol protocol = new Protocol(); protocol.setUri("ivo://ivoa.net/vospace/core#httpget"); transfer.getProtocols().add(protocol); diff --git a/src/test/java/it/inaf/oats/vospace/UriServiceTest.java b/src/test/java/it/inaf/oats/vospace/UriServiceTest.java index 4a59ad7ad6855ce840b7da304ce92fc13589190d..c0a911c51012b4cf9ec43ccfc40c0e63969118a1 100644 --- a/src/test/java/it/inaf/oats/vospace/UriServiceTest.java +++ b/src/test/java/it/inaf/oats/vospace/UriServiceTest.java @@ -17,7 +17,6 @@ import it.inaf.oats.vospace.persistence.LocationDAO; import it.inaf.oats.vospace.persistence.NodeDAO; import it.inaf.oats.vospace.persistence.model.Location; import it.inaf.oats.vospace.persistence.model.LocationType; -import java.util.Arrays; import java.util.Optional; import javax.servlet.http.HttpServletRequest; import net.ivoa.xml.uws.v1.JobSummary; @@ -298,7 +297,7 @@ public class UriServiceTest { mockPublicNode(); Transfer transfer = new Transfer(); - transfer.setTarget(Arrays.asList("vos://example.com!vospace/mydata1")); + transfer.setTarget("vos://example.com!vospace/mydata1"); transfer.setDirection("pullFromVoSpace"); Protocol protocol1 = new Protocol(); @@ -338,7 +337,7 @@ public class UriServiceTest { when(servletRequest.getUserPrincipal()).thenReturn(user); Transfer transfer = new Transfer(); - transfer.setTarget(Arrays.asList("vos://example.com!vospace/mydata1")); + transfer.setTarget("vos://example.com!vospace/mydata1"); transfer.setDirection("pushToVoSpace"); Protocol protocol1 = new Protocol(); @@ -367,7 +366,7 @@ public class UriServiceTest { public void testSetSyncTransferEndpointsUnsupportedProtocol() { Transfer transfer = new Transfer(); - transfer.setTarget(Arrays.asList("vos://example.com!vospace/mydata1")); + transfer.setTarget("vos://example.com!vospace/mydata1"); transfer.setDirection("pullFromVoSpace"); Protocol protocol = new Protocol(); @@ -390,7 +389,7 @@ public class UriServiceTest { public void testSetSyncTransferEndpointsNoProtocols() { Transfer transfer = new Transfer(); - transfer.setTarget(Arrays.asList("vos://example.com!vospace/mydata1")); + transfer.setTarget("vos://example.com!vospace/mydata1"); transfer.setDirection("pullFromVoSpace"); JobSummary job = new JobSummary(); @@ -420,7 +419,7 @@ public class UriServiceTest { Transfer transfer = new Transfer(); transfer.setDirection("pullFromVoSpace"); - transfer.setTarget(Arrays.asList("vos://example.com!vospace/file1")); + transfer.setTarget("vos://example.com!vospace/file1"); JobSummary job = new JobSummary(); JobSummary.JobInfo jobInfo = new JobSummary.JobInfo(); @@ -440,7 +439,7 @@ public class UriServiceTest { Transfer transfer = new Transfer(); transfer.setDirection("pullFromVoSpace"); - transfer.setTarget(Arrays.asList("vos://example.com!vospace/parent_dir")); + transfer.setTarget("vos://example.com!vospace/parent_dir"); Protocol protocol = new Protocol(); protocol.setUri("ivo://ivoa.net/vospace/core#httpget"); transfer.getProtocols().add(protocol); @@ -492,7 +491,7 @@ public class UriServiceTest { private JobSummary getJob() { Transfer transfer = new Transfer(); - transfer.setTarget(Arrays.asList("vos://example.com!vospace/mydata1")); + transfer.setTarget("vos://example.com!vospace/mydata1"); transfer.setDirection(JobService.JobDirection.pullFromVoSpace.toString()); Protocol protocol = new Protocol(); protocol.setUri("ivo://ivoa.net/vospace/core#httpget"); @@ -511,7 +510,7 @@ public class UriServiceTest { private JobSummary getPushToVoSpaceJob() { Transfer transfer = new Transfer(); - transfer.setTarget(Arrays.asList("vos://example.com!vospace/mydata1/mydata2")); + transfer.setTarget("vos://example.com!vospace/mydata1/mydata2"); transfer.setDirection(JobService.JobDirection.pushToVoSpace.toString()); Protocol protocol = new Protocol(); protocol.setUri("ivo://ivoa.net/vospace/core#httpput"); diff --git a/src/test/java/it/inaf/oats/vospace/persistence/JobDAOTest.java b/src/test/java/it/inaf/oats/vospace/persistence/JobDAOTest.java index 69b0f8e0a1a2206c14ba85e67b8d47765b616e8a..7781f05e8d5c92af17d1228d92af42c64b400bc3 100644 --- a/src/test/java/it/inaf/oats/vospace/persistence/JobDAOTest.java +++ b/src/test/java/it/inaf/oats/vospace/persistence/JobDAOTest.java @@ -29,7 +29,6 @@ import net.ivoa.xml.uws.v1.ErrorSummary; import net.ivoa.xml.uws.v1.Jobs; import it.inaf.oats.vospace.exception.ErrorSummaryFactory; import it.inaf.oats.vospace.exception.PermissionDeniedException; -import java.util.Arrays; import net.ivoa.xml.uws.v1.ResultReference; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNull; @@ -51,7 +50,7 @@ public class JobDAOTest { private JobSummary getJob() { Transfer transfer = new Transfer(); transfer.setDirection("pushToVoSpace"); - transfer.setTarget(Arrays.asList("vos://example.com!vospace/mynode")); + transfer.setTarget("vos://example.com!vospace/mynode"); JobSummary job = new JobSummary(); job.setJobId("123"); diff --git a/src/test/resources/pullToVoSpace-tape.xml b/src/test/resources/pullToVoSpace-tape.xml index 51e99e9f8218a90b89f960bf4173e5e598e4b577..15102d9db459145f18090f219e52771ba9ca1d5e 100644 --- a/src/test/resources/pullToVoSpace-tape.xml +++ b/src/test/resources/pullToVoSpace-tape.xml @@ -1,5 +1,9 @@ <vos:transfer xmlns:vos="http://www.ivoa.net/xml/VOSpace/v2.0" version="2.1"> <vos:target>vos://example.com!vospace/mynode</vos:target> <vos:direction>pullToVoSpace</vos:direction> - <vos:protocol uri="ia2:async-recall" /> + <vos:view uri="ivo://ia2.inaf.it/vospace/views#async-recall"> + <vos:param uri="ivo://ia2.inaf.it/vospace/views#async-recall/include">test1.txt</vos:param> + <vos:param uri="ivo://ia2.inaf.it/vospace/views#async-recall/include">test2.txt</vos:param> + <vos:param uri="ivo://ia2.inaf.it/vospace/views#async-recall/include">test3.txt</vos:param> + </vos:view> </vos:transfer> \ No newline at end of file