2 * ============LICENSE_START========================================================================
\r
3 * ONAP : tr-069-adapter
\r
4 * =================================================================================================
\r
5 * Copyright (C) 2020 CommScope Inc Intellectual Property.
\r
6 * =================================================================================================
\r
7 * This tr-069-adapter software file is distributed by CommScope Inc under the Apache License,
\r
8 * Version 2.0 (the "License"); you may not use this file except in compliance with the License. You
\r
9 * may obtain a copy of the License at
\r
11 * http://www.apache.org/licenses/LICENSE-2.0
\r
13 * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
\r
14 * either express or implied. See the License for the specific language governing permissions and
\r
15 * limitations under the License.
\r
16 * ===============LICENSE_END=======================================================================
\r
19 package org.commscope.tr069adapter.netconf.rpc;
\r
21 import java.io.StringReader;
\r
22 import java.io.StringWriter;
\r
23 import java.net.URI;
\r
24 import java.net.URISyntaxException;
\r
26 import javax.xml.XMLConstants;
\r
27 import javax.xml.parsers.DocumentBuilder;
\r
28 import javax.xml.parsers.DocumentBuilderFactory;
\r
29 import javax.xml.transform.Transformer;
\r
30 import javax.xml.transform.TransformerFactory;
\r
31 import javax.xml.transform.dom.DOMSource;
\r
32 import javax.xml.transform.stream.StreamResult;
\r
34 import org.commscope.tr069adapter.mapper.model.NetConfRequest;
\r
35 import org.commscope.tr069adapter.mapper.model.NetConfResponse;
\r
36 import org.opendaylight.netconf.api.xml.XmlElement;
\r
37 import org.slf4j.Logger;
\r
38 import org.slf4j.LoggerFactory;
\r
39 import org.springframework.http.HttpEntity;
\r
40 import org.springframework.http.HttpHeaders;
\r
41 import org.springframework.web.client.RestTemplate;
\r
42 import org.w3c.dom.Document;
\r
43 import org.w3c.dom.Element;
\r
44 import org.xml.sax.InputSource;
\r
46 public class XmlUtility {
\r
47 private static final Logger logger = LoggerFactory.getLogger(XmlUtility.class);
\r
49 private XmlUtility() {}
\r
51 private static final Logger LOG = LoggerFactory.getLogger(XmlUtility.class);
\r
53 public static String convertDocumentToString(XmlElement element) {
\r
54 return convertDocumentToString(element.getDomElement());
\r
57 public static String convertDocumentToString(Element element) {
\r
58 String strxml = null;
\r
60 TransformerFactory transformerFactory = TransformerFactory.newInstance();
\r
61 transformerFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
\r
62 transformerFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");
\r
63 Transformer transformer = transformerFactory.newTransformer();
\r
64 DOMSource source = new DOMSource(element);
\r
65 StreamResult result = new StreamResult(new StringWriter());
\r
66 transformer.transform(source, result);
\r
67 strxml = result.getWriter().toString();
\r
68 } catch (Exception e) {
\r
69 LOG.error("Error while converting Element to String {}", e.toString());
\r
75 public static Element convertStringToDocument(String xmlStr) {
\r
76 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
\r
77 factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
\r
78 factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_SCHEMA, "");
\r
79 DocumentBuilder builder;
\r
81 builder = factory.newDocumentBuilder();
\r
82 Document doc = builder.parse(new InputSource(new StringReader(xmlStr)));
\r
83 return doc.getDocumentElement();
\r
84 } catch (Exception e) {
\r
85 LOG.error("Error while converting String to element {}", e.toString());
\r
90 public static NetConfResponse invokeMapperCall(String requestUrl, String requestXml,
\r
94 uri = new URI(requestUrl);
\r
95 } catch (URISyntaxException e) {
\r
96 logger.error("invalid URI {}", e.toString());
\r
99 RestTemplate restTemplate = new RestTemplate();
\r
100 HttpHeaders headers = new HttpHeaders();
\r
101 NetConfRequest req = new NetConfRequest(requestXml, deviceID);
\r
103 HttpEntity<NetConfRequest> entity = new HttpEntity<>(req, headers);
\r
104 NetConfResponse restResponse = null;
\r
106 restResponse = restTemplate.postForObject(uri, entity, NetConfResponse.class);
\r
109 return restResponse;
\r