aboutsummaryrefslogtreecommitdiffstats
path: root/jython-tosca-parser/src/main/java/org/openecomp/sdc/toscaparser/ToscaParser.java
diff options
context:
space:
mode:
Diffstat (limited to 'jython-tosca-parser/src/main/java/org/openecomp/sdc/toscaparser/ToscaParser.java')
-rw-r--r--jython-tosca-parser/src/main/java/org/openecomp/sdc/toscaparser/ToscaParser.java36
1 files changed, 36 insertions, 0 deletions
diff --git a/jython-tosca-parser/src/main/java/org/openecomp/sdc/toscaparser/ToscaParser.java b/jython-tosca-parser/src/main/java/org/openecomp/sdc/toscaparser/ToscaParser.java
new file mode 100644
index 0000000..ae595f1
--- /dev/null
+++ b/jython-tosca-parser/src/main/java/org/openecomp/sdc/toscaparser/ToscaParser.java
@@ -0,0 +1,36 @@
+package org.openecomp.sdc.toscaparser;
+
+import java.util.Objects;
+
+import org.openecomp.sdc.toscaparser.api.ToscaTemplate;
+import org.openecomp.sdc.toscaparser.api.ToscaTemplateFactory;
+import org.openecomp.sdc.toscaparser.jython.JyToscaTemplate;
+import org.python.core.PyObject;
+import org.python.core.PyString;
+import org.python.util.PythonInterpreter;
+
+public class ToscaParser {
+
+ private final ToscaTemplateFactory toscaTemplateFactory;
+ private final PyObject jythonToscaTemplate;
+ private final PythonInterpreter pythonInterpreter;
+
+ public ToscaParser(ToscaTemplateFactory toscaTemplateFactory, PythonInterpreter pythonInterpreter) {
+ this.toscaTemplateFactory = Objects.requireNonNull(toscaTemplateFactory);
+ this.pythonInterpreter = Objects.requireNonNull(pythonInterpreter);
+ jythonToscaTemplate = getJythonToscaTemplate();
+ }
+
+ private PyObject getJythonToscaTemplate() {
+ try (PythonInterpreter interpreter = pythonInterpreter) {
+ interpreter.exec("from toscaparser.tosca_template import ToscaTemplate");
+ return interpreter.get("ToscaTemplate");
+ }
+ }
+
+ public ToscaTemplate parse(String path) {
+ PyObject toscaTemplateInstance = jythonToscaTemplate.__call__(new PyString(path));
+ JyToscaTemplate jyToscaTemplate = (JyToscaTemplate) toscaTemplateInstance.__tojava__(JyToscaTemplate.class);
+ return toscaTemplateFactory.create(jyToscaTemplate);
+ }
+}