KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > opensymphony > workflow > util > ejb > remote > RemoteEJBCondition


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

5 package com.opensymphony.workflow.util.ejb.remote;
6
7 import com.opensymphony.module.propertyset.PropertySet;
8
9 import com.opensymphony.workflow.*;
10
11 import org.apache.commons.logging.Log;
12 import org.apache.commons.logging.LogFactory;
13
14 import java.lang.reflect.Method JavaDoc;
15
16 import java.rmi.RemoteException JavaDoc;
17
18 import java.util.Map JavaDoc;
19
20 import javax.ejb.EJBHome JavaDoc;
21
22 import javax.naming.InitialContext JavaDoc;
23
24 import javax.rmi.PortableRemoteObject JavaDoc;
25
26
27 /**
28  *
29  *
30  * @author $Author: hani $
31  * @version $Revision: 1.2 $
32  */

33 public class RemoteEJBCondition implements Condition {
34     //~ Static fields/initializers /////////////////////////////////////////////
35

36     private static final Log log = LogFactory.getLog(RemoteEJBCondition.class);
37
38     //~ Methods ////////////////////////////////////////////////////////////////
39

40     public boolean passesCondition(Map JavaDoc transientVars, Map JavaDoc args, PropertySet ps) throws WorkflowException {
41         String JavaDoc ejbLocation = (String JavaDoc) args.get(AbstractWorkflow.EJB_LOCATION);
42
43         ConditionRemote sessionBean = null;
44
45         try {
46             EJBHome JavaDoc home = (EJBHome JavaDoc) PortableRemoteObject.narrow(new InitialContext JavaDoc().lookup(ejbLocation), EJBHome JavaDoc.class);
47             Method JavaDoc create = home.getClass().getMethod("create", new Class JavaDoc[0]);
48             sessionBean = (ConditionRemote) create.invoke(home, new Object JavaDoc[0]);
49         } catch (Exception JavaDoc e) {
50             String JavaDoc message = "Could not get handle to Remote Condition: " + ejbLocation;
51             throw new WorkflowException(message, e);
52         }
53
54         try {
55             return sessionBean.passesCondition(transientVars, args, ps);
56         } catch (RemoteException JavaDoc e) {
57             String JavaDoc message = "Remote exception encountered while executing Remote Condition: " + ejbLocation;
58             throw new WorkflowException(message, e);
59         }
60     }
61 }
62
Popular Tags