Changed to unmaintained
[appc.git] / appc-config / appc-config-generator / provider / src / main / java / org / onap / sdnc / config / generator / transform / XSLTTransformerNode.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP : APPC
4  * ================================================================================
5  * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Copyright (C) 2017 Amdocs
8  * =============================================================================
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  * 
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  * 
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  * 
21  * ============LICENSE_END=========================================================
22  */
23
24 package org.onap.sdnc.config.generator.transform;
25
26 import com.att.eelf.configuration.EELFLogger;
27 import com.att.eelf.configuration.EELFManager;
28 import java.io.File;
29 import java.io.StringReader;
30 import java.io.StringWriter;
31 import java.nio.charset.Charset;
32 import java.util.Map;
33 import javax.xml.transform.Transformer;
34 import javax.xml.transform.TransformerException;
35 import javax.xml.transform.TransformerFactory;
36 import javax.xml.transform.stream.StreamResult;
37 import javax.xml.transform.stream.StreamSource;
38 import org.apache.commons.io.FileUtils;
39 import org.apache.commons.lang3.StringUtils;
40 import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
41 import org.onap.ccsdk.sli.core.sli.SvcLogicException;
42 import org.onap.ccsdk.sli.core.sli.SvcLogicJavaPlugin;
43 import org.onap.sdnc.config.generator.ConfigGeneratorConstant;
44 import org.onap.sdnc.config.generator.merge.ParameterMissingException;
45
46 public class XSLTTransformerNode implements SvcLogicJavaPlugin {
47
48     private static final EELFLogger log =
49         EELFManager.getInstance().getLogger(XSLTTransformerNode.class);
50
51     public void transformData(Map<String, String> inParams, SvcLogicContext ctx)
52         throws SvcLogicException {
53         log.trace("Received convertJson2DGContext call with params : " + inParams);
54         String responsePrefix = inParams.get(ConfigGeneratorConstant.INPUT_PARAM_RESPONSE_PRIFIX);
55         try {
56             responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix + ".") : "";
57
58             String templateData = inParams.get(ConfigGeneratorConstant.INPUT_PARAM_TEMPLATE_DATA);
59
60             if (StringUtils.isNotBlank(templateData)) {
61                 String templateFile =
62                     inParams.get(ConfigGeneratorConstant.INPUT_PARAM_TEMPLATE_FILE);
63                 if (StringUtils.isNotBlank(templateFile)) {
64                     templateData = FileUtils.readFileToString(new File(templateFile),
65                         Charset.defaultCharset());
66                 }
67             }
68             if (StringUtils.isBlank(templateData)) {
69                 throw new ParameterMissingException("In-param templateFile/templateData value is missing");
70             }
71
72             String requestData = inParams.get(ConfigGeneratorConstant.INPUT_PARAM_REQUEST_DATA);
73             if (StringUtils.isBlank(requestData)) {
74                 throw new ParameterMissingException("In-param requestData value is missing");
75             }
76
77             String transformedData = transform(requestData, templateData);
78             log.trace("Transformed Data : " + transformedData);
79             ctx.setAttribute(responsePrefix + ConfigGeneratorConstant.OUTPUT_PARAM_TRANSFORMED_DATA,
80                 transformedData);
81             ctx.setAttribute(responsePrefix + ConfigGeneratorConstant.OUTPUT_PARAM_STATUS,
82                 ConfigGeneratorConstant.OUTPUT_STATUS_SUCCESS);
83         } catch (Exception e) {
84             ctx.setAttribute(responsePrefix + ConfigGeneratorConstant.OUTPUT_PARAM_STATUS,
85                 ConfigGeneratorConstant.OUTPUT_STATUS_FAILURE);
86             ctx.setAttribute(responsePrefix + ConfigGeneratorConstant.OUTPUT_PARAM_ERROR_MESSAGE,
87                 e.getMessage());
88             log.error("Failed in XSLTTransformerNode", e);
89             throw new SvcLogicException(e.getMessage());
90         }
91     }
92
93     private String transform(String requestData, String templateData) throws TransformerException {
94         StringWriter xmlResultResource = new StringWriter();
95
96         Transformer xmlTransformer = TransformerFactory
97             .newInstance()
98             .newTransformer(new StreamSource(new StringReader(templateData)));
99
100         xmlTransformer
101             .transform(new StreamSource(new StringReader(requestData)), new StreamResult(xmlResultResource));
102
103         return xmlResultResource.getBuffer().toString();
104     }
105 }