Newer
Older
/*
* This file is part of vospace-rest
* Copyright (C) 2021 Istituto Nazionale di Astrofisica
* SPDX-License-Identifier: GPL-3.0-or-later
*/
Sonia Zorba
committed
import it.inaf.ia2.aa.data.User;
import net.ivoa.xml.vospace.v2.LinkNode;
import net.ivoa.xml.vospace.v2.Node;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.beans.factory.annotation.Autowired;
Sonia Zorba
committed
import org.springframework.web.bind.annotation.PutMapping;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Sonia Zorba
committed
public class CreateNodeController extends BaseNodeController {
private static final Logger LOG = LoggerFactory.getLogger(CreateNodeController.class);
Nicola Fulvio Calabria
committed
Sonia Zorba
committed
@Autowired
private CreateNodeService createNodeService;
Nicola Fulvio Calabria
committed
Sonia Zorba
committed
@PutMapping(value = {"/nodes", "/nodes/**"},
consumes = {MediaType.APPLICATION_XML_VALUE, MediaType.TEXT_XML_VALUE, MediaType.APPLICATION_JSON_VALUE},
produces = {MediaType.APPLICATION_XML_VALUE, MediaType.TEXT_XML_VALUE, MediaType.APPLICATION_JSON_VALUE})
Sonia Zorba
committed
public Node createNode(@RequestBody Node node, User principal) {
Nicola Fulvio Calabria
committed
Nicola Fulvio Calabria
committed
LOG.debug("createNodeController called for node with URI {} and PATH {}", node.getUri(), path);
this.validateAndCheckPayloadURIConsistence(node);
// validate format of input node
this.validateInputNode(node);
return createNodeService.createNode(node, path, principal);
Nicola Fulvio Calabria
committed
Nicola Fulvio Calabria
committed
}
private void validateInputNode(Node node) {
if (node instanceof LinkNode) {
this.validateLinkNode((LinkNode) node);