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 8d77a2bf7b14710be5ae7bba999873e58151801e..cba63cd594d9e8da22cf54bb13a73d91043158d9 100644 --- a/src/main/java/it/inaf/oats/vospace/JobService.java +++ b/src/main/java/it/inaf/oats/vospace/JobService.java @@ -140,10 +140,7 @@ public class JobService { for (Protocol protocol : transfer.getProtocols()) { switch (protocol.getUri()) { 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); @@ -249,7 +246,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 6fba8eb6c1dc038bde3fa658c2646afce5da368f..8968386ad2d9702c2414e93b8ca4be1034829c87 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; @@ -42,12 +41,8 @@ public class MoveService { @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..52d0bed1ea1447c484d53fe642ff0ff464bd63e7 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. 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 b426531e4e14bbb3a05b0f4404459559736ab052..75dd4e4adf7d757e5ddb0b3b784d9e3ea64c1e21 100644 --- a/src/test/java/it/inaf/oats/vospace/AsyncTransferServiceTest.java +++ b/src/test/java/it/inaf/oats/vospace/AsyncTransferServiceTest.java @@ -7,7 +7,6 @@ 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.Param; @@ -28,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\":{\"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}"; + 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() { @@ -64,7 +63,7 @@ public class AsyncTransferServiceTest { Transfer transfer = new Transfer(); transfer.setDirection("pullToVoSpace"); - 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); 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 5f634b3fcfc8aae7da3561cceacf818a73421db0..ee017edcda9962af8959c83a3774a482027113a5 100644 --- a/src/test/java/it/inaf/oats/vospace/JobServiceTest.java +++ b/src/test/java/it/inaf/oats/vospace/JobServiceTest.java @@ -9,7 +9,6 @@ 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; @@ -220,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"); diff --git a/src/test/java/it/inaf/oats/vospace/MoveServiceTest.java b/src/test/java/it/inaf/oats/vospace/MoveServiceTest.java index 48d05de50e46e3a692ed059ed22bbe77a104495e..b632a65be1d838695e6e979a05ad723b69a9ec77 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; @@ -212,7 +211,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..49e754434f71f0e3f8fab345acdc9ed6a061de72 100644 --- a/src/test/java/it/inaf/oats/vospace/TransferControllerTest.java +++ b/src/test/java/it/inaf/oats/vospace/TransferControllerTest.java @@ -22,7 +22,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; @@ -458,7 +457,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");