Loading src/main/java/it/inaf/oats/vospace/JobService.java +5 −1 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ import net.ivoa.xml.uws.v1.JobSummary; import net.ivoa.xml.vospace.v2.Protocol; import net.ivoa.xml.vospace.v2.Transfer; import it.inaf.oats.vospace.exception.ErrorSummaryFactory; 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; Loading Loading @@ -131,7 +132,10 @@ public class JobService { asyncTransfService.startJob(job); return; case "ivo://ivoa.net/vospace/core#httpget": String nodeUri = transfer.getTarget(); if (transfer.getTarget().size() != 1) { throw new InvalidArgumentException("Invalid target size for pullToVoSpace: " + transfer.getTarget().size()); } String nodeUri = transfer.getTarget().get(0); String contentUri = protocol.getEndpoint(); uriService.setNodeRemoteLocation(nodeUri, contentUri); uriService.setTransferJobResult(job, transfer); Loading src/main/java/it/inaf/oats/vospace/MoveService.java +6 −1 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ import it.inaf.oats.vospace.datamodel.NodeUtils; import it.inaf.oats.vospace.exception.ContainerNotFoundException; import it.inaf.oats.vospace.exception.DuplicateNodeException; 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; Loading Loading @@ -46,8 +47,12 @@ public class MoveService { @Transactional(rollbackFor = { Exception.class }) public void processMoveJob(Transfer transfer) { if (transfer.getTarget().size() != 1) { throw new InvalidArgumentException("Invalid target size for moveNode: " + transfer.getTarget().size()); } // Get Source Vos Path String sourcePath = transfer.getTarget().substring("vos://".length() + authority.length()); String sourcePath = transfer.getTarget().get(0).substring("vos://".length() + authority.length()); // Get Destination Vos Path (it's in transfer direction) String destinationPath = transfer.getDirection().substring("vos://".length() + authority.length()); Loading src/main/java/it/inaf/oats/vospace/TransferController.java +3 −3 Original line number Diff line number Diff line Loading @@ -13,7 +13,6 @@ import javax.servlet.http.HttpServletRequest; import net.ivoa.xml.uws.v1.ExecutionPhase; import net.ivoa.xml.uws.v1.JobSummary; import net.ivoa.xml.uws.v1.Jobs; import net.ivoa.xml.vospace.v2.Transfer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; Loading @@ -32,6 +31,7 @@ import java.util.HashSet; import java.util.List; import net.ivoa.xml.uws.v1.ErrorSummary; import net.ivoa.xml.vospace.v2.Protocol; import net.ivoa.xml.vospace.v2.Transfer; @RestController public class TransferController { Loading Loading @@ -81,7 +81,7 @@ public class TransferController { @RequestParam("DIRECTION") String direction, @RequestParam("PROTOCOL") String protocolUris, User principal) { Transfer transfer = new Transfer(); transfer.setTarget(target); transfer.setTarget(Arrays.asList(target)); transfer.setDirection(direction); // CADC client sends multiple protocol parameters and Spring join them using a comma separator. Loading src/main/java/it/inaf/oats/vospace/UriService.java +5 −1 Original line number Diff line number Diff line Loading @@ -144,7 +144,11 @@ public class UriService { private String getEndpoint(JobSummary job, Transfer transfer) { String relativePath = transfer.getTarget().substring("vos://".length() + authority.length()); if (transfer.getTarget().size() != 1) { throw new InvalidArgumentException("Invalid target size: " + transfer.getTarget().size()); } String relativePath = transfer.getTarget().get(0).substring("vos://".length() + authority.length()); User user = (User) servletRequest.getUserPrincipal(); String creator = user.getName(); Loading src/test/java/it/inaf/oats/vospace/AsyncTransferServiceTest.java +3 −2 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ package it.inaf.oats.vospace; 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; Loading @@ -25,7 +26,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\":[{\"endpoint\":null,\"param\":[],\"uri\":\"ia2:async-recall\"}],\"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\":null,\"protocols\":[],\"keepBytes\":null,\"version\":null,\"param\":[]}},\"version\":null}\n"; @Test public void testRedisRpc() { Loading Loading @@ -63,7 +64,7 @@ public class AsyncTransferServiceTest { Protocol protocol = new Protocol(); protocol.setUri("ia2:async-recall"); transfer.getProtocols().add(protocol); transfer.setTarget("vos://example.com!vospace/my-node"); transfer.setTarget(Arrays.asList("vos://example.com!vospace/my-node")); JobSummary job = new JobSummary(); job.setJobId("job_id"); Loading Loading
src/main/java/it/inaf/oats/vospace/JobService.java +5 −1 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ import net.ivoa.xml.uws.v1.JobSummary; import net.ivoa.xml.vospace.v2.Protocol; import net.ivoa.xml.vospace.v2.Transfer; import it.inaf.oats.vospace.exception.ErrorSummaryFactory; 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; Loading Loading @@ -131,7 +132,10 @@ public class JobService { asyncTransfService.startJob(job); return; case "ivo://ivoa.net/vospace/core#httpget": String nodeUri = transfer.getTarget(); if (transfer.getTarget().size() != 1) { throw new InvalidArgumentException("Invalid target size for pullToVoSpace: " + transfer.getTarget().size()); } String nodeUri = transfer.getTarget().get(0); String contentUri = protocol.getEndpoint(); uriService.setNodeRemoteLocation(nodeUri, contentUri); uriService.setTransferJobResult(job, transfer); Loading
src/main/java/it/inaf/oats/vospace/MoveService.java +6 −1 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ import it.inaf.oats.vospace.datamodel.NodeUtils; import it.inaf.oats.vospace.exception.ContainerNotFoundException; import it.inaf.oats.vospace.exception.DuplicateNodeException; 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; Loading Loading @@ -46,8 +47,12 @@ public class MoveService { @Transactional(rollbackFor = { Exception.class }) public void processMoveJob(Transfer transfer) { if (transfer.getTarget().size() != 1) { throw new InvalidArgumentException("Invalid target size for moveNode: " + transfer.getTarget().size()); } // Get Source Vos Path String sourcePath = transfer.getTarget().substring("vos://".length() + authority.length()); String sourcePath = transfer.getTarget().get(0).substring("vos://".length() + authority.length()); // Get Destination Vos Path (it's in transfer direction) String destinationPath = transfer.getDirection().substring("vos://".length() + authority.length()); Loading
src/main/java/it/inaf/oats/vospace/TransferController.java +3 −3 Original line number Diff line number Diff line Loading @@ -13,7 +13,6 @@ import javax.servlet.http.HttpServletRequest; import net.ivoa.xml.uws.v1.ExecutionPhase; import net.ivoa.xml.uws.v1.JobSummary; import net.ivoa.xml.uws.v1.Jobs; import net.ivoa.xml.vospace.v2.Transfer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; Loading @@ -32,6 +31,7 @@ import java.util.HashSet; import java.util.List; import net.ivoa.xml.uws.v1.ErrorSummary; import net.ivoa.xml.vospace.v2.Protocol; import net.ivoa.xml.vospace.v2.Transfer; @RestController public class TransferController { Loading Loading @@ -81,7 +81,7 @@ public class TransferController { @RequestParam("DIRECTION") String direction, @RequestParam("PROTOCOL") String protocolUris, User principal) { Transfer transfer = new Transfer(); transfer.setTarget(target); transfer.setTarget(Arrays.asList(target)); transfer.setDirection(direction); // CADC client sends multiple protocol parameters and Spring join them using a comma separator. Loading
src/main/java/it/inaf/oats/vospace/UriService.java +5 −1 Original line number Diff line number Diff line Loading @@ -144,7 +144,11 @@ public class UriService { private String getEndpoint(JobSummary job, Transfer transfer) { String relativePath = transfer.getTarget().substring("vos://".length() + authority.length()); if (transfer.getTarget().size() != 1) { throw new InvalidArgumentException("Invalid target size: " + transfer.getTarget().size()); } String relativePath = transfer.getTarget().get(0).substring("vos://".length() + authority.length()); User user = (User) servletRequest.getUserPrincipal(); String creator = user.getName(); Loading
src/test/java/it/inaf/oats/vospace/AsyncTransferServiceTest.java +3 −2 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ package it.inaf.oats.vospace; 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; Loading @@ -25,7 +26,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\":[{\"endpoint\":null,\"param\":[],\"uri\":\"ia2:async-recall\"}],\"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\":null,\"protocols\":[],\"keepBytes\":null,\"version\":null,\"param\":[]}},\"version\":null}\n"; @Test public void testRedisRpc() { Loading Loading @@ -63,7 +64,7 @@ public class AsyncTransferServiceTest { Protocol protocol = new Protocol(); protocol.setUri("ia2:async-recall"); transfer.getProtocols().add(protocol); transfer.setTarget("vos://example.com!vospace/my-node"); transfer.setTarget(Arrays.asList("vos://example.com!vospace/my-node")); JobSummary job = new JobSummary(); job.setJobId("job_id"); Loading