1 5 package com.opensymphony.workflow.util.bsf; 6 7 import com.ibm.bsf.BSFEngine; 8 import com.ibm.bsf.BSFException; 9 import com.ibm.bsf.BSFManager; 10 11 import com.opensymphony.util.TextUtils; 12 13 import com.opensymphony.workflow.*; 14 import com.opensymphony.workflow.spi.WorkflowEntry; 15 16 import org.apache.commons.logging.Log; 17 import org.apache.commons.logging.LogFactory; 18 19 import java.util.Map ; 20 21 22 28 public class BSFRegister implements Register { 29 31 private static final Log log = LogFactory.getLog(BSFRegister.class); 32 33 35 public Object registerVariable(WorkflowContext context, WorkflowEntry entry, Map args) throws WorkflowException { 36 String language = (String ) args.get(AbstractWorkflow.BSF_LANGUAGE); 37 String source = (String ) args.get(AbstractWorkflow.BSF_SOURCE); 38 int row = TextUtils.parseInt((String ) args.get(AbstractWorkflow.BSF_ROW)); 39 int col = TextUtils.parseInt((String ) args.get(AbstractWorkflow.BSF_COL)); 40 String script = (String ) args.get(AbstractWorkflow.BSF_SCRIPT); 41 42 BSFManager mgr = new BSFManager(); 43 ClassLoader loader = Thread.currentThread().getContextClassLoader(); 44 45 if (loader != null) { 46 mgr.setClassLoader(loader); 47 } 48 49 mgr.registerBean("entry", entry); 50 mgr.registerBean("context", context); 51 52 try { 53 BSFEngine engine = mgr.loadScriptingEngine(language); 54 Object o = engine.eval(source, row, col, script); 55 56 return o; 57 } catch (BSFException e) { 58 String message = "Could not get object registered in to variable map"; 59 throw new WorkflowException(message, e); 60 } 61 } 62 } 63 | Popular Tags |