User: starksm
Date: 01/05/09 01:18:47
Added: src/main/org/jboss/metadata WebMetaData.java
Log:
A representation of the web-app.xml and jboss-web.xml deployment
descriptors as used by the AbstractWebContainer web container integration
support class.
Revision Changes Path
1.1 jboss/src/main/org/jboss/metadata/WebMetaData.java
Index: WebMetaData.java
===================================================================
/*
* JBoss, the OpenSource EJB server
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.metadata;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import org.w3c.dom.Element;
import org.jboss.ejb.DeploymentException;
/** A representation of the web-app.xml and jboss-web.xml deployment
* descriptors as used by the AbstractWebContainer web container integration
* support class.
*
* @see XmlLoadable
* @see org.jboss.web.AbstractWebContainer
* @author [EMAIL PROTECTED]
* @version $Revision: 1.1 $
*/
public class WebMetaData implements XmlLoadable
{
private HashMap resourceReferences = new HashMap();
private ArrayList environmentEntries = new ArrayList();
private HashMap ejbReferences = new HashMap();
private ArrayList securityRoleReferences = new ArrayList();
private String securityDomain;
public WebMetaData()
{
}
/** Return an iterator of the env-entry mappings.
@return Iterator of EnvEntryMetaData objects.
*/
public Iterator getEnvironmentEntries()
{
return environmentEntries.iterator();
}
/** Return an iterator of the ejb-ref mappings.
@return Iterator of EjbRefMetaData objects.
*/
public Iterator getEjbReferences()
{
return ejbReferences.values().iterator();
}
/** Return an iterator of the resource-ref mappings.
@return Iterator of ResourceRefMetaData objects.
*/
public Iterator getResourceReferences()
{
return resourceReferences.values().iterator();
}
public void importXml(Element element) throws Exception
{
String rootTag =
element.getOwnerDocument().getDocumentElement().getTagName();
if( rootTag.equals("web-app") )
{
importWebXml(element);
}
else if( rootTag.equals("jboss-web") )
{
importJBossWebXml(element);
}
}
/** Parse the elements of the web-app element used by the integration layer.
*/
protected void importWebXml(Element webApp) throws Exception
{
// Parse the web-app/resource-ref elements
Iterator iterator = MetaData.getChildrenByTagName(webApp, "resource-ref");
while( iterator.hasNext() )
{
Element resourceRef = (Element) iterator.next();
ResourceRefMetaData resourceRefMetaData = new ResourceRefMetaData();
resourceRefMetaData.importEjbJarXml(resourceRef);
resourceReferences.put(resourceRefMetaData.getRefName(),
resourceRefMetaData);
}
// Parse the web-app/env-entry elements
iterator = MetaData.getChildrenByTagName(webApp, "env-entry");
while( iterator.hasNext() )
{
Element envEntry = (Element) iterator.next();
EnvEntryMetaData envEntryMetaData = new EnvEntryMetaData();
envEntryMetaData.importEjbJarXml(envEntry);
environmentEntries.add(envEntryMetaData);
}
// Parse the web-app/ejb-ref elements
iterator = MetaData.getChildrenByTagName(webApp, "ejb-ref");
while( iterator.hasNext() )
{
Element ejbRef = (Element) iterator.next();
EjbRefMetaData ejbRefMetaData = new EjbRefMetaData();
ejbRefMetaData.importEjbJarXml(ejbRef);
ejbReferences.put(ejbRefMetaData.getName(), ejbRefMetaData);
}
}
/** Parse the elements of the jboss-web element used by the integration layer.
*/
protected void importJBossWebXml(Element jbossWeb) throws Exception
{
// Parse the jboss-web/resource-ref elements
Iterator iterator = MetaData.getChildrenByTagName(jbossWeb, "resource-ref");
while( iterator.hasNext() )
{
Element resourceRef = (Element) iterator.next();
String resRefName =
MetaData.getElementContent(MetaData.getUniqueChild(resourceRef, "res-ref-name"));
String jndiName =
MetaData.getElementContent(MetaData.getUniqueChild(resourceRef, "jndi-name"));
ResourceRefMetaData resourceRefMetaData = (ResourceRefMetaData)
resourceReferences.get(resRefName);
if( resourceRefMetaData == null )
{
throw new DeploymentException("resource-ref " + resRefName + " found
in jboss-web.xml but not in web-app.xml");
}
resourceRefMetaData.setResourceName(jndiName);
}
// Parse the jboss-web/ejb-ref elements
iterator = MetaData.getChildrenByTagName(jbossWeb, "ejb-ref");
while( iterator.hasNext() )
{
Element ejbRef = (Element) iterator.next();
String ejbRefName =
MetaData.getElementContent(MetaData.getUniqueChild(ejbRef, "ejb-ref-name"));
EjbRefMetaData ejbRefMetaData = (EjbRefMetaData)
ejbReferences.get(ejbRefName);
if( ejbRefMetaData == null )
{
throw new DeploymentException("ejb-ref " + ejbRefName + " found in
jboss-web.xml but not in web-app.xml");
}
ejbRefMetaData.importJbossXml(ejbRef);
}
}
}
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-development