diff --git a/src/main/java/it/inaf/oats/vospace/FileServiceClient.java b/src/main/java/it/inaf/oats/vospace/FileServiceClient.java index d593893059e022ae67e8c2e639ee97ef4ffcb9f4..5c8d7463e02db055a03d728aa0a3d5e20f473972 100644 --- a/src/main/java/it/inaf/oats/vospace/FileServiceClient.java +++ b/src/main/java/it/inaf/oats/vospace/FileServiceClient.java @@ -54,7 +54,7 @@ public class FileServiceClient { public String startArchiveJob(Transfer transfer, String jobId) { - String target = transfer.getTarget().substring("vos://".length() + authority.length()); + String target = NodeUtils.getVosPath(transfer.getTarget()); String viewUri = transfer.getView().getUri(); diff --git a/src/main/java/it/inaf/oats/vospace/UriService.java b/src/main/java/it/inaf/oats/vospace/UriService.java index 03162bbc8fcdd0742252cc203c8bba32524acb03..3b7186424a48dc8649a22820d2465f18c0c2a107 100644 --- a/src/main/java/it/inaf/oats/vospace/UriService.java +++ b/src/main/java/it/inaf/oats/vospace/UriService.java @@ -181,8 +181,7 @@ public class UriService { private String getEndpoint(JobSummary job, Transfer transfer) { - String relativePath = StringUtils.uriDecode(URIUtils - .returnVosPathFromNodeURI(transfer.getTarget(), authority), StandardCharsets.UTF_8); + String relativePath = NodeUtils.getVosPath(transfer.getTarget()); User user = (User) servletRequest.getUserPrincipal(); String creator = user.getName(); @@ -204,7 +203,6 @@ public class UriService { case pullFromVoSpace: // Refresh relative path: it can differ in case of links followed relativePath = NodeUtils.getVosPath(node); - relativePath = StringUtils.uriDecode(relativePath, StandardCharsets.UTF_8); if (!NodeUtils.checkIfReadable(node, creator, groups)) { throw PermissionDeniedException.forPath(relativePath); } diff --git a/src/main/resources/auth.properties b/src/main/resources/auth.properties index 875059c3b764b9216778e072cef3ddd6d004bda6..ace50d1f59202b4c222b8a0952715276e1fb8153 100644 --- a/src/main/resources/auth.properties +++ b/src/main/resources/auth.properties @@ -2,4 +2,4 @@ rap_uri=https://sso.ia2.inaf.it/rap-ia2 gms_uri=https://sso.ia2.inaf.it/gms/ groups_autoload=true client_id=vospace_test -client_secret=***REMOVED*** \ No newline at end of file +client_secret=***REMOVED*** diff --git a/src/test/java/it/inaf/oats/vospace/FileServiceClientTest.java b/src/test/java/it/inaf/oats/vospace/FileServiceClientTest.java index 9ec78b9fb679cb4250975eb692873f656978d8e2..7664b945d0808ef55f7b9f80cbe154569ec11709 100644 --- a/src/test/java/it/inaf/oats/vospace/FileServiceClientTest.java +++ b/src/test/java/it/inaf/oats/vospace/FileServiceClientTest.java @@ -101,23 +101,23 @@ public class FileServiceClientTest { Transfer transfer = new Transfer(); transfer.setDirection("pullFromVoSpace"); - transfer.setTarget("vos://example.com!vospace/mydir"); + transfer.setTarget("vos://example.com!vospace/mydir(%20+%20)x"); View view = new View(); view.setUri(Views.ZIP_VIEW_URI); transfer.setView(view); ContainerNode node = Mockito.mock(ContainerNode.class); when(node.getNodes()).thenReturn(List.of()); - when(node.getUri()).thenReturn("vos://example.com!vospace/mydir"); - when(nodeDAO.listNode(eq("/mydir"))).thenReturn(Optional.of(node)); + when(node.getUri()).thenReturn("vos://example.com!vospace/mydir(%20+%20)x"); + when(nodeDAO.listNode(eq("/mydir( + )x"))).thenReturn(Optional.of(node)); when(linkService.followLinksForArchiveService(any())) - .thenReturn(List.of(new ArchiveEntryDescriptor("/mydir"))); + .thenReturn(List.of(new ArchiveEntryDescriptor("/mydir( + )x"))); ArchiveRequest archiveRequest = testStartArchiveJob(transfer); assertEquals(1, archiveRequest.getEntryDescriptors().size()); - assertEquals("/mydir", archiveRequest.getEntryDescriptors().get(0).getTargetNodeVosPath()); + assertEquals("/mydir( + )x", archiveRequest.getEntryDescriptors().get(0).getTargetNodeVosPath()); } @Test