From 28eba02746a80f0086736e0afe18ff2b6f981880 Mon Sep 17 00:00:00 2001 From: Sonia Zorba <sonia.zorba@inaf.it> Date: Fri, 23 Apr 2021 12:51:39 +0200 Subject: [PATCH] Added recursive flag to share modal --- .../it/inaf/ia2/vospace/ui/client/VOSpaceClient.java | 4 ++-- .../java/it/inaf/ia2/vospace/ui/data/ShareRequest.java | 9 +++++++++ .../it/inaf/ia2/vospace/ui/service/SharingService.java | 2 +- .../inaf/ia2/vospace/ui/service/SharingServiceTest.java | 3 ++- vospace-ui-frontend/src/components/modal/ShareModal.vue | 7 +++++-- 5 files changed, 19 insertions(+), 6 deletions(-) diff --git a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/client/VOSpaceClient.java b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/client/VOSpaceClient.java index e023156..a524967 100644 --- a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/client/VOSpaceClient.java +++ b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/client/VOSpaceClient.java @@ -126,11 +126,11 @@ public class VOSpaceClient { call(request, BodyHandlers.ofInputStream(), 200, res -> null); } - public Node setNode(Node node) { + public Node setNode(Node node, boolean recursive) { String path = node.getUri().substring(("vos://" + authority).length()); - HttpRequest request = getRequest("/nodes" + urlEncodePath(path)) + HttpRequest request = getRequest("/nodes" + urlEncodePath(path) + "?recursive=" + recursive) .header("Accept", useJson ? "application/json" : "text/xml") .header("Content-Type", useJson ? "application/json" : "text/xml") .POST(HttpRequest.BodyPublishers.ofString(marshal(node))) diff --git a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/data/ShareRequest.java b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/data/ShareRequest.java index 360a3f1..5870f9a 100644 --- a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/data/ShareRequest.java +++ b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/data/ShareRequest.java @@ -9,6 +9,7 @@ public class ShareRequest { private List<String> groupWrite; private List<String> userRead; private List<String> userWrite; + private boolean recursive; public String getPath() { return path; @@ -49,4 +50,12 @@ public class ShareRequest { public void setUserWrite(List<String> userWrite) { this.userWrite = userWrite; } + + public boolean isRecursive() { + return recursive; + } + + public void setRecursive(boolean recursive) { + this.recursive = recursive; + } } diff --git a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/service/SharingService.java b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/service/SharingService.java index 8abb1a9..8551303 100644 --- a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/service/SharingService.java +++ b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/service/SharingService.java @@ -94,7 +94,7 @@ public class SharingService { getNodeProperty(node, NodeProperties.GROUP_READ_URI).setValue(groupRead); getNodeProperty(node, NodeProperties.GROUP_WRITE_URI).setValue(groupWrite); - vospaceClient.setNode(node); + vospaceClient.setNode(node, shareRequest.isRecursive()); } private Property getNodeProperty(Node node, String uri) { diff --git a/vospace-ui-backend/src/test/java/it/inaf/ia2/vospace/ui/service/SharingServiceTest.java b/vospace-ui-backend/src/test/java/it/inaf/ia2/vospace/ui/service/SharingServiceTest.java index 23fd9da..dbb67b8 100644 --- a/vospace-ui-backend/src/test/java/it/inaf/ia2/vospace/ui/service/SharingServiceTest.java +++ b/vospace-ui-backend/src/test/java/it/inaf/ia2/vospace/ui/service/SharingServiceTest.java @@ -22,6 +22,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.ArgumentMatchers.eq; @@ -114,7 +115,7 @@ public class SharingServiceTest { assertTrue(groupWrite.contains("people.bianca\\.verdi")); assertTrue(groupWrite.contains("group2")); return true; - })); + }), anyBoolean()); } private List<RapUser> getRapUsers() { diff --git a/vospace-ui-frontend/src/components/modal/ShareModal.vue b/vospace-ui-frontend/src/components/modal/ShareModal.vue index 421986f..dc2d29f 100644 --- a/vospace-ui-frontend/src/components/modal/ShareModal.vue +++ b/vospace-ui-frontend/src/components/modal/ShareModal.vue @@ -6,6 +6,7 @@ <h5 class="mt-3">Write permissions</h5> <ShareInputGroup id="user-write" :values="userWrite" :options="people" label="Users" placeholder="Search user..." buttonText="Add user" /> <ShareInputGroup id="group-write" :values="groupWrite" :options="groups" label="Groups" placeholder="Search group..." buttonText="Add group" /> + <b-form-checkbox id="recursive" v-model="recursive" name="recursive">Apply also to children</b-form-checkbox> </b-modal> </template> @@ -34,7 +35,8 @@ export default { groupWrite: [], userWrite: [], people: [], - groups: [] + groups: [], + recursive: true } }, methods: { @@ -64,7 +66,8 @@ export default { groupRead: this.groupRead, groupWrite: this.groupWrite, userRead: this.userRead, - userWrite: this.userWrite + userWrite: this.userWrite, + recursive: this.recursive }).then(() => { // Reload current path this.$bvModal.hide('share-modal'); -- GitLab