KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jfox > ejb > meta > EJBBundle


1 /* JFox, the OpenSource J2EE Application Server
2  *
3  * Distributable under GNU LGPL license by gun.org
4  * more details please visit http://www.huihoo.org/jfox
5  */

6
7 package org.jfox.ejb.meta;
8
9 import java.util.HashMap JavaDoc;
10 import java.util.Iterator JavaDoc;
11 import java.util.List JavaDoc;
12 import java.util.Map JavaDoc;
13
14 import org.jfox.ioc.util.XMLUtils;
15 import org.w3c.dom.Document JavaDoc;
16 import org.w3c.dom.Element JavaDoc;
17 import org.w3c.dom.Node JavaDoc;
18
19 /**
20  * @author <a HREF="mailto:young_yy@hotmail.com">Young Yang</a>
21  */

22
23 public class EJBBundle extends Descriptor {
24     private String JavaDoc displayName;
25     private String JavaDoc smallIcon;
26     private String JavaDoc largeIcon;
27     // ejb-name => ejbDescriptor
28
private Map JavaDoc ejbs = new HashMap JavaDoc();
29
30     public EJBBundle(Document JavaDoc root) throws EJBDescriptionException {
31         processXML(root.getDocumentElement());
32     }
33
34
35     /**
36      * node is the Document element
37      *
38      * @param node
39      * @throws EJBDescriptionException
40      */

41     public void processXML(Node JavaDoc node) throws EJBDescriptionException {
42         super.processXML(node);
43         setDisplayName(XMLUtils.getChildNodeValueOf(node, "display-name"));
44         setSmallIcon(XMLUtils.getChildNodeValueOf(node, "small-icon"));
45         setLargeIcon(XMLUtils.getChildNodeValueOf(node, "large-icon"));
46
47         // session bean
48
Iterator JavaDoc sessionBeans = XMLUtils.getElementsByTagName((Element JavaDoc) node, "session");
49         while(sessionBeans.hasNext()) {
50             Element JavaDoc sessionElement = (Element JavaDoc) sessionBeans.next();
51             SessionDescriptor sessionDescriptor = new SessionDescriptor();
52             sessionDescriptor.processXML(sessionElement);
53             addEjb(sessionDescriptor);
54         }
55
56         // mdb
57
Iterator JavaDoc mdbs = XMLUtils.getElementsByTagName((Element JavaDoc)node,"message-driven");
58         while(mdbs.hasNext()){
59             Element JavaDoc mdbElement = (Element JavaDoc)mdbs.next();
60             MDBDescriptor mdbDescriptor = new MDBDescriptor();
61             mdbDescriptor.processXML(mdbElement);
62             addEjb(mdbDescriptor);
63         }
64
65         // entity bean not supported now
66
// message driven bean not supported now
67
// security-role not supported now
68

69         Iterator JavaDoc cmts = XMLUtils.getElementsByTagName((Element JavaDoc) node, "container-transaction");
70         while(cmts.hasNext()) {
71             Element JavaDoc cmt = (Element JavaDoc) cmts.next();
72             ContainerTransactionDescriptor ctd = new ContainerTransactionDescriptor(this);
73             // will register cmt to EJBDescriptor
74
ctd.processXML(cmt);
75         }
76
77         // set the ejb reference ejb-name
78
initEjbReference();
79
80     }
81
82     private void initEjbReference() throws EJBDescriptionException {
83         for(Iterator JavaDoc it = ejbs.values().iterator(); it.hasNext();) {
84             EJBDescriptor ejb = (EJBDescriptor) it.next();
85             List JavaDoc ejbRefs = ejb.getEjbReferences();
86             for(int i = 0; i < ejbRefs.size(); i++) {
87                 EJBReferenceDescriptor ejbRef = (EJBReferenceDescriptor) ejbRefs.get(i);
88                 String JavaDoc linkedEjbName = ejbRef.getEjbName();
89                 if(linkedEjbName == null || linkedEjbName.trim().equals("")) {
90                     // if not specify ejb-link, just use ejb-ref
91
ejbRef.setJndiName(ejbRef.getRefName());
92                 }
93                 else {
94                     if(!ejbs.containsKey(linkedEjbName)) {
95                         throw new EJBDescriptionException("not find the ejb name for ejb-link: " + linkedEjbName + " in ejb: " + ejb.getEjbName());
96                     }
97                     ejbRef.setJndiName(((EJBDescriptor) ejbs.get(linkedEjbName)).getJndiName());
98
99                 }
100             }
101         }
102     }
103
104     public String JavaDoc getDisplayName() {
105         return displayName;
106     }
107
108     public void setDisplayName(String JavaDoc displayName) {
109         this.displayName = displayName;
110     }
111
112     public String JavaDoc getSmallIcon() {
113         return smallIcon;
114     }
115
116     public void setSmallIcon(String JavaDoc smallIcon) {
117         this.smallIcon = smallIcon;
118     }
119
120     public String JavaDoc getLargeIcon() {
121         return largeIcon;
122     }
123
124     public void setLargeIcon(String JavaDoc largeIcon) {
125         this.largeIcon = largeIcon;
126     }
127
128     private void addEjb(EJBDescriptor ejbDesc) {
129         ejbDesc.setEJBBundle(this);
130         ejbs.put(ejbDesc.getEjbName(), ejbDesc);
131     }
132
133     public EJBDescriptor getEjb(String JavaDoc ejbName) {
134         return (EJBDescriptor) ejbs.get(ejbName);
135     }
136
137     public EJBDescriptor[] getEjbDescriptors() {
138         return (EJBDescriptor[]) ejbs.values().toArray(new EJBDescriptor[ejbs.size()]);
139     }
140
141     public static void main(String JavaDoc[] args) {
142
143     }
144
145 }
146
147
Popular Tags