[jboss-cvs] JBossAS SVN: r65998 - in projects/metadata/trunk: src/main/java/org/jboss/metadata/client/spec and 11 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Oct 10 00:33:59 EDT 2007


Author: scott.stark at jboss.org
Date: 2007-10-10 00:33:59 -0400 (Wed, 10 Oct 2007)
New Revision: 65998

Added:
   projects/metadata/trunk/src/main/java/org/jboss/metadata/common/jboss/LoaderRepositoryConfigMetaData.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/common/jboss/LoaderRepositoryMetaData.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/web/spec/Web23MetaData.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/web/spec/Web24MetaData.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/web/spec/Web25MetaData.java
   projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/web/WebApp23_testEverything.xml
   projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/web/WebApp23_testVersion.xml
Removed:
   projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/LoaderRepositoryConfigMetaData.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/LoaderRepositoryMetaData.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/web/spec/Web5xMetaData.java
Modified:
   projects/metadata/trunk/.classpath
   projects/metadata/trunk/src/main/java/org/jboss/metadata/client/spec/ApplicationClientMetaData.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/ear/jboss/JBossAppMetaData.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/ear/spec/EarMetaData.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEnterpriseBeanMetaData.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossMetaData.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossMetaDataWrapper.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/spec/EjbJarMetaData.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/JavaEEMetaDataConstants.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/web/jboss/JBossWebMetaData.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/web/spec/WebMetaData.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/web/spec/WebResourceCollectionMetaData.java
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/JBoss5xEverythingUnitTestCase.java
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/web/WebApp5EverythingUnitTestCase.java
Log:
Add support for dtd information

Modified: projects/metadata/trunk/.classpath
===================================================================
--- projects/metadata/trunk/.classpath	2007-10-10 02:24:42 UTC (rev 65997)
+++ projects/metadata/trunk/.classpath	2007-10-10 04:33:59 UTC (rev 65998)
@@ -18,7 +18,7 @@
 	<classpathentry kind="var" path="M2_REPO/oswego-concurrent/concurrent/1.3.4/concurrent-1.3.4.jar"/>
 	<classpathentry kind="var" path="M2_REPO/ant/ant-junit/1.6.5/ant-junit-1.6.5.jar"/>
 	<classpathentry kind="var" path="M2_REPO/jboss/jboss-logging-spi/2.0.3.GA/jboss-logging-spi-2.0.3.GA.jar" sourcepath="M2_REPO/jboss/jboss-logging-spi/2.0.3.GA/jboss-logging-spi-2.0.3.GA-sources.jar"/>
-	<classpathentry kind="var" path="M2_REPO/org/jboss/jbossxb/2.0.0-SNAPSHOT/jbossxb-2.0.0-SNAPSHOT.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/jboss/jbossxb/2.0.0-SNAPSHOT/jbossxb-2.0.0-SNAPSHOT.jar" sourcepath="/M2_REPO/org/jboss/jbossxb/2.0.0-SNAPSHOT/jbossxb-2.0.0-SNAPSHOT-sources.jar"/>
 	<classpathentry kind="var" path="M2_REPO/org/jboss/javaee/jboss-javaee/5.0.0.Beta3/jboss-javaee-5.0.0.Beta3.jar" sourcepath="M2_REPO/org/jboss/javaee/jboss-javaee/5.0.0.Beta3/jboss-javaee-5.0.0.Beta3-sources.jar"/>
 	<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar" sourcepath="M2_REPO/junit/junit/3.8.1/junit-3.8.1-sources.jar"/>
 	<classpathentry kind="var" path="M2_REPO/sun-jaxb/jaxb-api/2.0.5/jaxb-api-2.0.5.jar"/>

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/client/spec/ApplicationClientMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/client/spec/ApplicationClientMetaData.java	2007-10-10 02:24:42 UTC (rev 65997)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/client/spec/ApplicationClientMetaData.java	2007-10-10 04:33:59 UTC (rev 65998)
@@ -22,6 +22,7 @@
 package org.jboss.metadata.client.spec;
 
 import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlTransient;
 
 import org.jboss.metadata.javaee.spec.EJBReferenceMetaData;
 import org.jboss.metadata.javaee.spec.EJBReferencesMetaData;
@@ -54,12 +55,45 @@
    /** The environment */
    private RemoteEnvironmentRefsGroupMetaData jndiEnvironmentRefsGroup;
    
+   private String dtdPublicId;
+   private String dtdSystemId;
    /** The callback handler */
    private String callbackHandler;
 
    /** The message destinations */
    private MessageDestinationsMetaData messageDestinations;
