[jboss-cvs] JBossAS SVN: r91640 - in projects/metadata/web/trunk/src: main/java/org/jboss/metadata/web/spec and 3 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Jul 24 12:05:18 EDT 2009


Author: remy.maucherat at jboss.com
Date: 2009-07-24 12:05:17 -0400 (Fri, 24 Jul 2009)
New Revision: 91640

Added:
   projects/metadata/web/trunk/src/main/java/org/jboss/metadata/annotation/creator/web/Web25MetaDataCreator.java
   projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/OrderingMetaData.java
   projects/metadata/web/trunk/src/test/java/org/jboss/test/metadata/web/WebApp6EverythingUnitTestCase.java
   projects/metadata/web/trunk/src/test/java/org/jboss/test/metadata/web/WebApp6FragmentUnitTestCase.java
   projects/metadata/web/trunk/src/test/resources/org/jboss/test/metadata/web/WebApp6Everything_testEverything.xml
   projects/metadata/web/trunk/src/test/resources/org/jboss/test/metadata/web/WebApp6Fragment_testEverything.xml
Modified:
   projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/CookieConfigMetaData.java
   projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/Web30MetaData.java
   projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/WebCommonMetaData.java
   projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/WebFragment30MetaData.java
   projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/WebFragmentMetaData.java
   projects/metadata/web/trunk/src/test/resources/schema2class.properties
Log:
- Add some Servlet 3.0 test cases.
- Some fixes.
- Predictably, the ordering don't work, I don't know how to do it right now.

Added: projects/metadata/web/trunk/src/main/java/org/jboss/metadata/annotation/creator/web/Web25MetaDataCreator.java
===================================================================
--- projects/metadata/web/trunk/src/main/java/org/jboss/metadata/annotation/creator/web/Web25MetaDataCreator.java	                        (rev 0)
+++ projects/metadata/web/trunk/src/main/java/org/jboss/metadata/annotation/creator/web/Web25MetaDataCreator.java	2009-07-24 16:05:17 UTC (rev 91640)
@@ -0,0 +1,112 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * 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.annotation.creator.web;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.ejb.MessageDriven;
+import javax.ejb.Stateful;
+import javax.ejb.Stateless;
+
+import org.jboss.ejb3.annotation.Consumer;
+import org.jboss.ejb3.annotation.Service;
+import org.jboss.logging.Logger;
+import org.jboss.metadata.annotation.creator.AbstractCreator;
+import org.jboss.metadata.annotation.creator.Creator;
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.web.spec.Web25MetaData;
+import org.jboss.metadata.web.spec.WebMetaData;
+
+/**
+ * Create a Web30MetaData instance from the class annotations
+ * 
+ * @author Scott.Stark at jboss.org
+ * @version $Revision: 77012 $
+ */
+public class Web25MetaDataCreator extends AbstractCreator<WebMetaData>
+      implements Creator<Collection<Class<?>>, Web25MetaData>
+{
+ 
+   /** The ignore type annotations */
+   private static final Set<Class<? extends Annotation>> ignoreTypeAnnotations;
+   
+   /** The Logger. */
+   private static final Logger log = Logger.getLogger(Web25MetaDataCreator.class);
+   
+   static
+   {
+      // Ignoring classes with the the following type annotations
+      ignoreTypeAnnotations = new HashSet<Class<? extends Annotation>>();
+      ignoreTypeAnnotations.add(Stateful.class);
+      ignoreTypeAnnotations.add(Stateless.class);
+      ignoreTypeAnnotations.add(MessageDriven.class);
+      ignoreTypeAnnotations.add(Service.class);
+      ignoreTypeAnnotations.add(Consumer.class);
+   }
+   
+   public Web25MetaDataCreator(AnnotationFinder<AnnotatedElement> finder)
+   {
+      super(finder);
+      addProcessor(new WebComponentProcessor(finder));
+   }
+
+   public Web25MetaData create(Collection<Class<?>> classes)
+   {
+      // Don't create meta data for a empty collection
+      if(classes == null || classes.isEmpty())
+         return null;
+      
+      // Create meta data
+      Web25MetaData metaData = create();
+
+      processMetaData(classes, metaData);
+      
+      return metaData;
+   }
+   
+   protected Web25MetaData create()
+   {
+      Web25MetaData metaData = new Web25MetaData();
+      metaData.setVersion("2.5");
+      return metaData;
+   }
+   
+   protected boolean validateClass(Class<?> clazz)
+   {
+      boolean trace = log.isTraceEnabled();
+      for(Class<? extends Annotation> annotation : ignoreTypeAnnotations)
+      {
+         if(finder.getAnnotation(clazz, annotation) != null)
+         {
+            if(trace)
+               log.trace("won't process class: " + clazz + ", because of the type annotation: "+ annotation);
+            return false;
+         }
+      }
+      return true;
+   }
+
+}

Modified: projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/CookieConfigMetaData.java
===================================================================
--- projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/CookieConfigMetaData.java	2009-07-24 16:01:32 UTC (rev 91639)
+++ projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/CookieConfigMetaData.java	2009-07-24 16:05:17 UTC (rev 91640)
@@ -50,7 +50,6 @@
    public String getName() {
       return name;
    }
-   @XmlElement(name = "cookie-name")
    public void setName(String name) {
       this.name = name;
    }
@@ -58,7 +57,6 @@
    {
       return domain;
    }
