1 6 package org.jfox.ejb.meta; 7 8 import java.lang.reflect.Method ; 9 import java.util.ArrayList ; 10 import java.util.Collections ; 11 import java.util.Iterator ; 12 import java.util.List ; 13 14 import org.jfox.ioc.util.XMLUtils; 15 import org.w3c.dom.Element ; 16 import org.w3c.dom.Node ; 17 18 19 22 23 public class EJBDescriptor extends EJBDescriptorBase implements Cloneable { 24 private EJBBundle bundle; 25 private String displayName; 26 private String smallIcon; 27 private String largeIcon; 28 private String ejbClassName; 29 private List containerTransactions = new ArrayList (); 30 private List methodPermissions = new ArrayList (); 31 private List envEntries = new ArrayList (); 32 private List ejbReferences = new ArrayList (); 33 private List resourceReferences = new ArrayList (); 34 private List resourceEnvReferences = new ArrayList (); 35 private List roleReferences = new ArrayList (); 36 37 private String transactionType; 38 39 public EJBDescriptor() { 40 41 } 42 43 public void processXML(Node node) throws EJBDescriptionException { 44 super.processXML(node); 45 setDisplayName(XMLUtils.getChildNodeValueOf(node, "display-name")); 46 setSmallIcon(XMLUtils.getChildNodeValueOf(node, "small-icon")); 47 setLargeIcon(XMLUtils.getChildNodeValueOf(node, "large-icon")); 48 setEjbName(XMLUtils.getChildNodeValueOf(node, "ejb-name")); 49 setEjbClassName(XMLUtils.getChildNodeValueOf(node, "ejb-class")); 50 setTransactionType(XMLUtils.getChildNodeValueOf(node, "transaction-type")); 51 52 Iterator envEntries = XMLUtils.getElementsByTagName((Element ) node, "env-entry"); 53 while(envEntries.hasNext()) { 54 Element envEntry = (Element ) envEntries.next(); 55 EnvEntryDescriptor eed = new EnvEntryDescriptor(); 56 eed.processXML(envEntry); 57 addEnvtEntry(eed); 58 } 59 60 Iterator ejbRefs = XMLUtils.getElementsByTagName((Element ) node, "ejb-ref"); 61 while(ejbRefs.hasNext()) { 62 Element ejbRef = (Element ) ejbRefs.next(); 63 EJBReferenceDescriptor erd = new EJBReferenceDescriptor(); 64 erd.processXML(ejbRef); 65 addEJBReference(erd); 66 } 67 68 Iterator resRefs = XMLUtils.getElementsByTagName((Element ) node, "resource-ref"); 69 while(resRefs.hasNext()) { 70 Element resRef = (Element ) resRefs.next(); 71 ResourceRefDescriptor rrd = new ResourceRefDescriptor(); 72 rrd.processXML(resRef); 73 addResourceRef(rrd); 74 } 75 76 Iterator resourceEnvRefs = XMLUtils.getElementsByTagName((Element ) node, "resource-env-ref"); 77 while(resourceEnvRefs.hasNext()) { 78 Element resourceEnvRef = (Element ) resourceEnvRefs.next(); 79 ResourceEnvRefDescriptor rerd = new ResourceEnvRefDescriptor(); 80 rerd.processXML(resourceEnvRef); 81 addResourceEnvRef(rerd); 82 } 83 84 91 } 92 93 public String getType() { 94 return "Session"; 95 } 96 97 public EJBBundle getEJBBundle() { 98 return bundle; 99 } 100 101 public void setEJBBundle(EJBBundle bundle) { 102 this.bundle = bundle; 103 } 104 105 public String getDisplayName() { 106 return displayName; 107 } 108 109 public void setDisplayName(String displayName) { 110 this.displayName = displayName; 111 } 112 113 public String getSmallIcon() { 114 return smallIcon; 115 } 116 117 public void setSmallIcon(String smallIcon) { 118 this.smallIcon = smallIcon; 119 } 120 121 public String getLargeIcon() { 122 return largeIcon; 123 } 124 125 public void setLargeIcon(String largeIcon) { 126 this.largeIcon = largeIcon; 127 } 128 129 public String getEjbClassName() { 130 return ejbClassName; 131 } 132 133 public void setEjbClassName(String ejbClassName) { 134 this.ejbClassName = ejbClassName; 135 } 136 137 public List getContainerTransactions() { 138 return Collections.unmodifiableList(containerTransactions); 139 } 140 141 public List getMethodPermissions() { 142 return Collections.unmodifiableList(methodPermissions); 143 } 144 145 public List getEnvEntries() { 146 return Collections.unmodifiableList(envEntries); 147 } 148 149 public List getEjbReferences() { 150 return Collections.unmodifiableList(ejbReferences); 151 } 152 153 public List getResourceReferences() { 154 return Collections.unmodifiableList(resourceReferences); 155 } 156 157 public List getResourceEnvReferences() { 158 return Collections.unmodifiableList(resourceEnvReferences); 159 } 160 161 public List getRoleReferences() { 162 return Collections.unmodifiableList(roleReferences); 163 } 164 165 172 public byte getMethodTransactionAttribute(Method method) { 173 for(int i = 0; i < containerTransactions.size(); i++) { 174 MethodTransaction mt = (MethodTransaction) containerTransactions.get(i); 175 if(mt.getMethod().match(method)) { 176 return mt.getTransactionAttr(); 177 } 178 } 179 return TransactionAttribute.TX_REQUIRED; 180 } 181 182 public void setTransactionType(String txType) { 183 if(!BEAN_MANAGED_TRANSACTION.equals(txType) && !CONTAINER_MANAGED_TRANSACTION.equals(txType)) { 184 throw new IllegalArgumentException ("transaction-type must be one of \"Bean\" and \"Container\""); 185 } 186 transactionType = txType; 187 } 188 189 public String getTransactionType() { 190 return transactionType; 191 } 192 193 public boolean isBeanManagedTransaction() { 194 return BEAN_MANAGED_TRANSACTION.equals(transactionType); 195 } 196 197 void addMethodTransaction(MethodTransaction mt) { 198 containerTransactions.add(mt); 199 } 200 201 void addEnvtEntry(EnvEntryDescriptor eed) { 202 envEntries.add(eed); 203 } 204 205 void addEJBReference(EJBReferenceDescriptor erd) { 206 ejbReferences.add(erd); 207 } 208 209 void addResourceRef(ResourceRefDescriptor rrd) { 210 resourceReferences.add(rrd); 211 } 212 213 void addResourceEnvRef(ResourceEnvRefDescriptor rerd) { 214 resourceEnvReferences.add(rerd); 215 } 216 217 223 public Object clone() throws CloneNotSupportedException { 224 return super.clone(); 225 } 226 227 public static void main(String [] args) { 228 229 } 230 231 } 232 | Popular Tags |