[jboss-cvs] jboss-seam/src/main/org/jboss/seam/init ...
Norman Richards
norman.richards at jboss.com
Tue Jun 19 17:36:38 EDT 2007
User: nrichards
Date: 07/06/19 17:36:38
Added: src/main/org/jboss/seam/init DeploymentDescriptorInfo.java
Log:
JBSEAM-955
Revision Changes Path
1.1 date: 2007/06/19 21:36:38; author: nrichards; state: Exp;jboss-seam/src/main/org/jboss/seam/init/DeploymentDescriptorInfo.java
Index: DeploymentDescriptorInfo.java
===================================================================
package org.jboss.seam.init;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.jboss.seam.ComponentType;
import org.jboss.seam.log.LogProvider;
import org.jboss.seam.log.Logging;
import org.jboss.seam.util.Resources;
import org.jboss.seam.util.XML;
public class DeploymentDescriptorInfo {
public final String NS_EJBJAR = "http://java.sun.com/xml/ns/javaee";
public final String NS_PERSISTENCE = "http://java.sun.com/xml/ns/persistence";
public final String NS_ORM = "http://java.sun.com/xml/ns/persistence/orm";
private static final LogProvider log = Logging.getLogProvider(Initialization.class);
protected Map<String,EjbInfo> allBeans = new HashMap<String,EjbInfo>();
public DeploymentDescriptorInfo() {
// we really need to try all classloaders
try {
addXML(XML.getRootElement(Resources.getResourceAsStream("/META-INF/ejb-jar.xml")));
} catch (DocumentException e) {
log.warn("Couldn't parse /META-INF/ejb-jar.xml for component types " + e.getMessage());
}
try {
addXML(XML.getRootElement(Resources.getResourceAsStream("/META-INF/orm.xml")));
} catch (DocumentException e) {
log.warn("Couldn't parse /META-INF/orm.xml for component types " + e.getMessage());
}
}
public EjbInfo getBeanByClass(String name) {
return allBeans.get(name);
}
public void addXML(Element root) {
if (root != null) {
String ns = root.getNamespaceURI();
if (ns != null) {
if (ns.equals(NS_EJBJAR)) {
addEJBJarXML(root);
} else if (ns.equals(NS_ORM)) {
addOrmXML(root);
}
}
}
}
@SuppressWarnings("unchecked")
private void addEJBJarXML(Element root) {
Element beans = root.element("enterprise-beans");
if (beans != null) {
for (Element bean: (List<Element>) beans.elements("session")) {
EjbInfo info = new EjbInfo();
info.setName(bean.element("ejb-name").getTextTrim());
info.setEjbClass(bean.element("ejb-class").getTextTrim());
Element sessionType = bean.element("session-type");
if (sessionType != null && sessionType.getTextTrim().equalsIgnoreCase("Stateful")) {
info.setBeanType(ComponentType.STATEFUL_SESSION_BEAN);
} else {
info.setBeanType(ComponentType.STATELESS_SESSION_BEAN);
}
add(info);
}
for (Element bean: (List<Element>) beans.elements("message-driven")) {
EjbInfo info = new EjbInfo();
info.setName(bean.element("ejb-name").getTextTrim());
info.setEjbClass(bean.element("ejb-class").getTextTrim());
info.setBeanType(ComponentType.MESSAGE_DRIVEN_BEAN);
add(info);
}
}
}
@SuppressWarnings("unchecked")
private void addOrmXML(Element root) {
String packagePrefix = "";
Element pkg = root.element("package");
if (pkg!=null) {
packagePrefix = pkg.getTextTrim() + ".";
}
for (Element entity: (List<Element>) root.elements("entity")) {
String className = packagePrefix + entity.attribute("class").getText();
EjbInfo info = new EjbInfo();
info.setBeanType(ComponentType.ENTITY_BEAN);
info.setEjbClass(className);
add(info);
}
}
protected void add(EjbInfo info) {
allBeans.put(info.getEjbClass(), info);
}
public static class EjbInfo {
String name;
String ejbClass;
ComponentType beanType;
public ComponentType getBeanType() {
return beanType;
}
public void setBeanType(ComponentType beanType) {
this.beanType = beanType;
}
public String getEjbClass() {
return ejbClass;
}
public void setEjbClass(String ejbClass) {
this.ejbClass = ejbClass;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
More information about the jboss-cvs-commits
mailing list