-   @XmlElement(name = "cookie-domain")
    public void setDomain(String domain)
    {
       this.domain = domain;
@@ -68,7 +66,6 @@
    {
       return path;
    }
-   @XmlElement(name = "cookie-path")
    public void setPath(String path)
    {
       this.path = path;
@@ -78,7 +75,6 @@
    {
       return comment;
    }
-   @XmlElement(name = "cookie-comment")
    public void setComment(String comment)
    {
       this.comment = comment;

Added: projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/OrderingMetaData.java
===================================================================
--- projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/OrderingMetaData.java	                        (rev 0)
+++ projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/OrderingMetaData.java	2009-07-24 16:05:17 UTC (rev 91640)
@@ -0,0 +1,60 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * 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.web.spec;
+
+import javax.xml.bind.annotation.XmlType;
+
+import org.jboss.metadata.javaee.spec.JavaEEMetaDataConstants;
+import org.jboss.metadata.javaee.support.IdMetaDataImpl;
+
+/**
+ * @author Scott.Stark at jboss.org
+ * @version $Revision: 83549 $
+ */
+ at XmlType(name="orderingType",
+      namespace=JavaEEMetaDataConstants.JAVAEE_NS,
+      propOrder={"after", "before"})
+public class OrderingMetaData extends IdMetaDataImpl
+{
+   private static final long serialVersionUID = 1;
+   
+   private RelativeOrderingMetaData after;
+   private RelativeOrderingMetaData before;
+
+   public RelativeOrderingMetaData getAfter()
+   {
+      return after;
+   }
+   public void setAfter(RelativeOrderingMetaData after)
+   {
+      this.after = after;
+   }
+   public RelativeOrderingMetaData getBefore()
+   {
+      return before;
+   }
+   public void setBefore(RelativeOrderingMetaData before)
+   {
+      this.before = before;
+   }
+
+}

Modified: projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/Web30MetaData.java
===================================================================
--- projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/Web30MetaData.java	2009-07-24 16:01:32 UTC (rev 91639)
+++ projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/Web30MetaData.java	2009-07-24 16:05:17 UTC (rev 91640)
@@ -1,6 +1,7 @@
 package org.jboss.metadata.web.spec;
 
 import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlNs;
 import javax.xml.bind.annotation.XmlNsForm;
 import javax.xml.bind.annotation.XmlRootElement;
@@ -24,9 +25,9 @@
       normalizeSpace=true)
 @XmlType(name="web-appType",
       namespace=JavaEEMetaDataConstants.JAVAEE_NS,
-      propOrder={"descriptionGroup", "distributable", "contextParams", "filters", "filterMappings", "listeners", "servlets",
+      propOrder={"descriptionGroup", "name", "distributable", "contextParams", "filters", "filterMappings", "listeners", "servlets",
       "servletMappings", "sessionConfig", "mimeMappings", "welcomeFileList", "errorPages", "jspConfig", "securityContraints",
-      "loginConfig", "securityRoles", "jndiEnvironmentRefsGroup", "messageDestinations", "localEncodings"})
+      "loginConfig", "securityRoles", "jndiEnvironmentRefsGroup", "messageDestinations", "localEncodings", "absoluteOrdering"})
 public class Web30MetaData extends WebMetaData
 {
    private static final long serialVersionUID = 1;
@@ -48,6 +49,7 @@
    {
       return absoluteOrdering;
    }
+   @XmlElement(name="absolute-ordering")
    public void setAbsoluteOrdering(AbsoluteOrderingMetaData absoluteOrdering)
    {
       this.absoluteOrdering = absoluteOrdering;

Modified: projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/WebCommonMetaData.java
===================================================================
--- projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/WebCommonMetaData.java	2009-07-24 16:01:32 UTC (rev 91639)
+++ projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/WebCommonMetaData.java	2009-07-24 16:05:17 UTC (rev 91640)
@@ -484,6 +484,7 @@
    {
       return name;
    }
+   @XmlElement(name="name")
    public void setName(String name)
    {
       this.name = name;

Modified: projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/WebFragment30MetaData.java
===================================================================
--- projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/WebFragment30MetaData.java	2009-07-24 16:01:32 UTC (rev 91639)
+++ projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/WebFragment30MetaData.java	2009-07-24 16:05:17 UTC (rev 91640)
@@ -24,9 +24,9 @@
       normalizeSpace=true)
 @XmlType(name="web-fragmentType",
       namespace=JavaEEMetaDataConstants.JAVAEE_NS,
-      propOrder={"descriptionGroup", "distributable", "contextParams", "filters", "filterMappings", "listeners", "servlets",
+      propOrder={"descriptionGroup", "name", "distributable", "contextParams", "filters", "filterMappings", "listeners", "servlets",
       "servletMappings", "sessionConfig", "mimeMappings", "welcomeFileList", "errorPages", "jspConfig", "securityContraints",
-      "loginConfig", "securityRoles", "jndiEnvironmentRefsGroup", "messageDestinations", "localEncodings"})
+      "loginConfig", "securityRoles", "jndiEnvironmentRefsGroup", "messageDestinations", "localEncodings", "ordering"})
 public class WebFragment30MetaData extends WebFragmentMetaData
 {
    private static final long serialVersionUID = 1;

Modified: projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/WebFragmentMetaData.java
===================================================================
--- projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/WebFragmentMetaData.java	2009-07-24 16:01:32 UTC (rev 91639)
+++ projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/WebFragmentMetaData.java	2009-07-24 16:05:17 UTC (rev 91640)
@@ -21,38 +21,25 @@
  */
 package org.jboss.metadata.web.spec;
 
-import javax.xml.bind.annotation.XmlElement;
 
-
 /**
  * The web-app spec metadata
  * @author Scott.Stark at jboss.org
  * @version $Revision: 70996 $
  */
-public class WebFragmentMetaData  extends WebCommonMetaData
+public class WebFragmentMetaData extends WebCommonMetaData
 {
    private static final long serialVersionUID = 1;
-   private RelativeOrderingMetaData afterOrdering;
-   private RelativeOrderingMetaData beforeOrdering;
+   
+   private OrderingMetaData ordering;
 
-   public RelativeOrderingMetaData getAfterOrdering()
+   public OrderingMetaData getOrdering()
    {
-      return afterOrdering;
+      return ordering;
    }
-   @XmlElement(name="after")
-   public void setAfterOrdering(RelativeOrderingMetaData afterOrdering)
+   public void setOrdering(OrderingMetaData ordering)
    {
-      this.afterOrdering = afterOrdering;
+      this.ordering = ordering;
    }
-   public RelativeOrderingMetaData getBeforeOrdering()
-   {
-      return beforeOrdering;
-   }
-   @XmlElement(name="before")
-   public void setBeforeOrdering(RelativeOrderingMetaData beforeOrdering)
-   {
-      this.beforeOrdering = beforeOrdering;
-   }
    
-   
 }

Added: projects/metadata/web/trunk/src/test/java/org/jboss/test/metadata/web/WebApp6EverythingUnitTestCase.java
===================================================================
--- projects/metadata/web/trunk/src/test/java/org/jboss/test/metadata/web/WebApp6EverythingUnitTestCase.java	                        (rev 0)
+++ projects/metadata/web/trunk/src/test/java/org/jboss/test/metadata/web/WebApp6EverythingUnitTestCase.java	2009-07-24 16:05:17 UTC (rev 91640)
@@ -0,0 +1,250 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2007, Red Hat Middleware LLC, 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.test.metadata.web;
+
+import java.util.List;
+
+import org.jboss.annotation.javaee.Icon;
+import org.jboss.metadata.javaee.spec.DescriptionGroupMetaData;
+import org.jboss.metadata.javaee.spec.MessageDestinationMetaData;
+import org.jboss.metadata.javaee.spec.MessageDestinationsMetaData;
+import org.jboss.metadata.javaee.spec.ParamValueMetaData;
+import org.jboss.metadata.javaee.spec.SecurityRoleRefMetaData;
+import org.jboss.metadata.javaee.spec.SecurityRoleRefsMetaData;
+import org.jboss.metadata.web.spec.AuthConstraintMetaData;
+import org.jboss.metadata.web.spec.DispatcherType;
+import org.jboss.metadata.web.spec.FilterMappingMetaData;
+import org.jboss.metadata.web.spec.FilterMetaData;
+import org.jboss.metadata.web.spec.FiltersMetaData;
+import org.jboss.metadata.web.spec.SecurityConstraintMetaData;
+import org.jboss.metadata.web.spec.ServletMappingMetaData;
+import org.jboss.metadata.web.spec.ServletMetaData;
+import org.jboss.metadata.web.spec.ServletsMetaData;
+import org.jboss.metadata.web.spec.TransportGuaranteeType;
+import org.jboss.metadata.web.spec.UserDataConstraintMetaData;
+import org.jboss.metadata.web.spec.Web30MetaData;
+import org.jboss.metadata.web.spec.WebMetaData;
+import org.jboss.metadata.web.spec.WebResourceCollectionMetaData;
+import org.jboss.metadata.web.spec.WebResourceCollectionsMetaData;
+import org.jboss.test.metadata.javaee.AbstractJavaEEEverythingTest;
+
+/**
+ * Test all entries of javaee 6 web-app
+ * TODO: still need to add assertions for all elements
+ * 
+ * @author Scott.Stark at jboss.org
+ * @author Anil.Saldhana at jboss.com
+ * @version $Revision $
+ */
+public class WebApp6EverythingUnitTestCase extends AbstractJavaEEEverythingTest
+{
+
+   public WebApp6EverythingUnitTestCase(String name)
+   {
+      super(name);
+   }
+   
+   public void testEverything() throws Exception
+   {
+      WebMetaData webApp = unmarshal();
+      assertEverything(webApp, Mode.SPEC);
+   }
+   
+   protected WebMetaData unmarshal() throws Exception
+   {
+      return unmarshal(WebMetaData.class);
+   }
+
+   protected void assertEverything(WebMetaData webApp, Mode mode)
+      throws Exception
+   {
+      assertDescriptionGroup("web-app", webApp.getDescriptionGroup());
+      assertRemoteEnvironment("webApp", webApp, true, mode);
+      assertMessageDestinations5("webAppMessageDestination", 2, webApp.getMessageDestinations(), true);
+      assertServlets(webApp);
+      assertServletMappings(webApp);
+      assertFilters(webApp);
+      assertFilterMappings(webApp);
+      assertSecurityConstraints(webApp);
+   }
+
+   private void assertMessageDestinations5(String prefix, int size, MessageDestinationsMetaData messageDestinations, boolean full)
+   {
+      assertNotNull("no message destinations are set", messageDestinations);
+      assertEquals(size, messageDestinations.size());
+      int count = 1;
+      for(MessageDestinationMetaData messageDestinationMetaData : messageDestinations)
+      {
+         assertMessageDestination50(prefix + count, messageDestinationMetaData, Mode.SPEC);
+         count++;
+      }
+   }
+   private void assertServlets(WebMetaData webApp)
+      throws Exception
+   {
+      ServletsMetaData servlets = webApp.getServlets();
+      int count = 0;
+      for(ServletMetaData servlet : servlets)
+      {
+         assertEquals("servlet"+count, servlet.getId());
+         assertEquals("servlet"+count+"-name", servlet.getServletName());
+         assertEquals("servlet"+count+".class", servlet.getServletClass());
+         assertEquals(1, servlet.getLoadOnStartup());
+         assertEquals("run-as-role"+count, servlet.getRunAs().getRoleName());
+         List<ParamValueMetaData> params = servlet.getInitParam();
+         assertEquals(2, params.size());
+         int pcount = 0;
+         for(ParamValueMetaData param : params)
+         {
+            assertEquals("servlet"+count+"-init-param"+pcount, param.getId());
+            assertEquals("init-param"+pcount+"-name", param.getParamName());
+            assertEquals("init-param"+pcount+"-value", param.getParamValue());
+            pcount ++;
+         }
+         SecurityRoleRefsMetaData refs = servlet.getSecurityRoleRefs();
+         assertEquals(1, refs.size());
+         for(SecurityRoleRefMetaData ref : refs)
+         {
+            assertEquals("servlet"+count+"-role-ref", ref.getRoleName());
+            assertEquals("role"+count, ref.getRoleLink());
+         }
+         count ++;
+      }
+   }
+   private void assertServletMappings(WebMetaData webApp)
+      throws Exception
+   {
+      List<ServletMappingMetaData> mappings = webApp.getServletMappings();
+      assertEquals(4, mappings.size());
+      int count = 0;
+      for(ServletMappingMetaData mapping : mappings)
+      {
+         int servletCount = count / 2;
+         assertEquals(mapping.getId(), "servlet"+servletCount+"-mapping"+count, mapping.getId());
+         assertEquals("servlet"+servletCount+"-name", mapping.getServletName());
+         if((count % 2) == 0)
+            assertEquals("/servlet"+servletCount+"/*", mapping.getUrlPatterns().get(0));
+         else
+         {
+            assertEquals(2, mapping.getUrlPatterns().size());
+            assertEquals("/servlet"+servletCount+"/*.s", mapping.getUrlPatterns().get(0));
+            assertEquals("/servlet"+servletCount+"/*.sx", mapping.getUrlPatterns().get(1));
+         }
+         count ++;
+      }
+   }
+   
+   private void assertFilters(WebMetaData webApp)
+      throws Exception
+   {
+      FiltersMetaData filters = webApp.getFilters();
+      assertEquals(2, filters.size());
+      FilterMetaData f0 = filters.get("filter0Name");
+      assertEquals("filter0Class", f0.getFilterClass());
+      int count = 0;
+      for(FilterMetaData f : filters)
+      {
+         assertEquals("filter"+count, f.getId());
+         assertEquals("filter"+count+"Class", f.getFilterClass());
+         DescriptionGroupMetaData dg = f.getDescriptionGroup();
+         Icon[] icons = dg.getIcons().value();
+         assertEquals("filter"+count+"-description", dg.getDescription());
+         assertEquals("filter"+count+"-display-name", dg.getDisplayName());
+         assertEquals("filter"+count+"-large-icon", icons[0].largeIcon());
+         assertEquals("filter"+count+"-small-icon", icons[0].smallIcon());
+         count ++;
+      }
+   }
+   
+   private void assertFilterMappings(WebMetaData webApp)
+      throws Exception
+   {
+      List<FilterMappingMetaData> mappings = webApp.getFilterMappings();
+      assertEquals(2, mappings.size());
+      FilterMappingMetaData m0 = mappings.get(0);
+      assertEquals("filter0-mapping", m0.getId());
+      assertEquals("filter0Name", m0.getFilterName());
+      assertEquals(null, m0.getServletNames());
+      assertEquals(2, m0.getUrlPatterns().size());
+      assertEquals("/filter0/*", m0.getUrlPatterns().get(0));
+      assertEquals("/*", m0.getUrlPatterns().get(1));
+      List<DispatcherType> dispatchers = m0.getDispatchers();
+      assertEquals(2, dispatchers.size());
+      assertEquals(DispatcherType.FORWARD, dispatchers.get(0));
+      assertEquals(DispatcherType.REQUEST, dispatchers.get(1));
+   }
+   
+   // Security Constraints
+   private void assertSecurityConstraints(WebMetaData webApp)
+   {
+      List<SecurityConstraintMetaData> scmdList = webApp.getSecurityContraints();
+      assertEquals(3, scmdList.size());
+      for(SecurityConstraintMetaData scmd:scmdList)
+      { 
+         String id = scmd.getId();
+         if(id.equals("security-constraint0"))
+            assertNormalSecurityConstraint(scmd);
+         else
+            if(id.equals("security-constraint-excluded"))
+               assertExcludedSecurityConstraint(scmd);
+            else
+               if(id.equals("security-constraint-unchecked"))
+                  assertUncheckedSecurityConstraint(scmd); 
+      }
+   }
+     
+   private void assertNormalSecurityConstraint(SecurityConstraintMetaData scmd)
+   {   
+      assertFalse(scmd.isExcluded());
+      assertFalse(scmd.isUnchecked());
+      assertEquals("security-constraint0-display-name",scmd.getDisplayName());
+      WebResourceCollectionsMetaData wrcmd = scmd.getResourceCollections();
+      assertEquals(2, wrcmd.size());
+      int count = 0;
+      for(WebResourceCollectionMetaData wrmd: wrcmd)
+      { 
+         assertEquals(wrmd.getId(), "web-resource-collection" + count, wrmd.getId());
+         assertEquals(wrmd.getWebResourceName(), 
+                "web-resource" + count + "-name", wrmd.getWebResourceName());
+         assertEquals("/resource" + count + "/*", 
+               "/resource" + count + "/*", wrmd.getUrlPatterns().get(0)); 
+         count++;
+      }
+      AuthConstraintMetaData amd = scmd.getAuthConstraint(); 
+      assertEquals("auth-constraint0", amd.getId());
+      assertEquals("role0", amd.getRoleNames().get(0));
+      
+      UserDataConstraintMetaData udcmd = scmd.getUserDataConstraint(); 
+      assertEquals(TransportGuaranteeType.NONE,udcmd.getTransportGuarantee());
+   }
+   
+   private void assertExcludedSecurityConstraint(SecurityConstraintMetaData scmd)
+   {   
+      assertTrue("Excluded Sec Constraint?", scmd.isExcluded()); 
+   }
+   
+   private void assertUncheckedSecurityConstraint(SecurityConstraintMetaData scmd)
+   {  
+      assertTrue("Unchecked Sec Constraint?", scmd.isUnchecked());
+      assertNull(scmd.getAuthConstraint());
+   }
+}
\ No newline at end of file

Added: projects/metadata/web/trunk/src/test/java/org/jboss/test/metadata/web/WebApp6FragmentUnitTestCase.java
===================================================================
--- projects/metadata/web/trunk/src/test/java/org/jboss/test/metadata/web/WebApp6FragmentUnitTestCase.java	                        (rev 0)
+++ projects/metadata/web/trunk/src/test/java/org/jboss/test/metadata/web/WebApp6FragmentUnitTestCase.java	2009-07-24 16:05:17 UTC (rev 91640)
@@ -0,0 +1,250 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2007, Red Hat Middleware LLC, 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.test.metadata.web;
+
+import java.util.List;
+
+import org.jboss.annotation.javaee.Icon;
+import org.jboss.metadata.javaee.spec.DescriptionGroupMetaData;
+import org.jboss.metadata.javaee.spec.MessageDestinationMetaData;
+import org.jboss.metadata.javaee.spec.MessageDestinationsMetaData;
+import org.jboss.metadata.javaee.spec.ParamValueMetaData;
+import org.jboss.metadata.javaee.spec.SecurityRoleRefMetaData;
+import org.jboss.metadata.javaee.spec.SecurityRoleRefsMetaData;
+import org.jboss.metadata.web.spec.AuthConstraintMetaData;
+import org.jboss.metadata.web.spec.DispatcherType;
+import org.jboss.metadata.web.spec.FilterMappingMetaData;
+import org.jboss.metadata.web.spec.FilterMetaData;
+import org.jboss.metadata.web.spec.FiltersMetaData;
+import org.jboss.metadata.web.spec.SecurityConstraintMetaData;
+import org.jboss.metadata.web.spec.ServletMappingMetaData;
+import org.jboss.metadata.web.spec.ServletMetaData;
+import org.jboss.metadata.web.spec.ServletsMetaData;
+import org.jboss.metadata.web.spec.TransportGuaranteeType;
+import org.jboss.metadata.web.spec.UserDataConstraintMetaData;
+import org.jboss.metadata.web.spec.WebCommonMetaData;
+import org.jboss.metadata.web.spec.WebFragmentMetaData;
+import org.jboss.metadata.web.spec.WebResourceCollectionMetaData;
+import org.jboss.metadata.web.spec.WebResourceCollectionsMetaData;
+import org.jboss.test.metadata.javaee.AbstractJavaEEEverythingTest;
+
+/**
+ * Test all entries of javaee 6 web-fragment
+ * TODO: still need to add assertions for all elements
+ * 
+ * @author Scott.Stark at jboss.org
+ * @author Anil.Saldhana at jboss.com
+ * @version $Revision $
+ */
+public class WebApp6FragmentUnitTestCase extends AbstractJavaEEEverythingTest
+{
+
+   public WebApp6FragmentUnitTestCase(String name)
+   {
+      super(name);
+   }
+   
+   public void testEverything() throws Exception
+   {
+      WebFragmentMetaData webApp = unmarshal();
+      assertEverything(webApp, Mode.SPEC);
+   }
+   
+   protected WebFragmentMetaData unmarshal() throws Exception
+   {
+      return unmarshal(WebFragmentMetaData.class);
+   }
+
+   protected void assertEverything(WebCommonMetaData webApp, Mode mode)
+      throws Exception
+   {
+      assertDescriptionGroup("web-app", webApp.getDescriptionGroup());
+      assertRemoteEnvironment("webApp", webApp, true, mode);
+      assertMessageDestinations5("webAppMessageDestination", 2, webApp.getMessageDestinations(), true);
+      assertServlets(webApp);
+      assertServletMappings(webApp);
+      assertFilters(webApp);
+      assertFilterMappings(webApp);
+      assertSecurityConstraints(webApp);
+   }
+
+   private void assertMessageDestinations5(String prefix, int size, MessageDestinationsMetaData messageDestinations, boolean full)
+   {
+      assertNotNull("no message destinations are set", messageDestinations);
+      assertEquals(size, messageDestinations.size());
+      int count = 1;
+      for(MessageDestinationMetaData messageDestinationMetaData : messageDestinations)
+      {
+         assertMessageDestination50(prefix + count, messageDestinationMetaData, Mode.SPEC);
+         count++;
+      }
+   }
+   private void assertServlets(WebCommonMetaData webApp)
+      throws Exception
+   {
+      ServletsMetaData servlets = webApp.getServlets();
+      int count = 0;
+      for(ServletMetaData servlet : servlets)
+      {
+         assertEquals("servlet"+count, servlet.getId());
+         assertEquals("servlet"+count+"-name", servlet.getServletName());
+         assertEquals("servlet"+count+".class", servlet.getServletClass());
+         assertEquals(1, servlet.getLoadOnStartup());
+         assertEquals("run-as-role"+count, servlet.getRunAs().getRoleName());
+         List<ParamValueMetaData> params = servlet.getInitParam();
+         assertEquals(2, params.size());
+         int pcount = 0;
+         for(ParamValueMetaData param : params)
+         {
+            assertEquals("servlet"+count+"-init-param"+pcount, param.getId());
+            assertEquals("init-param"+pcount+"-name", param.getParamName());
+            assertEquals("init-param"+pcount+"-value", param.getParamValue());
+            pcount ++;
+         }
+         SecurityRoleRefsMetaData refs = servlet.getSecurityRoleRefs();
+         assertEquals(1, refs.size());
+         for(SecurityRoleRefMetaData ref : refs)
+         {
+            assertEquals("servlet"+count+"-role-ref", ref.getRoleName());
+            assertEquals("role"+count, ref.getRoleLink());
+         }
+         count ++;
+      }
+   }
+   private void assertServletMappings(WebCommonMetaData webApp)
+      throws Exception
+   {
+      List<ServletMappingMetaData> mappings = webApp.getServletMappings();
+      assertEquals(4, mappings.size());
+      int count = 0;
+      for(ServletMappingMetaData mapping : mappings)
+      {
+         int servletCount = count / 2;
+         assertEquals(mapping.getId(), "servlet"+servletCount+"-mapping"+count, mapping.getId());
+         assertEquals("servlet"+servletCount+"-name", mapping.getServletName());
+         if((count % 2) == 0)
+            assertEquals("/servlet"+servletCount+"/*", mapping.getUrlPatterns().get(0));
+         else
+         {
+            assertEquals(2, mapping.getUrlPatterns().size());
+            assertEquals("/servlet"+servletCount+"/*.s", mapping.getUrlPatterns().get(0));
+            assertEquals("/servlet"+servletCount+"/*.sx", mapping.getUrlPatterns().get(1));
+         }
+         count ++;
+      }
+   }
+   
+   private void assertFilters(WebCommonMetaData webApp)
+      throws Exception
+   {
+      FiltersMetaData filters = webApp.getFilters();
+      assertEquals(2, filters.size());
+      FilterMetaData f0 = filters.get("filter0Name");
+      assertEquals("filter0Class", f0.getFilterClass());
+      int count = 0;
+      for(FilterMetaData f : filters)
+      {
+         assertEquals("filter"+count, f.getId());
+         assertEquals("filter"+count+"Class", f.getFilterClass());
+         DescriptionGroupMetaData dg = f.getDescriptionGroup();
+         Icon[] icons = dg.getIcons().value();
+         assertEquals("filter"+count+"-description", dg.getDescription());
+         assertEquals("filter"+count+"-display-name", dg.getDisplayName());
+         assertEquals("filter"+count+"-large-icon", icons[0].largeIcon());
+         assertEquals("filter"+count+"-small-icon", icons[0].smallIcon());
+         count ++;
+      }
+   }
+   
+   private void assertFilterMappings(WebCommonMetaData webApp)
+      throws Exception
+   {
+      List<FilterMappingMetaData> mappings = webApp.getFilterMappings();
+      assertEquals(2, mappings.size());
+      FilterMappingMetaData m0 = mappings.get(0);
+      assertEquals("filter0-mapping", m0.getId());
+      assertEquals("filter0Name", m0.getFilterName());
+      assertEquals(null, m0.getServletNames());
+      assertEquals(2, m0.getUrlPatterns().size());
+      assertEquals("/filter0/*", m0.getUrlPatterns().get(0));
+      assertEquals("/*", m0.getUrlPatterns().get(1));
+      List<DispatcherType> dispatchers = m0.getDispatchers();
+      assertEquals(2, dispatchers.size());
+      assertEquals(DispatcherType.FORWARD, dispatchers.get(0));
+      assertEquals(DispatcherType.REQUEST, dispatchers.get(1));
+   }
+   
+   // Security Constraints
+   private void assertSecurityConstraints(WebCommonMetaData webApp)
+   {
+      List<SecurityConstraintMetaData> scmdList = webApp.getSecurityContraints();
+      assertEquals(3, scmdList.size());
+      for(SecurityConstraintMetaData scmd:scmdList)
+      { 
+         String id = scmd.getId();
+         if(id.equals("security-constraint0"))
+            assertNormalSecurityConstraint(scmd);
+         else
+            if(id.equals("security-constraint-excluded"))
+               assertExcludedSecurityConstraint(scmd);
+            else
+               if(id.equals("security-constraint-unchecked"))
+                  assertUncheckedSecurityConstraint(scmd); 
+      }
+   }
+     
+   private void assertNormalSecurityConstraint(SecurityConstraintMetaData scmd)
+   {   
+      assertFalse(scmd.isExcluded());
+      assertFalse(scmd.isUnchecked());
+      assertEquals("security-constraint0-display-name",scmd.getDisplayName());
+      WebResourceCollectionsMetaData wrcmd = scmd.getResourceCollections();
+      assertEquals(2, wrcmd.size());
+      int count = 0;
+      for(WebResourceCollectionMetaData wrmd: wrcmd)
+      { 
+         assertEquals(wrmd.getId(), "web-resource-collection" + count, wrmd.getId());
+         assertEquals(wrmd.getWebResourceName(), 
+                "web-resource" + count + "-name", wrmd.getWebResourceName());
+         assertEquals("/resource" + count + "/*", 
+               "/resource" + count + "/*", wrmd.getUrlPatterns().get(0)); 
+         count++;
+      }
+      AuthConstraintMetaData amd = scmd.getAuthConstraint(); 
+      assertEquals("auth-constraint0", amd.getId());
+      assertEquals("role0", amd.getRoleNames().get(0));
+      
+      UserDataConstraintMetaData udcmd = scmd.getUserDataConstraint(); 
+      assertEquals(TransportGuaranteeType.NONE,udcmd.getTransportGuarantee());
+   }
+   
+   private void assertExcludedSecurityConstraint(SecurityConstraintMetaData scmd)
+   {   
+      assertTrue("Excluded Sec Constraint?", scmd.isExcluded()); 
+   }
+   
+   private void assertUncheckedSecurityConstraint(SecurityConstraintMetaData scmd)
+   {  
+      assertTrue("Unchecked Sec Constraint?", scmd.isUnchecked());
+      assertNull(scmd.getAuthConstraint());
+   }
+}
\ No newline at end of file

Added: projects/metadata/web/trunk/src/test/resources/org/jboss/test/metadata/web/WebApp6Everything_testEverything.xml
===================================================================
--- projects/metadata/web/trunk/src/test/resources/org/jboss/test/metadata/web/WebApp6Everything_testEverything.xml	                        (rev 0)
+++ projects/metadata/web/trunk/src/test/resources/org/jboss/test/metadata/web/WebApp6Everything_testEverything.xml	2009-07-24 16:05:17 UTC (rev 91640)
@@ -0,0 +1,593 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <web-app xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
+    version="3.0" id="web-app-everything" metadata-complete="true">
+
+   <name>foo</name>
+
+    <absolute-ordering>
+       <name>foo1</name>
+       <name>foo2</name>
+       <others/>
+       <name>foo3</name>
+    </absolute-ordering>
+
+    <icon>
+       <small-icon>en-web-app-small-icon</small-icon>
+       <large-icon>en-web-app-large-icon</large-icon>
+    </icon>
+   <!-- description group -->
+   <description>en-web-app-desc</description>
+   <description xml:lang="fr">fr-web-app-desc</description>
+   <description xml:lang="de">de-web-app-desc</description>
+   <display-name>en-web-app-disp</display-name>
+   <display-name xml:lang="fr">fr-web-app-disp</display-name>
+   <display-name xml:lang="de">de-web-app-disp</display-name>
+   <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>
+   <icon xml:lang="fr" id="fr-web-app-icon-id">
+      <small-icon>fr-web-app-small-icon</small-icon>
+      <large-icon>fr-web-app-large-icon</large-icon>
+   </icon>
+   <icon xml:lang="de" id="de-web-app-icon-id">
+      <small-icon>de-web-app-small-icon</small-icon>
+      <large-icon>de-web-app-large-icon</large-icon>
+   </icon>
+
+   <distributable/>
+
+   <context-param id="context-param0">
+      <description>context-param0-description</description>
+      <param-name>context-param0-name</param-name>
+      <param-value>context-param0-value</param-value>
+   </context-param>
+
+   <filter id="filter0">
+      <description>filter0-description</description>
+      <display-name>filter0-display-name</display-name>
+      <icon>
+         <small-icon>filter0-small-icon</small-icon>
+         <large-icon>filter0-large-icon</large-icon>
+      </icon>
+      <filter-name>filter0Name</filter-name>
+      <filter-class>filter0Class</filter-class>
+   </filter>
+    <filter id="filter1">
+       <description>filter1-description</description>
+       <display-name>filter1-display-name</display-name>
+       <icon>
+          <small-icon>filter1-small-icon</small-icon>
+          <large-icon>filter1-large-icon</large-icon>
+       </icon>
+       <filter-name>filter1Name</filter-name>
+       <filter-class>filter1Class</filter-class>
+       <async-supported>true</async-supported>
+    </filter>
+    <filter-mapping id="filter0-mapping">
+      <filter-name>filter0Name</filter-name>
+      <url-pattern>/filter0/*</url-pattern>
+      <url-pattern>/*</url-pattern>
+      <dispatcher>FORWARD</dispatcher>
+      <dispatcher>REQUEST</dispatcher>
+   </filter-mapping>
+    <filter-mapping id="filter1-mapping">
+       <filter-name>filter1Name</filter-name>
+       <servlet-name>servlet0</servlet-name>
+       <servlet-name>servlet1</servlet-name>
+       <dispatcher>FORWARD</dispatcher>
+       <dispatcher>REQUEST</dispatcher>
+    </filter-mapping>
+
+   <listener id="listener0">
+      <description>listener0-description</description>
+      <display-name>listener0-dipslay-name</display-name>
+      <icon id="listener0-icon">
+         <small-icon>listener0-small-icon</small-icon>
+         <large-icon>listener0-icon</large-icon>
+      </icon>
+      <listener-class>
+         listener0.class
+      </listener-class>
+   </listener>
+
+   <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>run-as-role0</role-name>
+      </run-as>
+      <security-role-ref>
+         <role-name>servlet0-role-ref</role-name>
+         <role-link>role0</role-link>
+      </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>
+       <enabled>false</enabled>
+       <async-supported>true</async-supported>
+       <run-as>
+          <role-name>run-as-role1</role-name>
+       </run-as>
+       <security-role-ref>
+          <role-name>servlet1-role-ref</role-name>
+          <role-link>role1</role-link>
+       </security-role-ref>
+    </servlet>
+    <servlet-mapping id="servlet0-mapping0">
+      <servlet-name>servlet0-name</servlet-name>
+      <url-pattern>/servlet0/*</url-pattern>
+   </servlet-mapping>
+    <servlet-mapping id="servlet0-mapping1">
+       <servlet-name>servlet0-name</servlet-name>
+       <url-pattern>/servlet0/*.s</url-pattern>
+       <url-pattern>/servlet0/*.sx</url-pattern>
+    </servlet-mapping>
+    <servlet-mapping id="servlet1-mapping2">
+       <servlet-name>servlet1-name</servlet-name>
+       <url-pattern>/servlet1/*</url-pattern>
+    </servlet-mapping>
+    <servlet-mapping id="servlet1-mapping3">
+       <servlet-name>servlet1-name</servlet-name>
+       <url-pattern>/servlet1/*.s</url-pattern>
+       <url-pattern>/servlet1/*.sx</url-pattern>
+    </servlet-mapping>
+
+    <session-config id="session-config0">
+       <session-timeout>30</session-timeout>
+       <cookie-config>
+          <name>session</name>
+          <domain>.jboss.org</domain>
+          <path>/</path>
+          <comment>Test</comment>
+          <http-only>true</http-only>
+          <secure>true</secure>
+          <max-age>10</max-age>
+       </cookie-config>
+       <tracking-mode>COOKIE</tracking-mode>
+    </session-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>
+
+    <welcome-file-list id="welcome-file-list0">
+       <welcome-file>index.html</welcome-file>
+       <welcome-file>*.welcome</welcome-file>
+    </welcome-file-list>
+
+   <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>
+
+    <jsp-config id="jsp-config0">
+       <taglib>
+          <taglib-uri>jsp-config0</taglib-uri>
+          <taglib-location>/WEB-INF/tlds/jsp-config0.tld</taglib-location>
+       </taglib>
+       <jsp-property-group>
+          <description>Property group for common configuration for all the JSP's</description>
+          <url-pattern>*.jsp</url-pattern>
+          <url-pattern>*.jspx</url-pattern>
+          <el-ignored>false</el-ignored>
+          <page-encoding>ISO-8859-1</page-encoding>
+          <scripting-invalid>false</scripting-invalid>
+          <is-xml>false</is-xml>
+          <include-prelude>/common-jsps/prelude.jsp</include-prelude>
+          <include-coda>/common-jsps/coda.jsp</include-coda>
+          <deferred-syntax-allowed-as-literal>true</deferred-syntax-allowed-as-literal>
+          <trim-directive-whitespaces>true</trim-directive-whitespaces>
+          <default-content-type>text/plain</default-content-type>
+          <buffer>1024</buffer>
+          <error-on-undeclared-namespace>true</error-on-undeclared-namespace>
+       </jsp-property-group>
+    </jsp-config>
+
+    <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>
+
+    <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>
+
+   <security-role id="security-role0">
+      <role-name>role0</role-name>
+   </security-role>
+    <security-role id="security-role1">
+       <role-name>role1</role-name>
+    </security-role>
+    
+   <!-- 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>
+
+    <service-ref id="webAppServiceRef1-id">
+       <description>en-webAppServiceRef1-desc</description>
+       <description xml:lang="fr">fr-webAppServiceRef1-desc</description>
+       <description xml:lang="de">de-webAppServiceRef1-desc</description>
+       <service-ref-name>webAppServiceRef1Name</service-ref-name>
+       <service-interface>webAppServiceRef1Iface</service-interface>
+    </service-ref>
+    <service-ref id="webAppServiceRef2-id">
+       <description>en-webAppServiceRef2-desc</description>
+       <description xml:lang="fr">fr-webAppServiceRef2-desc</description>
+       <description xml:lang="de">de-webAppServiceRef2-desc</description>
+       <service-ref-name>webAppServiceRef2Name</service-ref-name>
+       <service-interface>webAppServiceRef2Iface</service-interface>
+    </service-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>

Added: projects/metadata/web/trunk/src/test/resources/org/jboss/test/metadata/web/WebApp6Fragment_testEverything.xml
===================================================================
--- projects/metadata/web/trunk/src/test/resources/org/jboss/test/metadata/web/WebApp6Fragment_testEverything.xml	                        (rev 0)
+++ projects/metadata/web/trunk/src/test/resources/org/jboss/test/metadata/web/WebApp6Fragment_testEverything.xml	2009-07-24 16:05:17 UTC (rev 91640)
@@ -0,0 +1,580 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-fragment xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd"
+    version="3.0" id="web-fragment-everything">
+
+   <ordering>
+     <before>
+       <name>foo1</name>
+       <name>foo2</name>
+       <others/>
+       <name>foo3</name>
+     </before>
+     <after>
+       <name>foo4</name>
+     </after>
+   </ordering>
+
+    <icon>
+       <small-icon>en-web-app-small-icon</small-icon>
+       <large-icon>en-web-app-large-icon</large-icon>
+    </icon>
+   <!-- description group -->
+   <description>en-web-app-desc</description>
+   <description xml:lang="fr">fr-web-app-desc</description>
+   <description xml:lang="de">de-web-app-desc</description>
+   <display-name>en-web-app-disp</display-name>
+   <display-name xml:lang="fr">fr-web-app-disp</display-name>
+   <display-name xml:lang="de">de-web-app-disp</display-name>
+   <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>
+   <icon xml:lang="fr" id="fr-web-app-icon-id">
+      <small-icon>fr-web-app-small-icon</small-icon>
+      <large-icon>fr-web-app-large-icon</large-icon>
+   </icon>
+   <icon xml:lang="de" id="de-web-app-icon-id">
+      <small-icon>de-web-app-small-icon</small-icon>
+      <large-icon>de-web-app-large-icon</large-icon>
+   </icon>
+
+   <distributable/>
+
+   <context-param id="context-param0">
+      <description>context-param0-description</description>
+      <param-name>context-param0-name</param-name>
+      <param-value>context-param0-value</param-value>
+   </context-param>
+
+   <filter id="filter0">
+      <description>filter0-description</description>
+      <display-name>filter0-display-name</display-name>
+      <icon>
+         <small-icon>filter0-small-icon</small-icon>
+         <large-icon>filter0-large-icon</large-icon>
+      </icon>
+      <filter-name>filter0Name</filter-name>
+      <filter-class>filter0Class</filter-class>
+   </filter>
+    <filter id="filter1">
+       <description>filter1-description</description>
+       <display-name>filter1-display-name</display-name>
+       <icon>
+          <small-icon>filter1-small-icon</small-icon>
+          <large-icon>filter1-large-icon</large-icon>
+       </icon>
+       <filter-name>filter1Name</filter-name>
+       <filter-class>filter1Class</filter-class>
+    </filter>
+    <filter-mapping id="filter0-mapping">
+      <filter-name>filter0Name</filter-name>
+      <url-pattern>/filter0/*</url-pattern>
+      <url-pattern>/*</url-pattern>
+      <dispatcher>FORWARD</dispatcher>
+      <dispatcher>REQUEST</dispatcher>
+   </filter-mapping>
+    <filter-mapping id="filter1-mapping">
+       <filter-name>filter1Name</filter-name>
+       <servlet-name>servlet0</servlet-name>
+       <servlet-name>servlet1</servlet-name>
+       <dispatcher>FORWARD</dispatcher>
+       <dispatcher>REQUEST</dispatcher>
+    </filter-mapping>
+
+   <listener id="listener0">
+      <description>listener0-description</description>
+      <display-name>listener0-dipslay-name</display-name>
+      <icon id="listener0-icon">
+         <small-icon>listener0-small-icon</small-icon>
+         <large-icon>listener0-icon</large-icon>
+      </icon>
+      <listener-class>
+         listener0.class
+      </listener-class>
+   </listener>
+
+   <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>run-as-role0</role-name>
+      </run-as>
+      <security-role-ref>
+         <role-name>servlet0-role-ref</role-name>
+         <role-link>role0</role-link>
+      </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>run-as-role1</role-name>
+       </run-as>
+       <security-role-ref>
+          <role-name>servlet1-role-ref</role-name>
+          <role-link>role1</role-link>
+       </security-role-ref>
+    </servlet>
+    <servlet-mapping id="servlet0-mapping0">
+      <servlet-name>servlet0-name</servlet-name>
+      <url-pattern>/servlet0/*</url-pattern>
+   </servlet-mapping>
+    <servlet-mapping id="servlet0-mapping1">
+       <servlet-name>servlet0-name</servlet-name>
+       <url-pattern>/servlet0/*.s</url-pattern>
+       <url-pattern>/servlet0/*.sx</url-pattern>
+    </servlet-mapping>
+    <servlet-mapping id="servlet1-mapping2">
+       <servlet-name>servlet1-name</servlet-name>
+       <url-pattern>/servlet1/*</url-pattern>
+    </servlet-mapping>
+    <servlet-mapping id="servlet1-mapping3">
+       <servlet-name>servlet1-name</servlet-name>
+       <url-pattern>/servlet1/*.s</url-pattern>
+       <url-pattern>/servlet1/*.sx</url-pattern>
+    </servlet-mapping>
+
+    <session-config id="session-config0">
+       <session-timeout>30</session-timeout>
+    </session-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>
+
+    <welcome-file-list id="welcome-file-list0">
+       <welcome-file>index.html</welcome-file>
+       <welcome-file>*.welcome</welcome-file>
+    </welcome-file-list>
+
+   <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>
+
+    <jsp-config id="jsp-config0">
+       <taglib>
+          <taglib-uri>jsp-config0</taglib-uri>
+          <taglib-location>/WEB-INF/tlds/jsp-config0.tld</taglib-location>
+       </taglib>
+       <jsp-property-group>
+          <description>Property group for common configuration for all the JSP's</description>
+          <url-pattern>*.jsp</url-pattern>
+          <url-pattern>*.jspx</url-pattern>
+          <el-ignored>false</el-ignored>
+          <page-encoding>ISO-8859-1</page-encoding>
+          <scripting-invalid>false</scripting-invalid>
+          <is-xml>false</is-xml>
+          <include-prelude>/common-jsps/prelude.jsp</include-prelude>
+          <include-coda>/common-jsps/coda.jsp</include-coda>
+          <deferred-syntax-allowed-as-literal>true</deferred-syntax-allowed-as-literal>
+          <trim-directive-whitespaces>true</trim-directive-whitespaces>
+       </jsp-property-group>
+    </jsp-config>
+
+    <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>
+
+    <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>
+
+   <security-role id="security-role0">
+      <role-name>role0</role-name>
+   </security-role>
+    <security-role id="security-role1">
+       <role-name>role1</role-name>
+    </security-role>
+    
+   <!-- 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>
+
+    <service-ref id="webAppServiceRef1-id">
+       <description>en-webAppServiceRef1-desc</description>
+       <description xml:lang="fr">fr-webAppServiceRef1-desc</description>
+       <description xml:lang="de">de-webAppServiceRef1-desc</description>
+       <service-ref-name>webAppServiceRef1Name</service-ref-name>
+       <service-interface>webAppServiceRef1Iface</service-interface>
+    </service-ref>
+    <service-ref id="webAppServiceRef2-id">
+       <description>en-webAppServiceRef2-desc</description>
+       <description xml:lang="fr">fr-webAppServiceRef2-desc</description>
+       <description xml:lang="de">de-webAppServiceRef2-desc</description>
+       <service-ref-name>webAppServiceRef2Name</service-ref-name>
+       <service-interface>webAppServiceRef2Iface</service-interface>
+    </service-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-fragment>

Modified: projects/metadata/web/trunk/src/test/resources/schema2class.properties
===================================================================
--- projects/metadata/web/trunk/src/test/resources/schema2class.properties	2009-07-24 16:01:32 UTC (rev 91639)
+++ projects/metadata/web/trunk/src/test/resources/schema2class.properties	2009-07-24 16:05:17 UTC (rev 91640)
@@ -2,6 +2,8 @@
 web-app_2_3.dtd org.jboss.metadata.web.spec.Web23MetaData
 web-app_2_4.xsd org.jboss.metadata.web.spec.Web24MetaData
 web-app_2_5.xsd org.jboss.metadata.web.spec.Web25MetaData
+web-app_3_0.xsd org.jboss.metadata.web.spec.Web30MetaData
+web-fragment_3_0.xsd org.jboss.metadata.web.spec.WebFragment30MetaData
 jboss-web org.jboss.metadata.web.jboss.JBoss50DTDWebMetaData
 jboss-web_4_0.dtd org.jboss.metadata.web.jboss.JBoss4xDTDWebMetaData
 jboss-web_4_2.dtd org.jboss.metadata.web.jboss.JBoss4xDTDWebMetaData




More information about the jboss-cvs-commits mailing list