diff options
author | 2017-03-29 13:35:45 +0300 | |
---|---|---|
committer | 2017-03-29 13:35:45 +0300 | |
commit | e2cc2530fc6d54ebc975c01a4ff887ce12f0a736 (patch) | |
tree | 38385867295c8a09fb0d7f8eaf5fa78179e5b13a /jython-tosca-parser/src/main/java/org/openecomp/sdc/toscaparser/ToscaParserFactory.java | |
parent | bccebaa9888906f8ff78172f62ec592956066d82 (diff) |
[SDC-6] sdc-distribution-client 1707 rebasing
Change-Id: I322a05fd79beb6ba4fee4d32afffecf531b86e98
Signed-off-by: Pavel Aharoni <pa0916@att.com>
Diffstat (limited to 'jython-tosca-parser/src/main/java/org/openecomp/sdc/toscaparser/ToscaParserFactory.java')
-rw-r--r-- | jython-tosca-parser/src/main/java/org/openecomp/sdc/toscaparser/ToscaParserFactory.java | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/jython-tosca-parser/src/main/java/org/openecomp/sdc/toscaparser/ToscaParserFactory.java b/jython-tosca-parser/src/main/java/org/openecomp/sdc/toscaparser/ToscaParserFactory.java new file mode 100644 index 0000000..8bb1e17 --- /dev/null +++ b/jython-tosca-parser/src/main/java/org/openecomp/sdc/toscaparser/ToscaParserFactory.java @@ -0,0 +1,48 @@ +package org.openecomp.sdc.toscaparser; + +import java.io.IOException; + +import org.openecomp.sdc.toscaparser.api.ToscaTemplateFactory; +import org.openecomp.sdc.toscaparser.utils.JarExtractor; +import org.python.util.PythonInterpreter; + +/** + * This is the entry point of the tosca-parser: a factory for creating {@code ToscaParser}s. + * <b>This class is not thread-safe.</b> Once you are done with all {@code ToscaParser}s + * created by this factory, the {@code ToscaParserFactory} itself must be closed either by + * calling its close() method explicitly or preferrably by creating it in a try-with-resources block: + * <pre> + try (ToscaParserFactory toscaParserFactory = new ToscaParserFactory()){ + ToscaParser parser = toscaParserFactory.create() + ToscaTemplate toscaTemplate = parser.parse(toscaFilePath); + ... + } + * </pre> + * @author Yaniv Nahoum + * + */ +public class ToscaParserFactory implements AutoCloseable { + + private JythonRuntime jythonRuntime; + + public ToscaParser create() throws IOException { + initRuntime(); + ToscaTemplateFactory toscaTemplateFactory = new ToscaTemplateFactory(); + PythonInterpreter pythonInterpreter = new PythonInterpreter(); + return new ToscaParser(toscaTemplateFactory, pythonInterpreter); + } + + private void initRuntime() throws IOException { + if (jythonRuntime == null) { + jythonRuntime = new JythonRuntime(new JarExtractor()); + jythonRuntime.initialize(); + } + } + + @Override + public void close() throws IOException { + if (jythonRuntime != null) { + jythonRuntime.terminate(); + } + } +} |