aboutsummaryrefslogtreecommitdiffstats
path: root/jython-tosca-parser/src/main/java/org/openecomp/sdc/toscaparser/JythonRuntime.java
diff options
context:
space:
mode:
Diffstat (limited to 'jython-tosca-parser/src/main/java/org/openecomp/sdc/toscaparser/JythonRuntime.java')
-rw-r--r--jython-tosca-parser/src/main/java/org/openecomp/sdc/toscaparser/JythonRuntime.java53
1 files changed, 53 insertions, 0 deletions
diff --git a/jython-tosca-parser/src/main/java/org/openecomp/sdc/toscaparser/JythonRuntime.java b/jython-tosca-parser/src/main/java/org/openecomp/sdc/toscaparser/JythonRuntime.java
new file mode 100644
index 0000000..c5810a9
--- /dev/null
+++ b/jython-tosca-parser/src/main/java/org/openecomp/sdc/toscaparser/JythonRuntime.java
@@ -0,0 +1,53 @@
+package org.openecomp.sdc.toscaparser;
+
+import java.io.IOException;
+import java.nio.file.Path;
+import java.util.Properties;
+
+import org.openecomp.sdc.toscaparser.utils.JarExtractor;
+import org.python.util.PythonInterpreter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class JythonRuntime {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(JythonRuntime.class);
+ private final JarExtractor jarExtractor;
+ private Path homePath;
+
+ public JythonRuntime(JarExtractor jarExtractor) {
+ this.jarExtractor = jarExtractor;
+ }
+
+ public void initialize() throws IOException {
+ tryExtractPyhtonPackages();
+ initRuntime();
+ }
+
+ private void initRuntime() {
+ Properties systemProperties = System.getProperties();
+ Properties properties = getPythonProperties();
+ PythonInterpreter.initialize(systemProperties, properties, new String[0]);
+ }
+
+ private void tryExtractPyhtonPackages() throws IOException {
+ homePath = jarExtractor.extractPyhtonPackages();
+ }
+
+ private Properties getPythonProperties() {
+ Properties properties = new Properties();
+ if (homePath != null) {
+ LOGGER.debug("getPythonProperties - Setting python.home to {}", homePath);
+ properties.put("python.home", homePath.toString());
+ }
+ // Used to prevent: console: Failed to install '': java.nio.charset.UnsupportedCharsetException: cp0.
+ properties.put("python.console.encoding", "UTF-8");
+ return properties;
+ }
+
+ public void terminate() throws IOException {
+ if (homePath != null) {
+ jarExtractor.deleteDirectory(homePath);
+ }
+ }
+} \ No newline at end of file