1 6 7 package org.jfox.ejb.meta; 8 9 import java.util.HashMap ; 10 import java.util.Iterator ; 11 import java.util.List ; 12 import java.util.Map ; 13 14 import org.jfox.ioc.util.XMLUtils; 15 import org.w3c.dom.Document ; 16 import org.w3c.dom.Element ; 17 import org.w3c.dom.Node ; 18 19 22 23 public class EJBBundle extends Descriptor { 24 private String displayName; 25 private String smallIcon; 26 private String largeIcon; 27 private Map ejbs = new HashMap (); 29 30 public EJBBundle(Document root) throws EJBDescriptionException { 31 processXML(root.getDocumentElement()); 32 } 33 34 35 41 public void processXML(Node 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 Iterator sessionBeans = XMLUtils.getElementsByTagName((Element ) node, "session"); 49 while(sessionBeans.hasNext()) { 50 Element sessionElement = (Element ) sessionBeans.next(); 51 SessionDescriptor sessionDescriptor = new SessionDescriptor(); 52 sessionDescriptor.processXML(sessionElement); 53 addEjb(sessionDescriptor); 54 } 55 56 Iterator mdbs = XMLUtils.getElementsByTagName((Element )node,"message-driven"); 58 while(mdbs.hasNext()){ 59 Element mdbElement = (Element )mdbs.next(); 60 MDBDescriptor mdbDescriptor = new MDBDescriptor(); 61 mdbDescriptor.processXML(mdbElement); 62 addEjb(mdbDescriptor); 63 } 64 65 69 Iterator cmts = XMLUtils.getElementsByTagName((Element ) node, "container-transaction"); 70 while(cmts.hasNext()) { 71 Element cmt = (Element ) cmts.next(); 72 ContainerTransactionDescriptor ctd = new ContainerTransactionDescriptor(this); 73 ctd.processXML(cmt); 75 } 76 77 initEjbReference(); 79 80 } 81 82 private void initEjbReference() throws EJBDescriptionException { 83 for(Iterator it = ejbs.values().iterator(); it.hasNext();) { 84 EJBDescriptor ejb = (EJBDescriptor) it.next(); 85 List ejbRefs = ejb.getEjbReferences(); 86 for(int i = 0; i < ejbRefs.size(); i++) { 87 EJBReferenceDescriptor ejbRef = (EJBReferenceDescriptor) ejbRefs.get(i); 88 String linkedEjbName = ejbRef.getEjbName(); 89 if(linkedEjbName == null || linkedEjbName.trim().equals("")) { 90 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 getDisplayName() { 105 return displayName; 106 } 107 108 public void setDisplayName(String displayName) { 109 this.displayName = displayName; 110 } 111 112 public String getSmallIcon() { 113 return smallIcon; 114 } 115 116 public void setSmallIcon(String smallIcon) { 117 this.smallIcon = smallIcon; 118 } 119 120 public String getLargeIcon() { 121 return largeIcon; 122 } 123 124 public void setLargeIcon(String 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 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 [] args) { 142 143 } 144 145 } 146 147 | Popular Tags |