1 30 package com.genimen.djeneric.tools.scriptengine.core.nodes; 31 32 import java.util.HashMap ; 33 34 import com.genimen.djeneric.language.Messages; 35 import com.genimen.djeneric.tools.scriptengine.core.DjScriptParserEngine; 36 import com.genimen.djeneric.tools.scriptengine.core.SimpleNode; 37 import com.genimen.djeneric.tools.scriptengine.core.util.DjScriptCallable; 38 import com.genimen.djeneric.tools.scriptengine.core.util.DjScriptCompileTimeScope; 39 import com.genimen.djeneric.tools.scriptengine.core.util.DjScriptExecutionException; 40 import com.genimen.djeneric.tools.scriptengine.core.util.DjScriptExecutionTimeScope; 41 import com.genimen.djeneric.tools.scriptengine.core.util.Variable; 42 import com.genimen.djeneric.util.DjStringReplacer; 43 44 public class JavaStatementNode extends SimpleNode 45 { 46 String _typeName; 47 String _variableName; 48 49 public JavaStatementNode(int i) 50 { 51 super(i); 52 } 53 54 public JavaStatementNode(DjScriptParserEngine p, int i) 55 { 56 super(p, i); 57 } 58 59 public String getName() 60 { 61 return "java"; 62 } 63 64 public String toString() 65 { 66 return getName(); 67 } 68 69 public String getTypeName() 70 { 71 return _typeName; 72 } 73 74 public String getVariableName() 75 { 76 return _variableName; 77 } 78 79 public void setTypeName(String type) 80 { 81 DjStringReplacer sr = new DjStringReplacer(type); 82 _typeName = sr.replace("\"", ""); 83 } 84 85 public void setVariableName(String string) 86 { 87 _variableName = string; 88 } 89 90 public void execute(DjScriptExecutionTimeScope ctxt) throws DjScriptExecutionException 91 { 92 String className = getTypeName(); 93 Object obj = null; 94 try 95 { 96 Class clz = ctxt.getContainer().loadClass(className); 97 obj = clz.newInstance(); 98 } 99 catch (Exception e) 100 { 101 throw new DjScriptExecutionException(e, this); 102 } 103 104 if (!(obj instanceof DjScriptCallable)) 105 { 106 throw new DjScriptExecutionException(Messages.getString("JavaStatementNode.JavaObject", className, 107 DjScriptCallable.class.getName())); 108 } 109 110 Variable variable = new Variable(getVariableName(), obj); 111 112 ctxt.pushVariable(variable); 113 } 114 115 public void validateScript(DjScriptCompileTimeScope ctxt) throws DjScriptExecutionException 116 { 117 ctxt.addJavaBean(getVariableName(), getTypeName()); 118 } 119 120 public void collectVariables(DjScriptCompileTimeScope ctxt, HashMap variables, int stopAtLine) 121 throws DjScriptExecutionException 122 { 123 if (stopAtLine >= 0 && getLine() > stopAtLine) return; 124 variables.put(_variableName, _typeName); 125 } 126 } | Popular Tags |