svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.library / org.gvsig.expressionevaluator / org.gvsig.expressionevaluator.lib / org.gvsig.expressionevaluator.lib.impl / src / main / java / org / gvsig / expressionevaluator / impl / javascripting / CosaCompiledScript.java @ 47248
History | View | Annotate | Download (1.43 KB)
1 | 44389 | jjdelcerro | package org.gvsig.expressionevaluator.impl.javascripting; |
---|---|---|---|
2 | |||
3 | import javax.script.Bindings; |
||
4 | import javax.script.CompiledScript; |
||
5 | import javax.script.ScriptContext; |
||
6 | import javax.script.ScriptEngine; |
||
7 | import javax.script.ScriptException; |
||
8 | import org.gvsig.expressionevaluator.Code; |
||
9 | import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator; |
||
10 | import org.gvsig.expressionevaluator.ExpressionEvaluatorManager; |
||
11 | import org.gvsig.expressionevaluator.SymbolTable; |
||
12 | |||
13 | /**
|
||
14 | *
|
||
15 | * @author jjdelcerro
|
||
16 | */
|
||
17 | public class CosaCompiledScript extends CompiledScript { |
||
18 | |||
19 | private final CosaScriptEngine engine; |
||
20 | private final Code code; |
||
21 | |||
22 | public CosaCompiledScript(CosaScriptEngine engine, Code code) {
|
||
23 | this.engine = engine;
|
||
24 | this.code = code;
|
||
25 | } |
||
26 | |||
27 | @Override
|
||
28 | public Object eval(ScriptContext context) throws ScriptException { |
||
29 | ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager(); |
||
30 | Bindings bindings = context.getBindings(ScriptContext.ENGINE_SCOPE); |
||
31 | SymbolTable symbolTable; |
||
32 | if( bindings instanceof SymbolTableToBindingsAdapter ) { |
||
33 | symbolTable = ((SymbolTableToBindingsAdapter)bindings).getSymbolTable(); |
||
34 | } else {
|
||
35 | symbolTable = new BindingsToSymbolTableAdapter(bindings);
|
||
36 | } |
||
37 | Object x = manager.evaluate(symbolTable, this.code); |
||
38 | return x;
|
||
39 | } |
||
40 | |||
41 | @Override
|
||
42 | public ScriptEngine getEngine() {
|
||
43 | return this.engine; |
||
44 | } |
||
45 | |||
46 | } |