KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > rero > bridges > alias > ScriptAlias


1 package rero.bridges.alias;
2  
3 import java.util.*;
4 import java.io.*;
5
6 import sleep.engine.*;
7 import sleep.interfaces.*;
8 import sleep.runtime.*;
9
10 import rero.script.*;
11
12 /** implementation of subroutines for the DefaultEnvironment class */
13 public class ScriptAlias implements rero.ircfw.interfaces.FrameworkConstants
14 {
15     protected Block code;
16     protected ScriptAlias predecessor;
17     protected ScriptInstance owner; // owner of this alias.
18
protected Hashtable env;
19
20     public ScriptAlias(ScriptInstance si, Block _code)
21     {
22        this(si, _code, null);
23     }
24
25     public ScriptAlias(ScriptInstance si, Block _code, ScriptAlias _predecessor)
26     {
27        code = _code;
28        predecessor = _predecessor;
29        owner = si;
30
31        env = si.getScriptEnvironment().getEnvironment(); // assuming the environment is shared.
32
}
33
34     public boolean isValid()
35     {
36        return owner.isLoaded();
37     }
38
39     public ScriptAlias getPredecessor()
40     {
41        return predecessor;
42     }
43
44     public void runAlias(String JavaDoc name, String JavaDoc parameters)
45     {
46        synchronized (owner.getScriptVariables())
47        {
48           ScriptVariables vars = owner.getScriptVariables();
49
50           vars.pushLocalLevel();
51  
52           Variable localLevel = vars.getLocalVariables();
53
54           //
55
// setup the parameters variable
56
//
57
HashMap eventData = new HashMap();
58           eventData.put($PARMS$, parameters);
59           eventData.put($DATA$, name + " " + parameters);
60
61           LocalVariables locals = (LocalVariables)localLevel;
62           locals.setDataSource(eventData);
63
64           //
65
// execute the block of code
66
//
67
SleepUtils.runCode(code, owner.getScriptEnvironment());
68  
69           vars.popLocalLevel();
70        }
71     }
72 }
73
Popular Tags