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 8a1722feecdee7f72829e4e893c9c12ac92ccd5c..744dc4329aa20554c4b5767f246d1512a01bc6ac 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 @@ -86,7 +86,7 @@ public class VOSpaceClient { return call(request, BodyHandlers.ofInputStream(), 200, res -> unmarshal(res, Node.class)); } - public List<NodeCollection> getNodeCollections(Optional<String> token) { + public NodeCollectionsWrapper getNodeCollections(Optional<String> token) { HttpRequest request = getRequest("/collections", token) .header("Accept", useJson ? "application/json" : "text/xml") @@ -94,7 +94,7 @@ public class VOSpaceClient { .build(); return call(request, BodyHandlers.ofInputStream(), 200, - res -> unmarshal(res, NodeCollectionsWrapper.class)).getNodeCollections(); + res -> unmarshal(res, NodeCollectionsWrapper.class)); } public JobSummary startTransferJob(Transfer transfer, Optional<String> token) { diff --git a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/controller/NodeCollectionsController.java b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/controller/NodeCollectionsController.java new file mode 100644 index 0000000000000000000000000000000000000000..e8ac1d8cc3ad48d25eee908d4c96726a449b0e14 --- /dev/null +++ b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/controller/NodeCollectionsController.java @@ -0,0 +1,43 @@ +/* + * This file is part of vospace-ui + * Copyright (C) 2021 Istituto Nazionale di Astrofisica + * SPDX-License-Identifier: GPL-3.0-or-later + */ +package it.inaf.ia2.vospace.ui.controller; + +import it.inaf.ia2.aa.data.User; +import it.inaf.ia2.vospace.ui.TokenProvider; +import it.inaf.ia2.vospace.ui.client.VOSpaceClient; +import it.inaf.oats.vospace.datamodel.collections.NodeCollectionsWrapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class NodeCollectionsController extends BaseController { + + private static final Logger LOG = LoggerFactory.getLogger(NodeCollectionsController.class); + + @Autowired + private VOSpaceClient client; + + @Autowired + private TokenProvider tokenProvider; + + @GetMapping(value = "/collections", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity<NodeCollectionsWrapper> listNodeCollections(User principal) + throws Exception + { + LOG.debug("listNodeCollections called for user {}", principal.getName()); + + NodeCollectionsWrapper ncw = + client.getNodeCollections(tokenProvider.getToken()); + + return ResponseEntity.ok(ncw); + } + +}