01: /*
02: The contents of this file are subject to the Mozilla Public License Version 1.1
03: (the "License"); you may not use this file except in compliance with the
04: License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
05:
06: Software distributed under the License is distributed on an "AS IS" basis,
07: WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
08: for the specific language governing rights and
09: limitations under the License.
10:
11: The Original Code is "The Columba Project"
12:
13: The Initial Developers of the Original Code are Frederik Dietz and Timo Stich.
14: Portions created by Frederik Dietz and Timo Stich are Copyright (C) 2003.
15:
16: All Rights Reserved.
17: */
18: package org.columba.core.scripting.interpreter;
19:
20: import java.util.Iterator;
21: import java.util.Map;
22:
23: import org.columba.core.scripting.model.ColumbaScript;
24: import org.python.util.PythonInterpreter;
25:
26: /**
27: @author Celso Pinto (cpinto@yimports.com)
28: */
29: public class JythonInterpreter extends ScriptInterpreter {
30:
31: private final static String[] EXTENSIONS = new String[] { "py",
32: "jython" };
33:
34: public String getName() {
35: return "Jython Interpreter";
36: }
37:
38: public String[] getSupportedExtensions() {
39: return EXTENSIONS;
40: }
41:
42: public void execute(ColumbaScript script, Map vars) {
43: /*
44: * it's the script responsability to define the "metadata" by invoking
45: * .setName(), .setAuthor() and .setDescription()
46: */
47: logger.append("Executing jython: " + script.getPath());
48:
49: PythonInterpreter jython = new PythonInterpreter();
50:
51: for (Iterator it = vars.entrySet().iterator(); it.hasNext();) {
52: Map.Entry entry = (Map.Entry) it.next();
53: jython.set(entry.getKey().toString(), entry.getValue());
54: }
55:
56: jython.execfile(script.getPath());
57: jython.cleanup();
58:
59: }
60:
61: }
|