KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > za > org > coefficient > events > beans > CoefficientEventMessageBean


1 package za.org.coefficient.events.beans;
2
3 import java.util.List JavaDoc;
4
5 import javax.ejb.*;
6 import javax.jms.*;
7
8 import za.org.coefficient.events.*;
9 import za.org.coefficient.events.CoefficientEvent;
10 import za.org.coefficient.events.EventDispatcher;
11
12 /**
13  * Class: CoefficientEventMessageBean
14  * Description: MessageBean wrapper around CoefficientEvent facilities
15  * @author tfogwill
16  *
17  * @ejb:bean name="CoefficientEventMessageBean"
18  * transaction-type="Container"
19  * acknowledge-mode="Auto-acknowledge"
20  * destination-type="javax.jms.Queue"
21  * subscription-durability="Durable"
22  * @jboss:destination-jndi-name name="queue/eventsQueue"
23  */

24 public class CoefficientEventMessageBean implements javax.ejb.MessageDrivenBean JavaDoc, javax.jms.MessageListener JavaDoc {
25
26
27     private final EventDispatcher dispatcher = new EventDispatcher();
28
29     /**
30      * The message context
31      */

32     private MessageDrivenContext ctx = null;
33
34     /**
35      * Default constructor
36      */

37     public CoefficientEventMessageBean() {}
38     
39     /**
40      * @see javax.ejb.MessageDrivenBean#ejbRemove()
41      */

42     public void ejbRemove() throws EJBException {}
43     
44     /**
45      * @see javax.ejb.MessageDrivenBean#ejbCreate()
46      */

47     public void ejbCreate() throws EJBException {}
48     
49     /**
50      * @see javax.ejb.MessageDrivenBean#setMessageDrivenContext(javax.ejb.MessageDrivenContext)
51      */

52     public void setMessageDrivenContext(MessageDrivenContext ctx) throws EJBException {
53         this.ctx = ctx;
54     }
55     
56     /**
57      * @see javax.jms.MessageListener#onMessage(javax.jms.Message)
58      */

59     public void onMessage(Message message) {
60         if (message instanceof ObjectMessage) {
61             ObjectMessage objMessage = (ObjectMessage) message;
62             try {
63                 Object JavaDoc obj = objMessage.getObject();
64                 if (obj instanceof CoefficientEvent) handleEvent((CoefficientEvent) obj);
65                 else if (obj instanceof List JavaDoc){
66                     List JavaDoc list = (List JavaDoc) obj;
67                     if (list.size() == 2){
68                         Object JavaDoc one = list.get(0);
69                         Object JavaDoc two = list.get(1);
70                         if (one instanceof Class JavaDoc && two instanceof CoefficientEventHandler){
71                             EventHandlerRegistry.getInstance().registerEventHandler((Class JavaDoc) one, (CoefficientEventHandler)two);
72                         }
73                     }
74                 }
75             } catch (JMSException e) {
76                 System.err.println("CoefficientEventMessageBean Exception -> problem getting event object from messsage");
77                 e.printStackTrace();
78             } catch (Exception JavaDoc e) {
79                 System.err.println("CoefficientEventMessageBean Exception -> error handling event message.");
80                 e.printStackTrace();
81             }
82         } else {
83           System.out.println(
84               "CoefficientEventMessageBean Exception -> Expected: ObjectMessage containing a CoefficientEvent instance. Received: " + message.getClass());
85         }
86     }
87     
88     /**
89      * Dispatch/handle the event
90      * @param event the event
91      */

92     private void handleEvent(CoefficientEvent event){
93         dispatcher.dispatchEvent(event);
94     }
95
96
97 }
98
Popular Tags