1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 package net.sf.sail.core.activity.model;
25
26 import java.beans.beancontext.BeanContext;
27 import java.beans.beancontext.BeanContextChildSupport;
28
29 import javax.script.Namespace;
30 import javax.script.ScriptContext;
31 import javax.script.ScriptException;
32
33 public class ScriptBeanSupport
34 extends BeanContextChildSupport
35 implements IScriptBean
36 {
37 private static final long serialVersionUID = 1L;
38 protected String name;
39 protected IScript script;
40 protected Class customizerClass;
41
42 public ScriptBeanSupport()
43 {
44 }
45
46 public String getName()
47 {
48 return name;
49 }
50
51 public void setName(String value)
52 {
53 name = value;
54 }
55
56 public void setScriptParent(BeanContext parent)
57 {
58 if (parent instanceof ScriptBeanContext)
59 {
60 ScriptBeanContext scriptBeanContext = (ScriptBeanContext) parent;
61 ScriptContext parentContext = scriptBeanContext.getScript().getScriptContext();
62 ScriptContext context = script.getScriptContext();
63 Namespace parentNamespace = parentContext.getNamespace(ENGINE_SCOPE);
64 Namespace namespace = context.getNamespace(ENGINE_SCOPE);
65 if (namespace instanceof ScopeNamespace)
66 {
67 ((ScopeNamespace) namespace).setParent((ScopeNamespace) parentNamespace);
68 }
69 else if (parentNamespace instanceof ScopeNamespace)
70 {
71 namespace = new ScopeNamespace((ScopeNamespace) parentNamespace);
72 }
73 context.setNamespace(namespace, ENGINE_SCOPE);
74 }
75 }
76
77 public BeanContext getScriptParent()
78 {
79 return getBeanContext();
80 }
81
82 public Object evaluate()
83 throws ScriptException
84 {
85 return (script == null) ? null: script.evaluate();
86 }
87
88 public Class getCustomizerClass()
89 {
90 return customizerClass;
91 }
92
93 public void setCustomizerClass(Class customizer)
94 {
95 customizerClass = customizer;
96 }
97
98
99
100
101 public IScript getScript()
102 {
103 return script;
104 }
105
106
107
108
109 public void setScript(IScript script)
110 {
111 this.script = script;
112 }
113 }