1 20 21 package cpmake; 22 23 import bsh.*; 24 import java.io.*; 25 26 class BeanShellInterpreter 27 implements ScriptInterpreter 28 { 29 private Interpreter m_interpreter; 30 31 private int getLineNumber(String message) 32 { 33 return (-1); 34 } 35 36 public BeanShellInterpreter() 37 { 38 m_interpreter = new Interpreter(); 39 } 40 41 public void set(String var, Object value) 42 throws CPMakeException 43 { 44 try 45 { 46 m_interpreter.set(var, value); 47 } 48 catch (EvalError ee) 49 { 50 throw new ScriptException(ee.getErrorLineNumber(), ee.getErrorSourceFile(), ee.getMessage()); 51 } 52 } 53 54 public void call(String method, String param1) 55 throws CPMakeException 56 { 57 call(method, param1, null); 58 } 59 60 public void call(String method, String param1, String param2) 61 throws CPMakeException 62 { 63 String cmd; 64 if (param2 == null) 65 cmd = method + "(" + param1 + ")"; 66 else 67 cmd = method + "(" + param1 + ", " + param2 + ")"; 68 69 try 70 { 71 m_interpreter.eval(cmd); 72 } 73 catch(TargetError te) 74 { 75 if (te.getTarget() instanceof CPMakeException) 76 throw (CPMakeException)te.getTarget(); 77 else 78 { 79 te.getTarget().printStackTrace(); 80 throw new ScriptException(te.getErrorLineNumber(), te.getErrorSourceFile(), 81 te.getMessage()+"\n"+te.getTarget().getMessage()); 82 } 83 } 84 catch(EvalError ee) 85 { 86 throw new ScriptException(ee.getErrorLineNumber(), ee.getErrorSourceFile(), ee.getMessage()); 87 } 88 } 89 90 public void source(String file) 91 throws CPMakeException, FileNotFoundException, IOException 92 { 93 try 94 { 95 m_interpreter.source(file); 96 } 97 catch(TargetError te) 98 { 99 te.getTarget().printStackTrace(); 100 if (te.getTarget() instanceof CPMakeException) 101 throw (CPMakeException)te.getTarget(); 102 else 103 throw new ScriptException(te.getErrorLineNumber(), te.getErrorSourceFile(), 104 te.getMessage()+"\n"+te.getTarget().toString()); 105 } 106 catch (EvalError ee) 107 { 108 int lineNumber; 109 ee.printStackTrace(); 110 try 112 { 113 lineNumber = ee.getErrorLineNumber(); 114 } 115 catch (NullPointerException npe) 116 { 117 lineNumber = getLineNumber(ee.getMessage()); 118 } 119 throw new ScriptException(lineNumber, ee.getErrorSourceFile(), ee.getMessage()); 120 } 121 } 122 123 public void cleanup() 124 { 125 } 126 } 127 | Popular Tags |