KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > opensymphony > workflow > util > bsf > BSFRegister


1 /*
2  * Copyright (c) 2002-2003 by OpenSymphony
3  * All rights reserved.
4  */

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 JavaDoc;
20
21
22 /**
23  *
24  *
25  * @author $Author: hani $
26  * @version $Revision: 1.2 $
27  */

28 public class BSFRegister implements Register {
29     //~ Static fields/initializers /////////////////////////////////////////////
30

31     private static final Log log = LogFactory.getLog(BSFRegister.class);
32
33     //~ Methods ////////////////////////////////////////////////////////////////
34

35     public Object JavaDoc registerVariable(WorkflowContext context, WorkflowEntry entry, Map JavaDoc args) throws WorkflowException {
36         String JavaDoc language = (String JavaDoc) args.get(AbstractWorkflow.BSF_LANGUAGE);
37         String JavaDoc source = (String JavaDoc) args.get(AbstractWorkflow.BSF_SOURCE);
38         int row = TextUtils.parseInt((String JavaDoc) args.get(AbstractWorkflow.BSF_ROW));
39         int col = TextUtils.parseInt((String JavaDoc) args.get(AbstractWorkflow.BSF_COL));
40         String JavaDoc script = (String JavaDoc) args.get(AbstractWorkflow.BSF_SCRIPT);
41
42         BSFManager mgr = new BSFManager();
43         ClassLoader JavaDoc 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 JavaDoc o = engine.eval(source, row, col, script);
55
56             return o;
57         } catch (BSFException e) {
58             String JavaDoc message = "Could not get object registered in to variable map";
59             throw new WorkflowException(message, e);
60         }
61     }
62 }
63
Popular Tags