-   
+
+   /**
+    * Callback for the DTD information
+    * @param root
+    * @param publicId
+    * @param systemId
+    */
+   @XmlTransient
+   public void setDTD(String root, String publicId, String systemId)
+   {
+      this.dtdPublicId = publicId;
+      this.dtdSystemId = systemId;
+   }
+   /**
+    * Get the DTD public id if one was seen
+    * @return the value of the web.xml dtd public id
+    */
+   @XmlTransient
+   public String getDtdPublicId()
+   {
+      return dtdPublicId;
+   }
+   /**
+    * Get the DTD system id if one was seen
+    * @return the value of the web.xml dtd system id
+    */
+   @XmlTransient
+   public String getDtdSystemId()
+   {
+      return dtdSystemId;
+   }
+
    public String getCallbackHandler()
    {
       return callbackHandler;

Copied: projects/metadata/trunk/src/main/java/org/jboss/metadata/common/jboss/LoaderRepositoryConfigMetaData.java (from rev 65904, projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/LoaderRepositoryConfigMetaData.java)
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/common/jboss/LoaderRepositoryConfigMetaData.java	                        (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/common/jboss/LoaderRepositoryConfigMetaData.java	2007-10-10 04:33:59 UTC (rev 65998)
@@ -0,0 +1,145 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.metadata.common.jboss;
+
+import org.jboss.metadata.javaee.support.IdMetaDataImpl;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+
+/**
+ * LoaderRepositoryConfigMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="loader-repository-configType")
+public class LoaderRepositoryConfigMetaData extends IdMetaDataImpl
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 8691106200687695652L;
+
+   /** The config parser class */
+   private String configParserClass;
+   
+   /** The config */
+   private String config; // TODO DOM!
+   
+   /**
+    * Create a new LoaderRepositoryConfigMetaData.
+    */
+   public LoaderRepositoryConfigMetaData()
+   {
+      // For serialization
+   }
+
+   /**
+    * Get the configParserClass.
+    * 
+    * @return the configParserClass.
+    */
+   public String getConfigParserClass()
+   {
+      return configParserClass;
+   }
+
+   /**
+    * Set the configParserClass.
+    * 
+    * @param configParserClass the configParserClass.
+    * @throws IllegalArgumentException for a null configParserClass
+    */
+   @XmlAttribute(name="configParserClass")
+   public void setConfigParserClass(String configParserClass)
+   {
+      if (configParserClass == null)
+         throw new IllegalArgumentException("Null configParserClass");
+      this.configParserClass = configParserClass.trim();
+   }
+
+   /**
+    * Get the config.
+    * 
+    * @return the config.
+    */
+   @XmlValue
+   public String getConfig()
+   {
+      return config;
+   }
+
+   /**
+    * Set the config.
+    * 
+    * @param config the config.
+    * @throws IllegalArgumentException for a null config
+    */
+   public void setConfig(String config)
+   {
+      if (config == null)
+         throw new IllegalArgumentException("Null config");
+      this.config = config.trim();
+   }
+
+   @Override
+   public int hashCode()
+   {
+      final int PRIME = 31;
+      int result = super.hashCode();
+      result = PRIME * result + ((config == null) ? 0 : config.hashCode());
+      result = PRIME * result + ((configParserClass == null) ? 0 : configParserClass.hashCode());
+      return result;
+   }
+
+   @Override
+   public boolean equals(Object obj)
+   {
+      if (this == obj)
+         return true;
+      if (!super.equals(obj))
+         return false;
+      if (getClass() != obj.getClass())
+         return false;
+      final LoaderRepositoryConfigMetaData other = (LoaderRepositoryConfigMetaData) obj;
+      if (config == null)
+      {
+         if (other.config != null)
+            return false;
+      }
+      else if (!config.equals(other.config))
+         return false;
+      if (configParserClass == null)
+      {
+         if (other.configParserClass != null)
+            return false;
+      }
+      else if (!configParserClass.equals(other.configParserClass))
+         return false;
+      return true;
+   }
+   
+   public String toString()
+   {
+      return "[id=" + getId() + ", config=" + config + ", parser=" + configParserClass + "]";
+   }
+}

Copied: projects/metadata/trunk/src/main/java/org/jboss/metadata/common/jboss/LoaderRepositoryMetaData.java (from rev 65904, projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/LoaderRepositoryMetaData.java)
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/common/jboss/LoaderRepositoryMetaData.java	                        (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/common/jboss/LoaderRepositoryMetaData.java	2007-10-10 04:33:59 UTC (rev 65998)
@@ -0,0 +1,133 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.metadata.common.jboss;
+
+import java.util.Set;
+
+import org.jboss.metadata.javaee.support.IdMetaDataImpl;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+
+/**
+ * LoaderRepositoryMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="loader-repositoryType")
+public class LoaderRepositoryMetaData extends IdMetaDataImpl
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -8560208691041447012L;
+
+   /** The repository class */
+   private String loaderRepositoryClass;
+   
+   /** The name */
+   private String name;
+   
+   /** The config */
+   private Set<LoaderRepositoryConfigMetaData> loaderRepositoryConfig;
+   
+   /**
+    * Create a new LoaderRepositoryConfigMetaData.
+    */
+   public LoaderRepositoryMetaData()
+   {
+      // For serialization
+   }
+
+   /**
+    * Get the loaderRepositoryClass.
+    * 
+    * @return the loaderRepositoryClass.
+    */
+   public String getLoaderRepositoryClass()
+   {
+      return loaderRepositoryClass;
+   }
+
+   /**
+    * Set the loaderRepositoryClass.
+    * 
+    * @param loaderRepositoryClass the loaderRepositoryClass.
+    * @throws IllegalArgumentException for a null loaderRepositoryClass
+    */
+   @XmlAttribute(name="loaderRepositoryClass") // TODO JBossXB default attribute names!
+   public void setLoaderRepositoryClass(String loaderRepositoryClass)
+   {
+      if (loaderRepositoryClass == null)
+         throw new IllegalArgumentException("Null loaderRepositoryClass");
+      this.loaderRepositoryClass = loaderRepositoryClass;
+   }
+
+   /**
+    * Get the loaderRepositoryConfig.
+    * 
+    * @return the loaderRepositoryConfig.
+    */
+   public Set<LoaderRepositoryConfigMetaData> getLoaderRepositoryConfig()
+   {
+      return loaderRepositoryConfig;
+   }
+
+   /**
+    * Set the loaderRepositoryConfig.
+    * 
+    * @param loaderRepositoryConfig the loaderRepositoryConfig.
+    * @throws IllegalArgumentException for a null loaderRepositoryConfig
+    */
+   //@XmlElement(type=NonNullLinkedHashSet.class)
+   public void setLoaderRepositoryConfig(Set<LoaderRepositoryConfigMetaData> loaderRepositoryConfig)
+   {
+      if (loaderRepositoryConfig == null)
+         throw new IllegalArgumentException("Null loaderRepositoryConfig");
+      this.loaderRepositoryConfig = loaderRepositoryConfig;
+   }
+
+   /**
+    * Get the name.
+    * 
+    * @return the name.
+    */
+   public String getName()
+   {
+      return name;
+   }
+
+   /**
+    * Set the name.
+    * 
+    * @param name the name.
+    * @throws IllegalArgumentException for a null name
+    */
+   @XmlValue
+   public void setName(String name)
+   {
+      if (name == null)
+         throw new IllegalArgumentException("Null name");
+      this.name = name;
+   }
+}

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ear/jboss/JBossAppMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ear/jboss/JBossAppMetaData.java	2007-10-10 02:24:42 UTC (rev 65997)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ear/jboss/JBossAppMetaData.java	2007-10-10 04:33:59 UTC (rev 65998)
@@ -29,10 +29,10 @@
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlTransient;
 
+import org.jboss.metadata.common.jboss.LoaderRepositoryMetaData;
 import org.jboss.metadata.ear.spec.Ear5xMetaData;
 import org.jboss.metadata.ear.spec.EarMetaData;
 import org.jboss.metadata.ear.spec.ModuleMetaData;
-import org.jboss.metadata.ejb.jboss.LoaderRepositoryMetaData;
 import org.jboss.metadata.javaee.spec.DescriptionGroupMetaData;
 import org.jboss.metadata.javaee.spec.SecurityRolesMetaData;
 import org.jboss.metadata.javaee.support.IdMetaDataImplWithOverride;

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ear/spec/EarMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ear/spec/EarMetaData.java	2007-10-10 02:24:42 UTC (rev 65997)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ear/spec/EarMetaData.java	2007-10-10 04:33:59 UTC (rev 65998)
@@ -25,7 +25,9 @@
 
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlTransient;
 
+import org.jboss.metadata.javaee.spec.JavaEEMetaDataConstants;
 import org.jboss.metadata.javaee.spec.SecurityRolesMetaData;
 import org.jboss.metadata.javaee.support.IdMetaDataImplWithDescriptionGroup;
 
@@ -38,6 +40,8 @@
 public class EarMetaData extends IdMetaDataImplWithDescriptionGroup
 {
    private static final long serialVersionUID = 1;
+   private String dtdPublicId;
+   private String dtdSystemId;
    private String version;
    /** The application modules */
    private List<ModuleMetaData> modules;
@@ -45,6 +49,37 @@
    private SecurityRolesMetaData securityRoles;
 
    /**
+    * Callback for the DTD information
+    * @param root
+    * @param publicId
+    * @param systemId
+    */
+   @XmlTransient
+   public void setDTD(String root, String publicId, String systemId)
+   {
+      this.dtdPublicId = publicId;
+      this.dtdSystemId = systemId;
+   }
+   /**
+    * Get the DTD public id if one was seen
+    * @return the value of the web.xml dtd public id
+    */
+   @XmlTransient
+   public String getDtdPublicId()
+   {
+      return dtdPublicId;
+   }
+   /**
+    * Get the DTD system id if one was seen
+    * @return the value of the web.xml dtd system id
+    */
+   @XmlTransient
+   public String getDtdSystemId()
+   {
+      return dtdSystemId;
+   }
+
+   /**
     * Is this a javaee 5 version application
     * @return true if this is a javaee 5 version application
     */
@@ -60,6 +95,14 @@
    {
       return false;
    }
+   /**
+    * Is this a javaee 1.3 version application
+    * @return true if this is a javaee 1.3 version application
+    */
+   public boolean isEE13()
+   {
+      return dtdPublicId != null && dtdPublicId.equals(JavaEEMetaDataConstants.J2EE_13_APP); 
+   }
 
    /**
     * Get the version.

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEnterpriseBeanMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEnterpriseBeanMetaData.java	2007-10-10 02:24:42 UTC (rev 65997)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEnterpriseBeanMetaData.java	2007-10-10 04:33:59 UTC (rev 65998)
@@ -27,11 +27,13 @@
 import java.util.Set;
 
 import org.jboss.metadata.ejb.spec.EnterpriseBeanMetaData;
+import org.jboss.metadata.ejb.spec.EntityBeanMetaData;
 import org.jboss.metadata.ejb.spec.ExcludeListMetaData;
 import org.jboss.metadata.ejb.spec.MethodInterfaceType;
 import org.jboss.metadata.ejb.spec.MethodPermissionMetaData;
 import org.jboss.metadata.ejb.spec.MethodPermissionsMetaData;
 import org.jboss.metadata.ejb.spec.SecurityIdentityMetaData;
+import org.jboss.metadata.ejb.spec.SessionBeanMetaData;
 import org.jboss.metadata.javaee.jboss.AnnotationsMetaData;
 import org.jboss.metadata.javaee.jboss.IgnoreDependencyMetaData;
 import org.jboss.metadata.javaee.jboss.JndiRefsMetaData;
@@ -54,6 +56,7 @@
 import org.jboss.metadata.javaee.spec.ResourceReferenceMetaData;
 import org.jboss.metadata.javaee.spec.ResourceReferencesMetaData;
 import org.jboss.metadata.javaee.spec.SecurityRoleMetaData;
+import org.jboss.metadata.javaee.spec.SecurityRoleRefsMetaData;
 import org.jboss.metadata.javaee.spec.ServiceReferenceMetaData;
 import org.jboss.metadata.javaee.spec.ServiceReferencesMetaData;
 import org.jboss.metadata.javaee.support.AbstractMappedMetaData;
@@ -867,6 +870,7 @@
     * @param roleName the role name
     * @return the security role or null if not found
     */
+   @XmlTransient
    public SecurityRoleMetaData getSecurityRole(String roleName)
    {
       JBossAssemblyDescriptorMetaData assemblyDescriptor = getJBossMetaDataWithCheck().getMergedAssemblyDescriptor();
@@ -877,6 +881,28 @@
    }
 
    /**
+    * Utility method for accessing 
+    * @param roleName
+    * @return
+    */
+   @XmlTransient
+   public SecurityRoleRefsMetaData getSecurityRoleRefs()
+   {
+      SecurityRoleRefsMetaData refs = null;
+      if (isEntity())
+      {
+         EntityBeanMetaData ebmd = (EntityBeanMetaData) this.getOverridenMetaData();
+         refs = ebmd.getSecurityRoleRefs();
+      }
+      else if (isSession())
+      {
+         SessionBeanMetaData sbmd = (SessionBeanMetaData) this.getOverridenMetaData();
+         refs = sbmd.getSecurityRoleRefs();
+      }
+      return refs;
+   }
+
+   /**
     * Get a security role's principals
     * 
     * @param roleName the role name

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossMetaData.java	2007-10-10 02:24:42 UTC (rev 65997)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossMetaData.java	2007-10-10 04:33:59 UTC (rev 65998)
@@ -21,6 +21,7 @@
 */
 package org.jboss.metadata.ejb.jboss;
 
+import org.jboss.metadata.common.jboss.LoaderRepositoryMetaData;
 import org.jboss.metadata.ejb.spec.EjbJarMetaData;
 import org.jboss.metadata.javaee.support.IdMetaDataImplWithDescriptionGroupWithOverride;
 import org.jboss.logging.Logger;

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossMetaDataWrapper.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossMetaDataWrapper.java	2007-10-10 02:24:42 UTC (rev 65997)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossMetaDataWrapper.java	2007-10-10 04:33:59 UTC (rev 65998)
@@ -21,6 +21,7 @@
  */
 package org.jboss.metadata.ejb.jboss;
 
+import org.jboss.metadata.common.jboss.LoaderRepositoryMetaData;
 import org.jboss.metadata.ejb.jboss.ContainerConfigurationMetaData;
 import org.jboss.metadata.ejb.jboss.ContainerConfigurationsMetaData;
 import org.jboss.metadata.ejb.jboss.InvokerProxyBindingMetaData;
@@ -29,7 +30,6 @@
 import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
 import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeansMetaData;
 import org.jboss.metadata.ejb.jboss.JBossMetaData;
-import org.jboss.metadata.ejb.jboss.LoaderRepositoryMetaData;
 import org.jboss.metadata.ejb.jboss.ResourceManagerMetaData;
 import org.jboss.metadata.ejb.jboss.ResourceManagersMetaData;
 import org.jboss.metadata.ejb.jboss.WebservicesMetaData;

Deleted: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/LoaderRepositoryConfigMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/LoaderRepositoryConfigMetaData.java	2007-10-10 02:24:42 UTC (rev 65997)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/LoaderRepositoryConfigMetaData.java	2007-10-10 04:33:59 UTC (rev 65998)
@@ -1,145 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2006, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt in the distribution for a
-* full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.metadata.ejb.jboss;
-
-import org.jboss.metadata.javaee.support.IdMetaDataImpl;
-
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlType;
-import javax.xml.bind.annotation.XmlValue;
-
-/**
- * LoaderRepositoryConfigMetaData.
- * 
- * @author <a href="adrian at jboss.com">Adrian Brock</a>
- * @version $Revision: 1.1 $
- */
- at XmlType(name="loader-repository-configType")
-public class LoaderRepositoryConfigMetaData extends IdMetaDataImpl
-{
-   /** The serialVersionUID */
-   private static final long serialVersionUID = 8691106200687695652L;
-
-   /** The config parser class */
-   private String configParserClass;
-   
-   /** The config */
-   private String config; // TODO DOM!
-   
-   /**
-    * Create a new LoaderRepositoryConfigMetaData.
-    */
-   public LoaderRepositoryConfigMetaData()
-   {
-      // For serialization
-   }
-
-   /**
-    * Get the configParserClass.
-    * 
-    * @return the configParserClass.
-    */
-   public String getConfigParserClass()
-   {
-      return configParserClass;
-   }
-
-   /**
-    * Set the configParserClass.
-    * 
-    * @param configParserClass the configParserClass.
-    * @throws IllegalArgumentException for a null configParserClass
-    */
-   @XmlAttribute(name="configParserClass")
-   public void setConfigParserClass(String configParserClass)
-   {
-      if (configParserClass == null)
-         throw new IllegalArgumentException("Null configParserClass");
-      this.configParserClass = configParserClass.trim();
-   }
-
-   /**
-    * Get the config.
-    * 
-    * @return the config.
-    */
-   @XmlValue
-   public String getConfig()
-   {
-      return config;
-   }
-
-   /**
-    * Set the config.
-    * 
-    * @param config the config.
-    * @throws IllegalArgumentException for a null config
-    */
-   public void setConfig(String config)
-   {
-      if (config == null)
-         throw new IllegalArgumentException("Null config");
-      this.config = config.trim();
-   }
-
-   @Override
-   public int hashCode()
-   {
-      final int PRIME = 31;
-      int result = super.hashCode();
-      result = PRIME * result + ((config == null) ? 0 : config.hashCode());
-      result = PRIME * result + ((configParserClass == null) ? 0 : configParserClass.hashCode());
-      return result;
-   }
-
-   @Override
-   public boolean equals(Object obj)
-   {
-      if (this == obj)
-         return true;
-      if (!super.equals(obj))
-         return false;
-      if (getClass() != obj.getClass())
-         return false;
-      final LoaderRepositoryConfigMetaData other = (LoaderRepositoryConfigMetaData) obj;
-      if (config == null)
-      {
-         if (other.config != null)
-            return false;
-      }
-      else if (!config.equals(other.config))
-         return false;
-      if (configParserClass == null)
-      {
-         if (other.configParserClass != null)
-            return false;
-      }
-      else if (!configParserClass.equals(other.configParserClass))
-         return false;
-      return true;
-   }
-   
-   public String toString()
-   {
-      return "[id=" + getId() + ", config=" + config + ", parser=" + configParserClass + "]";
-   }
-}

Deleted: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/LoaderRepositoryMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/LoaderRepositoryMetaData.java	2007-10-10 02:24:42 UTC (rev 65997)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/LoaderRepositoryMetaData.java	2007-10-10 04:33:59 UTC (rev 65998)
@@ -1,133 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2006, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt in the distribution for a
-* full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.metadata.ejb.jboss;
-
-import java.util.Set;
-
-import org.jboss.metadata.javaee.support.IdMetaDataImpl;
-
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlType;
-import javax.xml.bind.annotation.XmlValue;
-
-/**
- * LoaderRepositoryMetaData.
- * 
- * @author <a href="adrian at jboss.com">Adrian Brock</a>
- * @version $Revision: 1.1 $
- */
- at XmlType(name="loader-repositoryType")
-public class LoaderRepositoryMetaData extends IdMetaDataImpl
-{
-   /** The serialVersionUID */
-   private static final long serialVersionUID = -8560208691041447012L;
-
-   /** The repository class */
-   private String loaderRepositoryClass;
-   
-   /** The name */
-   private String name;
-   
-   /** The config */
-   private Set<LoaderRepositoryConfigMetaData> loaderRepositoryConfig;
-   
-   /**
-    * Create a new LoaderRepositoryConfigMetaData.
-    */
-   public LoaderRepositoryMetaData()
-   {
-      // For serialization
-   }
-
-   /**
-    * Get the loaderRepositoryClass.
-    * 
-    * @return the loaderRepositoryClass.
-    */
-   public String getLoaderRepositoryClass()
-   {
-      return loaderRepositoryClass;
-   }
-
-   /**
-    * Set the loaderRepositoryClass.
-    * 
-    * @param loaderRepositoryClass the loaderRepositoryClass.
-    * @throws IllegalArgumentException for a null loaderRepositoryClass
-    */
-   @XmlAttribute(name="loaderRepositoryClass") // TODO JBossXB default attribute names!
-   public void setLoaderRepositoryClass(String loaderRepositoryClass)
-   {
-      if (loaderRepositoryClass == null)
-         throw new IllegalArgumentException("Null loaderRepositoryClass");
-      this.loaderRepositoryClass = loaderRepositoryClass;
-   }
-
-   /**
-    * Get the loaderRepositoryConfig.
-    * 
-    * @return the loaderRepositoryConfig.
-    */
-   public Set<LoaderRepositoryConfigMetaData> getLoaderRepositoryConfig()
-   {
-      return loaderRepositoryConfig;
-   }
-
-   /**
-    * Set the loaderRepositoryConfig.
-    * 
-    * @param loaderRepositoryConfig the loaderRepositoryConfig.
-    * @throws IllegalArgumentException for a null loaderRepositoryConfig
-    */
-   //@XmlElement(type=NonNullLinkedHashSet.class)
-   public void setLoaderRepositoryConfig(Set<LoaderRepositoryConfigMetaData> loaderRepositoryConfig)
-   {
-      if (loaderRepositoryConfig == null)
-         throw new IllegalArgumentException("Null loaderRepositoryConfig");
-      this.loaderRepositoryConfig = loaderRepositoryConfig;
-   }
-
-   /**
-    * Get the name.
-    * 
-    * @return the name.
-    */
-   public String getName()
-   {
-      return name;
-   }
-
-   /**
-    * Set the name.
-    * 
-    * @param name the name.
-    * @throws IllegalArgumentException for a null name
-    */
-   @XmlValue
-   public void setName(String name)
-   {
-      if (name == null)
-         throw new IllegalArgumentException("Null name");
-      this.name = name;
-   }
-}

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/spec/EjbJarMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/spec/EjbJarMetaData.java	2007-10-10 02:24:42 UTC (rev 65997)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/spec/EjbJarMetaData.java	2007-10-10 04:33:59 UTC (rev 65998)
@@ -21,6 +21,8 @@
 */
 package org.jboss.metadata.ejb.spec;
 
+import javax.xml.bind.annotation.XmlTransient;
+
 import org.jboss.metadata.javaee.support.IdMetaDataImplWithDescriptionGroup;
 
 /**
@@ -34,6 +36,8 @@
    /** The serialVersionUID */
    private static final long serialVersionUID = 809339942454480150L;
 
+   private String dtdPublicId;
+   private String dtdSystemId;
    /** The ejb client jar */
    private String ejbClientJar;
 
@@ -55,6 +59,37 @@
    }
 
    /**
+    * Callback for the DTD information
+    * @param root
+    * @param publicId
+    * @param systemId
+    */
+   @XmlTransient
+   public void setDTD(String root, String publicId, String systemId)
+   {
+      this.dtdPublicId = publicId;
+      this.dtdSystemId = systemId;
+   }
+   /**
+    * Get the DTD public id if one was seen
+    * @return the value of the web.xml dtd public id
+    */
+   @XmlTransient
+   public String getDtdPublicId()
+   {
+      return dtdPublicId;
+   }
+   /**
+    * Get the DTD system id if one was seen
+    * @return the value of the web.xml dtd system id
+    */
+   @XmlTransient
+   public String getDtdSystemId()
+   {
+      return dtdSystemId;
+   }
+
+   /**
     * Whether this is ejb1.x
     * 
     * @return true when ejb1.x

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/JavaEEMetaDataConstants.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/JavaEEMetaDataConstants.java	2007-10-10 02:24:42 UTC (rev 65997)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/JavaEEMetaDataConstants.java	2007-10-10 04:33:59 UTC (rev 65998)
@@ -34,7 +34,13 @@
    
    /** The j2ee namespace */
    String J2EE_NS = "http://java.sun.com/xml/ns/j2ee";
-   
+
+   /** The j2ee 1.3 public Ids */
+   String J2EE_13_APP = "-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN";
+   String J2EE_13_CLIENT = "-//Sun Microsystems, Inc.//DTD J2EE Application Client 1.3//EN";
+   String J2EE_13_EJB = "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN";
+   String J2EE_13_WEB = "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN";
+
    /** The jboss javaee namespace*/
    String JBOSS_NS = "http://www.jboss.com/xml/ns/javaee/ejb";
 

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/web/jboss/JBossWebMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/web/jboss/JBossWebMetaData.java	2007-10-10 02:24:42 UTC (rev 65997)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/web/jboss/JBossWebMetaData.java	2007-10-10 04:33:59 UTC (rev 65998)
@@ -30,6 +30,7 @@
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlTransient;
 
+import org.jboss.metadata.common.jboss.LoaderRepositoryMetaData;
 import org.jboss.metadata.common.jboss.WebserviceDescriptionsMetaData;
 import org.jboss.metadata.ejb.jboss.JBossEnvironmentRefsGroupMetaData;
 import org.jboss.metadata.ejb.spec.SecurityIdentityMetaData;
@@ -52,12 +53,14 @@
 import org.jboss.metadata.javaee.spec.ResourceReferencesMetaData;
 import org.jboss.metadata.javaee.spec.RunAsMetaData;
 import org.jboss.metadata.javaee.spec.SecurityRoleMetaData;
+import org.jboss.metadata.javaee.spec.SecurityRoleRefsMetaData;
 import org.jboss.metadata.javaee.spec.SecurityRolesMetaData;
 import org.jboss.metadata.javaee.spec.ServiceReferenceMetaData;
 import org.jboss.metadata.javaee.spec.ServiceReferencesMetaData;
 import org.jboss.metadata.javaee.support.AbstractMappedMetaData;
 import org.jboss.metadata.javaee.support.IdMetaDataImplWithOverride;
 import org.jboss.metadata.web.spec.SecurityConstraintMetaData;
+import org.jboss.metadata.web.spec.ServletMappingsMetaData;
 import org.jboss.metadata.web.spec.ServletMetaData;
 import org.jboss.metadata.web.spec.ServletsMetaData;
 import org.jboss.metadata.web.spec.WebMetaData;
@@ -75,6 +78,8 @@
    private String securityDomain;
    private String jaccContextID;
    private boolean java2ClassLoadingCompliance;
+   /** The loader repository */
+   private LoaderRepositoryMetaData loaderRepository;
    private ServletsMetaData servlets;
    /** A list of extra dependencies to wait on */
    private List<String> depends;
@@ -88,12 +93,65 @@
    /** The merged environment */
    private transient JBossEnvironmentRefsGroupMetaData mergedEnvironment;
    private List<String> virtualHosts;
+   private boolean flushOnSessionInvalidation;
    private boolean useSessionCookies;
-   private int maxActiveSession;
    private ReplicationConfig replicationConfig;
    private PassivationConfig passivationConfig;
    private WebserviceDescriptionsMetaData webserviceDescriptions;
+   /** The optional JBossWS config-name */
+   private String configName;
+   /** The optional JBossWS config-file */
+   private String configFile;
+   private String publicID;
+   /** The web context class loader used to create the java:comp context */
+   @Deprecated
+   private transient ClassLoader encLoader;
+   /** The web context class loader, used to create the ws4ee service endpoint */
+   @Deprecated
+   private transient ClassLoader cxtLoader;
+   /**
+    * this is really a hack for new injection code  so that we can reparse web.xml/jbossweb.xml for JavaEE 5 injections
+    * todo remove this when we clean up
+    */
+   private HashMap arbitraryMetadata = new HashMap();
 
+   public static final int SESSION_INVALIDATE_ACCESS = 0;
+   public static final int SESSION_INVALIDATE_SET_AND_GET = 1;
+   public static final int SESSION_INVALIDATE_SET_AND_NON_PRIMITIVE_GET = 2;
+   public static final int SESSION_INVALIDATE_SET = 3;
+
+   private int invalidateSessionPolicy = SESSION_INVALIDATE_SET_AND_NON_PRIMITIVE_GET;
+
+   public static final int REPLICATION_TYPE_SYNC = 0;
+   public static final int REPLICATION_TYPE_ASYNC = 1;
+
+   /** Specify the session replication granularity level: session --- whole session level,
+    * attribute --- per attribute change, field --- fine grained user object level.
+    *
+    */
+   public static final int REPLICATION_GRANULARITY_SESSION = 0;
+   public static final int REPLICATION_GRANULARITY_ATTRIBUTE = 1;
+   public static final int REPLICATION_GRANULARITY_FIELD = 2;
+   private int replicationGranularity = REPLICATION_GRANULARITY_SESSION;
+
+   /**
+    * If the replication granularity is FIELD, specify whether to use batch mode
+    * for pojo replication or not.
+    */
+   private boolean replicationFieldBatchMode = true;
+
+   /**
+    * The maximum number of active sessions allowed, or -1 for no limit
+    */
+   private int maxActiveSessions = -1;
+
+   /** Should the context use session cookies or use default */
+   private int sessionCookies = SESSION_COOKIES_DEFAULT;
+
+   public static final int SESSION_COOKIES_DEFAULT = 0;
+   public static final int SESSION_COOKIES_ENABLED = 1;
+   public static final int SESSION_COOKIES_DISABLED = 2;
+
    public String getAlternativeDD()
    {
       return alternativeDD;
@@ -111,16 +169,52 @@
       this.contextRoot = contextRoot;
    }
 
+   public String getConfigFile()
+   {
+      return configFile;
+   }
+   public void setConfigFile(String configFile)
+   {
+      this.configFile = configFile;
+   }
+   public String getConfigName()
+   {
+      return configName;
+   }
+   public void setConfigName(String configName)
+   {
+      this.configName = configName;
+   }
    public List<String> getDepends()
    {
       return depends;
    }
+   public ClassLoader getENCLoader()
+   {
+      return encLoader;
+   }
+   @XmlTransient
+   public void setENCLoader(ClassLoader encLoader)
+   {
+      this.encLoader = encLoader;
+   }
+
+   public ClassLoader getContextLoader()
+   {
+      return cxtLoader;
+   }
+   @XmlTransient
+   public void setContextLoader(ClassLoader cxtLoader)
+   {
+      this.cxtLoader = cxtLoader;
+   }
+
    public void setDepends(List<String> depends)
    {
       this.depends = depends;
    }
 
-   public boolean isJava2ClassLoadingCompliance()
+   public boolean getJava2ClassLoadingCompliance()
    {
       return java2ClassLoadingCompliance;
    }
@@ -128,7 +222,31 @@
    {
       this.java2ClassLoadingCompliance = java2ClassLoadingCompliance;
    }
+
+   /**
+    * Get the loaderRepository.
+    * 
+    * @return the loaderRepository.
+    */
    
+   public LoaderRepositoryMetaData getLoaderRepository()
+   {
+      return loaderRepository;
+   }
+
+   /**
+    * Set the loaderRepository.
+    * 
+    * @param loaderRepository the loaderRepository.
+    * @throws IllegalArgumentException for a null loaderRepository
+    */
+   public void setLoaderRepository(LoaderRepositoryMetaData loaderRepository)
+   {
+      if (loaderRepository == null)
+         throw new IllegalArgumentException("Null loaderRepository");
+      this.loaderRepository = loaderRepository;
+   }
+
    public String getJaccContextID()
    {
       return jaccContextID;
@@ -137,6 +255,14 @@
    {
       this.jaccContextID = jaccContextID;
    }
+   public String getPublicID()
+   {
+      return publicID;
+   }
+   public void setPublicID(String publicID)
+   {
+      this.publicID = publicID;
+   }
    public String getSecurityDomain()
    {
       return securityDomain;
@@ -154,13 +280,53 @@
       this.securityRoles = securityRoles;
    }
 
+   public HashMap getArbitraryMetadata()
+   {
+      return arbitraryMetadata;
+   }
+   public void setArbitraryMetadata(HashMap arbitraryMetadata)
+   {
+      this.arbitraryMetadata = arbitraryMetadata;
+   }
+   public int getInvalidateSessionPolicy()
+   {
+      return invalidateSessionPolicy;
+   }
+   public void setInvalidateSessionPolicy(int invalidateSessionPolicy)
+   {
+      this.invalidateSessionPolicy = invalidateSessionPolicy;
+   }
+   public boolean isReplicationFieldBatchMode()
+   {
+      return replicationFieldBatchMode;
+   }
+   public void setReplicationFieldBatchMode(boolean replicationFieldBatchMode)
+   {
+      this.replicationFieldBatchMode = replicationFieldBatchMode;
+   }
+   public int getReplicationGranularity()
+   {
+      return replicationGranularity;
+   }
+   public void setReplicationGranularity(int replicationGranularity)
+   {
+      this.replicationGranularity = replicationGranularity;
+   }
+   public boolean isFlushOnSessionInvalidation()
+   {
+      return flushOnSessionInvalidation;
+   }
+   public void setFlushOnSessionInvalidation(boolean flushOnSessionInvalidation)
+   {
+      this.flushOnSessionInvalidation = flushOnSessionInvalidation;
+   }
    public int getMaxActiveSession()
    {
-      return maxActiveSession;
+      return maxActiveSessions;
    }
-   public void setMaxActiveSession(int maxActiveSession)
+   public void setMaxActiveSession(int maxActiveSessions)
    {
-      this.maxActiveSession = maxActiveSession;
+      this.maxActiveSessions = maxActiveSessions;
    }
    public PassivationConfig getPassivationConfig()
    {
@@ -198,6 +364,15 @@
       this.useSessionCookies = useSessionCookies;
    }
 
+   public int getSessionCookies()
+   {
+      return this.sessionCookies;
+   }
+   public void setSessionCookies(int sessionCookies)
+   {
+      this.sessionCookies = sessionCookies;
+   }
+
    public List<String> getVirtualHosts()
    {
       return virtualHosts;
@@ -219,6 +394,15 @@
       this.webserviceDescriptions = webserviceDescriptions;
    }
 
+   @XmlTransient
+   public boolean getDistributable()
+   {
+      boolean distributable = false;
+      if (this.getOverridenMetaData() != null)
+         distributable = getOverridenMetaData().getDistributable() != null;
+      return distributable;
+   }
+
    /**
     * Get the security-role names from the web.xml descriptor
     * @return Set<String> of the security-role names from the web.xml
@@ -228,6 +412,22 @@
    {
       return new HashSet<String>(securityRoles.keySet());
    }
+   /**
+    * Get the servlet/security-role-refs
+    * @param servletName
+    * @return
+    */
+   @XmlTransient
+   public SecurityRoleRefsMetaData getSecurityRoleRefs(String servletName)
+   {
+      SecurityRoleRefsMetaData refs = null;
+      ServletMetaData servlet = getMergedServlets().get(servletName);
+      if (servlet != null)
+      {
+         refs = servlet.getSecurityRoleRefs();
+      }
+      return refs;
+   }
 
    public Map<String, Set<String>> getPrincipalVersusRolesMap()
    {
@@ -302,26 +502,37 @@
     * TODO
     * @return
     */
+   @XmlTransient
    public ServletsMetaData getMergedServlets()
    {
       return this.getOverridenMetaData().getServlets();
    }
+   
+   @XmlTransient
+   public ServletMappingsMetaData getServletMappings()
+   {
+      return this.getOverridenMetaData().getServletMappings();
+   }
 
+   @XmlTransient
    public EnvironmentEntriesMetaData getEnvironmentEntries()
    {
       return getMergedEnvironment().getEnvironmentEntries();
    }
 
+   @XmlTransient
    public EnvironmentEntryMetaData getEnvironmentEntryByName(String name)
    {
       return AbstractMappedMetaData.getByName(name, getEnvironmentEntries());
    }
 
+   @XmlTransient
    public EJBLocalReferencesMetaData getEjbLocalReferences()
    {
       return getMergedEnvironment().getEjbLocalReferences();
    }
 
+   @XmlTransient
    public EJBReferencesMetaData getEjbReferences()
    {
       return getMergedEnvironment().getEjbReferences();
@@ -356,71 +567,85 @@
       this.messageDestinations = messageDestinations;
    }
 
+   @XmlTransient
    public MessageDestinationReferenceMetaData getMessageDestinationReferenceByName(String name)
    {
       return AbstractMappedMetaData.getByName(name, getMessageDestinationReferences());
    }
 
+   @XmlTransient
    public MessageDestinationReferencesMetaData getMessageDestinationReferences()
    {
       return getMergedEnvironment().getMessageDestinationReferences();
    }
 
+   @XmlTransient
    public PersistenceContextReferenceMetaData getPersistenceContextReferenceByName(String name)
    {
       return AbstractMappedMetaData.getByName(name, getPersistenceContextRefs());
    }
 
+   @XmlTransient
    public PersistenceContextReferencesMetaData getPersistenceContextRefs()
    {
       return getMergedEnvironment().getPersistenceContextRefs();
    }
 
+   @XmlTransient
    public PersistenceUnitReferenceMetaData getPersistenceUnitReferenceByName(String name)
    {
       return AbstractMappedMetaData.getByName(name, getPersistenceUnitRefs());
    }
 
+   @XmlTransient
    public PersistenceUnitReferencesMetaData getPersistenceUnitRefs()
    {
       return getMergedEnvironment().getPersistenceUnitRefs();
    }
 
+   @XmlTransient
    public LifecycleCallbacksMetaData getPostConstructs()
    {
       return getMergedEnvironment().getPostConstructs();
    }
 
+   @XmlTransient
    public LifecycleCallbacksMetaData getPreDestroys()
    {
       return getMergedEnvironment().getPreDestroys();
    }
 
+   @XmlTransient
    public ResourceEnvironmentReferenceMetaData getResourceEnvironmentReferenceByName(String name)
    {
       return AbstractMappedMetaData.getByName(name, getResourceEnvironmentReferences());
    }
 
+   @XmlTransient
    public ResourceEnvironmentReferencesMetaData getResourceEnvironmentReferences()
    {
       return getMergedEnvironment().getResourceEnvironmentReferences();
    }
 
+   @XmlTransient
    public ResourceReferenceMetaData getResourceReferenceByName(String name)
    {
       return AbstractMappedMetaData.getByName(name, getResourceReferences());
    }
 
+   @XmlTransient
    public ResourceReferencesMetaData getResourceReferences()
    {
       return getMergedEnvironment().getResourceReferences();
    }
 
+   @XmlTransient
    public ServiceReferenceMetaData getServiceReferenceByName(String name)
    {
       return AbstractMappedMetaData.getByName(name, getServiceReferences());
    }
 
+   @XmlTransient
    public ServiceReferencesMetaData getServiceReferences()
    {
       return getMergedEnvironment().getServiceReferences();
@@ -431,6 +656,7 @@
     * 
     * @return the security identity
     */
+   @XmlTransient
    public SecurityIdentityMetaData getSecurityIdentity()
    {
       // This is hacky because of the stupid way security identity is included in the environment
@@ -449,6 +675,7 @@
     * @param servletName - the servlet-name from the web.xml
     * @return RunAsIdentity for the servet if one exists, null otherwise
     */
+   @XmlTransient
    public SecurityRoleMetaData getRunAsIdentity(String servletName)
    {
       SecurityRoleMetaData srmd = runAsIdentity.get(servletName);
@@ -474,6 +701,7 @@
       return srmd;
    }
 
+   @XmlTransient
    public List<SecurityConstraintMetaData> getSecurityContraints()
    {
       return getOverridenMetaData().getSecurityContraints();

Added: projects/metadata/trunk/src/main/java/org/jboss/metadata/web/spec/Web23MetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/web/spec/Web23MetaData.java	                        (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/web/spec/Web23MetaData.java	2007-10-10 04:33:59 UTC (rev 65998)
@@ -0,0 +1,35 @@
+package org.jboss.metadata.web.spec;
+
+import javax.xml.bind.annotation.XmlNs;
+import javax.xml.bind.annotation.XmlNsForm;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.jboss.xb.annotations.JBossXmlSchema;
+
+/**
+ * Web application spec metadata.
+ *
+ * @author Scott.Stark at jboss.org
+ * @version $Revision: $
+ */
+ at XmlRootElement(name="web-app", namespace="")
+ at JBossXmlSchema(
+      xmlns={@XmlNs(namespaceURI = "", prefix="jee")},
+      ignoreUnresolvedFieldOrClass=false,
+      namespace="",
+      elementFormDefault=XmlNsForm.UNSET)
+public class Web23MetaData extends WebMetaData
+{
+   private static final long serialVersionUID = 1;
+
+   public boolean isMetadataComplete()
+   {
+      return true;
+   }
+
+   @Override
+   public String getVersion()
+   {
+      return "2.3";
+   }
+}


Property changes on: projects/metadata/trunk/src/main/java/org/jboss/metadata/web/spec/Web23MetaData.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + native

Added: projects/metadata/trunk/src/main/java/org/jboss/metadata/web/spec/Web24MetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/web/spec/Web24MetaData.java	                        (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/web/spec/Web24MetaData.java	2007-10-10 04:33:59 UTC (rev 65998)
@@ -0,0 +1,31 @@
+package org.jboss.metadata.web.spec;
+
+import javax.xml.bind.annotation.XmlNs;
+import javax.xml.bind.annotation.XmlNsForm;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.jboss.metadata.javaee.spec.JavaEEMetaDataConstants;
+import org.jboss.xb.annotations.JBossXmlSchema;
+
+/**
+ * Web application spec metadata.
+ *
+ * @author Scott.Stark at jboss.org
+ * @version $Revision: $
+ */
+ at XmlRootElement(name="web-app", namespace=JavaEEMetaDataConstants.JAVAEE_NS)
+ at JBossXmlSchema(
+      xmlns={@XmlNs(namespaceURI = JavaEEMetaDataConstants.JAVAEE_NS, prefix = "jee")},
+      ignoreUnresolvedFieldOrClass=false,
+      namespace=JavaEEMetaDataConstants.JAVAEE_NS,
+      elementFormDefault=XmlNsForm.QUALIFIED)
+public class Web24MetaData extends WebMetaData
+{
+   private static final long serialVersionUID = 1;
+   private boolean metadataComplete;
+
+   public boolean isMetadataComplete()
+   {
+      return true;
+   }
+}


Property changes on: projects/metadata/trunk/src/main/java/org/jboss/metadata/web/spec/Web24MetaData.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + native

Copied: projects/metadata/trunk/src/main/java/org/jboss/metadata/web/spec/Web25MetaData.java (from rev 65928, projects/metadata/trunk/src/main/java/org/jboss/metadata/web/spec/Web5xMetaData.java)
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/web/spec/Web25MetaData.java	                        (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/web/spec/Web25MetaData.java	2007-10-10 04:33:59 UTC (rev 65998)
@@ -0,0 +1,39 @@
+package org.jboss.metadata.web.spec;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlNs;
+import javax.xml.bind.annotation.XmlNsForm;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.jboss.metadata.javaee.spec.JavaEEMetaDataConstants;
+import org.jboss.xb.annotations.JBossXmlSchema;
+
+/**
+ * Web application spec metadata.
+ *
+ * @author Scott.Stark at jboss.org
+ * @version $Revision: $
+ */
+ at XmlRootElement(name="web-app", namespace=JavaEEMetaDataConstants.JAVAEE_NS)
+ at JBossXmlSchema(
+      xmlns={@XmlNs(namespaceURI = JavaEEMetaDataConstants.JAVAEE_NS, prefix = "jee")},
+      ignoreUnresolvedFieldOrClass=false,
+      namespace=JavaEEMetaDataConstants.JAVAEE_NS,
+      elementFormDefault=XmlNsForm.QUALIFIED)
+public class Web25MetaData extends WebMetaData
+{
+   private static final long serialVersionUID = 1;
+   private boolean metadataComplete;
+
+   public boolean isMetadataComplete()
+   {
+      return metadataComplete;
+   }
+
+   @XmlAttribute(name="metadata-complete")
+   public void setMetadataComplete(boolean metadataComplete)
+   {
+      this.metadataComplete = metadataComplete;
+   }
+
+}

Deleted: projects/metadata/trunk/src/main/java/org/jboss/metadata/web/spec/Web5xMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/web/spec/Web5xMetaData.java	2007-10-10 02:24:42 UTC (rev 65997)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/web/spec/Web5xMetaData.java	2007-10-10 04:33:59 UTC (rev 65998)
@@ -1,49 +0,0 @@
-package org.jboss.metadata.web.spec;
-
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlNs;
-import javax.xml.bind.annotation.XmlNsForm;
-import javax.xml.bind.annotation.XmlRootElement;
-
-import org.jboss.metadata.javaee.spec.JavaEEMetaDataConstants;
-import org.jboss.xb.annotations.JBossXmlSchema;
-
-/**
- * Web application spec metadata.
- *
- * @author Scott.Stark at jboss.org
- * @version $Revision: $
- */
- at XmlRootElement(name="web-app", namespace=JavaEEMetaDataConstants.JAVAEE_NS)
- at JBossXmlSchema(
-      xmlns={@XmlNs(namespaceURI = JavaEEMetaDataConstants.JAVAEE_NS, prefix = "jee")},
-      ignoreUnresolvedFieldOrClass=false,
-      namespace=JavaEEMetaDataConstants.JAVAEE_NS,
-      elementFormDefault=XmlNsForm.QUALIFIED)
-public class Web5xMetaData extends WebMetaData
-{
-   private static final long serialVersionUID = 1;
-   private String version;
-   private boolean metadataComplete;
-
-   public boolean isMetadataComplete()
-   {
-      return metadataComplete;
-   }
-
-   @XmlAttribute(name="metadata-complete")
-   public void setMetadataComplete(boolean metadataComplete)
-   {
-      this.metadataComplete = metadataComplete;
-   }
-
-   public String getVersion()
-   {
-      return version;
-   }
-   @XmlAttribute
-   public void setVersion(String version)
-   {
-      this.version = version;
-   }
-}

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/web/spec/WebMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/web/spec/WebMetaData.java	2007-10-10 02:24:42 UTC (rev 65997)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/web/spec/WebMetaData.java	2007-10-10 04:33:59 UTC (rev 65998)
@@ -23,7 +23,9 @@
 
 import java.util.List;
 
+import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlTransient;
 
 import org.jboss.metadata.javaee.spec.EJBLocalReferenceMetaData;
 import org.jboss.metadata.javaee.spec.EJBLocalReferencesMetaData;
@@ -34,6 +36,7 @@
 import org.jboss.metadata.javaee.spec.EnvironmentEntriesMetaData;
 import org.jboss.metadata.javaee.spec.EnvironmentEntryMetaData;
 import org.jboss.metadata.javaee.spec.EnvironmentRefsGroupMetaData;
+import org.jboss.metadata.javaee.spec.JavaEEMetaDataConstants;
 import org.jboss.metadata.javaee.spec.LifecycleCallbacksMetaData;
 import org.jboss.metadata.javaee.spec.MessageDestinationReferenceMetaData;
 import org.jboss.metadata.javaee.spec.MessageDestinationReferencesMetaData;
@@ -63,6 +66,9 @@
 {
    private static final long serialVersionUID = 1;
 
+   private String dtdPublicId;
+   private String dtdSystemId;
+   private String version;
    private EmptyMetaData distributable;
    private List<ParamValueMetaData> contextParams;
    private SessionConfigMetaData sessionConfig;
@@ -86,6 +92,67 @@
    /** The message destinations */
    private MessageDestinationsMetaData messageDestinations;
 
+   /**
+    * Callback for the DTD information
+    * @param root
+    * @param publicId
+    * @param systemId
+    */
+   @XmlTransient
+   public void setDTD(String root, String publicId, String systemId)
+   {
+      this.dtdPublicId = publicId;
+      this.dtdSystemId = systemId;
+   }
+   /**
+    * Get the DTD public id if one was seen
+    * @return the value of the web.xml dtd public id
+    */
+   @XmlTransient
+   public String getDtdPublicId()
+   {
+      return dtdPublicId;
+   }
+   /**
+    * Get the DTD system id if one was seen
+    * @return the value of the web.xml dtd system id
+    */
+   @XmlTransient
+   public String getDtdSystemId()
+   {
+      return dtdSystemId;
+   }
+
+   public String getVersion()
+   {
+      return version;
+   }
+   @XmlAttribute
+   public void setVersion(String version)
+   {
+      this.version = version;
+   }
+
+   /**
+    * Is this a servlet 2.3 version application
+    * @return true if this is a javaee 2.3 version application
+    */
+   @XmlTransient
+   public boolean is23()
+   {
+      return dtdPublicId != null && dtdPublicId.equals(JavaEEMetaDataConstants.J2EE_13_WEB); 
+   }
+   @XmlTransient
+   public boolean is24()
+   {
+      return version != null && version.equals("2.4");
+   }
+   @XmlTransient
+   public boolean is25()
+   {
+      return version != null && version.equals("2.5");
+   }
+
    public EmptyMetaData getDistributable()
    {
       return distributable;

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/web/spec/WebResourceCollectionMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/web/spec/WebResourceCollectionMetaData.java	2007-10-10 02:24:42 UTC (rev 65997)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/web/spec/WebResourceCollectionMetaData.java	2007-10-10 04:33:59 UTC (rev 65998)
@@ -21,6 +21,7 @@
  */
 package org.jboss.metadata.web.spec;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
@@ -59,8 +60,8 @@
       ALL_HTTP_METHODS.toArray(ALL_HTTP_METHOD_NAMES);
    }
 
-   private List<String> urlPatterns;
-   private List<String> httpMethods;
+   private List<String> urlPatterns = new ArrayList<String>();
+   private List<String> httpMethods = new ArrayList<String>();
 
    /**
     * Get http methods in ALL_HTTP_METHODS not in the argument httpMethods.

Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/JBoss5xEverythingUnitTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/JBoss5xEverythingUnitTestCase.java	2007-10-10 02:24:42 UTC (rev 65997)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/JBoss5xEverythingUnitTestCase.java	2007-10-10 04:33:59 UTC (rev 65998)
@@ -26,6 +26,8 @@
 
 import junit.framework.Test;
 
+import org.jboss.metadata.common.jboss.LoaderRepositoryConfigMetaData;
+import org.jboss.metadata.common.jboss.LoaderRepositoryMetaData;
 import org.jboss.metadata.common.jboss.WebserviceDescriptionsMetaData;
 import org.jboss.metadata.common.jboss.WebserviceDescriptionMetaData;
 import org.jboss.metadata.ejb.jboss.CommitOption;
@@ -43,8 +45,6 @@
 import org.jboss.metadata.ejb.jboss.JBossMessageDrivenBeanMetaData;
 import org.jboss.metadata.ejb.jboss.JBossMetaData;
 import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
-import org.jboss.metadata.ejb.jboss.LoaderRepositoryConfigMetaData;
-import org.jboss.metadata.ejb.jboss.LoaderRepositoryMetaData;
 import org.jboss.metadata.ejb.jboss.ResourceManagerMetaData;
 import org.jboss.metadata.ejb.jboss.ResourceManagersMetaData;
 import org.jboss.metadata.ejb.jboss.WebservicesMetaData;

Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/web/WebApp5EverythingUnitTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/web/WebApp5EverythingUnitTestCase.java	2007-10-10 02:24:42 UTC (rev 65997)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/web/WebApp5EverythingUnitTestCase.java	2007-10-10 04:33:59 UTC (rev 65998)
@@ -23,7 +23,7 @@
 
 import org.jboss.metadata.javaee.spec.MessageDestinationMetaData;
 import org.jboss.metadata.javaee.spec.MessageDestinationsMetaData;
-import org.jboss.metadata.web.spec.Web5xMetaData;
+import org.jboss.metadata.web.spec.Web25MetaData;
 import org.jboss.metadata.web.spec.WebMetaData;
 import org.jboss.test.metadata.javaee.AbstractJavaEEEverythingTest;
 import org.jboss.xb.binding.sunday.unmarshalling.SchemaBindingResolver;
@@ -64,7 +64,7 @@
 
    public static SchemaBindingResolver initResolver()
    {
-      return schemaResolverForClass(Web5xMetaData.class);
+      return schemaResolverForClass(Web25MetaData.class);
    }
    
    public void testEverything() throws Exception
@@ -75,6 +75,6 @@
    
    protected WebMetaData unmarshal() throws Exception
    {
-      return unmarshal(Web5xMetaData.class);
+      return unmarshal(Web25MetaData.class);
    }
 }

Added: projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/web/WebApp23_testEverything.xml
===================================================================
--- projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/web/WebApp23_testEverything.xml	                        (rev 0)
+++ projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/web/WebApp23_testEverything.xml	2007-10-10 04:33:59 UTC (rev 65998)
@@ -0,0 +1,473 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE web-app PUBLIC
+"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+"http://java.sun.com/dtd/web-app_2_3.dtd">
+
+<web-app id="web-app_2_3">
+   <icon id="en-web-app-icon-id">
+      <small-icon>en-web-app-small-icon</small-icon>
+      <large-icon>en-web-app-large-icon</large-icon>
+   </icon>
+
+    <description>web-app-desc</description>
+    
+    <distributable/>
+
+    <context-param id="context-param0">
+      <param-name>context-param0-name</param-name>
+      <param-value>context-param0-value</param-value>
+      <description>context-param0-description</description>
+    </context-param>
+
+   <filter id="filter0">
+      <filter-name>filter0Name</filter-name>
+      <filter-class>filter0.class</filter-class>
+   </filter>
+   <filter-mapping id="filter0-mapping">
+      <filter-name>filter0Name</filter-name>
+      <url-pattern>/filter0/*</url-pattern>
+   </filter-mapping>
+    <filter-mapping id="filter1-mapping">
+       <filter-name>filter1Name</filter-name>
+       <servlet-name>servlet1</servlet-name>
+    </filter-mapping>
+
+    <listener id="listener0">
+        <listener-class>listener0.class</listener-class>
+    </listener>
+
+    <error-page id="error-page0">
+      <error-code>404</error-code>
+      <location>/error-page0</location>
+   </error-page>
+    <error-page id="error-page1">
+       <exception-type>java.lang.Throwable</exception-type>
+       <location>/error-page1</location>
+    </error-page>
+
+    <login-config id="login-config-FORM">
+       <auth-method>FORM</auth-method>
+       <form-login-config>
+          <form-login-page>/login.jsp</form-login-page>
+          <form-error-page>/login-error.jsp</form-error-page>
+       </form-login-config>
+    </login-config>
+
+    <mime-mapping id="mime-mapping0">
+      <extension>ext0</extension>
+      <mime-type>x/type0</mime-type>
+    </mime-mapping>
+    <mime-mapping id="mime-mapping1">
+       <extension>ext1</extension>
+       <mime-type>x/type1</mime-type>
+    </mime-mapping>
+
+   <servlet id="servlet0">
+      <servlet-name>servlet0-name</servlet-name>
+      <servlet-class>servlet0.class</servlet-class>
+      <init-param id="servlet0-init-param0">
+         <param-name>init-param0-name</param-name>
+         <param-value>init-param0-value</param-value>
+      </init-param>
+      <init-param id="servlet0-init-param1">
+         <param-name>init-param1-name</param-name>
+         <param-value>init-param1-value</param-value>
+      </init-param>
+      <load-on-startup>1</load-on-startup>
+      <run-as>
+         <role-name>role0</role-name>
+      </run-as>
+      <security-role-ref>
+         <role-name>role1</role-name>
+      </security-role-ref>
+   </servlet>
+    <servlet id="servlet1">
+       <servlet-name>servlet1-name</servlet-name>
+       <servlet-class>servlet1.class</servlet-class>
+       <init-param id="servlet1-init-param0">
+          <param-name>init-param0-name</param-name>
+          <param-value>init-param0-value</param-value>
+       </init-param>
+       <init-param id="servlet1-init-param1">
+          <param-name>init-param1-name</param-name>
+          <param-value>init-param1-value</param-value>
+       </init-param>
+       <load-on-startup>1</load-on-startup>
+       <run-as>
+          <role-name>role0</role-name>
+       </run-as>
+       <security-role-ref>
+          <role-name>role1</role-name>
+       </security-role-ref>
+    </servlet>
+    <servlet-mapping id="servlet0-mapping">
+      <servlet-name>servlet0-name</servlet-name>
+      <url-pattern>/servlet0/*</url-pattern>
+   </servlet-mapping>
+    <servlet-mapping id="servlet1-mapping">
+       <servlet-name>servlet1-name</servlet-name>
+       <url-pattern>/servlet1/*</url-pattern>
+    </servlet-mapping>
+
+    <security-constraint id="security-constraint0">
+       <display-name>security-constraint0-display-name</display-name>
+       <web-resource-collection id="web-resource-collection0">
+          <web-resource-name>web-resource0-name</web-resource-name>
+         <url-pattern>/resource0/*</url-pattern>
+      </web-resource-collection>
+       <web-resource-collection id="web-resource-collection1">
+          <web-resource-name>web-resource1-name</web-resource-name>
+          <url-pattern>/resource1/*</url-pattern>
+       </web-resource-collection>
+       <auth-constraint id="auth-constraint0">
+          <description></description>
+          <role-name>role0</role-name>
+       </auth-constraint>
+       <user-data-constraint>
+          <transport-guarantee>NONE</transport-guarantee>
+       </user-data-constraint>
+    </security-constraint>
+    <security-constraint id="security-constraint-excluded">
+       <display-name>security-constraint-excluded-name</display-name>
+       <web-resource-collection id="web-resource-excluded">
+          <web-resource-name>web-resource-excluded-name</web-resource-name>
+          <url-pattern>/resource-excluded/*</url-pattern>
+       </web-resource-collection>
+       <auth-constraint />
+   </security-constraint>
+    <security-constraint id="security-constraint-unchecked">
+       <display-name>security-constraint-unchecked-name</display-name>
+       <web-resource-collection id="web-resource-collection-unchecked">
+          <web-resource-name>web-resource-unchecked-name</web-resource-name>
+          <url-pattern>/resource-unchecked/*</url-pattern>
+       </web-resource-collection>
+    </security-constraint>
+
+   <security-role id="security-role0">
+      <role-name>role0</role-name>
+   </security-role>
+    <security-role id="security-role1">
+       <role-name>role1</role-name>
+    </security-role>
+    
+    <welcome-file-list id="welcome-file-list0">
+       <welcome-file>index.html</welcome-file>
+       <welcome-file>*.welcome</welcome-file>
+    </welcome-file-list>
+
+    <session-config id="session-config0">
+        <session-timeout>30</session-timeout>
+    </session-config>
+    
+    
+   <!-- env entry -->
+   <env-entry id="webAppEnvEntry1-id">
+      <description>en-webAppEnvEntry1-desc</description>
+      <description xml:lang="fr">fr-webAppEnvEntry1-desc</description>
+      <description xml:lang="de">de-webAppEnvEntry1-desc</description>
+      <env-entry-name>webAppEnvEntry1Name</env-entry-name>
+      <env-entry-type>java.lang.String</env-entry-type>
+      <env-entry-value>webAppEnvEntry1Value</env-entry-value>
+      <mapped-name>webAppEnvEntry1MappedName</mapped-name>
+      <injection-target>
+         <injection-target-class>webAppEnvEntry1Injection1Class</injection-target-class>
+         <injection-target-name>webAppEnvEntry1Injection1Name</injection-target-name>
+      </injection-target>
+      <injection-target>
+         <injection-target-class>webAppEnvEntry1Injection2Class</injection-target-class>
+         <injection-target-name>webAppEnvEntry1Injection2Name</injection-target-name>
+      </injection-target>
+   </env-entry>
+   <env-entry id="webAppEnvEntry2-id">
+      <description>en-webAppEnvEntry2-desc</description>
+      <description xml:lang="fr">fr-webAppEnvEntry2-desc</description>
+      <description xml:lang="de">de-webAppEnvEntry2-desc</description>
+      <env-entry-name>webAppEnvEntry2Name</env-entry-name>
+      <env-entry-type>java.lang.String</env-entry-type>
+      <env-entry-value>webAppEnvEntry2Value</env-entry-value>
+      <mapped-name>webAppEnvEntry2MappedName</mapped-name>
+      <injection-target>
+         <injection-target-class>webAppEnvEntry2Injection1Class</injection-target-class>
+         <injection-target-name>webAppEnvEntry2Injection1Name</injection-target-name>
+      </injection-target>
+      <injection-target>
+         <injection-target-class>webAppEnvEntry2Injection2Class</injection-target-class>
+         <injection-target-name>webAppEnvEntry2Injection2Name</injection-target-name>
+      </injection-target>
+   </env-entry>
+
+   <!-- ejb ref -->
+   <ejb-ref id="webAppEjbRef1-id">
+      <description>en-webAppEjbRef1-desc</description>
+      <description xml:lang="fr">fr-webAppEjbRef1-desc</description>
+      <description xml:lang="de">de-webAppEjbRef1-desc</description>
+      <ejb-ref-name>webAppEjbRef1Name</ejb-ref-name>
+      <ejb-ref-type>Session</ejb-ref-type>
+      <home>webAppEjbRef1Home</home>
+      <remote>webAppEjbRef1Remote</remote>
+      <ejb-link>webAppEjbRef1EjbLink</ejb-link>
+      <mapped-name>webAppEjbRef1MappedName</mapped-name>
+      <injection-target>
+         <injection-target-class>webAppEjbRef1Injection1Class</injection-target-class>
+         <injection-target-name>webAppEjbRef1Injection1Name</injection-target-name>
+      </injection-target>
+      <injection-target>
+         <injection-target-class>webAppEjbRef1Injection2Class</injection-target-class>
+         <injection-target-name>webAppEjbRef1Injection2Name</injection-target-name>
+      </injection-target>
+   </ejb-ref>
+   <ejb-ref id="webAppEjbRef2-id">
+      <description>en-webAppEjbRef2-desc</description>
+      <description xml:lang="fr">fr-webAppEjbRef2-desc</description>
+      <description xml:lang="de">de-webAppEjbRef2-desc</description>
+      <ejb-ref-name>webAppEjbRef2Name</ejb-ref-name>
+      <ejb-ref-type>Entity</ejb-ref-type>
+      <home>webAppEjbRef2Home</home>
+      <remote>webAppEjbRef2Remote</remote>
+      <ejb-link>webAppEjbRef2EjbLink</ejb-link>
+      <mapped-name>webAppEjbRef2MappedName</mapped-name>
+      <injection-target>
+         <injection-target-class>webAppEjbRef2Injection1Class</injection-target-class>
+         <injection-target-name>webAppEjbRef2Injection1Name</injection-target-name>
+      </injection-target>
+      <injection-target>
+         <injection-target-class>webAppEjbRef2Injection2Class</injection-target-class>
+         <injection-target-name>webAppEjbRef2Injection2Name</injection-target-name>
+      </injection-target>
+   </ejb-ref>
+   
+   <!-- resource ref -->
+   <resource-ref id="webAppResourceRef1-id">
+      <description>en-webAppResourceRef1-desc</description>
+      <description xml:lang="fr">fr-webAppResourceRef1-desc</description>
+      <description xml:lang="de">de-webAppResourceRef1-desc</description>
+      <res-ref-name>webAppResourceRef1Name</res-ref-name>
+      <res-type>webAppResourceRef1Type</res-type>
+      <res-auth>Application</res-auth>
+      <res-sharing-scope>Shareable</res-sharing-scope>
+      <mapped-name>webAppResourceRef1MappedName</mapped-name>
+      <injection-target>
+         <injection-target-class>webAppResourceRef1Injection1Class</injection-target-class>
+         <injection-target-name>webAppResourceRef1Injection1Name</injection-target-name>
+      </injection-target>
+      <injection-target>
+         <injection-target-class>webAppResourceRef1Injection2Class</injection-target-class>
+         <injection-target-name>webAppResourceRef1Injection2Name</injection-target-name>
+      </injection-target>
+   </resource-ref>
+   <resource-ref id="webAppResourceRef2-id">
+      <description>en-webAppResourceRef2-desc</description>
+      <description xml:lang="fr">fr-webAppResourceRef2-desc</description>
+      <description xml:lang="de">de-webAppResourceRef2-desc</description>
+      <res-ref-name>webAppResourceRef2Name</res-ref-name>
+      <res-type>webAppResourceRef2Type</res-type>
+      <res-auth>Container</res-auth>
+      <res-sharing-scope>Unshareable</res-sharing-scope>
+      <mapped-name>webAppResourceRef2MappedName</mapped-name>
+      <injection-target>
+         <injection-target-class>webAppResourceRef2Injection1Class</injection-target-class>
+         <injection-target-name>webAppResourceRef2Injection1Name</injection-target-name>
+      </injection-target>
+      <injection-target>
+         <injection-target-class>webAppResourceRef2Injection2Class</injection-target-class>
+         <injection-target-name>webAppResourceRef2Injection2Name</injection-target-name>
+      </injection-target>
+   </resource-ref>
+   
+   <!-- resource env ref -->
+   <resource-env-ref id="webAppResourceEnvRef1-id">
+      <description>en-webAppResourceEnvRef1-desc</description>
+      <description xml:lang="fr">fr-webAppResourceEnvRef1-desc</description>
+      <description xml:lang="de">de-webAppResourceEnvRef1-desc</description>
+      <resource-env-ref-name>webAppResourceEnvRef1Name</resource-env-ref-name>
+      <resource-env-ref-type>webAppResourceEnvRef1Type</resource-env-ref-type>
+      <mapped-name>webAppResourceEnvRef1MappedName</mapped-name>
+      <injection-target>
+         <injection-target-class>webAppResourceEnvRef1Injection1Class</injection-target-class>
+         <injection-target-name>webAppResourceEnvRef1Injection1Name</injection-target-name>
+      </injection-target>
+      <injection-target>
+         <injection-target-class>webAppResourceEnvRef1Injection2Class</injection-target-class>
+         <injection-target-name>webAppResourceEnvRef1Injection2Name</injection-target-name>
+      </injection-target>
+   </resource-env-ref>
+   <resource-env-ref id="webAppResourceEnvRef2-id">
+      <description>en-webAppResourceEnvRef2-desc</description>
+      <description xml:lang="fr">fr-webAppResourceEnvRef2-desc</description>
+      <description xml:lang="de">de-webAppResourceEnvRef2-desc</description>
+      <resource-env-ref-name>webAppResourceEnvRef2Name</resource-env-ref-name>
+      <resource-env-ref-type>webAppResourceEnvRef2Type</resource-env-ref-type>
+      <mapped-name>webAppResourceEnvRef2MappedName</mapped-name>
+      <injection-target>
+         <injection-target-class>webAppResourceEnvRef2Injection1Class</injection-target-class>
+         <injection-target-name>webAppResourceEnvRef2Injection1Name</injection-target-name>
+      </injection-target>
+      <injection-target>
+         <injection-target-class>webAppResourceEnvRef2Injection2Class</injection-target-class>
+         <injection-target-name>webAppResourceEnvRef2Injection2Name</injection-target-name>
+      </injection-target>
+   </resource-env-ref>
+   
+   <!-- message destination ref -->
+   <message-destination-ref id="webAppMessageDestinationRef1-id">
+      <description>en-webAppMessageDestinationRef1-desc</description>
+      <description xml:lang="fr">fr-webAppMessageDestinationRef1-desc</description>
+      <description xml:lang="de">de-webAppMessageDestinationRef1-desc</description>
+      <message-destination-ref-name>webAppMessageDestinationRef1Name</message-destination-ref-name>
+      <message-destination-type>webAppMessageDestinationRef1Type</message-destination-type>
+      <message-destination-usage>Consumes</message-destination-usage>
+      <message-destination-link>webAppMessageDestinationRef1Link</message-destination-link>
+      <mapped-name>webAppMessageDestinationRef1MappedName</mapped-name>
+      <injection-target>
+         <injection-target-class>webAppMessageDestinationRef1Injection1Class</injection-target-class>
+         <injection-target-name>webAppMessageDestinationRef1Injection1Name</injection-target-name>
+      </injection-target>
+      <injection-target>
+         <injection-target-class>webAppMessageDestinationRef1Injection2Class</injection-target-class>
+         <injection-target-name>webAppMessageDestinationRef1Injection2Name</injection-target-name>
+      </injection-target>
+   </message-destination-ref>
+   <message-destination-ref id="webAppMessageDestinationRef2-id">
+      <description>en-webAppMessageDestinationRef2-desc</description>
+      <description xml:lang="fr">fr-webAppMessageDestinationRef2-desc</description>
+      <description xml:lang="de">de-webAppMessageDestinationRef2-desc</description>
+      <message-destination-ref-name>webAppMessageDestinationRef2Name</message-destination-ref-name>
+      <message-destination-type>webAppMessageDestinationRef2Type</message-destination-type>
+      <message-destination-usage>Produces</message-destination-usage>
+      <message-destination-link>webAppMessageDestinationRef2Link</message-destination-link>
+      <mapped-name>webAppMessageDestinationRef2MappedName</mapped-name>
+      <injection-target>
+         <injection-target-class>webAppMessageDestinationRef2Injection1Class</injection-target-class>
+         <injection-target-name>webAppMessageDestinationRef2Injection1Name</injection-target-name>
+      </injection-target>
+      <injection-target>
+         <injection-target-class>webAppMessageDestinationRef2Injection2Class</injection-target-class>
+         <injection-target-name>webAppMessageDestinationRef2Injection2Name</injection-target-name>
+      </injection-target>
+   </message-destination-ref>
+   <message-destination-ref id="webAppMessageDestinationRef3-id">
+      <description>en-webAppMessageDestinationRef3-desc</description>
+      <description xml:lang="fr">fr-webAppMessageDestinationRef3-desc</description>
+      <description xml:lang="de">de-webAppMessageDestinationRef3-desc</description>
+      <message-destination-ref-name>webAppMessageDestinationRef3Name</message-destination-ref-name>
+      <message-destination-type>webAppMessageDestinationRef3Type</message-destination-type>
+      <message-destination-usage>ConsumesProduces</message-destination-usage>
+      <message-destination-link>webAppMessageDestinationRef3Link</message-destination-link>
+      <mapped-name>webAppMessageDestinationRef3MappedName</mapped-name>
+      <injection-target>
+         <injection-target-class>webAppMessageDestinationRef3Injection1Class</injection-target-class>
+         <injection-target-name>webAppMessageDestinationRef3Injection1Name</injection-target-name>
+      </injection-target>
+      <injection-target>
+         <injection-target-class>webAppMessageDestinationRef3Injection2Class</injection-target-class>
+         <injection-target-name>webAppMessageDestinationRef3Injection2Name</injection-target-name>
+      </injection-target>
+   </message-destination-ref>
+   
+   <!-- persistence unit ref -->
+   <persistence-unit-ref id="webAppPersistenceUnitRef1-id">
+      <description>en-webAppPersistenceUnitRef1-desc</description>
+      <description xml:lang="fr">fr-webAppPersistenceUnitRef1-desc</description>
+      <description xml:lang="de">de-webAppPersistenceUnitRef1-desc</description>
+      <persistence-unit-ref-name>webAppPersistenceUnitRef1Name</persistence-unit-ref-name>
+      <persistence-unit-name>webAppPersistenceUnitRef1Unit</persistence-unit-name>
+      <mapped-name>webAppPersistenceUnitRef1MappedName</mapped-name>
+      <injection-target>
+         <injection-target-class>webAppPersistenceUnitRef1Injection1Class</injection-target-class>
+         <injection-target-name>webAppPersistenceUnitRef1Injection1Name</injection-target-name>
+      </injection-target>
+      <injection-target>
+         <injection-target-class>webAppPersistenceUnitRef1Injection2Class</injection-target-class>
+         <injection-target-name>webAppPersistenceUnitRef1Injection2Name</injection-target-name>
+      </injection-target>
+   </persistence-unit-ref>
+   <persistence-unit-ref id="webAppPersistenceUnitRef2-id">
+      <description>en-webAppPersistenceUnitRef2-desc</description>
+      <description xml:lang="fr">fr-webAppPersistenceUnitRef2-desc</description>
+      <description xml:lang="de">de-webAppPersistenceUnitRef2-desc</description>
+      <persistence-unit-ref-name>webAppPersistenceUnitRef2Name</persistence-unit-ref-name>
+      <persistence-unit-name>webAppPersistenceUnitRef2Unit</persistence-unit-name>
+      <mapped-name>webAppPersistenceUnitRef2MappedName</mapped-name>
+      <injection-target>
+         <injection-target-class>webAppPersistenceUnitRef2Injection1Class</injection-target-class>
+         <injection-target-name>webAppPersistenceUnitRef2Injection1Name</injection-target-name>
+      </injection-target>
+      <injection-target>
+         <injection-target-class>webAppPersistenceUnitRef2Injection2Class</injection-target-class>
+         <injection-target-name>webAppPersistenceUnitRef2Injection2Name</injection-target-name>
+      </injection-target>
+   </persistence-unit-ref>
+   
+   <!-- post-construct -->
+   <post-construct>
+      <lifecycle-callback-class>webAppPostConstruct1Class</lifecycle-callback-class>
+      <lifecycle-callback-method>webAppPostConstruct1Method</lifecycle-callback-method>
+   </post-construct>
+   <post-construct>
+      <lifecycle-callback-class>webAppPostConstruct2Class</lifecycle-callback-class>
+      <lifecycle-callback-method>webAppPostConstruct2Method</lifecycle-callback-method>
+   </post-construct>
+   
+   <!-- pre-destroy -->
+   <pre-destroy>
+      <lifecycle-callback-class>webAppPreDestroy1Class</lifecycle-callback-class>
+      <lifecycle-callback-method>webAppPreDestroy1Method</lifecycle-callback-method>
+   </pre-destroy>
+   <pre-destroy>
+      <lifecycle-callback-class>webAppPreDestroy2Class</lifecycle-callback-class>
+      <lifecycle-callback-method>webAppPreDestroy2Method</lifecycle-callback-method>
+   </pre-destroy>
+   
+   <!-- message destination -->
+   <message-destination id="webAppMessageDestination1-id">
+      <description>en-webAppMessageDestination1-desc</description>
+      <description xml:lang="fr">fr-webAppMessageDestination1-desc</description>
+      <description xml:lang="de">de-webAppMessageDestination1-desc</description>
+      <display-name>en-webAppMessageDestination1-disp</display-name>
+      <display-name xml:lang="fr">fr-webAppMessageDestination1-disp</display-name>
+      <display-name xml:lang="de">de-webAppMessageDestination1-disp</display-name>
+      <icon id="en-webAppMessageDestination1-icon-id">
+         <small-icon>en-webAppMessageDestination1-small-icon</small-icon>
+         <large-icon>en-webAppMessageDestination1-large-icon</large-icon>
+      </icon>
+      <icon xml:lang="fr" id="fr-webAppMessageDestination1-icon-id">
+         <small-icon>fr-webAppMessageDestination1-small-icon</small-icon>
+         <large-icon>fr-webAppMessageDestination1-large-icon</large-icon>
+      </icon>
+      <icon xml:lang="de" id="de-webAppMessageDestination1-icon-id">
+         <small-icon>de-webAppMessageDestination1-small-icon</small-icon>
+         <large-icon>de-webAppMessageDestination1-large-icon</large-icon>
+      </icon>
+      <message-destination-name>webAppMessageDestination1Name</message-destination-name>
+      <mapped-name>webAppMessageDestination1MappedName</mapped-name>
+   </message-destination>
+   <message-destination id="webAppMessageDestination2-id">
+      <description>en-webAppMessageDestination2-desc</description>
+      <description xml:lang="fr">fr-webAppMessageDestination2-desc</description>
+      <description xml:lang="de">de-webAppMessageDestination2-desc</description>
+      <display-name>en-webAppMessageDestination2-disp</display-name>
+      <display-name xml:lang="fr">fr-webAppMessageDestination2-disp</display-name>
+      <display-name xml:lang="de">de-webAppMessageDestination2-disp</display-name>
+      <icon id="en-webAppMessageDestination2-icon-id">
+         <small-icon>en-webAppMessageDestination2-small-icon</small-icon>
+         <large-icon>en-webAppMessageDestination2-large-icon</large-icon>
+      </icon>
+      <icon xml:lang="fr" id="fr-webAppMessageDestination2-icon-id">
+         <small-icon>fr-webAppMessageDestination2-small-icon</small-icon>
+         <large-icon>fr-webAppMessageDestination2-large-icon</large-icon>
+      </icon>
+      <icon xml:lang="de" id="de-webAppMessageDestination2-icon-id">
+         <small-icon>de-webAppMessageDestination2-small-icon</small-icon>
+         <large-icon>de-webAppMessageDestination2-large-icon</large-icon>
+      </icon>
+      <message-destination-name>webAppMessageDestination2Name</message-destination-name>
+      <mapped-name>webAppMessageDestination2MappedName</mapped-name>
+   </message-destination>
+
+    <locale-encoding-mapping-list id="locale-encoding-mapping-list0">
+       <locale-encoding-mapping>
+          <locale>en</locale>
+          <encoding>en</encoding>
+       </locale-encoding-mapping>
+    </locale-encoding-mapping-list>
+</web-app>


Property changes on: projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/web/WebApp23_testEverything.xml
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + native

Added: projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/web/WebApp23_testVersion.xml
===================================================================
--- projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/web/WebApp23_testVersion.xml	                        (rev 0)
+++ projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/web/WebApp23_testVersion.xml	2007-10-10 04:33:59 UTC (rev 65998)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE web-app PUBLIC
+"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+"http://java.sun.com/dtd/web-app_2_3.dtd">
+
+<web-app id="web-app_2_3">
+    <description>A servlet 2.3 descriptor</description>
+</web-app>


Property changes on: projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/web/WebApp23_testVersion.xml
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + native




More information about the jboss-cvs-commits mailing list