[jboss-svn-commits] JBoss Common SVN: r2457 - in jbossxb-builder/trunk/src/test: java/org/jboss/ejb and 11 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Jul 25 07:48:04 EDT 2007


Author: alex.loubyansky at jboss.com
Date: 2007-07-25 07:48:03 -0400 (Wed, 25 Jul 2007)
New Revision: 2457

Added:
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/CacheInvalidationConfigMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/ClusterConfigMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/CommitOption.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/ContainerConfigurationMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/ContainerConfigurationsMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/IORASContextMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/IORSASContextMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/IORSecurityConfigMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/IORTransportConfigMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/InvokerBindingMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/InvokerBindingsMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/InvokerProxyBindingMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/InvokerProxyBindingsMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBoss50MetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBossAssemblyDescriptorMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBossEnterpriseBeanMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBossEnterpriseBeansMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBossEntityBeanMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBossEnvironmentRefsGroupMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBossMessageDrivenBeanMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBossMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBossSessionBeanMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/LoaderRepositoryConfigMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/LoaderRepositoryMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/MethodAttributeMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/MethodAttributesMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/RemoteBindingMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/ResourceManagerMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/ResourceManagersMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/WebserviceDescriptionMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/WebserviceDescriptionsMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/WebservicesMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ActivationConfigMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ActivationConfigPropertiesMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ActivationConfigPropertyMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ApplicationExceptionMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ApplicationExceptionsMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/AroundInvokeMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/AroundInvokesMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/AssemblyDescriptorMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/BusinessLocalsMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/BusinessRemotesMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/CMPFieldMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/CMPFieldsMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/CMRFieldMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ContainerTransactionMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ContainerTransactionsMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/EjbJar21MetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/EjbJar2xMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/EjbJar30MetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/EjbJar3xMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/EjbJarMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/EnterpriseBeanMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/EnterpriseBeansMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/EntityBeanMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ExcludeListMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/InitMethodMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/InitMethodsMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/InterceptorBindingMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/InterceptorBindingsMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/InterceptorClassesMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/InterceptorMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/InterceptorOrderMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/InterceptorsMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/MessageDrivenBeanMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/MethodInterfaceType.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/MethodMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/MethodParametersMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/MethodPermissionMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/MethodPermissionsMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/MethodsMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/MultiplicityType.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/NamedMethodMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/PersistenceType.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/QueriesMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/QueryMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/QueryMethodMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/RelationMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/RelationRoleMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/RelationRoleSourceMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/RelationsMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/RemoveMethodMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/RemoveMethodsMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ResultTypeMapping.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/SecurityIdentityMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/SessionBeanMetaData.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/SessionType.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/SubscriptionDurability.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/TransAttributeType.java
   jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/TransactionType.java
   jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/
   jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/AbstractEJBEverythingTest.java
   jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/EJBTestSuite.java
   jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/
   jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/
   jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/EJBMetaDataTestSuite.java
   jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/EjbJar21EverythingUnitTestCase.java
   jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/EjbJar21UnitTestCase.java
   jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/EjbJar3xEverythingUnitTestCase.java
   jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/EjbJar3xUnitTestCase.java
   jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/JBoss5xEverythingUnitTestCase.java
   jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/
   jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/
   jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/
   jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar21Everything_testEverything.xml
   jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar21_testVersion.xml
   jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar3xEverything_testEverything.xml
   jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar3x_testDescriptionDefaultLanguage.xml
   jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar3x_testDisplayNameDefaultLanguage.xml
   jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar3x_testEjbClientJar.xml
   jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar3x_testEnterpriseBeans.xml
   jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar3x_testIconDefaultLanguage.xml
   jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar3x_testId.xml
   jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar3x_testVersion.xml
   jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/JBoss5xEverything_testEverything.xml
Log:
ejb api and tests

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/CacheInvalidationConfigMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/CacheInvalidationConfigMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/CacheInvalidationConfigMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,134 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.jboss;
+
+import javax.xml.bind.annotation.XmlType;
+
+import org.jboss.javaee.metadata.support.IdMetaDataImplWithDescriptions;
+
+/**
+ * CacheInvalidationConfigMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="cache-invalidation-configType")
+public class CacheInvalidationConfigMetaData extends IdMetaDataImplWithDescriptions
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 5237940805332926376L;
+
+   /** The default invalidation manager */
+   public static final String DEFAULT_INVALIDATION_MANAGER_NAME = "jboss.cache:service=InvalidationManager";
+
+   /** The invalidation group name */
+   private String invalidationGroupName;
+
+   /** The invalidation manager name */
+   private String invalidationManagerName;
+
+   /** The enterprise bean */
+   private JBossEntityBeanMetaData entityBean;
+   
+   /**
+    * Set the entityBean.
+    * 
+    * @param entityBean the entityBean.
+    * @throws IllegalArgumentException for a null entityBean
+    */
+   void setEntityBean(JBossEntityBeanMetaData entityBean)
+   {
+      if (entityBean == null)
+         throw new IllegalArgumentException("Null entityBean");
+      this.entityBean = entityBean;
+   }
+
+   /**
+    * Get the invalidationGroupName.
+    * 
+    * @return the invalidationGroupName.
+    */
+   public String getInvalidationGroupName()
+   {
+      return invalidationGroupName;
+   }
+
+   /**
+    * Determine the invalidationGroupName.
+    * 
+    * @return the invalidationGroupName.
+    */
+   public String determineInvalidationGroupName()
+   {
+      if (invalidationGroupName == null && entityBean != null)
+         return entityBean.getEjbName();
+      return invalidationGroupName;
+   }
+
+   /**
+    * Set the invalidationGroupName.
+    * 
+    * @param invalidationGroupName the invalidationGroupName.
+    * @throws IllegalArgumentException for a null invalidationGroupName
+    */
+   public void setInvalidationGroupName(String invalidationGroupName)
+   {
+      if (invalidationGroupName == null)
+         throw new IllegalArgumentException("Null invalidationGroupName");
+      this.invalidationGroupName = invalidationGroupName;
+   }
+
+   /**
+    * Get the invalidationManagerName.
+    * 
+    * @return the invalidationManagerName.
+    */
+   public String getInvalidationManagerName()
+   {
+      return invalidationManagerName;
+   }
+
+   /**
+    * Determine the invalidationManagerName.
+    * 
+    * @return the invalidationManagerName.
+    */
+   public String determineInvalidationManagerName()
+   {
+      if (invalidationManagerName == null)
+         return DEFAULT_INVALIDATION_MANAGER_NAME;
+      return invalidationManagerName;
+   }
+
+   /**
+    * Set the invalidationManagerName.
+    * 
+    * @param invalidationManagerName the invalidationManagerName.
+    * @throws IllegalArgumentException for a null invalidationManagerName
+    */
+   public void setInvalidationManagerName(String invalidationManagerName)
+   {
+      if (invalidationManagerName == null)
+         throw new IllegalArgumentException("Null invalidationManagerName");
+      this.invalidationManagerName = invalidationManagerName;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/ClusterConfigMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/ClusterConfigMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/ClusterConfigMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,236 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.jboss;
+
+import javax.xml.bind.annotation.XmlType;
+
+import org.jboss.ejb.metadata.spec.EnterpriseBeanMetaData;
+import org.jboss.ejb.metadata.spec.SessionBeanMetaData;
+import org.jboss.javaee.metadata.support.IdMetaDataImplWithDescriptions;
+
+/**
+ * ClusterConfigMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="cluster-configType")
+public class ClusterConfigMetaData extends IdMetaDataImplWithDescriptions
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -614188513386783204L;
+
+   /** The jndi prefix for the sesssion state */
+   public final static String JNDI_PREFIX_FOR_SESSION_STATE = "/HASessionState/";
+   
+   /** The default session state  name */
+   public final static String DEFAULT_SESSION_STATE_NAME = JNDI_PREFIX_FOR_SESSION_STATE + "Default";
+
+   /** The first available load balancing policy */
+   public static final String FIRST_AVAILABLE = "org.jboss.ha.framework.interfaces.FirstAvailable";
+
+   /** The round robin load balancing policy */
+   public static final String ROUND_ROBIN = "org.jboss.ha.framework.interfaces.RoundRobin";
+   
+   /** The partition name */
+   private String partitionName;
+   
+   /** The home load balancing policy */
+   private String homeLoadBalancingPolicy;
+   
+   /** The bean load balancing policy */
+   private String beanLoadBalancingPolicy;
+   
+   /** The state manager jndi */
+   private String sessionStateManagerJndiName;
+
+   /** The enterprise bean */
+   private JBossEnterpriseBeanMetaData enterpriseBeanMetaData;
+   
+   /**
+    * Set the enterpriseBeanMetaData.
+    * 
+    * @param enterpriseBeanMetaData the enterpriseBeanMetaData.
+    * @throws IllegalArgumentException for a null enterpriseBeanMetaData
+    */
+   void setEnterpriseBeanMetaData(JBossEnterpriseBeanMetaData enterpriseBeanMetaData)
+   {
+      if (enterpriseBeanMetaData == null)
+         throw new IllegalArgumentException("Null enterpriseBeanMetaData");
+      this.enterpriseBeanMetaData = enterpriseBeanMetaData;
+   }
+
+   /**
+    * Get the beanLoadBalancingPolicy.
+    * 
+    * @return the beanLoadBalancingPolicy.
+    */
+   public String getBeanLoadBalancingPolicy()
+   {
+      return beanLoadBalancingPolicy;
+   }
+
+   /**
+    * Determine the beanLoadBalancingPolicy.
+    * 
+    * @return the beanLoadBalancingPolicy.
+    */
+   public String determineBeanLoadBalancingPolicy()
+   {
+      if (beanLoadBalancingPolicy == null && enterpriseBeanMetaData != null)
+      {
+         EnterpriseBeanMetaData ejb = enterpriseBeanMetaData.getOverridenMetaData();
+         if (ejb != null)
+         {
+            if (ejb.isSession())
+            {
+               SessionBeanMetaData session = (SessionBeanMetaData) ejb;
+               if (session.isStateless())
+                  return ROUND_ROBIN;
+            }
+         }
+         else
+            return FIRST_AVAILABLE;
+      }
+      return beanLoadBalancingPolicy;
+   }
+
+   /**
+    * Set the beanLoadBalancingPolicy.
+    * 
+    * @param beanLoadBalancingPolicy the beanLoadBalancingPolicy.
+    * @throws IllegalArgumentException for a null beanLoadBalancingPolicy
+    */
+   public void setBeanLoadBalancingPolicy(String beanLoadBalancingPolicy)
+   {
+      if (beanLoadBalancingPolicy == null)
+         throw new IllegalArgumentException("Null beanLoadBalancingPolicy");
+      this.beanLoadBalancingPolicy = beanLoadBalancingPolicy;
+   }
+
+   /**
+    * Get the homeLoadBalancingPolicy.
+    * 
+    * @return the homeLoadBalancingPolicy.
+    */
+   public String getHomeLoadBalancingPolicy()
+   {
+      return homeLoadBalancingPolicy;
+   }
+
+   /**
+    * Determine the homeLoadBalancingPolicy.
+    * 
+    * @return the homeLoadBalancingPolicy.
+    */
+   public String determineHomeLoadBalancingPolicy()
+   {
+      if (homeLoadBalancingPolicy == null && enterpriseBeanMetaData != null)
+      {
+         EnterpriseBeanMetaData ejb = enterpriseBeanMetaData.getOverridenMetaData();
+         if (ejb != null)
+            return ROUND_ROBIN;
+      }
+      return homeLoadBalancingPolicy;
+   }
+
+   /**
+    * Set the homeLoadBalancingPolicy.
+    * 
+    * @param homeLoadBalancingPolicy the homeLoadBalancingPolicy.
+    * @throws IllegalArgumentException for a null homeLoadBalancingPolicy
+    */
+   public void setHomeLoadBalancingPolicy(String homeLoadBalancingPolicy)
+   {
+      if (homeLoadBalancingPolicy == null)
+         throw new IllegalArgumentException("Null homeLoadBalancingPolicy");
+      this.homeLoadBalancingPolicy = homeLoadBalancingPolicy;
+   }
+
+   /**
+    * Get the partitionName.
+    * 
+    * @return the partitionName.
+    */
+   public String getPartitionName()
+   {
+      return partitionName;
+   }
+
+   /**
+    * Determine the partitionName.
+    * 
+    * @return the partitionName.
+    */
+   public String determinePartitionName()
+   {
+      return partitionName;
+   }
+
+   /**
+    * Set the partitionName.
+    * 
+    * @param partitionName the partitionName.
+    * @throws IllegalArgumentException for a null partitionName
+    */
+   public void setPartitionName(String partitionName)
+   {
+      if (partitionName == null)
+         throw new IllegalArgumentException("Null partitionName");
+      this.partitionName = partitionName;
+   }
+
+   /**
+    * Get the sessionStateManagerJndiName.
+    * 
+    * @return the sessionStateManagerJndiName.
+    */
+   public String getSessionStateManagerJndiName()
+   {
+      return sessionStateManagerJndiName;
+   }
+
+   /**
+    * Determine the sessionStateManagerJndiName.
+    * 
+    * @return the sessionStateManagerJndiName.
+    */
+   public String determineSessionStateManagerJndiName()
+   {
+      if (sessionStateManagerJndiName == null)
+         return DEFAULT_SESSION_STATE_NAME;
+      return sessionStateManagerJndiName;
+   }
+
+   /**
+    * Set the sessionStateManagerJndiName.
+    * 
+    * @param sessionStateManagerJndiName the sessionStateManagerJndiName.
+    * @throws IllegalArgumentException for a null sessionStateManagerJndiName
+    */
+   public void setSessionStateManagerJndiName(String sessionStateManagerJndiName)
+   {
+      if (sessionStateManagerJndiName == null)
+         throw new IllegalArgumentException("Null sessionStateManagerJndiName");
+      this.sessionStateManagerJndiName = sessionStateManagerJndiName;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/CommitOption.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/CommitOption.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/CommitOption.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,48 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.jboss;
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * CommitOption.<p>
+ * 
+ * The descriptions come from Marc Fleury
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="commit-optionType")
+public enum CommitOption
+{
+   /** Dumb */
+   A,
+   
+   /** Dumber */
+   B,
+   
+   /** Dumbest */
+   C,
+   
+   /** Dumb with a period flush */
+   D,
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/ContainerConfigurationMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/ContainerConfigurationMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/ContainerConfigurationMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,576 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.jboss;
+
+import java.util.Set;
+
+import org.jboss.javaee.metadata.support.NamedMetaDataWithDescriptions;
+import org.jboss.javaee.metadata.support.NonNullLinkedHashSet;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * ConfigurationMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="container-configurationType")
+public class ContainerConfigurationMetaData extends NamedMetaDataWithDescriptions
+{
+   /** The standard CMP2 configuration */
+   public static final String CMP_2x = "Standard CMP 2.x EntityBean";
+
+   /** The standard CMP1.1 configuration */
+   public static final String CMP_1x = "Standard CMP EntityBean";
+
+   /** The standard BMP configuration */
+   public static final String BMP = "Standard BMP EntityBean";
+
+   /** The standard Stateless session configuration */
+   public static final String STATELESS = "Standard Stateless SessionBean";
+
+   /** The standard Stateful session configuration */
+   public static final String STATEFUL = "Standard Stateful SessionBean";
+
+   /** The message driven bean configuration */
+   public static final String MESSAGE_DRIVEN = "Standard Message Driven Bean";
+
+   /** The message inflow driven bean configuration */
+   public static final String MESSAGE_INFLOW_DRIVEN = "Standard Message Inflow Driven Bean";
+
+   /** The clustered CMP2 configuration */
+   public static final String CLUSTERED_CMP_2x = "Clustered CMP 2.x EntityBean";
+
+   /** The clustered CMP1.1 configuration */
+   public static final String CLUSTERED_CMP_1x = "Clustered CMP EntityBean";
+
+   /** The clustered BMP configuration */
+   public static final String CLUSTERED_BMP = "Clustered BMP EntityBean";
+
+   /** The clustered stateful session configuration */
+   public static final String CLUSTERED_STATEFUL = "Clustered Stateful SessionBean";
+
+   /** The clustered stateless session configuration */
+   public static final String CLUSTERED_STATELESS = "Clustered Stateless SessionBean";
+
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 5189417462407375043L;
+
+   /** The extends */
+   private String extendsName;
+
+   /** Call logging */
+   private boolean callLogging;
+   
+   /** The invoker proxy binding names */
+   private Set<String> invokerProxyBindingNames;
+   
+   /** Sync on commit only */
+   private boolean syncOnCommitOnly;
+
+   /** Insert after ejb post create */
+   private boolean insertAfterEjbPostCreate;
+   
+   /** ejbStore on clean */
+   private boolean ejbStoreOnClean;
+   
+   /** Store not flushed */
+   private boolean storeNotFlushed = true;
+   
+   // TODO DOM container interceptors
+   
+   /** The instance pool */
+   private String instancePool;
+   
+   /** The instance cache */
+   private String instanceCache;
+
+   /** The persistence manager */
+   private String persistenceManager;
+   
+   /** The web classloader */
+   private String webClassLoader;
+   
+   /** The locking policy */
+   private String lockingPolicy;
+   
+   // TODO DOM container cache conf
+   
+   // TODO DOM container pool conf
+   
+   /** The commit option */
+   private CommitOption commitOption = CommitOption.A;
+   
+   /** The option d refresh rate in milliseconds */
+   private long optionDRefreshRateMillis = 30000;
+   
+   /** The security domain */
+   private String securityDomain;
+   
+   /** The cluster config */
+   private ClusterConfigMetaData clusterConfig;
+   
+   /** The depends */
+   private Set<String> depends;
+   
+   /**
+    * Get the containerName.
+    * 
+    * @return the containerName.
+    */
+   public String getContainerName()
+   {
+      return getName();
+   }
+
+   /**
+    * Set the containerName.
+    * 
+    * @param containerName the containerName.
+    * @throws IllegalArgumentException for a null containerName
+    */
+   public void setContainerName(String containerName)
+   {
+      setName(containerName);
+   }
+
+   /**
+    * Get the extendsName.
+    * 
+    * @return the extendsName.
+    */
+   public String getExtendsName()
+   {
+      return extendsName;
+   }
+
+   /**
+    * Set the extendsName.
+    * 
+    * @param extendsName the extendsName.
+    * @throws IllegalArgumentException for a null extendsName
+    */
+   @XmlAttribute(name="extends")
+   public void setExtendsName(String extendsName)
+   {
+      if (extendsName == null)
+         throw new IllegalArgumentException("Null extendsName");
+      this.extendsName = extendsName;
+   }
+
+   /**
+    * Get the callLogging.
+    * 
+    * @return the callLogging.
+    */
+   public boolean isCallLogging()
+   {
+      return callLogging;
+   }
+
+   /**
+    * Set the callLogging.
+    * 
+    * @param callLogging the callLogging.
+    */
+   public void setCallLogging(boolean callLogging)
+   {
+      this.callLogging = callLogging;
+   }
+
+   /**
+    * Get the syncOnCommitOnly.
+    * 
+    * @return the syncOnCommitOnly.
+    */
+   public boolean isSyncOnCommitOnly()
+   {
+      return syncOnCommitOnly;
+   }
+
+   /**
+    * Set the syncOnCommitOnly.
+    * 
+    * @param syncOnCommitOnly the syncOnCommitOnly.
+    */
+   public void setSyncOnCommitOnly(boolean syncOnCommitOnly)
+   {
+      this.syncOnCommitOnly = syncOnCommitOnly;
+   }
+
+   /**
+    * Get the insertAfterEjbPostCreate.
+    * 
+    * @return the insertAfterEjbPostCreate.
+    */
+   public boolean isInsertAfterEjbPostCreate()
+   {
+      return insertAfterEjbPostCreate;
+   }
+
+   /**
+    * Set the insertAfterEjbPostCreate.
+    * 
+    * @param insertAfterEjbPostCreate the insertAfterEjbPostCreate.
+    */
+   public void setInsertAfterEjbPostCreate(boolean insertAfterEjbPostCreate)
+   {
+      this.insertAfterEjbPostCreate = insertAfterEjbPostCreate;
+   }
+
+   /**
+    * Get the ejbStoreOnClean.
+    * 
+    * @return the ejbStoreOnClean.
+    */
+   public boolean isEjbStoreOnClean()
+   {
+      return ejbStoreOnClean;
+   }
+
+   /**
+    * Set the ejbStoreOnClean.
+    * 
+    * @param ejbStoreOnClean the ejbStoreOnClean.
+    */
+   public void setEjbStoreOnClean(boolean ejbStoreOnClean)
+   {
+      this.ejbStoreOnClean = ejbStoreOnClean;
+   }
+
+   /**
+    * Get the storeNotFlushed.
+    * 
+    * @return the storeNotFlushed.
+    */
+   public boolean isStoreNotFlushed()
+   {
+      return storeNotFlushed;
+   }
+
+   /**
+    * Set the storeNotFlushed.
+    * 
+    * @param storeNotFlushed the storeNotFlushed.
+    * @throws IllegalArgumentException for a null storeNotFlushed
+    */
+   public void setStoreNotFlushed(boolean storeNotFlushed)
+   {
+      this.storeNotFlushed = storeNotFlushed;
+   }
+
+   /**
+    * Get the instancePool.
+    * 
+    * @return the instancePool.
+    */
+   public String getInstancePool()
+   {
+      return instancePool;
+   }
+
+   /**
+    * Set the instancePool.
+    * 
+    * @param instancePool the instancePool.
+    * @throws IllegalArgumentException for a null instancePool
+    */
+   public void setInstancePool(String instancePool)
+   {
+      if (instancePool == null)
+         throw new IllegalArgumentException("Null instancePool");
+      this.instancePool = instancePool;
+   }
+
+   /**
+    * Get the instanceCache.
+    * 
+    * @return the instanceCache.
+    */
+   public String getInstanceCache()
+   {
+      return instanceCache;
+   }
+
+   /**
+    * Set the instanceCache.
+    * 
+    * @param instanceCache the instanceCache.
+    * @throws IllegalArgumentException for a null instanceCache
+    */
+   public void setInstanceCache(String instanceCache)
+   {
+      if (instanceCache == null)
+         throw new IllegalArgumentException("Null instanceCache");
+      this.instanceCache = instanceCache;
+   }
+
+   /**
+    * Get the persistenceManager.
+    * 
+    * @return the persistenceManager.
+    */
+   public String getPersistenceManager()
+   {
+      return persistenceManager;
+   }
+
+   /**
+    * Set the persistenceManager.
+    * 
+    * @param persistenceManager the persistenceManager.
+    * @throws IllegalArgumentException for a null persistenceManager
+    */
+   public void setPersistenceManager(String persistenceManager)
+   {
+      if (persistenceManager == null)
+         throw new IllegalArgumentException("Null persistenceManager");
+      this.persistenceManager = persistenceManager;
+   }
+
+   /**
+    * Get the webClassLoader.
+    * 
+    * @return the webClassLoader.
+    */
+   public String getWebClassLoader()
+   {
+      return webClassLoader;
+   }
+
+   /**
+    * Set the webClassLoader.
+    * 
+    * @param webClassLoader the webClassLoader.
+    * @throws IllegalArgumentException for a null webClassLoader
+    */
+   public void setWebClassLoader(String webClassLoader)
+   {
+      if (webClassLoader == null)
+         throw new IllegalArgumentException("Null webClassLoader");
+      this.webClassLoader = webClassLoader;
+   }
+
+   /**
+    * Get the lockingPolicy.
+    * 
+    * @return the lockingPolicy.
+    */
+   public String getLockingPolicy()
+   {
+      return lockingPolicy;
+   }
+
+   /**
+    * Set the lockingPolicy.
+    * 
+    * @param lockingPolicy the lockingPolicy.
+    * @throws IllegalArgumentException for a null lockingPolicy
+    */
+   public void setLockingPolicy(String lockingPolicy)
+   {
+      if (lockingPolicy == null)
+         throw new IllegalArgumentException("Null lockingPolicy");
+      this.lockingPolicy = lockingPolicy;
+   }
+
+   /**
+    * Get the securityDomain.
+    * 
+    * @return the securityDomain.
+    */
+   public String getSecurityDomain()
+   {
+      return securityDomain;
+   }
+
+   /**
+    * Set the securityDomain.
+    * 
+    * @param securityDomain the securityDomain.
+    * @throws IllegalArgumentException for a null securityDomain
+    */
+   public void setSecurityDomain(String securityDomain)
+   {
+      if (securityDomain == null)
+         throw new IllegalArgumentException("Null securityDomain");
+      this.securityDomain = securityDomain;
+   }
+
+   /**
+    * Get the commitOption.
+    * 
+    * @return the commitOption.
+    */
+   public CommitOption getCommitOption()
+   {
+      return commitOption;
+   }
+
+   /**
+    * Set the commitOption.
+    * 
+    * @param commitOption the commitOption.
+    * @throws IllegalArgumentException for a null commitOption
+    */
+   public void setCommitOption(CommitOption commitOption)
+   {
+      if (commitOption == null)
+         throw new IllegalArgumentException("Null commitOption");
+      this.commitOption = commitOption;
+   }
+
+   /**
+    * Get the optionDRefreshRateMillis.
+    * 
+    * @return the optionDRefreshRateMillis.
+    */
+   public long getOptiondRefreshRateMillis()
+   {
+      return optionDRefreshRateMillis;
+   }
+
+   /**
+    * Set the optionDRefreshRateMillis.
+    * 
+    * @param optionDRefreshRateMillis the optionDRefreshRateMillis.
+    * @throws IllegalArgumentException if the refresh rate is not positive
+    */
+   @XmlTransient
+   public void setOptiondRefreshRateMillis(long optionDRefreshRateMillis)
+   {
+      if (optionDRefreshRateMillis <= 0)
+         throw new IllegalArgumentException("optionD-refresh-rate must be positive got " + optionDRefreshRateMillis);
+      this.optionDRefreshRateMillis = optionDRefreshRateMillis;
+   }
+
+   /**
+    * Get the optionDRefreshRate in seconds
+    * 
+    * @return the optionDRefreshRate in seconds
+    */
+   public int getOptiondRefreshRate()
+   {
+      return (int) optionDRefreshRateMillis / 1000;
+   }
+   
+   /**
+    * Set the optionDRefreshRateMillis in seconds.
+    * 
+    * @param optionDRefreshRateSeconds the optionDRefreshRate in seconds
+    * @throws IllegalArgumentException if the refresh rate is not positive
+    */
+   public void setOptiondRefreshRate(int optionDRefreshRateSeconds)
+   {
+      if (optionDRefreshRateSeconds <= 0)
+         throw new IllegalArgumentException("optionD-refresh-rate must be positive got " + optionDRefreshRateSeconds);
+      setOptiondRefreshRateMillis(optionDRefreshRateSeconds * 1000);
+   }
+
+   /**
+    * Get the depends.
+    * 
+    * @return the depends.
+    */
+   public Set<String> getDepends()
+   {
+      return depends;
+   }
+
+   /**
+    * Set the depends.
+    * 
+    * @param depends the depends.
+    * @throws IllegalArgumentException for a null depends
+    */
+   @XmlElement(type=NonNullLinkedHashSet.class)
+   public void setDepends(Set<String> depends)
+   {
+      if (depends == null)
+         throw new IllegalArgumentException("Null depends");
+      this.depends = depends;
+   }
+
+   /**
+    * Get the invokerProxyBindingNames.
+    * 
+    * @return the invokerProxyBindingNames.
+    */
+   public Set<String> getInvokerProxyBindingNames()
+   {
+      return invokerProxyBindingNames;
+   }
+
+   /**
+    * Set the invokerProxyBindingNames.
+    * 
+    * @param invokerProxyBindingNames the invokerProxyBindingNames.
+    * @throws IllegalArgumentException for a null invokerProxyBindingNames
+    */
+   @XmlElement(name="invoker-proxy-binding-name", type=NonNullLinkedHashSet.class)
+   public void setInvokerProxyBindingNames(Set<String> invokerProxyBindingNames)
+   {
+      if (invokerProxyBindingNames == null)
+         throw new IllegalArgumentException("Null invokerProxyBindingNames");
+      this.invokerProxyBindingNames = invokerProxyBindingNames;
+   }
+
+   /**
+    * Get the default invoker name
+    * 
+    * @return the default invoker
+    * @throws IllegalStateException when there are no invoker proxy binding names
+    */
+   public String getDefaultInvokerName()
+   {
+      if (invokerProxyBindingNames == null || invokerProxyBindingNames.isEmpty())
+         throw new IllegalStateException("No invokers defined");
+      return invokerProxyBindingNames.iterator().next();
+   }
+
+   /**
+    * Get the clusterConfig.
+    * 
+    * @return the clusterConfig.
+    */
+   public ClusterConfigMetaData getClusterConfig()
+   {
+      return clusterConfig;
+   }
+
+   /**
+    * Set the clusterConfig.
+    * 
+    * @param clusterConfig the clusterConfig.
+    * @throws IllegalArgumentException for a null clusterConfig
+    */
+   public void setClusterConfig(ClusterConfigMetaData clusterConfig)
+   {
+      if (clusterConfig == null)
+         throw new IllegalArgumentException("Null clusterConfig");
+      this.clusterConfig = clusterConfig;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/ContainerConfigurationsMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/ContainerConfigurationsMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/ContainerConfigurationsMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,46 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.jboss;
+
+import org.jboss.javaee.metadata.support.MappedMetaDataWithDescriptions;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * ContainerConfigurationsMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="container-configurationsType")
+public class ContainerConfigurationsMetaData extends MappedMetaDataWithDescriptions<ContainerConfigurationMetaData>
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 8621050513072760399L;
+
+   /**
+    * Create a new ContainerConfigurationsMetaData.
+    */
+   public ContainerConfigurationsMetaData()
+   {
+      super("container-name for container configuration");
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/IORASContextMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/IORASContextMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/IORASContextMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,125 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.jboss;
+
+import org.jboss.javaee.metadata.support.IdMetaDataImplWithDescriptions;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * IORASContextMetaData.
+ * 
+ * TODO LAST enums
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="as-contextType")
+public class IORASContextMetaData extends IdMetaDataImplWithDescriptions
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -4611413076087109396L;
+
+   /** Username and password  */
+   public static final String AUTH_METHOD_USERNAME_PASSWORD = "USERNAME_PASSWORD";
+   
+   /** None */
+   public static final String AUTH_METHOD_NONE = "NONE";
+
+   /** The authorization method */
+   private String authMethod = AUTH_METHOD_USERNAME_PASSWORD;
+
+   /** The realm */
+   private String realm = "Default";
+   
+   /** Whether it is required */
+   private boolean required = false;
+   
+   /**
+    * Get the authMethod.
+    * 
+    * @return the authMethod.
+    */
+   public String getAuthMethod()
+   {
+      return authMethod;
+   }
+
+   /**
+    * Set the authMethod.
+    * 
+    * @param authMethod the authMethod.
+    * @throws IllegalArgumentException for a null authMethod
+    */
+   public void setAuthMethod(String authMethod)
+   {
+      if (authMethod == null)
+         throw new IllegalArgumentException("Null authMethod");
+      if (AUTH_METHOD_NONE.equalsIgnoreCase(authMethod))
+         this.authMethod = AUTH_METHOD_NONE;
+      else if (AUTH_METHOD_USERNAME_PASSWORD.equalsIgnoreCase(authMethod))
+         this.authMethod = AUTH_METHOD_USERNAME_PASSWORD;
+      else
+         throw new IllegalArgumentException("Unknown ascontext authMethod: " + authMethod);
+   }
+
+   /**
+    * Get the realm.
+    * 
+    * @return the realm.
+    */
+   public String getRealm()
+   {
+      return realm;
+   }
+
+   /**
+    * Set the realm.
+    * 
+    * @param realm the realm.
+    * @throws IllegalArgumentException for a null realm
+    */
+   public void setRealm(String realm)
+   {
+      if (realm == null)
+         throw new IllegalArgumentException("Null realm");
+      this.realm = realm;
+   }
+
+   /**
+    * Get the required.
+    * 
+    * @return the required.
+    */
+   public boolean isRequired()
+   {
+      return required;
+   }
+
+   /**
+    * Set the required.
+    * 
+    * @param required the required.
+    */
+   public void setRequired(boolean required)
+   {
+      this.required = required;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/IORSASContextMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/IORSASContextMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/IORSASContextMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,76 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.jboss;
+
+import org.jboss.javaee.metadata.support.IdMetaDataImplWithDescriptions;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * IORSASContextMetaData.
+ * 
+ * TODO LAST enums
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="sas-contextType")
+public class IORSASContextMetaData extends IdMetaDataImplWithDescriptions
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -5219684887396127182L;
+
+   /** No caller propagation */
+   public static final String CALLER_PROPAGATION_NONE = "NONE";
+   
+   /** Caller propagation supported */
+   public static final String CALLER_PROPAGATION_SUPPORTED = "SUPPORTED";
+
+   /** The caller propagation */
+   private String callerPropagation = CALLER_PROPAGATION_NONE;
+
+   /**
+    * Get the callerPropagation.
+    * 
+    * @return the callerPropagation.
+    */
+   public String getCallerPropagation()
+   {
+      return callerPropagation;
+   }
+
+   /**
+    * Set the callerPropagation.
+    * 
+    * @param callerPropagation the callerPropagation.
+    * @throws IllegalArgumentException for a null callerPropagation
+    */
+   public void setCallerPropagation(String callerPropagation)
+   {
+      if (callerPropagation == null)
+         throw new IllegalArgumentException("Null callerPropagation");
+      if (CALLER_PROPAGATION_NONE.equalsIgnoreCase(callerPropagation))
+         this.callerPropagation = CALLER_PROPAGATION_NONE;
+      else if (CALLER_PROPAGATION_SUPPORTED.equalsIgnoreCase(callerPropagation))
+         this.callerPropagation = CALLER_PROPAGATION_SUPPORTED;
+      else
+         throw new IllegalArgumentException("Unknown sascontext callerPropagtion: " + callerPropagation);
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/IORSecurityConfigMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/IORSecurityConfigMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/IORSecurityConfigMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,116 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.jboss;
+
+import org.jboss.javaee.metadata.support.IdMetaDataImplWithDescriptions;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * IORSecurityConfigMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="ior-security-configType")
+public class IORSecurityConfigMetaData extends IdMetaDataImplWithDescriptions
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -4681258049609548746L;
+
+   /** The transport config */
+   private IORTransportConfigMetaData transportConfig;
+
+   /** The as context */
+   private IORASContextMetaData asContext;
+
+   /** The as context */
+   private IORSASContextMetaData sasContext;
+
+   /**
+    * Get the transportConfig.
+    * 
+    * @return the transportConfig.
+    */
+   public IORTransportConfigMetaData getTransportConfig()
+   {
+      return transportConfig;
+   }
+
+   /**
+    * Set the transportConfig.
+    * 
+    * @param transportConfig the transportConfig.
+    * @throws IllegalArgumentException for a null transportConfig
+    */
+   public void setTransportConfig(IORTransportConfigMetaData transportConfig)
+   {
+      if (transportConfig == null)
+         throw new IllegalArgumentException("Null transportConfig");
+      this.transportConfig = transportConfig;
+   }
+
+   /**
+    * Get the asContext.
+    * 
+    * @return the asContext.
+    */
+   public IORASContextMetaData getAsContext()
+   {
+      return asContext;
+   }
+
+   /**
+    * Set the asContext.
+    * 
+    * @param asContext the asContext.
+    * @throws IllegalArgumentException for a null asContext
+    */
+   public void setAsContext(IORASContextMetaData asContext)
+   {
+      if (asContext == null)
+         throw new IllegalArgumentException("Null asContext");
+      this.asContext = asContext;
+   }
+
+   /**
+    * Get the sasContext.
+    * 
+    * @return the sasContext.
+    */
+   public IORSASContextMetaData getSasContext()
+   {
+      return sasContext;
+   }
+
+   /**
+    * Set the sasContext.
+    * 
+    * @param sasContext the sasContext.
+    * @throws IllegalArgumentException for a null sasContext
+    */
+   public void setSasContext(IORSASContextMetaData sasContext)
+   {
+      if (sasContext == null)
+         throw new IllegalArgumentException("Null sasContext");
+      this.sasContext = sasContext;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/IORTransportConfigMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/IORTransportConfigMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/IORTransportConfigMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,286 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.jboss;
+
+import org.jboss.javaee.metadata.support.IdMetaDataImplWithDescriptions;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * IORTransportConfigMetaData.
+ * 
+ * TODO LAST enums
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="transport-configType")
+public class IORTransportConfigMetaData extends IdMetaDataImplWithDescriptions
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 779676398058819672L;
+   
+   /** Integrity not required */
+   public static final String INTEGRITY_NONE = "NONE";
+
+   /** Integrity supported */
+   public static final String INTEGRITY_SUPPORTED = "SUPPORTED";
+
+   /** Integrity required */
+   public static final String INTEGRITY_REQUIRED = "REQUIRED";
+
+   /** Confidentiality not required */
+   public static final String CONFIDENTIALITY_NONE = "NONE";
+
+   /** Confidentiality supported */
+   public static final String CONFIDENTIALITY_SUPPORTED = "SUPPORTED";
+
+   /** Confidentiality required */
+   public static final String CONFIDENTIALITY_REQUIRED = "REQUIRED";
+
+   /** Detect misordering not required */
+   public static final String DETECT_MISORDERING_NONE = "NONE";
+
+   /** Detect misordering supported */
+   public static final String DETECT_MISORDERING_SUPPORTED = "SUPPORTED";
+
+   /** Detect misordering required */
+   public static final String DETECT_MISORDERING_REQUIRED = "REQUIRED";
+
+   /** Detect replay not required */
+   public static final String DETECT_REPLAY_NONE = "NONE";
+
+   /** Detect replay supported */
+   public static final String DETECT_REPLAY_SUPPORTED = "SUPPORTED";
+
+   /** Detect replay required */
+   public static final String DETECT_REPLAY_REQUIRED = "REQUIRED";
+
+   /** Establish trust in target not required */
+   public static final String ESTABLISH_TRUST_IN_TARGET_NONE = "NONE";
+
+   /** Establish trust in target supported */
+   public static final String ESTABLISH_TRUST_IN_TARGET_SUPPORTED = "SUPPORTED";
+
+   /** Establish trust in client not required */
+   public static final String ESTABLISH_TRUST_IN_CLIENT_NONE = "NONE";
+
+   /** Establish trust in client supported */
+   public static final String ESTABLISH_TRUST_IN_CLIENT_SUPPORTED = "SUPPORTED";
+
+   /** Establish trust in client required */
+   public static final String ESTABLISH_TRUST_IN_CLIENT_REQUIRED = "REQUIRED";
+
+   /** The integrity */
+   private String integrity = INTEGRITY_NONE;
+
+   /** The confidentiality */
+   private String confidentiality = CONFIDENTIALITY_NONE;
+
+   /** The establish trust in target */
+   private String establishTrustInTarget = ESTABLISH_TRUST_IN_TARGET_NONE;
+
+   /** The establish trust in client */
+   private String establishTrustInClient = ESTABLISH_TRUST_IN_CLIENT_NONE;
+
+   /** Whether to detect misordering */
+   private String detectMisordering = DETECT_MISORDERING_NONE;
+
+   /** Whether to detect replay */
+   private String detectReplay = DETECT_REPLAY_NONE;
+   
+   /**
+    * Get the integrity.
+    * 
+    * @return the integrity.
+    */
+   public String getIntegrity()
+   {
+      return integrity;
+   }
+
+   /**
+    * Set the integrity.
+    * 
+    * @param integrity the integrity.
+    * @throws IllegalArgumentException for a null integrity
+    */
+   public void setIntegrity(String integrity)
+   {
+      if (integrity == null)
+         throw new IllegalArgumentException("Null integrity");
+      if (INTEGRITY_NONE.equalsIgnoreCase(integrity))
+         this.integrity = INTEGRITY_NONE;
+      else if (INTEGRITY_SUPPORTED.equalsIgnoreCase(integrity))
+         this.integrity = INTEGRITY_SUPPORTED;
+      else if (INTEGRITY_REQUIRED.equalsIgnoreCase(integrity))
+         this.integrity = INTEGRITY_REQUIRED;
+      else
+         throw new IllegalArgumentException("Unknown transport integrity: " + integrity);
+   }
+
+   /**
+    * Get the confidentiality.
+    * 
+    * @return the confidentiality.
+    */
+   public String getConfidentiality()
+   {
+      return confidentiality;
+   }
+
+   /**
+    * Set the confidentiality.
+    * 
+    * @param confidentiality the confidentiality.
+    * @throws IllegalArgumentException for a null confidentiality
+    */
+   public void setConfidentiality(String confidentiality)
+   {
+      if (confidentiality == null)
+         throw new IllegalArgumentException("Null confidentiality");
+      if (CONFIDENTIALITY_NONE.equalsIgnoreCase(confidentiality))
+         this.confidentiality = CONFIDENTIALITY_NONE;
+      else if (CONFIDENTIALITY_SUPPORTED.equalsIgnoreCase(confidentiality))
+         this.confidentiality = CONFIDENTIALITY_SUPPORTED;
+      else if (CONFIDENTIALITY_REQUIRED.equalsIgnoreCase(confidentiality))
+         this.confidentiality = CONFIDENTIALITY_REQUIRED;
+      else
+         throw new IllegalArgumentException("Unknown transport confidentiality: " + confidentiality);
+   }
+
+   /**
+    * Get the establishTrustInTarget.
+    * 
+    * @return the establishTrustInTarget.
+    */
+   public String getEstablishTrustInTarget()
+   {
+      return establishTrustInTarget;
+   }
+
+   /**
+    * Set the establishTrustInTarget.
+    * 
+    * @param establishTrustInTarget the establishTrustInTarget.
+    * @throws IllegalArgumentException for a null establishTrustInTarget
+    */
+   public void setEstablishTrustInTarget(String establishTrustInTarget)
+   {
+      if (establishTrustInTarget == null)
+         throw new IllegalArgumentException("Null establishTrustInTarget");
+      if (ESTABLISH_TRUST_IN_TARGET_NONE.equalsIgnoreCase(establishTrustInTarget))
+         this.establishTrustInTarget = ESTABLISH_TRUST_IN_TARGET_NONE;
+      else if (ESTABLISH_TRUST_IN_TARGET_SUPPORTED.equalsIgnoreCase(establishTrustInTarget))
+         this.establishTrustInTarget = ESTABLISH_TRUST_IN_TARGET_SUPPORTED;
+      else
+         throw new IllegalArgumentException("Unknown transport establishTrustInTarget: " + establishTrustInTarget);
+   }
+
+   /**
+    * Get the establishTrustInClient.
+    * 
+    * @return the establishTrustInClient.
+    */
+   public String getEstablishTrustInClient()
+   {
+      return establishTrustInClient;
+   }
+
+   /**
+    * Set the establishTrustInClient.
+    * 
+    * @param establishTrustInClient the establishTrustInClient.
+    * @throws IllegalArgumentException for a null establishTrustInClient
+    */
+   public void setEstablishTrustInClient(String establishTrustInClient)
+   {
+      if (establishTrustInClient == null)
+         throw new IllegalArgumentException("Null establishTrustInClient");
+      if (ESTABLISH_TRUST_IN_CLIENT_NONE.equalsIgnoreCase(establishTrustInClient))
+         this.establishTrustInClient = ESTABLISH_TRUST_IN_CLIENT_NONE;
+      else if (ESTABLISH_TRUST_IN_CLIENT_SUPPORTED.equalsIgnoreCase(establishTrustInClient))
+         this.establishTrustInClient = ESTABLISH_TRUST_IN_CLIENT_SUPPORTED;
+      else if (ESTABLISH_TRUST_IN_CLIENT_REQUIRED.equalsIgnoreCase(establishTrustInClient))
+         this.establishTrustInClient = ESTABLISH_TRUST_IN_CLIENT_REQUIRED;
+      else
+         throw new IllegalArgumentException("Unknown transport establishTrustInClient: " + establishTrustInClient);
+   }
+
+   /**
+    * Get the detectMisordering.
+    * 
+    * @return the detectMisordering.
+    */
+   public String getDetectMisordering()
+   {
+      return detectMisordering;
+   }
+
+   /**
+    * Set the detectMisordering.
+    * 
+    * @param detectMisordering the detectMisordering.
+    * @throws IllegalArgumentException for a null detectMisordering
+    */
+   public void setDetectMisordering(String detectMisordering)
+   {
+      if (detectMisordering == null)
+         throw new IllegalArgumentException("Null detectMisordering");
+      if (DETECT_MISORDERING_NONE.equalsIgnoreCase(detectMisordering))
+         this.detectMisordering = DETECT_MISORDERING_NONE;
+      else if (DETECT_MISORDERING_SUPPORTED.equalsIgnoreCase(detectMisordering))
+         this.detectMisordering = DETECT_MISORDERING_SUPPORTED;
+      else if (DETECT_MISORDERING_REQUIRED.equalsIgnoreCase(detectMisordering))
+         this.detectMisordering = DETECT_MISORDERING_REQUIRED;
+      else
+         throw new IllegalArgumentException("Unknown transport detectMisordering: " + detectMisordering);
+   }
+
+   /**
+    * Get the detectReplay.
+    * 
+    * @return the detectReplay.
+    */
+   public String getDetectReplay()
+   {
+      return detectReplay;
+   }
+
+   /**
+    * Set the detectReplay.
+    * 
+    * @param detectReplay the detectReplay.
+    * @throws IllegalArgumentException for a null detectReplay
+    */
+   public void setDetectReplay(String detectReplay)
+   {
+      if (detectReplay == null)
+         throw new IllegalArgumentException("Null detectReplay");
+      if (DETECT_REPLAY_NONE.equalsIgnoreCase(detectReplay))
+         this.detectReplay = DETECT_REPLAY_NONE;
+      else if (DETECT_REPLAY_SUPPORTED.equalsIgnoreCase(detectReplay))
+         this.detectReplay = DETECT_REPLAY_SUPPORTED;
+      else if (DETECT_REPLAY_REQUIRED.equalsIgnoreCase(detectReplay))
+         this.detectReplay = DETECT_REPLAY_REQUIRED;
+      else
+         throw new IllegalArgumentException("Unknown transport detectReplay: " + detectReplay);
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/InvokerBindingMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/InvokerBindingMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/InvokerBindingMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,149 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.jboss;
+
+import org.jboss.javaee.metadata.support.NamedMetaDataWithDescriptions;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * InvokerBindingMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="invokerType")
+public class InvokerBindingMetaData extends NamedMetaDataWithDescriptions
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 7854213960602045177L;
+
+   /** The standard CMP2 invoker */
+   public static final String CMP_2x = "entity-unified-invoker";
+
+   /** The standard CMP1.1 invoker */
+   public static final String CMP_1x = "entity-unified-invoker";
+
+   /** The standard BMP invoker */
+   public static final String BMP = "entity-unified-invoker";
+
+   /** The standard Stateless session invoker */
+   public static final String STATELESS = "stateless-unified-invoker";
+
+   /** The standard Stateful session invoker */
+   public static final String STATEFUL = "stateful-unified-invoker";
+
+   /** The message driven bean invoker */
+   public static final String MESSAGE_DRIVEN = "message-driven-bean";
+
+   /** The message inflow driven bean invoker */
+   public static final String MESSAGE_INFLOW_DRIVEN = "message-driven-bean";
+
+   /** The clustered CMP2 invoker */
+   public static final String CLUSTERED_CMP_2x = "clustered-entity-rmi-invoker";
+
+   /** The clustered CMP1.1 invoker */
+   public static final String CLUSTERED_CMP_1x = "clustered-entity-rmi-invoker";
+
+   /** The clustered BMP invoker */
+   public static final String CLUSTERED_BMP = "clustered-entity-rmi-invoker";
+
+   /** The clustered stateful session invoker */
+   public static final String CLUSTERED_STATEFUL = "clustered-stateful-rmi-invoker";
+
+   /** The clustered stateless session invoker */
+   public static final String CLUSTERED_STATELESS = "clustered-stateless-rmi-invoker";
+
+   /** The jndi name */
+   private String jndiName;
+
+   /** The ejb ref */
+   private String ejbRefName;
+   
+   /**
+    * Get the jndiName.
+    * 
+    * @return the jndiName.
+    */
+   public String getJndiName()
+   {
+      return jndiName;
+   }
+
+   /**
+    * Set the jndiName.
+    * 
+    * @param jndiName the jndiName.
+    * @throws IllegalArgumentException for a null jndiName
+    */
+   public void setJndiName(String jndiName)
+   {
+      if (jndiName == null)
+         throw new IllegalArgumentException("Null jndiName");
+      this.jndiName = jndiName;
+   }
+   
+   /**
+    * Get the invokerProxyBindingName.
+    * 
+    * @return the invokerProxyBindingName.
+    */
+   public String getInvokerProxyBindingName()
+   {
+      return getName();
+   }
+
+   /**
+    * Set the invokerProxyBindingName.
+    * 
+    * @param invokerProxyBindingName the invokerProxyBindingName.
+    * @throws IllegalArgumentException for a null invokerProxyBindingName
+    */
+   public void setInvokerProxyBindingName(String invokerProxyBindingName)
+   {
+      setName(invokerProxyBindingName);
+   }
+
+   /**
+    * Get the ejbRefName.
+    * 
+    * @return the ejbRefName.
+    */
+   public String getEjbRefName()
+   {
+      return ejbRefName;
+   }
+
+   /**
+    * Set the ejbRefName.
+    * 
+    * @param ejbRefName the ejbRefName.
+    * @throws IllegalArgumentException for a null ejbRefName
+    */
+   @XmlElement(name="ejb-ref")
+   public void setEjbRefName(String ejbRefName)
+   {
+      if (ejbRefName == null)
+         throw new IllegalArgumentException("Null ejbRefName");
+      this.ejbRefName = ejbRefName;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/InvokerBindingsMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/InvokerBindingsMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/InvokerBindingsMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,46 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.jboss;
+
+import org.jboss.javaee.metadata.support.MappedMetaDataWithDescriptions;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * InvokerBindingsMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="invoker-bindingsType")
+public class InvokerBindingsMetaData extends MappedMetaDataWithDescriptions<InvokerBindingMetaData>
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 7637011120262076039L;
+
+   /**
+    * Create a new InvokerBindingsMetaData.
+    */
+   public InvokerBindingsMetaData()
+   {
+      super("invoker-proxy-binding-name for invoker");
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/InvokerProxyBindingMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/InvokerProxyBindingMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/InvokerProxyBindingMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,116 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.jboss;
+
+import org.jboss.javaee.metadata.support.NamedMetaDataWithDescriptions;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * InvokerProxyBindingMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="invoker-proxy-bindingType")
+public class InvokerProxyBindingMetaData extends NamedMetaDataWithDescriptions
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -3203701877688568371L;
+
+   /** The invoker mbean */
+   private String invokerMBean;
+   
+   /** The proxy factory */
+   private String proxyFactory;
+   
+   /** The proxy factory config */
+   // TODO DOM private Element proxyFactoryConfig;
+   
+   /**
+    * Get the invokerProxyBindingName.
+    * 
+    * @return the invokerProxyBindingName.
+    */
+   public String getInvokerProxyBindingName()
+   {
+      return getName();
+   }
+
+   /**
+    * Set the invokerProxyBindingName.
+    * 
+    * @param invokerProxyBindingName the invokerProxyBindingName.
+    * @throws IllegalArgumentException for a null invokerProxyBindingName
+    */
+   public void setInvokerProxyBindingName(String invokerProxyBindingName)
+   {
+      setName(invokerProxyBindingName);
+   }
+
+   /**
+    * Get the invokerMBean.
+    * 
+    * @return the invokerMBean.
+    */
+   public String getInvokerMBean()
+   {
+      return invokerMBean;
+   }
+
+   /**
+    * Set the invokerMBean.
+    * 
+    * @param invokerMBean the invokerMBean.
+    * @throws IllegalArgumentException for a null invokerMBean
+    */
+   @XmlElement(name="invoker-mbean")
+   public void setInvokerMBean(String invokerMBean)
+   {
+      if (invokerMBean == null)
+         throw new IllegalArgumentException("Null invokerMBean");
+      this.invokerMBean = invokerMBean;
+   }
+
+   /**
+    * Get the proxyFactory.
+    * 
+    * @return the proxyFactory.
+    */
+   public String getProxyFactory()
+   {
+      return proxyFactory;
+   }
+
+   /**
+    * Set the proxyFactory.
+    * 
+    * @param proxyFactory the proxyFactory.
+    * @throws IllegalArgumentException for a null proxyFactory
+    */
+   public void setProxyFactory(String proxyFactory)
+   {
+      if (proxyFactory == null)
+         throw new IllegalArgumentException("Null proxyFactory");
+      this.proxyFactory = proxyFactory;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/InvokerProxyBindingsMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/InvokerProxyBindingsMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/InvokerProxyBindingsMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,46 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.jboss;
+
+import org.jboss.javaee.metadata.support.MappedMetaDataWithDescriptions;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * InvokerProxyBindingsMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="invoker-proxy-bindingsType")
+public class InvokerProxyBindingsMetaData extends MappedMetaDataWithDescriptions<InvokerProxyBindingMetaData>
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -6052572082285734800L;
+
+   /**
+    * Create a new InvokerProxyBindingsMetaData.
+    */
+   public InvokerProxyBindingsMetaData()
+   {
+      super("invoker-proxy-binding-name for invoker-proxy-binding");
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBoss50MetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBoss50MetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBoss50MetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,76 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.jboss;
+
+import org.jboss.javaee.metadata.spec.JavaEEMetaDataConstants;
+import javax.xml.bind.annotation.XmlType;
+
+import org.jboss.xb.annotations.JBossXmlSchema;
+//import org.jboss.xb.binding.annotations.SchemaTypeImpl;
+//import org.jboss.xb.binding.annotations.SchemaTypeImpls;
+
+/**
+ * JBoss50MetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at JBossXmlSchema(ignoreUnresolvedFieldOrClass=false)
+ at XmlType(name="jbossType", namespace=JavaEEMetaDataConstants.JAVAEE_NS)
+/*@XmlTypeImpls
+({
+   @XmlTypeImpl(name="true-falseType", startElementCreatesObject=false),
+   @XmlTypeImpl(name="clusteredType", startElementCreatesObject=false),
+   @XmlTypeImpl(name="string", namespace=JavaEEMetaDataConstants.JAVAEE_NS, startElementCreatesObject=false),
+   @XmlTypeImpl(name="xsdStringType", startElementCreatesObject=false),
+   @XmlTypeImpl(name="dependsType", startElementCreatesObject=false),
+   @XmlTypeImpl(name="missing-method-permissions-excluded-modeType", startElementCreatesObject=false),
+   @XmlTypeImpl(name="exception-on-rollbackType", startElementCreatesObject=false),
+   @XmlTypeImpl(name="security-domainType", startElementCreatesObject=false),
+   @XmlTypeImpl(name="jboss-security-roleType", impl=SecurityRoleMetaData.class),
+   @XmlTypeImpl(name="jboss-message-destinationType", impl=MessageDestinationMetaData.class),
+   @XmlTypeImpl(name="jboss-ejb-refType", impl=EJBReferenceMetaData.class),
+   @XmlTypeImpl(name="jboss-ejb-local-refType", impl=EJBLocalReferenceMetaData.class),
+   @XmlTypeImpl(name="jboss-resource-refType", impl=ResourceReferenceMetaData.class),
+   @XmlTypeImpl(name="jboss-resource-env-refType", impl=ResourceEnvironmentReferenceMetaData.class),
+   @XmlTypeImpl(name="jboss-message-destination-refType", impl=MessageDestinationReferenceMetaData.class),
+   @XmlTypeImpl(name="jboss-security-identityType", impl=SecurityIdentityMetaData.class),
+   @XmlTypeImpl(name="ejb-timeout-identityType", impl=SecurityIdentityMetaData.class),
+   @XmlTypeImpl(name="ejb-linkType", startElementCreatesObject=false),
+   @XmlTypeImpl(name="jndi-nameType", startElementCreatesObject=false),
+   @XmlTypeImpl(name="mdb-passwdType", startElementCreatesObject=false),
+   @XmlTypeImpl(name="mdb-subscription-idType", startElementCreatesObject=false),
+   @XmlTypeImpl(name="concurrentType", startElementCreatesObject=false),
+})
+*/public class JBoss50MetaData extends JBossMetaData
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 8741748087070507813L;
+
+   /**
+    * Create a new JBoss50MetaData.
+    */
+   public JBoss50MetaData()
+   {
+      // For serialization
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBossAssemblyDescriptorMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBossAssemblyDescriptorMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBossAssemblyDescriptorMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,240 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.jboss;
+
+import java.util.Collections;
+import java.util.Set;
+
+import org.jboss.ejb.metadata.spec.AssemblyDescriptorMetaData;
+import org.jboss.javaee.metadata.spec.MessageDestinationMetaData;
+import org.jboss.javaee.metadata.spec.MessageDestinationsMetaData;
+import org.jboss.javaee.metadata.spec.SecurityRoleMetaData;
+import org.jboss.javaee.metadata.spec.SecurityRolesMetaData;
+import org.jboss.javaee.metadata.support.IdMetaDataImplWithOverride;
+import org.jboss.javaee.metadata.support.JavaEEMetaDataUtil;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * JBossAssemblyDescriptorMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="jboss-assembly-descriptorType")
+public class JBossAssemblyDescriptorMetaData extends IdMetaDataImplWithOverride<AssemblyDescriptorMetaData>
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 5638920200035141015L;
+
+   /** The security roles */
+   private SecurityRolesMetaData securityRoles;
+
+   /** The message destinations */
+   private MessageDestinationsMetaData messageDestinations;
+
+   /**
+    * Merge the assembly descriptors
+    * 
+    * @param jbossAssemblyDescriptorMetaData the override
+    * @param assemblyDescriptorMetaData the overriden
+    * @return the merged data
+    */
+   public static JBossAssemblyDescriptorMetaData merge(JBossAssemblyDescriptorMetaData jbossAssemblyDescriptorMetaData, AssemblyDescriptorMetaData assemblyDescriptorMetaData)
+   {
+      JBossAssemblyDescriptorMetaData merged = new JBossAssemblyDescriptorMetaData();
+
+      SecurityRolesMetaData securityRolesMetaData = null;
+      SecurityRolesMetaData jbossSecurityRolesMetaData = null;
+      MessageDestinationsMetaData messageDestinationsMetaData = null;
+      MessageDestinationsMetaData jbossMessageDestinationsMetaData = null;
+      if (assemblyDescriptorMetaData != null)
+      {
+         merged.setOverridenMetaData(assemblyDescriptorMetaData);
+         securityRolesMetaData = assemblyDescriptorMetaData.getSecurityRoles();
+         messageDestinationsMetaData = assemblyDescriptorMetaData.getMessageDestinations();
+      }
+      if (jbossAssemblyDescriptorMetaData != null)
+      {
+         jbossSecurityRolesMetaData = jbossAssemblyDescriptorMetaData.getSecurityRoles();
+         jbossMessageDestinationsMetaData = jbossAssemblyDescriptorMetaData.getMessageDestinations();
+      }
+
+      if (jbossSecurityRolesMetaData == null || jbossSecurityRolesMetaData.isEmpty())
+      {
+         if (securityRolesMetaData != null)
+            merged.setSecurityRoles(securityRolesMetaData);
+      }
+      else
+      {
+         SecurityRolesMetaData mergedSecurityRolesMetaData = new SecurityRolesMetaData();
+         mergedSecurityRolesMetaData = JavaEEMetaDataUtil.mergeJBossXml(mergedSecurityRolesMetaData, securityRolesMetaData, jbossSecurityRolesMetaData, "security-role", false);
+         if (mergedSecurityRolesMetaData != null && mergedSecurityRolesMetaData.isEmpty() == false)
+            merged.setSecurityRoles(mergedSecurityRolesMetaData);
+      }
+      
+      if (jbossMessageDestinationsMetaData == null || jbossMessageDestinationsMetaData.isEmpty())
+      {
+         if (messageDestinationsMetaData != null && jbossMessageDestinationsMetaData == null)
+         merged.setMessageDestinations(messageDestinationsMetaData);
+      }
+      else
+      {
+         MessageDestinationsMetaData mergedMessageDestinationsMetaData = new MessageDestinationsMetaData();
+         mergedMessageDestinationsMetaData = JavaEEMetaDataUtil.mergeJBossXml(mergedMessageDestinationsMetaData, messageDestinationsMetaData, jbossMessageDestinationsMetaData, "message-destination", true);
+         if (mergedMessageDestinationsMetaData != null && mergedMessageDestinationsMetaData.isEmpty() == false)
+            merged.setMessageDestinations(mergedMessageDestinationsMetaData);
+      }
+
+      return merged;
+   }
+
+   /**
+    * Create a new JBossAssemblyDescriptorMetaData
+    */
+   public JBossAssemblyDescriptorMetaData()
+   {
+      // For serialization
+   }
+
+   /**
+    * Get the securityRoles.
+    * 
+    * @return the securityRoles.
+    */
+   public SecurityRolesMetaData getSecurityRoles()
+   {
+      return securityRoles;
+   }
+
+   /**
+    * Set the securityRoles.
+    * 
+    * @param securityRoles the securityRoles.
+    * @throws IllegalArgumentException for a null securityRoles
+    */
+   @XmlElement(name="security-role")
+   public void setSecurityRoles(SecurityRolesMetaData securityRoles)
+   {
+      if (securityRoles == null)
+         throw new IllegalArgumentException("Null securityRoles");
+      this.securityRoles = securityRoles;
+   }
+
+   /**
+    * Get a security role
+    * 
+    * @param name the role name
+    * @return the security role or null if not found
+    */
+   public SecurityRoleMetaData getSecurityRole(String name)
+   {
+      if (securityRoles == null)
+         return null;
+      return securityRoles.get(name);
+   }
+
+   /**
+    * Get a security role's principals
+    * 
+    * @param name the role name
+    * @return the security role principals or null if not found
+    */
+   public Set<String> getSecurityRolePrincipals(String name)
+   {
+      if (securityRoles == null)
+         return null;
+      SecurityRoleMetaData securityRole = securityRoles.get(name);
+      if (securityRole == null)
+         return null;
+      return securityRole.getPrincipals();
+   }
+
+   /**
+    * Get the security roles by principal
+    * 
+    * @param userName the principal name
+    * @return the security roles containing the principal or null for no roles
+    * @throws IllegalArgumentException for a null user name
+    */
+   public SecurityRolesMetaData getSecurityRolesByPrincipal(String userName)
+   {
+      if (userName == null)
+         throw new IllegalArgumentException("Null userName");
+      if (securityRoles == null)
+         return null;
+      return securityRoles.getSecurityRolesByPrincipal(userName);
+   }
+
+   /**
+    * Get the security role names by principal
+    * 
+    * @param userName the principal name
+    * @return the security role names containing the principal
+    * @throws IllegalArgumentException for a null user name
+    */
+   public Set<String> getSecurityRoleNamesByPrincipal(String userName)
+   {
+      if (userName == null)
+         throw new IllegalArgumentException("Null userName");
+      if (securityRoles == null)
+         return Collections.emptySet();
+      return securityRoles.getSecurityRoleNamesByPrincipal(userName);
+   }
+
+   /**
+    * Get the messageDestinations.
+    * 
+    * @return the messageDestinations.
+    */
+   public MessageDestinationsMetaData getMessageDestinations()
+   {
+      return messageDestinations;
+   }
+
+   /**
+    * Set the messageDestinations.
+    * 
+    * @param messageDestinations the messageDestinations.
+    * @throws IllegalArgumentException for a null messageDestinations
+    */
+   @XmlElement(name="message-destination")
+   public void setMessageDestinations(MessageDestinationsMetaData messageDestinations)
+   {
+      if (messageDestinations == null)
+         throw new IllegalArgumentException("Null messageDestinations");
+      this.messageDestinations = messageDestinations;
+   }
+
+   /**
+    * Get a message destination
+    * 
+    * @param name the name of the destination
+    * @return the destination or null if not found
+    */
+   public MessageDestinationMetaData getMessageDestination(String name)
+   {
+      if (messageDestinations == null)
+         return null;
+      return messageDestinations.get(name);
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBossEnterpriseBeanMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBossEnterpriseBeanMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBossEnterpriseBeanMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,1119 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.jboss;
+
+import java.lang.reflect.Method;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.jboss.ejb.metadata.spec.EnterpriseBeanMetaData;
+import org.jboss.ejb.metadata.spec.ExcludeListMetaData;
+import org.jboss.ejb.metadata.spec.MethodInterfaceType;
+import org.jboss.ejb.metadata.spec.MethodPermissionMetaData;
+import org.jboss.ejb.metadata.spec.MethodPermissionsMetaData;
+import org.jboss.ejb.metadata.spec.SecurityIdentityMetaData;
+import org.jboss.javaee.metadata.jboss.AnnotationsMetaData;
+import org.jboss.javaee.metadata.jboss.IgnoreDependencyMetaData;
+import org.jboss.javaee.metadata.jboss.JndiRefsMetaData;
+import org.jboss.javaee.metadata.spec.EJBLocalReferenceMetaData;
+import org.jboss.javaee.metadata.spec.EJBLocalReferencesMetaData;
+import org.jboss.javaee.metadata.spec.EJBReferenceMetaData;
+import org.jboss.javaee.metadata.spec.EJBReferencesMetaData;
+import org.jboss.javaee.metadata.spec.Environment;
+import org.jboss.javaee.metadata.spec.EnvironmentEntriesMetaData;
+import org.jboss.javaee.metadata.spec.EnvironmentEntryMetaData;
+import org.jboss.javaee.metadata.spec.LifecycleCallbacksMetaData;
+import org.jboss.javaee.metadata.spec.MessageDestinationReferenceMetaData;
+import org.jboss.javaee.metadata.spec.MessageDestinationReferencesMetaData;
+import org.jboss.javaee.metadata.spec.PersistenceContextReferenceMetaData;
+import org.jboss.javaee.metadata.spec.PersistenceContextReferencesMetaData;
+import org.jboss.javaee.metadata.spec.PersistenceUnitReferenceMetaData;
+import org.jboss.javaee.metadata.spec.PersistenceUnitReferencesMetaData;
+import org.jboss.javaee.metadata.spec.ResourceEnvironmentReferenceMetaData;
+import org.jboss.javaee.metadata.spec.ResourceEnvironmentReferencesMetaData;
+import org.jboss.javaee.metadata.spec.ResourceReferenceMetaData;
+import org.jboss.javaee.metadata.spec.ResourceReferencesMetaData;
+import org.jboss.javaee.metadata.spec.SecurityRoleMetaData;
+import org.jboss.javaee.metadata.spec.ServiceReferenceMetaData;
+import org.jboss.javaee.metadata.spec.ServiceReferencesMetaData;
+import org.jboss.javaee.metadata.support.AbstractMappedMetaData;
+import org.jboss.javaee.metadata.support.NamedMetaDataWithDescriptionGroupWithOverride;
+import org.jboss.javaee.metadata.support.NonNullLinkedHashSet;
+import javax.xml.bind.annotation.XmlElement;
+
+/**
+ * EnterpriseBean.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+//@SchemaImpl({JBossSessionBeanMetaData.class, JBossEntityBeanMetaData.class, JBossMessageDrivenBeanMetaData.class})
+public abstract class JBossEnterpriseBeanMetaData extends NamedMetaDataWithDescriptionGroupWithOverride<EnterpriseBeanMetaData> implements Environment
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 6909774842926430193L;
+
+   /** The enterprise bean container */
+   private JBossEnterpriseBeansMetaData enterpriseBeansMetaData;
+   
+   /** The local jndi name */
+   private String localJndiName;
+   
+   /** Whether to throw an exception if the transaction is marked for rollback */
+   private boolean exceptionOnRollback;
+   
+   /** Whether to persist timers */
+   private boolean timerPersistence = true;
+   
+   /** The configuration name */
+   private String configurationName;
+   
+   /** The invokers */
+   private InvokerBindingsMetaData invokers;
+   
+   /** The determined invokers */
+   private transient InvokerBindingsMetaData determinedInvokers;
+
+   /** The ior security config */
+   private IORSecurityConfigMetaData iorSecurityConfig;
+   
+   /** The security proxy */
+   private String securityProxy;
+
+   /** The environment */
+   private JBossEnvironmentRefsGroupMetaData jndiEnvironmentRefsGroup;
+
+   /** The merged environment */
+   private transient JBossEnvironmentRefsGroupMetaData mergedEnvironment;
+   
+   /** The method attributes */
+   private MethodAttributesMetaData methodAttributes;
+   
+   /** The security domain */
+   private String securityDomain;
+   
+   /** The dependencies */
+   private Set<String> depends;
+   
+   /** The annotations */
+   private AnnotationsMetaData annotations;
+
+   /** Ignore dependency */
+   private IgnoreDependencyMetaData ignoreDependency;
+
+   /** The aop domain name */
+   private String aopDomainName;
+   
+   // TODO DOM pool config
+   
+   /** The jndi refs */
+   private JndiRefsMetaData jndiRefs;
+   
+   /**
+    * Create a new EnterpriseBeanMetaData.
+    */
+   public JBossEnterpriseBeanMetaData()
+   {
+      // For serialization
+   }
+
+   /**
+    * Get the enterpriseBeansMetaData.
+    * 
+    * @return the enterpriseBeansMetaData.
+    */
+   JBossEnterpriseBeansMetaData getEnterpriseBeansMetaData()
+   {
+      return enterpriseBeansMetaData;
+   }
+
+   /**
+    * Set the enterpriseBeansMetaData.
+    * 
+    * @param enterpriseBeansMetaData the enterpriseBeansMetaData.
+    */
+   void setEnterpriseBeansMetaData(JBossEnterpriseBeansMetaData enterpriseBeansMetaData)
+   {
+      this.enterpriseBeansMetaData = enterpriseBeansMetaData;
+   }
+
+   /**
+    * Get the jbossMetaData.
+    * 
+    * @return the jbossMetaData.
+    */
+   public JBossMetaData getJBossMetaData()
+   {
+      if (enterpriseBeansMetaData == null)
+         return null;
+      return enterpriseBeansMetaData.getJBossMetaData();
+   }
+   
+   /**
+    * Get the jbossMetaData.
+    * 
+    * @return the jbossMetaData with check
+    */
+   public JBossMetaData getJBossMetaDataWithCheck()
+   {
+      JBossMetaData jbossMetaData = getJBossMetaData();
+      if (jbossMetaData == null)
+         throw new IllegalStateException("This bean is not a part of a deployment " + this);
+      return jbossMetaData;
+   }
+
+   /**
+    * Get the ejbName.
+    * 
+    * @return the ejbName.
+    */
+   public String getEjbName()
+   {
+      return getName();
+   }
+
+   /**
+    * Set the ejbName.
+    * 
+    * @param ejbName the ejbName.
+    * @throws IllegalArgumentException for a null ejbName
+    */
+   public void setEjbName(String ejbName)
+   {
+      setName(ejbName);
+   }
+
+   /**
+    * Whether this is a session bean
+    * 
+    * @return true when a session bean
+    */
+   public boolean isSession()
+   {
+      return false;
+   }
+
+   /**
+    * Whether this is a message driven bean
+    * 
+    * @return true when a message driven bean
+    */
+   public boolean isMessageDriven()
+   {
+      return false;
+   }
+
+   /**
+    * Whether this is an entity bean
+    * 
+    * @return true when an entity bean
+    */
+   public boolean isEntity()
+   {
+      return false;
+   }
+
+   /**
+    * Get the localJndiName.
+    * 
+    * @return the localJndiName.
+    */
+   public String getLocalJndiName()
+   {
+      return localJndiName;
+   }
+
+   /**
+    * Set the localJndiName.
+    * 
+    * @param localJndiName the localJndiName.
+    * @throws IllegalArgumentException for a null localJndiName
+    */
+   public void setLocalJndiName(String localJndiName)
+   {
+      if (localJndiName == null)
+         throw new IllegalArgumentException("Null localJndiName");
+      this.localJndiName = localJndiName;
+   }
+
+   /**
+    * Determine the localJndiName.
+    * 
+    * @return the localJndiName.
+    */
+   public String determineLocalJndiName()
+   {
+      if (localJndiName != null)
+         return localJndiName;
+      
+      String ejbName = getEjbName();
+      // Generate a unique name based on ejbName + identityHashCode
+      return "local/" + ejbName + '@' + System.identityHashCode(ejbName);
+   }
+
+   /**
+    * Determine the container jndi name used in the object name
+    * 
+    * @return the jndi name suitable for use in the object name
+    */
+   public String getContainerObjectNameJndiName()
+   {
+      return getLocalJndiName();
+   }
+
+   /**
+    * Get the exceptionOnRollback.
+    * 
+    * @return the exceptionOnRollback.
+    */
+   public boolean isExceptionOnRollback()
+   {
+      return exceptionOnRollback;
+   }
+
+   /**
+    * Set the exceptionOnRollback.
+    * 
+    * @param exceptionOnRollback the exceptionOnRollback.
+    */
+   public void setExceptionOnRollback(boolean exceptionOnRollback)
+   {
+      this.exceptionOnRollback = exceptionOnRollback;
+   }
+
+   /**
+    * Get the timerPersistence.
+    * 
+    * @return the timerPersistence.
+    */
+   public boolean isTimerPersistence()
+   {
+      return timerPersistence;
+   }
+
+   /**
+    * Set the timerPersistence.
+    * 
+    * @param timerPersistence the timerPersistence.
+    */
+   public void setTimerPersistence(boolean timerPersistence)
+   {
+      this.timerPersistence = timerPersistence;
+   }
+
+   /**
+    * Get the configurationName.
+    * 
+    * @return the configurationName.
+    */
+   public String getConfigurationName()
+   {
+      return configurationName;
+   }
+
+   /**
+    * Set the configurationName.
+    * 
+    * @param configurationName the configurationName.
+    * @throws IllegalArgumentException for a null configurationName
+    */
+   public void setConfigurationName(String configurationName)
+   {
+      if (configurationName == null)
+         throw new IllegalArgumentException("Null configurationName");
+      this.configurationName = configurationName;
+   }
+   
+   /**
+    * Determine the configuration name
+    * 
+    * @return the configuration name
+    */
+   public String determineConfigurationName()
+   {
+      if (configurationName != null)
+         return configurationName;
+      
+      return getDefaultConfigurationName();
+   }
+
+   /**
+    * Get the container configuration
+    * 
+    * @return the container configuration
+    */
+   public ContainerConfigurationMetaData determineContainerConfiguration()
+   {
+      String name = determineConfigurationName();
+      ContainerConfigurationMetaData result = getJBossMetaDataWithCheck().getContainerConfiguration(name);
+      if (result == null)
+         throw new IllegalStateException("Container configuration not found: " + name + " available: " +  getJBossMetaDataWithCheck().getContainerConfigurations());
+      return result;
+   }
+   
+   /**
+    * Get the default configuration name
+    * 
+    * @return the default name
+    */
+   public abstract String getDefaultConfigurationName();
+
+   /**
+    * Get the securityProxy.
+    * 
+    * @return the securityProxy.
+    */
+   public String getSecurityProxy()
+   {
+      return securityProxy;
+   }
+
+   /**
+    * Set the securityProxy.
+    * 
+    * @param securityProxy the securityProxy.
+    * @throws IllegalArgumentException for a null securityProxy
+    */
+   public void setSecurityProxy(String securityProxy)
+   {
+      if (securityProxy == null)
+         throw new IllegalArgumentException("Null securityProxy");
+      this.securityProxy = securityProxy;
+   }
+
+   /**
+    * Get the securityDomain.
+    * 
+    * @return the securityDomain.
+    */
+   public String getSecurityDomain()
+   {
+      return securityDomain;
+   }
+
+   /**
+    * Set the securityDomain.
+    * 
+    * @param securityDomain the securityDomain.
+    * @throws IllegalArgumentException for a null securityDomain
+    */
+   @XmlElement(required=false)
+   public void setSecurityDomain(String securityDomain)
+   {
+      if (securityDomain == null)
+         throw new IllegalArgumentException("Null securityDomain");
+      this.securityDomain = securityDomain;
+   }
+
+   /**
+    * Get the depends.
+    * 
+    * @return the depends.
+    */
+   public Set<String> getDepends()
+   {
+      return depends;
+   }
+
+   /**
+    * Set the depends.
+    * 
+    * @param depends the depends.
+    * @throws IllegalArgumentException for a null depends
+    */
+   @XmlElement(type=NonNullLinkedHashSet.class)
+   public void setDepends(Set<String> depends)
+   {
+      if (depends == null)
+         throw new IllegalArgumentException("Null depends");
+      this.depends = depends;
+   }
+
+   /**
+    * Get the depends.
+    * 
+    * @return the depends.
+    */
+   public Set<String> determineAllDepends()
+   {
+      NonNullLinkedHashSet<String> result = new NonNullLinkedHashSet<String>();
+
+      Set<String> depends = getDepends();
+      if (depends != null)
+         result.addAll(depends);
+      
+      ContainerConfigurationMetaData containerConfigurationMetaData = determineContainerConfiguration();
+      if (containerConfigurationMetaData != null)
+      {
+         depends = containerConfigurationMetaData.getDepends();
+         if (depends != null)
+            result.addAll(depends);
+      }
+      
+      return result;
+   }
+
+   /**
+    * Get the invokers.
+    * 
+    * @return the invokers.
+    */
+   public InvokerBindingsMetaData getInvokerBindings()
+   {
+      return invokers;
+   }
+
+   /**
+    * Set the invokers.
+    * 
+    * @param invokers the invokers.
+    * @throws IllegalArgumentException for a null invokers
+    */
+   public void setInvokerBindings(InvokerBindingsMetaData invokers)
+   {
+      if (invokers == null)
+         throw new IllegalArgumentException("Null invokers");
+      this.invokers = invokers;
+   }
+
+   /**
+    * Determine the invokers
+    * 
+    * @return the invokers.
+    */
+   public InvokerBindingsMetaData determineInvokerBindings()
+   {
+      // We already worked it out
+      if (determinedInvokers != null)
+         return determinedInvokers;
+      
+      // Use anything configured
+      if (invokers != null)
+      {
+         determinedInvokers = invokers;
+         return determinedInvokers;
+      }
+      
+      // Look at the container configuration
+      ContainerConfigurationMetaData containerConfiguration = determineContainerConfiguration();
+      Set<String> invokerProxyBindingNames = containerConfiguration.getInvokerProxyBindingNames();
+      if (invokerProxyBindingNames != null && invokerProxyBindingNames.isEmpty() == false)
+      {
+         determinedInvokers = new InvokerBindingsMetaData();
+         
+         // Like the original code, they all get bound with the same name?
+         String jndiName = getDefaultInvokerJndiName();
+         for (String name : invokerProxyBindingNames)
+         {
+            InvokerBindingMetaData invoker = new InvokerBindingMetaData();
+            invoker.setInvokerProxyBindingName(name);
+            if (jndiName != null)
+               invoker.setJndiName(jndiName);
+         }
+         return determinedInvokers;
+      }
+      
+      determinedInvokers = getDefaultInvokers();
+      return determinedInvokers;
+   }
+
+   /**
+    * Determine an invoker binding
+    * 
+    * @param invokerName the invoker proxy binding name
+    * @return the invoke binding
+    * @throws IllegalStateException if there is no such binding
+    */
+   public InvokerBindingMetaData determineInvokerBinding(String invokerName)
+   {
+      InvokerBindingMetaData binding = determineInvokerBindings().get(invokerName);
+      if (binding == null)
+          throw new IllegalStateException("No such binding: " + invokerName + " available: " + determinedInvokers);
+      return binding;
+   }
+
+   /**
+    * Determine the jndi name for invoker bindings that come from the container configuration
+    * 
+    * @return the jndi name suitable for use on the default invoker
+    */
+   protected String getDefaultInvokerJndiName()
+   {
+      return null;
+   }
+
+   /**
+    * Get the default invokers
+    * 
+    * @return the default invokers
+    */
+   protected InvokerBindingsMetaData getDefaultInvokers()
+   {
+      InvokerBindingsMetaData bindings = new InvokerBindingsMetaData();
+      InvokerBindingMetaData binding = new InvokerBindingMetaData();
+      binding.setInvokerProxyBindingName(getDefaultInvokerName());
+      String jndiName = getDefaultInvokerJndiName();
+      if (jndiName != null)
+         binding.setJndiName(getDefaultInvokerJndiName());
+      bindings.add(binding);
+      return bindings;
+   }
+
+   /**
+    * Get the default invokers
+    * 
+    * @return the default invokers
+    */
+   protected abstract String getDefaultInvokerName();
+
+   /**
+    * Get the jndiEnvironmentRefsGroup.
+    * 
+    * @return the jndiEnvironmentRefsGroup.
+    */
+   public JBossEnvironmentRefsGroupMetaData getJbossJndiEnvironmentRefsGroup()
+   {
+      return jndiEnvironmentRefsGroup;
+   }
+
+   /**
+    * Set the jndiEnvironmentRefsGroup.
+    * 
+    * @param jndiEnvironmentRefsGroup the jndiEnvironmentRefsGroup.
+    * @throws IllegalArgumentException for a null jndiEnvironmentRefsGroup
+    */
+   @XmlElement(/*noInterceptor=true*/)
+   public void setJbossJndiEnvironmentRefsGroup(JBossEnvironmentRefsGroupMetaData jndiEnvironmentRefsGroup)
+   {
+      if (jndiEnvironmentRefsGroup == null)
+         throw new IllegalArgumentException("Null jndiEnvironmentRefsGroup");
+      this.jndiEnvironmentRefsGroup = jndiEnvironmentRefsGroup;
+   }
+
+   /**
+    * Get the mergedEnvironment.
+    * 
+    * @return the mergedEnvironment.
+    */
+   public JBossEnvironmentRefsGroupMetaData getMergedEnvironment()
+   {
+      if (mergedEnvironment != null)
+         return mergedEnvironment;
+      
+      try
+      {
+         mergedEnvironment = JBossEnvironmentRefsGroupMetaData.merge(jndiEnvironmentRefsGroup, getOverridenMetaDataWithCheck().getJndiEnvironmentRefsGroup(), "ejb-jar.xml", "jboss.xml");
+
+         // Fixup the invoker binding references on ejb refs
+         InvokerBindingsMetaData invokerBindings = getInvokerBindings();
+         if (invokerBindings != null && invokerBindings.isEmpty() == false)
+         {
+            for (InvokerBindingMetaData invokerBinding : invokerBindings)
+            {
+               String ejbRefName = invokerBinding.getEjbRefName();
+               if (ejbRefName != null)
+               {
+                  EJBReferenceMetaData ejbRef = mergedEnvironment.getEjbReferenceByName(ejbRefName);
+                  if (ejbRef == null)
+                     throw new IllegalStateException("ejb-ref " + ejbRefName + " found on invoker " + invokerBinding.getName() + " but it does not exist for ejb: " + getName());
+                  ejbRef.addInvokerBinding(invokerBinding.getName(), invokerBinding.getJndiName());
+               }
+            }
+         }
+         
+         // Fixup the security identity
+         SecurityIdentityMetaData jbossSecurityIdentity = null;
+         if (jndiEnvironmentRefsGroup != null)
+            jbossSecurityIdentity = jndiEnvironmentRefsGroup.getSecurityIdentity();
+         SecurityIdentityMetaData originalSecurityIdentity = getOverridenMetaDataWithCheck().getSecurityIdentity();
+         SecurityIdentityMetaData mergedSecurityIdentity = jbossSecurityIdentity;
+         if (jbossSecurityIdentity == null)
+            mergedSecurityIdentity = originalSecurityIdentity;
+         else if  (originalSecurityIdentity != null)
+            mergedSecurityIdentity = jbossSecurityIdentity.merge(originalSecurityIdentity);
+         if (mergedSecurityIdentity != null)
+            mergedEnvironment.setSecurityIdentity(mergedSecurityIdentity);
+      }
+      catch (Exception e)
+      {
+         throw new RuntimeException("Error merging jndi environment for " + getEjbName(), e);
+      }
+      return mergedEnvironment;
+   }
+
+   public EJBLocalReferenceMetaData getEjbLocalReferenceByName(String name)
+   {
+      return AbstractMappedMetaData.getByName(name, getEjbLocalReferences());
+   }
+
+   public EJBLocalReferencesMetaData getEjbLocalReferences()
+   {
+      return getMergedEnvironment().getEjbLocalReferences();
+   }
+
+   public EJBReferenceMetaData getEjbReferenceByName(String name)
+   {
+      return AbstractMappedMetaData.getByName(name, getEjbReferences());
+   }
+
+   public EJBReferencesMetaData getEjbReferences()
+   {
+      return getMergedEnvironment().getEjbReferences();
+   }
+
+   public EnvironmentEntriesMetaData getEnvironmentEntries()
+   {
+      return getMergedEnvironment().getEnvironmentEntries();
+   }
+
+   public EnvironmentEntryMetaData getEnvironmentEntryByName(String name)
+   {
+      return AbstractMappedMetaData.getByName(name, getEnvironmentEntries());
+   }
+
+   public MessageDestinationReferenceMetaData getMessageDestinationReferenceByName(String name)
+   {
+      return AbstractMappedMetaData.getByName(name, getMessageDestinationReferences());
+   }
+
+   public MessageDestinationReferencesMetaData getMessageDestinationReferences()
+   {
+      return getMergedEnvironment().getMessageDestinationReferences();
+   }
+
+   public PersistenceContextReferenceMetaData getPersistenceContextReferenceByName(String name)
+   {
+      return AbstractMappedMetaData.getByName(name, getPersistenceContextRefs());
+   }
+
+   public PersistenceContextReferencesMetaData getPersistenceContextRefs()
+   {
+      return getMergedEnvironment().getPersistenceContextRefs();
+   }
+
+   public PersistenceUnitReferenceMetaData getPersistenceUnitReferenceByName(String name)
+   {
+      return AbstractMappedMetaData.getByName(name, getPersistenceUnitRefs());
+   }
+
+   public PersistenceUnitReferencesMetaData getPersistenceUnitRefs()
+   {
+      return getMergedEnvironment().getPersistenceUnitRefs();
+   }
+
+   public LifecycleCallbacksMetaData getPostConstructs()
+   {
+      return getMergedEnvironment().getPostConstructs();
+   }
+
+   public LifecycleCallbacksMetaData getPreDestroys()
+   {
+      return getMergedEnvironment().getPreDestroys();
+   }
+
+   public ResourceEnvironmentReferenceMetaData getResourceEnvironmentReferenceByName(String name)
+   {
+      return AbstractMappedMetaData.getByName(name, getResourceEnvironmentReferences());
+   }
+
+   public ResourceEnvironmentReferencesMetaData getResourceEnvironmentReferences()
+   {
+      return getMergedEnvironment().getResourceEnvironmentReferences();
+   }
+
+   public ResourceReferenceMetaData getResourceReferenceByName(String name)
+   {
+      return AbstractMappedMetaData.getByName(name, getResourceReferences());
+   }
+
+   public ResourceReferencesMetaData getResourceReferences()
+   {
+      return getMergedEnvironment().getResourceReferences();
+   }
+
+   public ServiceReferenceMetaData getServiceReferenceByName(String name)
+   {
+      return AbstractMappedMetaData.getByName(name, getServiceReferences());
+   }
+
+   public ServiceReferencesMetaData getServiceReferences()
+   {
+      return getMergedEnvironment().getServiceReferences();
+   }
+
+   /**
+    * Get the security identity
+    * 
+    * @return the security identity
+    */
+   public SecurityIdentityMetaData getSecurityIdentity()
+   {
+      // This is hacky because of the stupid way security identity is included in the environment
+      if (getOverridenMetaData() == null)
+      {
+         if (jndiEnvironmentRefsGroup == null)
+            return null;
+         else
+            return jndiEnvironmentRefsGroup.getSecurityIdentity();
+      }
+      return getMergedEnvironment().getSecurityIdentity();
+   }
+   
+   /**
+    * Get the annotations.
+    * 
+    * @return the annotations.
+    */
+   public AnnotationsMetaData getAnnotations()
+   {
+      return annotations;
+   }
+
+   /**
+    * Set the annotations.
+    * 
+    * @param annotations the annotations.
+    * @throws IllegalArgumentException for a null annotations
+    */
+   @XmlElement(name="annotation")
+   public void setAnnotations(AnnotationsMetaData annotations)
+   {
+      if (annotations == null)
+         throw new IllegalArgumentException("Null annotations");
+      this.annotations = annotations;
+   }
+
+   /**
+    * Get the aopDomainName.
+    * 
+    * @return the aopDomainName.
+    */
+   public String getAopDomainName()
+   {
+      return aopDomainName;
+   }
+
+   /**
+    * Set the aopDomainName.
+    * 
+    * @param aopDomainName the aopDomainName.
+    * @throws IllegalArgumentException for a null aopDomainName
+    */
+   public void setAopDomainName(String aopDomainName)
+   {
+      if (aopDomainName == null)
+         throw new IllegalArgumentException("Null aopDomainName");
+      this.aopDomainName = aopDomainName;
+   }
+
+   /**
+    * Get the jndiRefs.
+    * 
+    * @return the jndiRefs.
+    */
+   public JndiRefsMetaData getJndiRefs()
+   {
+      return jndiRefs;
+   }
+
+   /**
+    * Set the jndiRefs.
+    * 
+    * @param jndiRefs the jndiRefs.
+    * @throws IllegalArgumentException for a null jndiRefs
+    */
+   @XmlElement(name="jndi-ref")
+   public void setJndiRefs(JndiRefsMetaData jndiRefs)
+   {
+      if (jndiRefs == null)
+         throw new IllegalArgumentException("Null jndiRefs");
+      this.jndiRefs = jndiRefs;
+   }
+
+   /**
+    * Get a security role
+    * 
+    * @param roleName the role name
+    * @return the security role or null if not found
+    */
+   public SecurityRoleMetaData getSecurityRole(String roleName)
+   {
+      JBossAssemblyDescriptorMetaData assemblyDescriptor = getJBossMetaDataWithCheck().getAssemblyDescriptor();
+      if (assemblyDescriptor == null)
+         return null;
+      else
+         return assemblyDescriptor.getSecurityRole(roleName);
+   }
+
+   /**
+    * Get a security role's principals
+    * 
+    * @param roleName the role name
+    * @return the principals or null if not found
+    */
+   public Set<String> getSecurityRolePrincipals(String roleName)
+   {
+      JBossAssemblyDescriptorMetaData assemblyDescriptor = getJBossMetaDataWithCheck().getAssemblyDescriptor();
+      if (assemblyDescriptor == null)
+         return null;
+      else
+         return assemblyDescriptor.getSecurityRolePrincipals(roleName);
+   }
+   
+   /**
+    * A somewhat tedious method that builds a Set<Principal> of the roles
+    * that have been assigned permission to execute the indicated method. The
+    * work performed is tedious because of the wildcard style of declaring
+    * method permission allowed in the ejb-jar.xml descriptor. This method is
+    * called by the Container.getMethodPermissions() when it fails to find the
+    * prebuilt set of method roles in its cache.
+    *
+    * @param methodName the method name
+    * @param params the parameters
+    * @param interfaceType the interface type
+    * @return The Set<Principal> for the application domain roles that caller principal's are to be validated against.
+    */
+   public Set<String> getMethodPermissions(String methodName, Class[] params, MethodInterfaceType interfaceType)
+   {
+      Set<String> result = null;
+
+      EnterpriseBeanMetaData ejb = getOverridenMetaDataWithCheck();
+      JBossMetaData jbossMetaData = getJBossMetaDataWithCheck();
+      
+      // First check the excluded method list as this takes priority over
+      // all other assignments
+      ExcludeListMetaData excluded = ejb.getExcludeList();
+      if (excluded != null && excluded.matches(methodName, params, interfaceType))
+      {
+         // No one is allowed to execute this method so add a role that
+         // fails to equate to any Principal or Principal name and return.
+         // We don't return null to differentiate between an explicit
+         // assignment of no access and no assignment information.
+         if (result == null)
+            result = new HashSet<String>();
+         result.add("NOBODY_PRINCIPAL");
+         return result;
+      }
+
+      // Check the permissioned methods list
+      MethodPermissionsMetaData permissions = ejb.getMethodPermissions();
+      if (permissions != null)
+      {
+         for (MethodPermissionMetaData permission : permissions)
+         {
+            if (permission.isNotChecked(methodName, params, interfaceType))
+            {
+               if (result != null)
+                  result.clear();
+               result.add("ANYBODY_PRINCIPAL");
+               break;
+            }
+            else if (permission.matches(methodName, params, interfaceType))
+            {
+               Set<String> roles = permission.getRoles();
+               if (roles != null)
+               {
+                  for (String roleName : roles)
+                  {
+                     Set<String> principals = getSecurityRolePrincipals(roleName);
+                     if (principals != null)
+                     {
+                        for (String principal : principals)
+                        {
+                           if (result == null)
+                              result = new HashSet<String>();
+                           result.add(principal);
+                        }
+                     }
+                  }
+               }
+            }
+         }
+      }
+
+      if (jbossMetaData.isExcludeMissingMethods() == false && result == null)
+      {
+            result = new HashSet<String>();
+            result.add("ANYBODY_PRINCIPAL");
+      }
+
+      if (result == null)
+         result = Collections.emptySet();
+      return result;
+   }
+   
+   /**
+    * Check to see if there was a method-permission or exclude-list statement
+    * for the given method.
+    * 
+    * @param methodName - the method name
+    * @param params - the method parameter signature
+    * @param interfaceType - the method interface type
+    * @return true if a matching method permission exists, false if no match
+    */
+   public boolean hasMethodPermissions(String methodName, Class[] params, MethodInterfaceType interfaceType)
+   {
+      EnterpriseBeanMetaData ejb = getOverridenMetaDataWithCheck();
+      
+      // First check the excluded method list as this takes priority over
+      // all other assignments
+      ExcludeListMetaData excluded = ejb.getExcludeList();
+      if (excluded != null && excluded.matches(methodName, params, interfaceType))
+         return true;
+
+      // Check the permissioned methods list
+      MethodPermissionsMetaData permissions = ejb.getMethodPermissions();
+      if (permissions != null)
+      {
+         for (MethodPermissionMetaData permission : permissions)
+         {
+            if (permission.matches(methodName, params, interfaceType))
+               return true;
+         }
+      }
+
+      // No match
+      return false;
+   }
+
+   /**
+    * Get the iorSecurityConfig.
+    * 
+    * @return the iorSecurityConfig.
+    */
+   public IORSecurityConfigMetaData getIorSecurityConfig()
+   {
+      return iorSecurityConfig;
+   }
+
+   /**
+    * Set the iorSecurityConfig.
+    * 
+    * @param iorSecurityConfig the iorSecurityConfig.
+    * @throws IllegalArgumentException for a null iorSecurityConfig
+    */
+   public void setIorSecurityConfig(IORSecurityConfigMetaData iorSecurityConfig)
+   {
+      if (iorSecurityConfig == null)
+         throw new IllegalArgumentException("Null iorSecurityConfig");
+      this.iorSecurityConfig = iorSecurityConfig;
+   }
+
+   /**
+    * Get the ignoreDependency.
+    * 
+    * @return the ignoreDependency.
+    */
+   public IgnoreDependencyMetaData getIgnoreDependency()
+   {
+      return ignoreDependency;
+   }
+
+   /**
+    * Set the ignoreDependency.
+    * 
+    * @param ignoreDependency the ignoreDependency.
+    * @throws IllegalArgumentException for a null ignoreDependency
+    */
+   public void setIgnoreDependency(IgnoreDependencyMetaData ignoreDependency)
+   {
+      if (ignoreDependency == null)
+         throw new IllegalArgumentException("Null ignoreDependency");
+      this.ignoreDependency = ignoreDependency;
+   }
+
+   /**
+    * Get the methodAttributes.
+    * 
+    * @return the methodAttributes.
+    */
+   public MethodAttributesMetaData getMethodAttributes()
+   {
+      return methodAttributes;
+   }
+
+   /**
+    * Set the methodAttributes.
+    * 
+    * @param methodAttributes the methodAttributes.
+    * @throws IllegalArgumentException for a null methodAttributes
+    */
+   public void setMethodAttributes(MethodAttributesMetaData methodAttributes)
+   {
+      if (methodAttributes == null)
+         throw new IllegalArgumentException("Null methodAttributes");
+      this.methodAttributes = methodAttributes;
+   }
+
+   /**
+    * Is this method a read-only method
+    * 
+    * @param methodName the method name
+    * @return true for read only
+    */
+   public boolean isMethodReadOnly(String methodName)
+   {
+      if (methodAttributes == null)
+         return false;
+      return methodAttributes.isMethodReadOnly(methodName);
+   }
+
+   /**
+    * Is this method a read-only method
+    * 
+    * @param method the method
+    * @return true for read only
+    */
+   public boolean isMethodReadOnly(Method method)
+   {
+      if (method == null)
+         return false;
+      return isMethodReadOnly(method.getName());
+   }
+
+   /**
+    * Get the transaction timeout for the method
+    * 
+    * @param methodName the method name
+    * @return the transaction timeout
+    */
+   public int getMethodTransactionTimeout(String methodName)
+   {
+      if (methodAttributes == null)
+         return 0;
+      return methodAttributes.getMethodTransactionTimeout(methodName);
+   }
+
+   /**
+    * Get the transaction timeout for the method
+    * 
+    * @param method the method
+    * @return the transaction timeout
+    */
+   public int getMethodTransactionTimeout(Method method)
+   {
+      if (method == null)
+         return 0;
+      return getMethodTransactionTimeout(method.getName());
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBossEnterpriseBeansMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBossEnterpriseBeansMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBossEnterpriseBeansMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,121 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.jboss;
+
+import org.jboss.ejb.metadata.spec.EnterpriseBeanMetaData;
+import org.jboss.ejb.metadata.spec.EnterpriseBeansMetaData;
+import org.jboss.ejb.metadata.spec.EntityBeanMetaData;
+import org.jboss.ejb.metadata.spec.MessageDrivenBeanMetaData;
+import org.jboss.ejb.metadata.spec.SessionBeanMetaData;
+import org.jboss.javaee.metadata.support.AbstractMappedMetaDataWithOverride;
+import org.jboss.javaee.metadata.support.JavaEEMetaDataUtil;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * JBossEnterpriseBeansMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="jboss-enterprise-beansType")
+public class JBossEnterpriseBeansMetaData extends AbstractMappedMetaDataWithOverride<EnterpriseBeanMetaData, JBossEnterpriseBeanMetaData, EnterpriseBeansMetaData>
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -5123700601271986251L;
+   
+   /** The top level metadata */
+   private JBossMetaData jbossMetaData;
+   
+   /**
+    * Create a new EnterpriseBeansMetaData.
+    */
+   public JBossEnterpriseBeansMetaData()
+   {
+      super("ejb name for enterprise bean");
+   }
+   
+   /**
+    * Merge
+    * 
+    * @param jbossEnterpriseBeansMetaData the jboss enterprise beans
+    * @param enterpriseBeansMetaData the enterprise beans
+    * @return the merged jboss enterprise beans
+    */
+   public static JBossEnterpriseBeansMetaData merge(JBossEnterpriseBeansMetaData jbossEnterpriseBeansMetaData, EnterpriseBeansMetaData enterpriseBeansMetaData)
+   {
+      JBossEnterpriseBeansMetaData merged = new JBossEnterpriseBeansMetaData();
+      return JavaEEMetaDataUtil.mergeOverrideJBossXml(merged, enterpriseBeansMetaData, jbossEnterpriseBeansMetaData, "enterprise bean", true);
+   }
+
+   public JBossEnterpriseBeanMetaData createOverride(EnterpriseBeanMetaData data)
+   {
+      if (data == null)
+         throw new IllegalArgumentException("Null data");
+      JBossEnterpriseBeanMetaData result = null;
+      if (data instanceof SessionBeanMetaData)
+         result = new JBossSessionBeanMetaData();
+      else if (data instanceof EntityBeanMetaData)
+         result = new JBossEntityBeanMetaData();
+      else if (data instanceof MessageDrivenBeanMetaData)
+         result = new JBossMessageDrivenBeanMetaData();
+      else
+         throw new IllegalArgumentException("Unregonised: " + data);
+      result.setEjbName(data.getEjbName());
+      result.setOverridenMetaData(data);
+      return result;
+   }
+
+   /**
+    * Get the jbossMetaData.
+    * 
+    * @return the jbossMetaData.
+    */
+   JBossMetaData getJBossMetaData()
+   {
+      return jbossMetaData;
+   }
+
+   /**
+    * Set the jbossMetaData.
+    * 
+    * @param jbossMetaData the jbossMetaData.
+    * @throws IllegalArgumentException for a null jbossMetaData
+    */
+   void setJBossMetaData(JBossMetaData jbossMetaData)
+   {
+      if (jbossMetaData == null)
+         throw new IllegalArgumentException("Null jbossMetaData");
+      this.jbossMetaData = jbossMetaData;
+   }
+
+   @Override
+   public void addNotification(JBossEnterpriseBeanMetaData added)
+   {
+      added.setEnterpriseBeansMetaData(this);
+   }
+   
+   @Override
+   public void removeNotification(JBossEnterpriseBeanMetaData removed)
+   {
+      removed.setEnterpriseBeansMetaData(null);
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBossEntityBeanMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBossEntityBeanMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBossEntityBeanMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,375 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.jboss;
+
+import org.jboss.ejb.metadata.spec.EntityBeanMetaData;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * EntityBeanMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="jboss-entity-beanType")
+public class JBossEntityBeanMetaData extends JBossEnterpriseBeanMetaData
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -6869794514744015588L;
+   
+   /** The jndi name */
+   private String jndiName;
+   
+   /** Whether to call by value */
+   private boolean callByValue;
+
+   /** Whether this bean is clustered */
+   private boolean clustered;
+   
+   /** Read only */
+   private boolean readOnly;
+   
+   /** The cluster config */
+   private ClusterConfigMetaData clusterConfig;
+   
+   /** The determined cluster config */
+   private transient ClusterConfigMetaData determinedClusterConfig;
+   
+   /** Cache invalidation */
+   private boolean cacheInvalidation;
+
+   /** The cache invalidation config */
+   private CacheInvalidationConfigMetaData cacheInvalidationConfig;
+   
+   // TODO DOM cache-config
+
+   /**
+    * Create a new EntityBeanMetaData.
+    */
+   public JBossEntityBeanMetaData()
+   {
+      // For serialization
+   }
+
+   @Override
+   public EntityBeanMetaData getOverridenMetaData()
+   {
+      return (EntityBeanMetaData) super.getOverridenMetaData();
+   }
+   
+   @XmlTransient
+   public void setOverridenMetaData(EntityBeanMetaData data)
+   {
+      super.setOverridenMetaData(data);
+   }
+
+   @Override
+   public boolean isEntity()
+   {
+      return true;
+   }
+
+   @Override
+   public String getDefaultConfigurationName()
+   {
+      boolean isCMP = true;
+      boolean isCMP1x = false;
+      EntityBeanMetaData overriden = getOverridenMetaData();
+      if (overriden != null)
+      {
+         isCMP = overriden.isCMP();
+         isCMP1x = overriden.isCMP1x();
+      }
+
+      if (isCMP)
+      {
+         if (isCMP1x)
+         {
+            if (isClustered())
+               return ContainerConfigurationMetaData.CLUSTERED_CMP_1x;
+            else
+               return ContainerConfigurationMetaData.CMP_1x;
+         }
+         else
+         {
+            if (isClustered())
+               return ContainerConfigurationMetaData.CLUSTERED_CMP_2x;
+            else
+               return ContainerConfigurationMetaData.CMP_2x;
+         }
+      }
+      else
+      {
+         if (isClustered())
+            return ContainerConfigurationMetaData.CLUSTERED_BMP;
+         else
+            return ContainerConfigurationMetaData.BMP;
+      }
+   }
+
+   @Override
+   public String getDefaultInvokerName()
+   {
+      boolean isCMP = true;
+      boolean isCMP1x = false;
+      EntityBeanMetaData overriden = getOverridenMetaData();
+      if (overriden != null)
+      {
+         isCMP = overriden.isCMP();
+         isCMP1x = overriden.isCMP1x();
+      }
+
+      if (isCMP)
+      {
+         if (isCMP1x)
+         {
+            if (isClustered())
+               return InvokerBindingMetaData.CLUSTERED_CMP_1x;
+            else
+               return InvokerBindingMetaData.CMP_1x;
+         }
+         else
+         {
+            if (isClustered())
+               return InvokerBindingMetaData.CLUSTERED_CMP_2x;
+            else
+               return InvokerBindingMetaData.CMP_2x;
+         }
+      }
+      else
+      {
+         if (isClustered())
+            return InvokerBindingMetaData.CLUSTERED_BMP;
+         else
+            return InvokerBindingMetaData.BMP;
+      }
+   }
+
+   /**
+    * Get the jndiName.
+    * 
+    * @return the jndiName.
+    */
+   public String getJndiName()
+   {
+      return jndiName;
+   }
+
+   /**
+    * Set the jndiName.
+    * 
+    * @param jndiName the jndiName.
+    * @throws IllegalArgumentException for a null jndiName
+    */
+   public void setJndiName(String jndiName)
+   {
+      if (jndiName == null)
+         throw new IllegalArgumentException("Null jndiName");
+      this.jndiName = jndiName;
+   }
+
+   /**
+    * Determine the jndi name
+    * 
+    * @return the jndi name
+    */
+   public String determineJndiName()
+   {
+      if (jndiName != null)
+         return jndiName;
+      
+      EntityBeanMetaData overriden = getOverridenMetaData();
+      if (overriden != null)
+      {
+         String mapped = overriden.getMappedName();
+         if (mapped != null)
+            return mapped;
+      }
+      return getEjbName();
+   }
+
+   @Override
+   public String getContainerObjectNameJndiName()
+   {
+      boolean remote = false;
+      EntityBeanMetaData entity = getOverridenMetaData();
+      if (entity != null && entity.getHome() != null)
+         remote = true;
+      return remote ? determineJndiName() : getLocalJndiName();
+   }
+   
+   @Override
+   protected String getDefaultInvokerJndiName()
+   {
+      return determineJndiName();
+   }
+
+   /**
+    * Get the callByValue.
+    * 
+    * @return the callByValue.
+    */
+   public boolean isCallByValue()
+   {
+      return callByValue;
+   }
+
+   /**
+    * Set the callByValue.
+    * 
+    * @param callByValue the callByValue.
+    */
+   public void setCallByValue(boolean callByValue)
+   {
+      this.callByValue = callByValue;
+   }
+
+   /**
+    * Get the clustered.
+    * 
+    * @return the clustered.
+    */
+   public boolean isClustered()
+   {
+      return clustered;
+   }
+
+   /**
+    * Set the clustered.
+    * 
+    * @param clustered the clustered.
+    */
+   public void setClustered(boolean clustered)
+   {
+      this.clustered = clustered;
+   }
+
+   /**
+    * Get the readOnly.
+    * 
+    * @return the readOnly.
+    */
+   public boolean isReadOnly()
+   {
+      return readOnly;
+   }
+
+   /**
+    * Set the readOnly.
+    * 
+    * @param readOnly the readOnly.
+    */
+   public void setReadOnly(boolean readOnly)
+   {
+      this.readOnly = readOnly;
+   }
+
+   /**
+    * Get the clusterConfig.
+    * 
+    * @return the clusterConfig.
+    */
+   public ClusterConfigMetaData getClusterConfig()
+   {
+      return clusterConfig;
+   }
+
+   /**
+    * Determine the clusterConfig.
+    * 
+    * @return the clusterConfig.
+    */
+   public ClusterConfigMetaData determineClusterConfig()
+   {
+      if (determinedClusterConfig != null)
+         return determinedClusterConfig;
+      determinedClusterConfig = clusterConfig;
+      if (determinedClusterConfig == null)
+      {
+         ContainerConfigurationMetaData container = determineContainerConfiguration();
+         if (container != null)
+            determinedClusterConfig = container.getClusterConfig();
+      }
+      if (determinedClusterConfig == null)
+         determinedClusterConfig = new ClusterConfigMetaData();
+      return determinedClusterConfig;
+   }
+
+   /**
+    * Set the clusterConfig.
+    * 
+    * @param clusterConfig the clusterConfig.
+    * @throws IllegalArgumentException for a null clusterConfig
+    */
+   public void setClusterConfig(ClusterConfigMetaData clusterConfig)
+   {
+      if (clusterConfig == null)
+         throw new IllegalArgumentException("Null clusterConfig");
+      clusterConfig.setEnterpriseBeanMetaData(this);
+      this.clusterConfig = clusterConfig;
+   }
+
+   /**
+    * Get the cacheInvalidation.
+    * 
+    * @return the cacheInvalidation.
+    */
+   public boolean isCacheInvalidation()
+   {
+      return cacheInvalidation;
+   }
+
+   /**
+    * Set the cacheInvalidation.
+    * 
+    * @param cacheInvalidation the cacheInvalidation.
+    */
+   public void setCacheInvalidation(boolean cacheInvalidation)
+   {
+      this.cacheInvalidation = cacheInvalidation;
+   }
+
+   /**
+    * Get the cacheInvalidationConfig.
+    * 
+    * @return the cacheInvalidationConfig.
+    */
+   public CacheInvalidationConfigMetaData getCacheInvalidationConfig()
+   {
+      return cacheInvalidationConfig;
+   }
+
+   /**
+    * Set the cacheInvalidationConfig.
+    * 
+    * @param cacheInvalidationConfig the cacheInvalidationConfig.
+    * @throws IllegalArgumentException for a null cacheInvalidationConfig
+    */
+   public void setCacheInvalidationConfig(CacheInvalidationConfigMetaData cacheInvalidationConfig)
+   {
+      if (cacheInvalidationConfig == null)
+         throw new IllegalArgumentException("Null cacheInvalidationConfig");
+      cacheInvalidationConfig.setEntityBean(this);
+      this.cacheInvalidationConfig = cacheInvalidationConfig;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBossEnvironmentRefsGroupMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBossEnvironmentRefsGroupMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBossEnvironmentRefsGroupMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,169 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.jboss;
+
+import org.jboss.ejb.metadata.spec.SecurityIdentityMetaData;
+import org.jboss.javaee.metadata.spec.EJBLocalReferencesMetaData;
+import org.jboss.javaee.metadata.spec.EJBReferencesMetaData;
+import org.jboss.javaee.metadata.spec.EnvironmentEntriesMetaData;
+import org.jboss.javaee.metadata.spec.EnvironmentRefsGroupMetaData;
+import org.jboss.javaee.metadata.spec.LifecycleCallbacksMetaData;
+import org.jboss.javaee.metadata.spec.MessageDestinationReferencesMetaData;
+import org.jboss.javaee.metadata.spec.PersistenceContextReferencesMetaData;
+import org.jboss.javaee.metadata.spec.PersistenceUnitReferencesMetaData;
+import org.jboss.javaee.metadata.spec.ResourceEnvironmentReferencesMetaData;
+import org.jboss.javaee.metadata.spec.ResourceReferencesMetaData;
+import org.jboss.xb.annotations.JBossXmlModelGroup;
+
+/**
+ * JBossEnvironmentRefsGroupMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at JBossXmlModelGroup(name="jbossJndiEnvironmentRefsGroup")
+public class JBossEnvironmentRefsGroupMetaData extends EnvironmentRefsGroupMetaData
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 4642263968653845579L;
+
+   /** The security identity */
+   // This is only here because historically this was mixed in the environment xml
+   private SecurityIdentityMetaData securityIdentity;
+
+   /**
+    * Merge an environment
+    * 
+    * @param jbossEnvironmentRefsGroup the override environment
+    * @param environmentRefsGroup the overriden environment
+    * @param overridenFile the overriden file name
+    * @param overrideFile the override file
+    * @return the merged environment
+    */
+   public static JBossEnvironmentRefsGroupMetaData merge(JBossEnvironmentRefsGroupMetaData jbossEnvironmentRefsGroup, EnvironmentRefsGroupMetaData environmentRefsGroup, String overridenFile, String overrideFile)
+   {
+      JBossEnvironmentRefsGroupMetaData merged = new JBossEnvironmentRefsGroupMetaData();
+      
+      if (jbossEnvironmentRefsGroup == null && environmentRefsGroup == null)
+         return merged;
+
+      EnvironmentEntriesMetaData envEntries = null;
+      EJBReferencesMetaData ejbRefs = null;
+      EJBReferencesMetaData jbossEjbRefs = null;
+      EJBLocalReferencesMetaData ejbLocalRefs = null;
+      EJBLocalReferencesMetaData jbossEjbLocalRefs = null;
+      ResourceReferencesMetaData resRefs = null;
+      ResourceReferencesMetaData jbossResRefs = null;
+      ResourceEnvironmentReferencesMetaData resEnvRefs = null;
+      ResourceEnvironmentReferencesMetaData jbossResEnvRefs = null;
+      MessageDestinationReferencesMetaData messageDestinationRefs = null;
+      MessageDestinationReferencesMetaData jbossMessageDestinationRefs = null;
+      PersistenceContextReferencesMetaData persistenceContextRefs = null;
+      PersistenceUnitReferencesMetaData persistenceUnitRefs = null;
+      LifecycleCallbacksMetaData postConstructs = null;
+      LifecycleCallbacksMetaData preDestroys = null;
+      
+      if (environmentRefsGroup != null)
+      {
+         envEntries = environmentRefsGroup.getEnvironmentEntries();
+         ejbRefs = environmentRefsGroup.getEjbReferences();
+         ejbLocalRefs = environmentRefsGroup.getEjbLocalReferences();
+         // ServiceRefs
+         resRefs = environmentRefsGroup.getResourceReferences();
+         resEnvRefs = environmentRefsGroup.getResourceEnvironmentReferences();
+         messageDestinationRefs = environmentRefsGroup.getMessageDestinationReferences();
+         persistenceContextRefs = environmentRefsGroup.getPersistenceContextRefs();
+         persistenceUnitRefs = environmentRefsGroup.getPersistenceUnitRefs();
+         postConstructs = environmentRefsGroup.getPostConstructs();
+         preDestroys = environmentRefsGroup.getPreDestroys();
+      }
+      
+      if (jbossEnvironmentRefsGroup != null)
+      {
+         jbossEjbRefs = jbossEnvironmentRefsGroup.getEjbReferences();
+         jbossEjbLocalRefs = jbossEnvironmentRefsGroup.getEjbLocalReferences();
+         jbossResRefs = jbossEnvironmentRefsGroup.getResourceReferences();
+         jbossResEnvRefs = jbossEnvironmentRefsGroup.getResourceEnvironmentReferences();
+         jbossMessageDestinationRefs = jbossEnvironmentRefsGroup.getMessageDestinationReferences();
+      }
+      
+      EJBReferencesMetaData mergedEjbRefs = EJBReferencesMetaData.merge(jbossEjbRefs, ejbRefs, overridenFile, overrideFile);
+      if (mergedEjbRefs != null)
+         merged.setEjbReferences(mergedEjbRefs);
+      
+      EJBLocalReferencesMetaData mergedEjbLocalRefs = EJBLocalReferencesMetaData.merge(jbossEjbLocalRefs, ejbLocalRefs, overridenFile, overrideFile);
+      if (mergedEjbLocalRefs != null)
+         merged.setEjbLocalReferences(mergedEjbLocalRefs);
+      
+      ResourceReferencesMetaData mergedResRefs = ResourceReferencesMetaData.merge(jbossResRefs, resRefs, overridenFile, overrideFile);
+      if (mergedResRefs != null)
+         merged.setResourceReferences(mergedResRefs);
+
+      ResourceEnvironmentReferencesMetaData mergedResEnvRefs = ResourceEnvironmentReferencesMetaData.merge(jbossResEnvRefs, resEnvRefs, overridenFile, overrideFile);
+      if (mergedResEnvRefs != null)
+         merged.setResourceEnvironmentReferences(mergedResEnvRefs);
+
+      MessageDestinationReferencesMetaData mergedMessageDestinationRefs = MessageDestinationReferencesMetaData.merge(jbossMessageDestinationRefs, messageDestinationRefs, overridenFile, overrideFile);
+      if (mergedMessageDestinationRefs != null)
+         merged.setMessageDestinationReferences(mergedMessageDestinationRefs);
+      
+      if (envEntries != null)
+         merged.setEnvironmentEntries(envEntries);
+      
+      if (persistenceContextRefs != null)
+         merged.setPersistenceContextRefs(persistenceContextRefs);
+      
+      if (persistenceUnitRefs != null)
+         merged.setPersistenceUnitRefs(persistenceUnitRefs);
+      
+      if (postConstructs != null)
+         merged.setPostConstructs(postConstructs);
+      
+      if (preDestroys != null)
+         merged.setPreDestroys(preDestroys);
+      
+      return merged;
+   }
+
+   /**
+    * Get the securityIdentity.
+    * 
+    * @return the securityIdentity.
+    */
+   public SecurityIdentityMetaData getSecurityIdentity()
+   {
+      return securityIdentity;
+   }
+
+   /**
+    * Set the securityIdentity.
+    * 
+    * @param securityIdentity the securityIdentity.
+    * @throws IllegalArgumentException for a null securityIdentity
+    */
+   public void setSecurityIdentity(SecurityIdentityMetaData securityIdentity)
+   {
+      if (securityIdentity == null)
+         throw new IllegalArgumentException("Null securityIdentity");
+      this.securityIdentity = securityIdentity;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBossMessageDrivenBeanMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBossMessageDrivenBeanMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBossMessageDrivenBeanMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,297 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.jboss;
+
+import org.jboss.ejb.metadata.spec.ActivationConfigMetaData;
+import org.jboss.ejb.metadata.spec.MessageDrivenBeanMetaData;
+import org.jboss.ejb.metadata.spec.SecurityIdentityMetaData;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * MessageDrivenBeanMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="jboss-message-driven-beanType")
+public class JBossMessageDrivenBeanMetaData extends JBossEnterpriseBeanMetaData
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -4006016148034278681L;
+   
+   /** The destination jndi name */
+   private String destinationJndiName;
+
+   /** The mdb user id */
+   private String mdbUser;
+   
+   /** The mdb password */
+   private String mdbPassword;
+
+   /** The mdb client id */
+   private String mdbClientId;
+
+   /** The mdb subscription id */
+   private String mdbSubscriptionId;
+
+   /** The resource adapter name */
+   private String resourceAdapterName;
+
+   /** The ejb timeout identity */
+   private SecurityIdentityMetaData ejbTimeoutIdentity;
+
+   /** The default activation config */
+   private ActivationConfigMetaData defaultActivationConfig;
+
+   /**
+    * Create a new MessageDrivenBeanMetaData.
+    */
+   public JBossMessageDrivenBeanMetaData()
+   {
+      // For serialization
+   }
+
+   @Override
+   public MessageDrivenBeanMetaData getOverridenMetaData()
+   {
+      return (MessageDrivenBeanMetaData) super.getOverridenMetaData();
+   }
+   
+   @XmlTransient
+   public void setOverridenMetaData(MessageDrivenBeanMetaData data)
+   {
+      super.setOverridenMetaData(data);
+   }
+
+   @Override
+   public boolean isMessageDriven()
+   {
+      return true;
+   }
+
+   @Override
+   public String getDefaultConfigurationName()
+   {
+      boolean isJMS = true;
+      MessageDrivenBeanMetaData overriden = getOverridenMetaData();
+      if (overriden != null)
+         isJMS = overriden.isJMS();
+
+      if (isJMS == false)
+         return ContainerConfigurationMetaData.MESSAGE_INFLOW_DRIVEN;
+      else
+         return ContainerConfigurationMetaData.MESSAGE_DRIVEN;
+   }
+
+   @Override
+   public String getDefaultInvokerName()
+   {
+      return InvokerBindingMetaData.MESSAGE_DRIVEN;
+   }
+
+   /**
+    * Get the destinationJndiName.
+    * 
+    * @return the destinationJndiName.
+    */
+   public String getDestinationJndiName()
+   {
+      return destinationJndiName;
+   }
+
+   /**
+    * Set the destinationJndiName.
+    * 
+    * @param destinationJndiName the destinationJndiName.
+    * @throws IllegalArgumentException for a null destinationJndiName
+    */
+   public void setDestinationJndiName(String destinationJndiName)
+   {
+      if (destinationJndiName == null)
+         throw new IllegalArgumentException("Null destinationJndiName");
+      this.destinationJndiName = destinationJndiName;
+   }
+
+   /**
+    * Get the mdbUser.
+    * 
+    * @return the mdbUser.
+    */
+   public String getMdbUser()
+   {
+      return mdbUser;
+   }
+
+   /**
+    * Set the mdbUser.
+    * 
+    * @param mdbUser the mdbUser.
+    * @throws IllegalArgumentException for a null mdbUser
+    */
+   public void setMdbUser(String mdbUser)
+   {
+      if (mdbUser == null)
+         throw new IllegalArgumentException("Null mdbUser");
+      this.mdbUser = mdbUser;
+   }
+
+   /**
+    * Get the mdbPassword.
+    * 
+    * @return the mdbPassword.
+    */
+   public String getMdbPassword()
+   {
+      return mdbPassword;
+   }
+
+   /**
+    * Set the mdbPassword.
+    * 
+    * @param mdbPassword the mdbPassword.
+    * @throws IllegalArgumentException for a null mdbPassword
+    */
+   @XmlElement(name="mdb-passwd")
+   public void setMdbPassword(String mdbPassword)
+   {
+      if (mdbPassword == null)
+         throw new IllegalArgumentException("Null mdbPassword");
+      this.mdbPassword = mdbPassword;
+   }
+
+   /**
+    * Get the mdbClientId.
+    * 
+    * @return the mdbClientId.
+    */
+   public String getMdbClientId()
+   {
+      return mdbClientId;
+   }
+
+   /**
+    * Set the mdbClientId.
+    * 
+    * @param mdbClientId the mdbClientId.
+    * @throws IllegalArgumentException for a null mdbClientId
+    */
+   public void setMdbClientId(String mdbClientId)
+   {
+      if (mdbClientId == null)
+         throw new IllegalArgumentException("Null mdbClientId");
+      this.mdbClientId = mdbClientId;
+   }
+
+   /**
+    * Get the resourceAdapterName.
+    * 
+    * @return the resourceAdapterName.
+    */
+   public String getResourceAdapterName()
+   {
+      return resourceAdapterName;
+   }
+
+   /**
+    * Set the resourceAdapterName.
+    * 
+    * @param resourceAdapterName the resourceAdapterName.
+    * @throws IllegalArgumentException for a null resourceAdapterName
+    */
+   public void setResourceAdapterName(String resourceAdapterName)
+   {
+      if (resourceAdapterName == null)
+         throw new IllegalArgumentException("Null resourceAdapterName");
+      this.resourceAdapterName = resourceAdapterName;
+   }
+
+   /**
+    * Get the mdbSubscriptionId.
+    * 
+    * @return the mdbSubscriptionId.
+    */
+   public String getMdbSubscriptionId()
+   {
+      return mdbSubscriptionId;
+   }
+
+   /**
+    * Set the mdbSubscriptionId.
+    * 
+    * @param mdbSubscriptionId the mdbSubscriptionId.
+    * @throws IllegalArgumentException for a null mdbSubscriptionId
+    */
+   public void setMdbSubscriptionId(String mdbSubscriptionId)
+   {
+      if (mdbSubscriptionId == null)
+         throw new IllegalArgumentException("Null mdbSubscriptionId");
+      this.mdbSubscriptionId = mdbSubscriptionId;
+   }
+
+   /**
+    * Get the defaultActivationConfig.
+    * 
+    * @return the defaultActivationConfig.
+    */
+   public ActivationConfigMetaData getDefaultActivationConfig()
+   {
+      return defaultActivationConfig;
+   }
+
+   /**
+    * Set the defaultActivationConfig.
+    * 
+    * @param defaultActivationConfig the defaultActivationConfig.
+    * @throws IllegalArgumentException for a null defaultActivationConfig
+    */
+   public void setDefaultActivationConfig(ActivationConfigMetaData defaultActivationConfig)
+   {
+      if (defaultActivationConfig == null)
+         throw new IllegalArgumentException("Null defaultActivationConfig");
+      this.defaultActivationConfig = defaultActivationConfig;
+   }
+
+   /**
+    * Get the ejbTimeoutIdentity.
+    * 
+    * @return the ejbTimeoutIdentity.
+    */
+   public SecurityIdentityMetaData getEjbTimeoutIdentity()
+   {
+      return ejbTimeoutIdentity;
+   }
+
+   /**
+    * Set the ejbTimeoutIdentity.
+    * 
+    * @param ejbTimeoutIdentity the ejbTimeoutIdentity.
+    * @throws IllegalArgumentException for a null ejbTimeoutIdentity
+    */
+   public void setEjbTimeoutIdentity(SecurityIdentityMetaData ejbTimeoutIdentity)
+   {
+      if (ejbTimeoutIdentity == null)
+         throw new IllegalArgumentException("Null ejbTimeoutIdentity");
+      this.ejbTimeoutIdentity = ejbTimeoutIdentity;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBossMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBossMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBossMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,492 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.jboss;
+
+import org.jboss.ejb.metadata.spec.EjbJarMetaData;
+import org.jboss.javaee.metadata.support.IdMetaDataImplWithDescriptionGroupWithOverride;
+import org.jboss.logging.Logger;
+import javax.xml.bind.annotation.XmlElement;
+
+/**
+ * JBossMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class JBossMetaData extends IdMetaDataImplWithDescriptionGroupWithOverride<EjbJarMetaData>
+   // TODO LAST extends EjbJar30MetaData 
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 598759931857080298L;
+   
+   /** The log */
+   private static final Logger log = Logger.getLogger(JBossMetaData.class);
+
+   /** The version */
+   private String version;
+
+   /** The loader repository */
+   private LoaderRepositoryMetaData loaderRepository;
+
+   /** The jmx name */
+   private String jmxName;
+   
+   /** The security domain */
+   private String securityDomain;
+
+   /** Whether to exclude missing methods */
+   private boolean excludeMissingMethods = true;
+   
+   /** The unauthenticated principal */
+   private String unauthenticatedPrincipal;
+   
+   /** Whether to throw an exception when marked rollback */
+   private boolean exceptionOnRollback;
+   
+   /** The webservices */
+   private WebservicesMetaData webservices;
+   
+   /** The enterprise beans */
+   private JBossEnterpriseBeansMetaData enterpriseBeans;
+   
+   /** The merged enterprise beans */
+   private JBossEnterpriseBeansMetaData mergedEnterpriseBeans;
+   
+   /** The assembly descriptor */
+   private JBossAssemblyDescriptorMetaData assemblyDescriptor;
+   
+   /** The merged assembly descriptor */
+   private JBossAssemblyDescriptorMetaData mergedAssemblyDescriptor;
+   
+   /** The resource manager */
+   private ResourceManagersMetaData resourceManagers;
+   
+   /** The invoker-proxy-bindings */
+   private InvokerProxyBindingsMetaData invokerProxyBindings;
+
+   /** The container configurations */
+   private ContainerConfigurationsMetaData containerConfigurations;
+   
+   /**
+    * Create a new JBossMetaData.
+    */
+   public JBossMetaData()
+   {
+      // For serialization
+   }
+
+   /**
+    * Get the version.
+    * 
+    * @return the version.
+    */
+   public String getVersion()
+   {
+      return version;
+   }
+
+   /**
+    * Set the version.
+    * 
+    * @param version the version.
+    * @throws IllegalArgumentException for a null version
+    */
+   public void setVersion(String version)
+   {
+      if (version == null)
+         throw new IllegalArgumentException("Null version");
+      this.version = version;
+   }
+
+   /**
+    * Get the loaderRepository.
+    * 
+    * @return the loaderRepository.
+    */
+   public LoaderRepositoryMetaData getLoaderRepository()
+   {
+      return loaderRepository;
+   }
+
+   /**
+    * Set the loaderRepository.
+    * 
+    * @param loaderRepository the loaderRepository.
+    * @throws IllegalArgumentException for a null loaderRepository
+    */
+   public void setLoaderRepository(LoaderRepositoryMetaData loaderRepository)
+   {
+      if (loaderRepository == null)
+         throw new IllegalArgumentException("Null loaderRepository");
+      this.loaderRepository = loaderRepository;
+   }
+
+   /**
+    * Get the jmxName.
+    * 
+    * @return the jmxName.
+    */
+   public String getJmxName()
+   {
+      return jmxName;
+   }
+
+   /**
+    * Set the jmxName.
+    * 
+    * @param jmxName the jmxName.
+    * @throws IllegalArgumentException for a null jmxName
+    */
+   public void setJmxName(String jmxName)
+   {
+      if (jmxName == null)
+         throw new IllegalArgumentException("Null jmxName");
+      this.jmxName = jmxName;
+   }
+
+   /**
+    * Get the securityDomain.
+    * 
+    * @return the securityDomain.
+    */
+   public String getSecurityDomain()
+   {
+      return securityDomain;
+   }
+
+   /**
+    * Set the securityDomain.
+    * 
+    * @param securityDomain the securityDomain.
+    * @throws IllegalArgumentException for a null securityDomain
+    */
+   public void setSecurityDomain(String securityDomain)
+   {
+      if (securityDomain == null)
+         throw new IllegalArgumentException("Null securityDomain");
+      this.securityDomain = securityDomain;
+   }
+
+   /**
+    * Get the excludeMissingMethods.
+    * 
+    * @return the excludeMissingMethods.
+    */
+   public boolean isExcludeMissingMethods()
+   {
+      return excludeMissingMethods;
+   }
+
+   /**
+    * Set the excludeMissingMethods.
+    * 
+    * @param excludeMissingMethods the excludeMissingMethods.
+    */
+   @XmlElement(name="missing-method-permissions-excluded-mode")
+   public void setExcludeMissingMethods(boolean excludeMissingMethods)
+   {
+      this.excludeMissingMethods = excludeMissingMethods;
+   }
+
+   /**
+    * Get the unauthenticatedPrincipal.
+    * 
+    * @return the unauthenticatedPrincipal.
+    */
+   public String getUnauthenticatedPrincipal()
+   {
+      return unauthenticatedPrincipal;
+   }
+
+   /**
+    * Set the unauthenticatedPrincipal.
+    * 
+    * @param unauthenticatedPrincipal the unauthenticatedPrincipal.
+    * @throws IllegalArgumentException for a null unauthenticatedPrincipal
+    */
+   public void setUnauthenticatedPrincipal(String unauthenticatedPrincipal)
+   {
+      if (unauthenticatedPrincipal == null)
+         throw new IllegalArgumentException("Null unauthenticatedPrincipal");
+      this.unauthenticatedPrincipal = unauthenticatedPrincipal;
+   }
+
+   /**
+    * Get the exceptionOnRollback.
+    * 
+    * @return the exceptionOnRollback.
+    */
+   public boolean isExceptionOnRollback()
+   {
+      return exceptionOnRollback;
+   }
+
+   /**
+    * Set the exceptionOnRollback.
+    * 
+    * @param exceptionOnRollback the exceptionOnRollback.
+    */
+   public void setExceptionOnRollback(boolean exceptionOnRollback)
+   {
+      this.exceptionOnRollback = exceptionOnRollback;
+   }
+
+   /**
+    * Get the merged enterpriseBeans.
+    * 
+    * @return the merged enterpriseBeans.
+    */
+   public JBossEnterpriseBeansMetaData getMergedEnterpriseBeans()
+   {
+      if (mergedEnterpriseBeans != null)
+         return mergedEnterpriseBeans;
+      mergedEnterpriseBeans = JBossEnterpriseBeansMetaData.merge(enterpriseBeans, getOverridenMetaDataWithCheck().getEnterpriseBeans());
+      mergedEnterpriseBeans.setJBossMetaData(this);
+      return mergedEnterpriseBeans;
+   }
+
+   /**
+    * Get a merged enterprise bean
+    * 
+    * @param name the name
+    * @return the container configuration
+    */
+   public JBossEnterpriseBeanMetaData getMergedEnterpriseBean(String name)
+   {
+      return getMergedEnterpriseBeans().get(name);
+   }
+
+   /**
+    * Get the enterpriseBeans.
+    * 
+    * @return the enterpriseBeans.
+    */
+   public JBossEnterpriseBeansMetaData getEnterpriseBeans()
+   {
+      return enterpriseBeans;
+   }
+
+   /**
+    * Set the enterpriseBeans.
+    * 
+    * @param enterpriseBeans the enterpriseBeans.
+    * @throws IllegalArgumentException for a null enterpriseBeans
+    */
+   public void setEnterpriseBeans(JBossEnterpriseBeansMetaData enterpriseBeans)
+   {
+      if (enterpriseBeans == null)
+         throw new IllegalArgumentException("Null enterpriseBeans");
+      this.enterpriseBeans = enterpriseBeans;
+      enterpriseBeans.setJBossMetaData(this);
+   }
+
+   /**
+    * Get an enterprise bean
+    * 
+    * @param name the name
+    * @return the container configuration
+    */
+   public JBossEnterpriseBeanMetaData getEnterpriseBean(String name)
+   {
+      if (enterpriseBeans == null)
+         return null;
+      return enterpriseBeans.get(name);
+   }
+
+   /**
+    * Set the enforceEjbRestrictions.
+    * 
+    * @param enforceEjbRestrictions the enforceEjbRestrictions.
+    * @throws IllegalArgumentException for a null enforceEjbRestrictions
+    */
+   public void setEnforceEjbRestrictions(String enforceEjbRestrictions)
+   {
+      log.warn("<enforce-ejb-restrictions/> in jboss.xml is no longer used and will be removed in a future version.");
+   }
+
+   /**
+    * Get the webservices.
+    * 
+    * @return the webservices.
+    */
+   public WebservicesMetaData getWebservices()
+   {
+      return webservices;
+   }
+
+   /**
+    * Set the webservices.
+    * 
+    * @param webservices the webservices.
+    * @throws IllegalArgumentException for a null webservices
+    */
+   public void setWebservices(WebservicesMetaData webservices)
+   {
+      if (webservices == null)
+         throw new IllegalArgumentException("Null webservices");
+      this.webservices = webservices;
+   }
+
+   /**
+    * Get the containerConfigurations.
+    * 
+    * @return the containerConfigurations.
+    */
+   public ContainerConfigurationsMetaData getContainerConfigurations()
+   {
+      return containerConfigurations;
+   }
+
+   /**
+    * Set the containerConfigurations.
+    * 
+    * @param containerConfigurations the containerConfigurations.
+    * @throws IllegalArgumentException for a null containerConfigurations
+    */
+   public void setContainerConfigurations(ContainerConfigurationsMetaData containerConfigurations)
+   {
+      if (containerConfigurations == null)
+         throw new IllegalArgumentException("Null containerConfigurations");
+      this.containerConfigurations = containerConfigurations;
+   }
+
+   /**
+    * Get a container configuration
+    * 
+    * @param name the name
+    * @return the container configuration
+    */
+   public ContainerConfigurationMetaData getContainerConfiguration(String name)
+   {
+      if (containerConfigurations == null)
+         return null;
+      return containerConfigurations.get(name);
+   }
+
+   /**
+    * Get the invokerProxyBindings.
+    * 
+    * @return the invokerProxyBindings.
+    */
+   public InvokerProxyBindingsMetaData getInvokerProxyBindings()
+   {
+      return invokerProxyBindings;
+   }
+
+   /**
+    * Set the invokerProxyBindings.
+    * 
+    * @param invokerProxyBindings the invokerProxyBindings.
+    * @throws IllegalArgumentException for a null invokerProxyBindings
+    */
+   public void setInvokerProxyBindings(InvokerProxyBindingsMetaData invokerProxyBindings)
+   {
+      if (invokerProxyBindings == null)
+         throw new IllegalArgumentException("Null invokerProxyBindings");
+      this.invokerProxyBindings = invokerProxyBindings;
+   }
+
+   /**
+    * Get an invoker proxy binding
+    * 
+    * @param name the name
+    * @return the invoker proxy binding
+    */
+   public InvokerProxyBindingMetaData getInvokerProxyBinding(String name)
+   {
+      if (invokerProxyBindings == null)
+         return null;
+      return invokerProxyBindings.get(name);
+   }
+
+   /**
+    * Get the resourceManagers.
+    * 
+    * @return the resourceManagers.
+    */
+   public ResourceManagersMetaData getResourceManagers()
+   {
+      return resourceManagers;
+   }
+
+   /**
+    * Set the resourceManagers.
+    * 
+    * @param resourceManagers the resourceManagers.
+    * @throws IllegalArgumentException for a null resourceManagers
+    */
+   public void setResourceManagers(ResourceManagersMetaData resourceManagers)
+   {
+      if (resourceManagers == null)
+         throw new IllegalArgumentException("Null resourceManagers");
+      this.resourceManagers = resourceManagers;
+   }
+
+   /**
+    * Get a resource manager
+    * 
+    * @param name the name
+    * @return the resource manager
+    */
+   public ResourceManagerMetaData getResourceManager(String name)
+   {
+      if (resourceManagers == null)
+         return null;
+      return resourceManagers.get(name);
+   }
+
+   /**
+    * Get the merged assembly descriptor
+    * 
+    * @return the merged assembly descriptor.
+    */
+   public JBossAssemblyDescriptorMetaData getMergedAssemblyDescriptor()
+   {
+      if (mergedAssemblyDescriptor != null)
+         return mergedAssemblyDescriptor;
+      mergedAssemblyDescriptor = JBossAssemblyDescriptorMetaData.merge(assemblyDescriptor, getOverridenMetaDataWithCheck().getAssemblyDescriptor());
+      return mergedAssemblyDescriptor;
+   }
+
+   /**
+    * Get the assemblyDescriptor.
+    * 
+    * @return the assemblyDescriptor.
+    */
+   public JBossAssemblyDescriptorMetaData getAssemblyDescriptor()
+   {
+      return assemblyDescriptor;
+   }
+
+   /**
+    * Set the assemblyDescriptor.
+    * 
+    * @param assemblyDescriptor the assemblyDescriptor.
+    * @throws IllegalArgumentException for a null assemblyDescriptor
+    */
+   public void setAssemblyDescriptor(JBossAssemblyDescriptorMetaData assemblyDescriptor)
+   {
+      if (assemblyDescriptor == null)
+         throw new IllegalArgumentException("Null assemblyDescriptor");
+      this.assemblyDescriptor = assemblyDescriptor;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBossSessionBeanMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBossSessionBeanMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/JBossSessionBeanMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,352 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.jboss;
+
+import org.jboss.ejb.metadata.spec.SecurityIdentityMetaData;
+import org.jboss.ejb.metadata.spec.SessionBeanMetaData;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * SessionBeanMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="jboss-session-beanType")
+public class JBossSessionBeanMetaData extends JBossEnterpriseBeanMetaData
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 720735017632869718L;
+   
+   /** The jndi name */
+   private String jndiName;
+   
+   /** Whether to call by value */
+   private boolean callByValue;
+ 
+   /** The remote binding */
+   private RemoteBindingMetaData remoteBinding;
+   
+   /** Whether this bean is clustered */
+   private boolean clustered;
+   
+   /** The cluster config */
+   private ClusterConfigMetaData clusterConfig;
+   
+   /** The determined cluster config */
+   private transient ClusterConfigMetaData determinedClusterConfig;
+   
+   // TODO webservice port-component
+   
+   /** The ejb timeout identity */
+   private SecurityIdentityMetaData ejbTimeoutIdentity;
+
+   // TODO DOM cache config
+   
+   /** Whether the bean is concurrent */
+   private boolean concurrent = false;
+   
+   /**
+    * Create a new SessionBeanMetaData.
+    */
+   public JBossSessionBeanMetaData()
+   {
+      // For serialization
+   }
+
+   @Override
+   public SessionBeanMetaData getOverridenMetaData()
+   {
+      return (SessionBeanMetaData) super.getOverridenMetaData();
+   }
+   
+   @XmlTransient
+   public void setOverridenMetaData(SessionBeanMetaData data)
+   {
+      super.setOverridenMetaData(data);
+   }
+
+   @Override
+   public boolean isSession()
+   {
+      return true;
+   }
+
+   @Override
+   public String getDefaultConfigurationName()
+   {
+      boolean stateful = false;
+      SessionBeanMetaData overriden = getOverridenMetaData();
+      if (overriden != null)
+         stateful = overriden.isStateful();
+
+      if (stateful)
+      {
+         if (isClustered())
+            return ContainerConfigurationMetaData.CLUSTERED_STATEFUL;
+         else
+            return ContainerConfigurationMetaData.STATEFUL;
+      }
+      else
+      {
+         if (isClustered())
+            return ContainerConfigurationMetaData.CLUSTERED_STATELESS;
+         else
+            return ContainerConfigurationMetaData.STATELESS;
+      }
+   }
+
+   @Override
+   public String getDefaultInvokerName()
+   {
+      boolean stateful = false;
+      SessionBeanMetaData overriden = getOverridenMetaData();
+      if (overriden != null)
+         stateful = overriden.isStateful();
+
+      if (stateful)
+      {
+         if (isClustered())
+            return InvokerBindingMetaData.CLUSTERED_STATEFUL;
+         else
+            return InvokerBindingMetaData.STATEFUL;
+      }
+      else
+      {
+         if (isClustered())
+            return InvokerBindingMetaData.CLUSTERED_STATELESS;
+         else
+            return InvokerBindingMetaData.STATELESS;
+      }
+   }
+
+   /**
+    * Get the jndiName.
+    * 
+    * @return the jndiName.
+    */
+   public String getJndiName()
+   {
+      return jndiName;
+   }
+
+   /**
+    * Set the jndiName.
+    * 
+    * @param jndiName the jndiName.
+    * @throws IllegalArgumentException for a null jndiName
+    */
+   public void setJndiName(String jndiName)
+   {
+      if (jndiName == null)
+         throw new IllegalArgumentException("Null jndiName");
+      this.jndiName = jndiName;
+   }
+
+   /**
+    * Determine the jndi name
+    * 
+    * @return the jndi name
+    */
+   public String determineJndiName()
+   {
+      if (jndiName != null)
+         return jndiName;
+      
+      SessionBeanMetaData overriden = getOverridenMetaData();
+      if (overriden != null)
+      {
+         String mapped = overriden.getMappedName();
+         if (mapped != null)
+            return mapped;
+      }
+      return getEjbName();
+   }
+
+   @Override
+   public String getContainerObjectNameJndiName()
+   {
+      boolean remote = false;
+      SessionBeanMetaData session = getOverridenMetaData();
+      if (session != null && session.getHome() != null)
+         remote = true;
+      return remote ? determineJndiName() : getLocalJndiName();
+   }
+   
+   @Override
+   protected String getDefaultInvokerJndiName()
+   {
+      return determineJndiName();
+   }
+
+   /**
+    * Get the callByValue.
+    * 
+    * @return the callByValue.
+    */
+   public boolean isCallByValue()
+   {
+      return callByValue;
+   }
+
+   /**
+    * Set the callByValue.
+    * 
+    * @param callByValue the callByValue.
+    */
+   public void setCallByValue(boolean callByValue)
+   {
+      this.callByValue = callByValue;
+   }
+
+   /**
+    * Get the clustered.
+    * 
+    * @return the clustered.
+    */
+   public boolean isClustered()
+   {
+      return clustered;
+   }
+
+   /**
+    * Set the clustered.
+    * 
+    * @param clustered the clustered.
+    */
+   public void setClustered(boolean clustered)
+   {
+      this.clustered = clustered;
+   }
+
+   /**
+    * Get the concurrent.
+    * 
+    * @return the concurrent.
+    */
+   public boolean isConcurrent()
+   {
+      return concurrent;
+   }
+
+   /**
+    * Set the concurrent.
+    * 
+    * @param concurrent the concurrent.
+    */
+   public void setConcurrent(boolean concurrent)
+   {
+      this.concurrent = concurrent;
+   }
+
+   /**
+    * Get the ejbTimeoutIdentity.
+    * 
+    * @return the ejbTimeoutIdentity.
+    */
+   public SecurityIdentityMetaData getEjbTimeoutIdentity()
+   {
+      return ejbTimeoutIdentity;
+   }
+
+   /**
+    * Set the ejbTimeoutIdentity.
+    * 
+    * @param ejbTimeoutIdentity the ejbTimeoutIdentity.
+    * @throws IllegalArgumentException for a null ejbTimeoutIdentity
+    */
+   public void setEjbTimeoutIdentity(SecurityIdentityMetaData ejbTimeoutIdentity)
+   {
+      if (ejbTimeoutIdentity == null)
+         throw new IllegalArgumentException("Null ejbTimeoutIdentity");
+      this.ejbTimeoutIdentity = ejbTimeoutIdentity;
+   }
+
+   /**
+    * Get the clusterConfig.
+    * 
+    * @return the clusterConfig.
+    */
+   public ClusterConfigMetaData getClusterConfig()
+   {
+      return clusterConfig;
+   }
+
+   /**
+    * Determine the clusterConfig.
+    * 
+    * @return the clusterConfig.
+    */
+   public ClusterConfigMetaData determineClusterConfig()
+   {
+      if (determinedClusterConfig != null)
+         return determinedClusterConfig;
+      determinedClusterConfig = clusterConfig;
+      if (determinedClusterConfig == null)
+      {
+         ContainerConfigurationMetaData container = determineContainerConfiguration();
+         if (container != null)
+            determinedClusterConfig = container.getClusterConfig();
+      }
+      if (determinedClusterConfig == null)
+         determinedClusterConfig = new ClusterConfigMetaData();
+      return determinedClusterConfig;
+   }
+
+   /**
+    * Set the clusterConfig.
+    * 
+    * @param clusterConfig the clusterConfig.
+    * @throws IllegalArgumentException for a null clusterConfig
+    */
+   public void setClusterConfig(ClusterConfigMetaData clusterConfig)
+   {
+      if (clusterConfig == null)
+         throw new IllegalArgumentException("Null clusterConfig");
+      clusterConfig.setEnterpriseBeanMetaData(this);
+      this.clusterConfig = clusterConfig;
+   }
+
+   /**
+    * Get the remoteBinding.
+    * 
+    * @return the remoteBinding.
+    */
+   public RemoteBindingMetaData getRemoteBinding()
+   {
+      return remoteBinding;
+   }
+
+   /**
+    * Set the remoteBinding.
+    * 
+    * @param remoteBinding the remoteBinding.
+    * @throws IllegalArgumentException for a null remoteBinding
+    */
+   public void setRemoteBinding(RemoteBindingMetaData remoteBinding)
+   {
+      if (remoteBinding == null)
+         throw new IllegalArgumentException("Null remoteBinding");
+      this.remoteBinding = remoteBinding;
+   }
+}

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

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

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/MethodAttributeMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/MethodAttributeMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/MethodAttributeMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,168 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.jboss;
+
+import org.jboss.javaee.metadata.support.NamedMetaData;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * MethodAttributeMetaData.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="jboss-methodType")
+public class MethodAttributeMetaData extends NamedMetaData
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 8484757755955187189L;
+
+   /** The default methods attributes */
+   public static final MethodAttributeMetaData DEFAULT;
+
+   static
+   {
+      DEFAULT = new MethodAttributeMetaData();
+      DEFAULT.setMethodName("*");
+   }
+
+   /** Whether the method is read only */
+   private boolean readOnly;
+
+   /** Whether the method is idempotent */
+   private boolean idempotent;
+
+   /** The transaction timeout */
+   private int transactionTimeout;
+
+   /**
+    * Get the methodName.
+    * 
+    * @return the methodName.
+    */
+   public String getMethodName()
+   {
+      return getName();
+   }
+
+   /**
+    * Set the methodName.
+    * 
+    * @param methodName the methodName.
+    * @throws IllegalArgumentException for a null methodName
+    */
+   public void setMethodName(String methodName)
+   {
+      setName(methodName);
+   }
+
+   /**
+    * Get the readOnly.
+    * 
+    * @return the readOnly.
+    */
+   public boolean isReadOnly()
+   {
+      return readOnly;
+   }
+
+   /**
+    * Set the readOnly.
+    * 
+    * @param readOnly the readOnly.
+    */
+   public void setReadOnly(boolean readOnly)
+   {
+      this.readOnly = readOnly;
+   }
+
+   /**
+    * Get the idempotent.
+    * 
+    * @return the idempotent.
+    */
+   public boolean isIdempotent()
+   {
+      return idempotent;
+   }
+
+   /**
+    * Set the idempotent.
+    * 
+    * @param idempotent the idempotent.
+    */
+   public void setIdempotent(boolean idempotent)
+   {
+      this.idempotent = idempotent;
+   }
+
+   /**
+    * Get the transactionTimeout.
+    * 
+    * @return the transactionTimeout.
+    */
+   public int getTransactionTimeout()
+   {
+      return transactionTimeout;
+   }
+
+   /**
+    * Set the transactionTimeout.
+    * 
+    * @param transactionTimeout the transactionTimeout.
+    */
+   public void setTransactionTimeout(int transactionTimeout)
+   {
+      this.transactionTimeout = transactionTimeout;
+   }
+
+   /**
+    * Whether this matches the method name
+    * 
+    * @param methodName the method name
+    * @return true for a match
+    */
+   public boolean matches(String methodName)
+   {
+      if (methodName == null)
+         return false;
+      
+      int ct, end;
+
+      String pattern = getMethodName();
+      
+      end = pattern.length();
+
+      if(end > methodName.length())
+          return false;
+
+      for(ct = 0; ct < end; ct ++)
+      {
+         char c = pattern.charAt(ct);
+         if(c == '*')
+        return true;
+         if(c != methodName.charAt(ct))
+        return false;
+      }
+      return ct == methodName.length();
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/MethodAttributesMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/MethodAttributesMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/MethodAttributesMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,107 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.jboss;
+
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.jboss.javaee.metadata.support.AbstractMappedMetaData;
+import javax.xml.bind.annotation.XmlType;
+
+ at XmlType(name="method-attributesType")
+public class MethodAttributesMetaData extends AbstractMappedMetaData<MethodAttributeMetaData>
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 4074287842839442989L;
+
+   /** The cache */
+   private transient ConcurrentHashMap<String, MethodAttributeMetaData> cache;
+   
+   /**
+    * Create a new MethodAttributesMetaData.
+    */
+   public MethodAttributesMetaData()
+   {
+      super("method-name for method attributes");
+   }
+
+   /**
+    * Is this method a read-only method
+    * 
+    * @param methodName the method name
+    * @return true for read only
+    */
+   public boolean isMethodReadOnly(String methodName)
+   {
+      MethodAttributeMetaData attribute = getMethodAttribute(methodName);
+      return attribute.isReadOnly();
+   }
+
+   /**
+    * Get the transaction timeout for the method
+    * 
+    * @param methodName the method name
+    * @return the transaction timeout
+    */
+   public int getMethodTransactionTimeout(String methodName)
+   {
+      MethodAttributeMetaData attribute = getMethodAttribute(methodName);
+      return attribute.getTransactionTimeout();
+   }
+
+   /**
+    * Get the attributes for the method
+    * 
+    * @param methodName the method name
+    * @return the attributes
+    */
+   public MethodAttributeMetaData getMethodAttribute(String methodName)
+   {
+      if (methodName == null)
+         return MethodAttributeMetaData.DEFAULT;
+      
+      MethodAttributeMetaData result = null;
+      if (cache != null)
+      {
+         result = cache.get(methodName);
+         if (result != null)
+            return result;
+      }
+      
+      for (MethodAttributeMetaData attribute : this)
+      {
+         if (attribute.matches(methodName))
+         {
+            result = attribute;
+            break;
+         }
+      }
+      
+      if (result == null)
+         result = MethodAttributeMetaData.DEFAULT;
+      
+      if (cache == null)
+         cache = new ConcurrentHashMap<String, MethodAttributeMetaData>();
+      cache.put(methodName, result);
+      
+      return result;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/RemoteBindingMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/RemoteBindingMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/RemoteBindingMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,142 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.jboss;
+
+import org.jboss.javaee.metadata.support.IdMetaDataImplWithDescriptions;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * RemoteBindingMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="remote-bindingType")
+public class RemoteBindingMetaData extends IdMetaDataImplWithDescriptions
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 5521570230026108413L;
+
+   /** The jndi name */
+   private String jndiName;
+
+   /** The client bind url */
+   private String clientBindUrl;
+   
+   /** The interceptor stack */
+   private String interceptorStack;
+   
+   /** The proxy factory */
+   private String proxyFactory;
+   
+   /**
+    * Get the jndiName.
+    * 
+    * @return the jndiName.
+    */
+   public String getJndiName()
+   {
+      return jndiName;
+   }
+
+   /**
+    * Set the jndiName.
+    * 
+    * @param jndiName the jndiName.
+    * @throws IllegalArgumentException for a null jndiName
+    */
+   public void setJndiName(String jndiName)
+   {
+      if (jndiName == null)
+         throw new IllegalArgumentException("Null jndiName");
+      this.jndiName = jndiName;
+   }
+
+   /**
+    * Get the clientBindUrl.
+    * 
+    * @return the clientBindUrl.
+    */
+   public String getClientBindUrl()
+   {
+      return clientBindUrl;
+   }
+
+   /**
+    * Set the clientBindUrl.
+    * 
+    * @param clientBindUrl the clientBindUrl.
+    * @throws IllegalArgumentException for a null clientBindUrl
+    */
+   public void setClientBindUrl(String clientBindUrl)
+   {
+      if (clientBindUrl == null)
+         throw new IllegalArgumentException("Null clientBindUrl");
+      this.clientBindUrl = clientBindUrl;
+   }
+
+   /**
+    * Get the interceptorStack.
+    * 
+    * @return the interceptorStack.
+    */
+   public String getInterceptorStack()
+   {
+      return interceptorStack;
+   }
+
+   /**
+    * Set the interceptorStack.
+    * 
+    * @param interceptorStack the interceptorStack.
+    * @throws IllegalArgumentException for a null interceptorStack
+    */
+   public void setInterceptorStack(String interceptorStack)
+   {
+      if (interceptorStack == null)
+         throw new IllegalArgumentException("Null interceptorStack");
+      this.interceptorStack = interceptorStack;
+   }
+
+   /**
+    * Get the proxyFactory.
+    * 
+    * @return the proxyFactory.
+    */
+   public String getProxyFactory()
+   {
+      return proxyFactory;
+   }
+
+   /**
+    * Set the proxyFactory.
+    * 
+    * @param proxyFactory the proxyFactory.
+    * @throws IllegalArgumentException for a null proxyFactory
+    */
+   public void setProxyFactory(String proxyFactory)
+   {
+      if (proxyFactory == null)
+         throw new IllegalArgumentException("Null proxyFactory");
+      this.proxyFactory = proxyFactory;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/ResourceManagerMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/ResourceManagerMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/ResourceManagerMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,150 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.jboss;
+
+import org.jboss.javaee.metadata.support.NamedMetaDataWithDescriptions;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * ResourceManagerMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="resource-managerType")
+public class ResourceManagerMetaData extends NamedMetaDataWithDescriptions
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 244708249262277696L;
+
+   /** The resource class */
+   private String resClass;
+   
+   /** The resource jndi name */
+   private String resJndiName;
+   
+   /** The resource url */
+   private String resUrl;
+   
+   /**
+    * Get the resName.
+    * 
+    * @return the resName.
+    */
+   public String getResName()
+   {
+      return getName();
+   }
+
+   /**
+    * Set the resName.
+    * 
+    * @param resName the resName.
+    * @throws IllegalArgumentException for a null resName
+    */
+   public void setResName(String resName)
+   {
+      setName(resName);
+   }
+
+   /**
+    * Get the resClass.
+    * 
+    * @return the resClass.
+    */
+   public String getResClass()
+   {
+      return resClass;
+   }
+
+   /**
+    * Set the resClass.
+    * 
+    * @param resClass the resClass.
+    * @throws IllegalArgumentException for a null resClass
+    */
+   public void setResClass(String resClass)
+   {
+      if (resClass == null)
+         throw new IllegalArgumentException("Null resClass");
+      this.resClass = resClass;
+   }
+
+   /**
+    * Get the resJndiName.
+    * 
+    * @return the resJndiName.
+    */
+   public String getResJndiName()
+   {
+      return resJndiName;
+   }
+
+   /**
+    * Set the resJndiName.
+    * 
+    * @param resJndiName the resJndiName.
+    * @throws IllegalArgumentException for a null resJndiName
+    */
+   public void setResJndiName(String resJndiName)
+   {
+      if (resJndiName == null)
+         throw new IllegalArgumentException("Null resJndiName");
+      this.resJndiName = resJndiName;
+   }
+
+   /**
+    * Get the resUrl.
+    * 
+    * @return the resUrl.
+    */
+   public String getResUrl()
+   {
+      return resUrl;
+   }
+
+   /**
+    * Set the resUrl.
+    * 
+    * @param resUrl the resUrl.
+    * @throws IllegalArgumentException for a null resUrl
+    */
+   public void setResUrl(String resUrl)
+   {
+      if (resUrl == null)
+         throw new IllegalArgumentException("Null resUrl");
+      this.resUrl = resUrl;
+   }
+   
+   /**
+    * Get the resource
+    * 
+    * @return the resource
+    */
+   public String getResource()
+   {
+      if (resJndiName != null)
+         return resJndiName;
+      else
+         return resUrl;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/ResourceManagersMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/ResourceManagersMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/ResourceManagersMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,46 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.jboss;
+
+import org.jboss.javaee.metadata.support.MappedMetaDataWithDescriptions;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * ResourceManagersMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="resource-managersType")
+public class ResourceManagersMetaData extends MappedMetaDataWithDescriptions<ResourceManagerMetaData>
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -4930331173512895612L;
+
+   /**
+    * Create a new ResourceManagersMetaData.
+    */
+   public ResourceManagersMetaData()
+   {
+      super("res-name for resource manager");
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/WebserviceDescriptionMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/WebserviceDescriptionMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/WebserviceDescriptionMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,137 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.jboss;
+
+import org.jboss.javaee.metadata.support.NamedMetaData;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * WebservicesDescriptionMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="webservice-descriptionType")
+public class WebserviceDescriptionMetaData extends NamedMetaData
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -3783036458417091083L;
+
+   /** The context name */
+   private String configName;
+
+   /** The context file */
+   private String configFile;
+
+   /** The wsdl publish location */
+   private String wsdlPublishLocation;
+   
+   /**
+    * Get the webservicesDescriptionName.
+    * 
+    * @return the webservicesDescriptionName.
+    */
+   public String getWebserviceDescriptionName()
+   {
+      return getName();
+   }
+
+   /**
+    * Set the webservicesDescriptionName.
+    * 
+    * @param webservicesDescriptionName the webservicesDescriptionName.
+    * @throws IllegalArgumentException for a null webservicesDescriptionName
+    */
+   public void setWebserviceDescriptionName(String webservicesDescriptionName)
+   {
+      setName(webservicesDescriptionName);
+   }
+
+   /**
+    * Get the configName.
+    * 
+    * @return the configName.
+    */
+   public String getConfigName()
+   {
+      return configName;
+   }
+
+   /**
+    * Set the configName.
+    * 
+    * @param configName the configName.
+    * @throws IllegalArgumentException for a null configName
+    */
+   public void setConfigName(String configName)
+   {
+      if (configName == null)
+         throw new IllegalArgumentException("Null configName");
+      this.configName = configName;
+   }
+
+   /**
+    * Get the configFile.
+    * 
+    * @return the configFile.
+    */
+   public String getConfigFile()
+   {
+      return configFile;
+   }
+
+   /**
+    * Set the configFile.
+    * 
+    * @param configFile the configFile.
+    * @throws IllegalArgumentException for a null configFile
+    */
+   public void setConfigFile(String configFile)
+   {
+      if (configFile == null)
+         throw new IllegalArgumentException("Null configFile");
+      this.configFile = configFile;
+   }
+
+   /**
+    * Get the wsdlPublishLocation.
+    * 
+    * @return the wsdlPublishLocation.
+    */
+   public String getWsdlPublishLocation()
+   {
+      return wsdlPublishLocation;
+   }
+
+   /**
+    * Set the wsdlPublishLocation.
+    * 
+    * @param wsdlPublishLocation the wsdlPublishLocation.
+    * @throws IllegalArgumentException for a null wsdlPublishLocation
+    */
+   public void setWsdlPublishLocation(String wsdlPublishLocation)
+   {
+      if (wsdlPublishLocation == null)
+         throw new IllegalArgumentException("Null wsdlPublishLocation");
+      this.wsdlPublishLocation = wsdlPublishLocation;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/WebserviceDescriptionsMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/WebserviceDescriptionsMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/WebserviceDescriptionsMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,44 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.jboss;
+
+import org.jboss.javaee.metadata.support.AbstractMappedMetaData;
+
+/**
+ * WebservicesDescriptionsMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class WebserviceDescriptionsMetaData extends AbstractMappedMetaData<WebserviceDescriptionMetaData>
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -1286417060419536332L;
+
+   /**
+    * Create a new WebservicesDescriptionsMetaData.
+    */
+   public WebserviceDescriptionsMetaData()
+   {
+      super("webservice-description-name for webservice description");
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/WebservicesMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/WebservicesMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/jboss/WebservicesMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,92 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.jboss;
+
+import org.jboss.javaee.metadata.support.IdMetaDataImpl;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * WebservicesMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="webservicesType")
+public class WebservicesMetaData extends IdMetaDataImpl
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -3222358198684762084L;
+
+   /** The context root */
+   private String contextRoot;
+
+   /** The webservice descriptions */
+   private WebserviceDescriptionsMetaData webserviceDescriptions;
+   
+   /**
+    * Get the contextRoot.
+    * 
+    * @return the contextRoot.
+    */
+   public String getContextRoot()
+   {
+      return contextRoot;
+   }
+
+   /**
+    * Set the contextRoot.
+    * 
+    * @param contextRoot the contextRoot.
+    * @throws IllegalArgumentException for a null contextRoot
+    */
+   public void setContextRoot(String contextRoot)
+   {
+      if (contextRoot == null)
+         throw new IllegalArgumentException("Null contextRoot");
+      this.contextRoot = contextRoot;
+   }
+
+   /**
+    * Get the webserviceDescriptions.
+    * 
+    * @return the webserviceDescriptions.
+    */
+   public WebserviceDescriptionsMetaData getWebserviceDescriptions()
+   {
+      return webserviceDescriptions;
+   }
+
+   /**
+    * Set the webserviceDescriptions.
+    * 
+    * @param webserviceDescriptions the webserviceDescriptions.
+    * @throws IllegalArgumentException for a null webserviceDescriptions
+    */
+   @XmlElement(name="webservice-description")
+   public void setWebserviceDescriptions(WebserviceDescriptionsMetaData webserviceDescriptions)
+   {
+      if (webserviceDescriptions == null)
+         throw new IllegalArgumentException("Null webserviceDescriptions");
+      this.webserviceDescriptions = webserviceDescriptions;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ActivationConfigMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ActivationConfigMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ActivationConfigMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,74 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.IdMetaDataImplWithDescriptions;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * ActivationConfigMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="activation-configType")
+public class ActivationConfigMetaData extends IdMetaDataImplWithDescriptions
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -9138498601978922673L;
+
+   /** The activation config properties */
+   private ActivationConfigPropertiesMetaData activationConfigProperties;
+   
+   /**
+    * Create a new CMPFieldMetaData.
+    */
+   public ActivationConfigMetaData()
+   {
+      // For serialization
+   }
+
+   /**
+    * Get the activationConfigProperties.
+    * 
+    * @return the activationConfigProperties.
+    */
+   public ActivationConfigPropertiesMetaData getActivationConfigProperties()
+   {
+      return activationConfigProperties;
+   }
+
+   /**
+    * Set the activationConfigProperties.
+    * 
+    * @param activationConfigProperties the activationConfigProperties.
+    * @throws IllegalArgumentException for a null activationConfigProperties
+    */
+   @XmlElement(name="activation-config-property")
+   public void setActivationConfigProperties(ActivationConfigPropertiesMetaData activationConfigProperties)
+   {
+      if (activationConfigProperties == null)
+         throw new IllegalArgumentException("Null activationConfigProperties");
+      this.activationConfigProperties = activationConfigProperties;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ActivationConfigPropertiesMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ActivationConfigPropertiesMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ActivationConfigPropertiesMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,44 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.AbstractMappedMetaData;
+
+/**
+ * ActivationConfigPropertiesMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ActivationConfigPropertiesMetaData extends AbstractMappedMetaData<ActivationConfigPropertyMetaData>
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 8065908912716344436L;
+
+   /**
+    * Create a new ActivationConfigPropertiesMetaData.
+    */
+   public ActivationConfigPropertiesMetaData()
+   {
+      super("activation config property name");
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ActivationConfigPropertyMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ActivationConfigPropertyMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ActivationConfigPropertyMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,96 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.NamedMetaData;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * ActivationConfigPropertyMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="activation-config-propertyType")
+public class ActivationConfigPropertyMetaData extends NamedMetaData
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -2551310342222240351L;
+
+   /** The value */
+   private String value;
+   
+   /**
+    * Create a new ActivationConfigMetaData.
+    */
+   public ActivationConfigPropertyMetaData()
+   {
+      // For serialization
+   }
+
+   /**
+    * Get the activationConfigPropertyName.
+    * 
+    * @return the activationConfigPropertyName.
+    */
+   public String getActivationConfigPropertyName()
+   {
+      return getName();
+   }
+
+   /**
+    * Set the activationConfigPropertyName.
+    * 
+    * @param activationConfigPropertyName the activationConfigPropertyName.
+    * @throws IllegalArgumentException for a null activationConfigPropertyName
+    */
+   public void setActivationConfigPropertyName(String activationConfigPropertyName)
+   {
+      setName(activationConfigPropertyName);
+   }
+
+   /**
+    * Get the value.
+    * 
+    * @return the value.
+    */
+   public String getValue()
+   {
+      return value;
+   }
+
+   /**
+    * Set the value.
+    * 
+    * @param value the value.
+    * @throws IllegalArgumentException for a null value
+    */
+   @XmlElement(name="activation-config-property-value")
+   public void setValue(String value)
+   {
+      if (value == null)
+         throw new IllegalArgumentException("Null value");
+      this.value = value;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ApplicationExceptionMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ApplicationExceptionMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ApplicationExceptionMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,90 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.NamedMetaData;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * ApplicationExceptionMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="application-exceptionType")
+public class ApplicationExceptionMetaData extends NamedMetaData
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -485493144287221056L;
+   
+   /** Whether to rollback */
+   private boolean rollback = false;
+   
+   /**
+    * Create a new ApplicationExceptionMetaData.
+    */
+   public ApplicationExceptionMetaData()
+   {
+      // For serialization
+   }
+   
+   /**
+    * Get the exceptionClass.
+    * 
+    * @return the exceptionClass.
+    */
+   public String getExceptionClass()
+   {
+      return getName();
+   }
+
+   /**
+    * Set the exceptionClass.
+    * 
+    * @param exceptionClass the exceptionClass.
+    * @throws IllegalArgumentException for a null exceptionClass
+    */
+   public void setExceptionClass(String exceptionClass)
+   {
+      setName(exceptionClass);
+   }
+
+   /**
+    * Get the rollback.
+    * 
+    * @return the rollback.
+    */
+   public boolean isRollback()
+   {
+      return rollback;
+   }
+
+   /**
+    * Set the rollback.
+    * 
+    * @param rollback the rollback.
+    */
+   public void setRollback(boolean rollback)
+   {
+      this.rollback = rollback;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ApplicationExceptionsMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ApplicationExceptionsMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ApplicationExceptionsMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,44 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.AbstractMappedMetaData;
+
+/**
+ * ApplicationExceptionsMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ApplicationExceptionsMetaData extends AbstractMappedMetaData<ApplicationExceptionMetaData>
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -5880146271705804091L;
+
+   /**
+    * Create a new ApplicationExceptionsMetaData.
+    */
+   public ApplicationExceptionsMetaData()
+   {
+      super("application exception class");
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/AroundInvokeMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/AroundInvokeMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/AroundInvokeMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,101 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import java.io.Serializable;
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * AroundInvokeMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="around-invokeType")
+public class AroundInvokeMetaData implements Serializable
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -4782968110296545024L;
+
+   /** The class */
+   private String className;
+   
+   /** The method name */
+   private String methodName;
+   
+   /**
+    * Create a new AroundInvokeMetaData.
+    */
+   public AroundInvokeMetaData()
+   {
+      // For serialization
+   }
+
+   /**
+    * Get the className.
+    * 
+    * @return the className.
+    */
+   public String getClassName()
+   {
+      return className;
+   }
+
+   /**
+    * Set the className.
+    * 
+    * @param className the className.
+    * @throws IllegalArgumentException for a null className
+    */
+   @XmlElement(name="class")
+   public void setClassName(String className)
+   {
+      if (className == null)
+         throw new IllegalArgumentException("Null className");
+      this.className = className;
+   }
+
+   /**
+    * Get the methodName.
+    * 
+    * @return the methodName.
+    */
+   public String getMethodName()
+   {
+      return methodName;
+   }
+
+   /**
+    * Set the methodName.
+    * 
+    * @param methodName the methodName.
+    * @throws IllegalArgumentException for a null methodName
+    */
+   public void setMethodName(String methodName)
+   {
+      if (methodName == null)
+         throw new IllegalArgumentException("Null methodName");
+      this.methodName = methodName;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/AroundInvokesMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/AroundInvokesMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/AroundInvokesMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,44 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.NonNullLinkedHashSet;
+
+/**
+ * AroundInvokesMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class AroundInvokesMetaData extends NonNullLinkedHashSet<AroundInvokeMetaData>
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 3091116374471499482L;
+
+   /**
+    * Create a new AroundInvokesMetaData.
+    */
+   public AroundInvokesMetaData()
+   {
+      // For serialization
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/AssemblyDescriptorMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/AssemblyDescriptorMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/AssemblyDescriptorMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,319 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.spec.MessageDestinationMetaData;
+import org.jboss.javaee.metadata.spec.MessageDestinationsMetaData;
+import org.jboss.javaee.metadata.spec.SecurityRolesMetaData;
+import org.jboss.javaee.metadata.support.IdMetaDataImpl;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * AssemblyDescriptorMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="assembly-descriptorType")
+public class AssemblyDescriptorMetaData extends IdMetaDataImpl
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 7634431073492003512L;
+
+   /** The security roles */
+   private SecurityRolesMetaData securityRoles;
+
+   /** The method permissions */
+   private MethodPermissionsMetaData methodPermissions;
+   
+   /** The container transactions */
+   private ContainerTransactionsMetaData containerTransactions;
+   
+   /** The interceptor bindings */
+   private InterceptorBindingsMetaData interceptorBindings;
+
+   /** The message destinations */
+   private MessageDestinationsMetaData messageDestinations;
+   
+   /** The exclude list */
+   private ExcludeListMetaData excludeList;
+   
+   /** The application exceptions */
+   private ApplicationExceptionsMetaData applicationExceptions;
+
+   /**
+    * Create a new AssemblyDescriptorMetaData
+    */
+   public AssemblyDescriptorMetaData()
+   {
+      // For serialization
+   }
+
+   /**
+    * Get the securityRoles.
+    * 
+    * @return the securityRoles.
+    */
+   public SecurityRolesMetaData getSecurityRoles()
+   {
+      return securityRoles;
+   }
+
+   /**
+    * Set the securityRoles.
+    * 
+    * @param securityRoles the securityRoles.
+    * @throws IllegalArgumentException for a null securityRoles
+    */
+   @XmlElement(name="security-role")
+   public void setSecurityRoles(SecurityRolesMetaData securityRoles)
+   {
+      if (securityRoles == null)
+         throw new IllegalArgumentException("Null securityRoles");
+      this.securityRoles = securityRoles;
+   }
+
+   /**
+    * Get the methodPermissions.
+    * 
+    * @return the methodPermissions.
+    */
+   public MethodPermissionsMetaData getMethodPermissions()
+   {
+      return methodPermissions;
+   }
+
+   /**
+    * Set the methodPermissions.
+    * 
+    * @param methodPermissions the methodPermissions.
+    * @throws IllegalArgumentException for a null methodPermissions
+    */
+   @XmlElement(name="method-permission")
+   public void setMethodPermissions(MethodPermissionsMetaData methodPermissions)
+   {
+      if (methodPermissions == null)
+         throw new IllegalArgumentException("Null methodPermissions");
+      this.methodPermissions = methodPermissions;
+   }
+
+   /**
+    * Get the methods permissions for an ejb
+    * 
+    * @param ejbName the ejb name
+    * @return the method permissions or null for no result
+    * @throws IllegalArgumentException for a null ejb name
+    */
+   public MethodPermissionsMetaData getMethodPermissionsByEjbName(String ejbName)
+   {
+      if (ejbName == null)
+         throw new IllegalArgumentException("Null ejbName");
+
+      if (methodPermissions == null)
+         return null;
+      return methodPermissions.getMethodPermissionsByEjbName(ejbName);
+   }
+
+   /**
+    * Get the containerTransactions.
+    * 
+    * @return the containerTransactions.
+    */
+   public ContainerTransactionsMetaData getContainerTransactions()
+   {
+      return containerTransactions;
+   }
+
+   /**
+    * Set the containerTransactions.
+    * 
+    * @param containerTransactions the containerTransactions.
+    * @throws IllegalArgumentException for a null containerTransactions
+    */
+   @XmlElement(name="container-transaction")
+   public void setContainerTransactions(ContainerTransactionsMetaData containerTransactions)
+   {
+      if (containerTransactions == null)
+         throw new IllegalArgumentException("Null containerTransactions");
+      this.containerTransactions = containerTransactions;
+   }
+
+   /**
+    * Get the container transactions for an ejb
+    * 
+    * @param ejbName the ejb name
+    * @return the container transactions or null for no result
+    * @throws IllegalArgumentException for a null ejb name
+    */
+   public ContainerTransactionsMetaData getContainerTransactionsByEjbName(String ejbName)
+   {
+      if (ejbName == null)
+         throw new IllegalArgumentException("Null ejbName");
+
+      if (containerTransactions == null)
+         return null;
+      return containerTransactions.getContainerTransactionsByEjbName(ejbName);
+   }
+
+   /**
+    * Get the interceptorBindings.
+    * 
+    * @return the interceptorBindings.
+    */
+   public InterceptorBindingsMetaData getInterceptorBindings()
+   {
+      return interceptorBindings;
+   }
+
+   /**
+    * Set the interceptorBindings.
+    * 
+    * @param interceptorBindings the interceptorBindings.
+    * @throws IllegalArgumentException for a null interceptorBindings
+    */
+   @XmlElement(name="interceptor-binding", required=false)
+   public void setInterceptorBindings(InterceptorBindingsMetaData interceptorBindings)
+   {
+      if (interceptorBindings == null)
+         throw new IllegalArgumentException("Null interceptorBindings");
+      this.interceptorBindings = interceptorBindings;
+   }
+
+   /**
+    * Get the interceptor binding for an ejb
+    * 
+    * @param ejbName the ejb name
+    * @return the interceptor binding or null for no result
+    * @throws IllegalArgumentException for a null ejb name
+    */
+   public InterceptorBindingMetaData getInterceptorBindingByEjbName(String ejbName)
+   {
+      if (ejbName == null)
+         throw new IllegalArgumentException("Null ejbName");
+
+      if (interceptorBindings == null)
+         return null;
+      return interceptorBindings.get(ejbName);
+   }
+
+   /**
+    * Get the messageDestinations.
+    * 
+    * @return the messageDestinations.
+    */
+   public MessageDestinationsMetaData getMessageDestinations()
+   {
+      return messageDestinations;
+   }
+
+   /**
+    * Set the messageDestinations.
+    * 
+    * @param messageDestinations the messageDestinations.
+    * @throws IllegalArgumentException for a null messageDestinations
+    */
+   @XmlElement(name="message-destination")
+   public void setMessageDestinations(MessageDestinationsMetaData messageDestinations)
+   {
+      if (messageDestinations == null)
+         throw new IllegalArgumentException("Null messageDestinations");
+      this.messageDestinations = messageDestinations;
+   }
+
+   /**
+    * Get a message destination
+    * 
+    * @param name the name of the destination
+    * @return the destination or null if not found
+    */
+   public MessageDestinationMetaData getMessageDestination(String name)
+   {
+      if (messageDestinations == null)
+         return null;
+      return messageDestinations.get(name);
+   }
+   
+   /**
+    * Get the excludeList.
+    * 
+    * @return the excludeList.
+    */
+   public ExcludeListMetaData getExcludeList()
+   {
+      return excludeList;
+   }
+
+   /**
+    * Set the excludeList.
+    * 
+    * @param excludeList the excludeList.
+    * @throws IllegalArgumentException for a null excludeList
+    */
+   public void setExcludeList(ExcludeListMetaData excludeList)
+   {
+      if (excludeList == null)
+         throw new IllegalArgumentException("Null excludeList");
+      this.excludeList = excludeList;
+   }
+
+   /**
+    * Get the exclude list for an ejb
+    * 
+    * @param ejbName the ejb name
+    * @return the exclude list or null for no result
+    * @throws IllegalArgumentException for a null ejb name
+    */
+   public ExcludeListMetaData getExcludeListByEjbName(String ejbName)
+   {
+      if (ejbName == null)
+         throw new IllegalArgumentException("Null ejbName");
+
+      if (excludeList == null)
+         return null;
+      return excludeList.getExcludeListByEjbName(ejbName);
+   }
+
+   /**
+    * Get the applicationExceptions.
+    * 
+    * @return the applicationExceptions.
+    */
+   public ApplicationExceptionsMetaData getApplicationExceptions()
+   {
+      return applicationExceptions;
+   }
+
+   /**
+    * Set the applicationExceptions.
+    * 
+    * @param applicationExceptions the applicationExceptions.
+    * @throws IllegalArgumentException for a null applicationExceptions
+    */
+   @XmlElement(name="application-exception", required=false)
+   public void setApplicationExceptions(ApplicationExceptionsMetaData applicationExceptions)
+   {
+      if (applicationExceptions == null)
+         throw new IllegalArgumentException("Null applicationExceptions");
+      this.applicationExceptions = applicationExceptions;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/BusinessLocalsMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/BusinessLocalsMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/BusinessLocalsMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,44 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.NonNullLinkedHashSet;
+
+/**
+ * BusinessLocalsMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class BusinessLocalsMetaData extends NonNullLinkedHashSet<String>
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -2258099610577083158L;
+
+   /**
+    * Create a new BusinessLocalsMetaData.
+    */
+   public BusinessLocalsMetaData()
+   {
+      // For serialization
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/BusinessRemotesMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/BusinessRemotesMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/BusinessRemotesMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,44 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.NonNullLinkedHashSet;
+
+/**
+ * BusinessRemotesMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class BusinessRemotesMetaData extends NonNullLinkedHashSet<String>
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -1866760573785099573L;
+
+   /**
+    * Create a new BusinessRemotesMetaData.
+    */
+   public BusinessRemotesMetaData()
+   {
+      // For serialization
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/CMPFieldMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/CMPFieldMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/CMPFieldMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,67 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.NamedMetaDataWithDescriptions;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * CMPFieldMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="cmp-fieldType")
+public class CMPFieldMetaData extends NamedMetaDataWithDescriptions
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -9138498601978922673L;
+
+   /**
+    * Create a new CMPFieldMetaData.
+    */
+   public CMPFieldMetaData()
+   {
+      // For serialization
+   }
+
+   /**
+    * Get the fieldName.
+    * 
+    * @return the fieldName.
+    */
+   public String getFieldName()
+   {
+      return getName();
+   }
+
+   /**
+    * Set the fieldName.
+    * 
+    * @param fieldName the fieldName.
+    * @throws IllegalArgumentException for a null fieldName
+    */
+   public void setFieldName(String fieldName)
+   {
+      setName(fieldName);
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/CMPFieldsMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/CMPFieldsMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/CMPFieldsMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,44 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.AbstractMappedMetaData;
+
+/**
+ * CMPFieldsMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class CMPFieldsMetaData extends AbstractMappedMetaData<CMPFieldMetaData>
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -8076951897867288171L;
+
+   /**
+    * Create a new CMPFieldsMetaData.
+    */
+   public CMPFieldsMetaData()
+   {
+      super("cmp field name");
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/CMRFieldMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/CMRFieldMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/CMRFieldMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,93 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.NamedMetaDataWithDescriptions;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * CMRFieldMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="cmr-fieldType")
+public class CMRFieldMetaData extends NamedMetaDataWithDescriptions
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 8616356511004497092L;
+
+   /** The cmr field type */
+   private String cmrFieldType;
+
+   /**
+    * Create a new CMRFieldMetaData.
+    */
+   public CMRFieldMetaData()
+   {
+      // For serialization
+   }
+   
+   /**
+    * Get the cmrFieldName.
+    * 
+    * @return the cmrFieldName.
+    */
+   public String getCmrFieldName()
+   {
+      return getName();
+   }
+
+   /**
+    * Set the cmrFieldName.
+    * 
+    * @param cmrFieldName the cmrFieldName.
+    * @throws IllegalArgumentException for a null cmrFieldName
+    */
+   public void setCmrFieldName(String cmrFieldName)
+   {
+      setName(cmrFieldName);
+   }
+
+   /**
+    * Get the cmrFieldType.
+    * 
+    * @return the cmrFieldType.
+    */
+   public String getCmrFieldType()
+   {
+      return cmrFieldType;
+   }
+
+   /**
+    * Set the cmrFieldType.
+    * 
+    * @param cmrFieldType the cmrFieldType.
+    * @throws IllegalArgumentException for a null cmrFieldType
+    */
+   public void setCmrFieldType(String cmrFieldType)
+   {
+      if (cmrFieldType == null)
+         throw new IllegalArgumentException("Null cmrFieldType");
+      this.cmrFieldType = cmrFieldType;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ContainerTransactionMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ContainerTransactionMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ContainerTransactionMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,162 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.IdMetaDataImplWithDescriptions;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * ContainerTransactionMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="container-transactionType")
+public class ContainerTransactionMetaData extends IdMetaDataImplWithDescriptions
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -8080829946285127796L;
+   
+   /** The methods */
+   private MethodsMetaData methods;
+   
+   /** The transaction attribute */
+   private TransAttributeType transAttribute;
+   
+   /**
+    * Create a new MethodPermissionMetaData.
+    */
+   public ContainerTransactionMetaData()
+   {
+      // For serialization
+   }
+
+   /**
+    * Get the methods.
+    * 
+    * @return the methods.
+    */
+   public MethodsMetaData getMethods()
+   {
+      return methods;
+   }
+
+   /**
+    * Set the methods.
+    * 
+    * @param methods the methods.
+    * @throws IllegalArgumentException for a null methods
+    */
+   @XmlElement(name="method")
+   public void setMethods(MethodsMetaData methods)
+   {
+      if (methods == null)
+         throw new IllegalArgumentException("Null methods");
+      this.methods = methods;
+   }
+
+   /**
+    * Get the transactionAttribute.
+    * 
+    * @return the transactionAttribute.
+    */
+   @XmlElement(name="trans-attribute")
+   public TransAttributeType getTransAttribute()
+   {
+      return transAttribute;
+   }
+
+   /**
+    * Set the transactionAttribute.
+    * 
+    * @param transactionAttribute the transactionAttribute.
+    * @throws IllegalArgumentException for a null transactionAttribute
+    */
+   public void setTransAttribute(TransAttributeType transactionAttribute)
+   {
+      if (transactionAttribute == null)
+         throw new IllegalArgumentException("Null transactionAttribute");
+      this.transAttribute = transactionAttribute;
+   }
+
+   /**
+    * Get the container transaction for an ejb
+    * 
+    * @param ejbName the ejb name
+    * @return the container transactions or null for no result
+    * @throws IllegalArgumentException for a null ejb name
+    */
+   public ContainerTransactionMetaData getContainerTransactionsByEjbName(String ejbName)
+   {
+      if (ejbName == null)
+         throw new IllegalArgumentException("Null ejbName");
+
+      if (methods == null)
+         return null;
+      
+      MethodsMetaData ejbMethods = methods.getMethodsByEjbName(ejbName);
+      if (ejbMethods == null)
+         return null;
+      
+      ContainerTransactionMetaData result = clone();
+      result.setMethods(ejbMethods);
+      return result;
+   }
+   
+   /**
+    * Whether this matches
+    * 
+    * @param methodName the method name
+    * @param params the parameters
+    * @param interfaceType the interface type
+    * @return true when it matches
+    */
+   public boolean matches(String methodName, Class[] params, MethodInterfaceType interfaceType)
+   {
+      if (methods == null)
+         return false;
+      return methods.matches(methodName, params, interfaceType);
+   }
+   
+   /**
+    * Whether this matches
+    * 
+    * @param methodName the method name
+    * @param params the parameters
+    * @param interfaceType the interface type
+    * @param bestMatch the previous best match
+    * @return the best match
+    */
+   public MethodMetaData bestMatch(String methodName, Class[] params, MethodInterfaceType interfaceType, MethodMetaData bestMatch)
+   {
+      if (methods == null)
+         return bestMatch;
+      return methods.bestMatch(methodName, params, interfaceType, bestMatch);
+   }
+
+   @Override
+   public ContainerTransactionMetaData clone()
+   {
+      return (ContainerTransactionMetaData) super.clone();
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ContainerTransactionsMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ContainerTransactionsMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ContainerTransactionsMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,73 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.NonNullLinkedHashSet;
+
+/**
+ * ContainerTransactionsMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ContainerTransactionsMetaData extends NonNullLinkedHashSet<ContainerTransactionMetaData>
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -1360496515258292681L;
+
+   /**
+    * Create a new ContainerTransactionsMetaData.
+    */
+   public ContainerTransactionsMetaData()
+   {
+      // For serialization
+   }
+
+   /**
+    * Get the container transactions for an ejb
+    * 
+    * @param ejbName the ejb name
+    * @return the container transactions or null for no result
+    * @throws IllegalArgumentException for a null ejb name
+    */
+   public ContainerTransactionsMetaData getContainerTransactionsByEjbName(String ejbName)
+   {
+      if (ejbName == null)
+         throw new IllegalArgumentException("Null ejbName");
+
+      if (isEmpty())
+         return null;
+      
+      ContainerTransactionsMetaData result = null;
+      for (ContainerTransactionMetaData transaction : this)
+      {
+         ContainerTransactionMetaData ejbTransaction = transaction.getContainerTransactionsByEjbName(ejbName);
+         if (ejbTransaction != null)
+         {
+            if (result == null)
+               result = new ContainerTransactionsMetaData();
+            result.add(ejbTransaction);
+         }
+      }
+      return result;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/EjbJar21MetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/EjbJar21MetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/EjbJar21MetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,78 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.spec.JavaEEMetaDataConstants;
+import org.jboss.xb.annotations.JBossXmlSchema;
+
+import javax.xml.bind.annotation.XmlNsForm;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * EjbJar21MetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlRootElement(name="ejb-jar", namespace=JavaEEMetaDataConstants.J2EE_NS)
+ at JBossXmlSchema(ignoreUnresolvedFieldOrClass=false,
+      namespace="http://java.sun.com/xml/ns/j2ee",
+      elementFormDefault=XmlNsForm.QUALIFIED)
+ at XmlType(name="ejb-jarType",
+      namespace=JavaEEMetaDataConstants.J2EE_NS,
+      propOrder={"descriptionGroup", "enterpriseBeans", "relationships", "assemblyDescriptor", "ejbClientJar", "version", "id"})
+/*@XmlTypeImpls
+({
+   @XmlTypeImpl(name="fully-qualified-classType", startElementCreatesObject=false),
+   @XmlTypeImpl(name="java-typeType", startElementCreatesObject=false),
+   @XmlTypeImpl(name="java-identifierType", startElementCreatesObject=false),
+   @XmlTypeImpl(name="true-falseType", startElementCreatesObject=false),
+   @XmlTypeImpl(name="string", namespace=JavaEEMetaDataConstants.J2EE_NS, startElementCreatesObject=false),
+   @XmlTypeImpl(name="xsdStringType", startElementCreatesObject=false),
+   @XmlTypeImpl(name="env-entry-type-valuesType", startElementCreatesObject=false),
+   @XmlTypeImpl(name="ejb-linkType", startElementCreatesObject=false),
+   @XmlTypeImpl(name="jndi-nameType", startElementCreatesObject=false),
+   @XmlTypeImpl(name="role-nameType", startElementCreatesObject=false),
+   @XmlTypeImpl(name="message-destination-typeType", startElementCreatesObject=false),
+   @XmlTypeImpl(name="message-destination-linkType", startElementCreatesObject=false),
+})
+*/
+public class EjbJar21MetaData extends EjbJar2xMetaData
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 7919600230211960565L;
+   
+   /**
+    * Create a new EjbJar21MetaData.
+    */
+   public EjbJar21MetaData()
+   {
+      // For serialization
+   }
+   
+   @Override
+   public boolean isEJB21()
+   {
+      return true;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/EjbJar2xMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/EjbJar2xMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/EjbJar2xMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,76 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import java.math.BigDecimal;
+
+/**
+ * EjbJar2xMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class EjbJar2xMetaData extends EjbJarMetaData
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 809339942454480150L;
+
+   /** The version */
+   private BigDecimal version;
+   
+   /**
+    * Create a new EjbJarMetaData.
+    */
+   public EjbJar2xMetaData()
+   {
+      // For serialization
+   }
+   
+   @Override
+   public boolean isEJB2x()
+   {
+      return true;
+   }
+
+   /**
+    * Get the version.
+    * 
+    * @return the version.
+    */
+   public BigDecimal getVersion()
+   {
+      return version;
+   }
+
+   /**
+    * Set the version.
+    * 
+    * @param version the version.
+    * @throws IllegalArgumentException for a null version
+    */
+   public void setVersion(BigDecimal version)
+   {
+      if (version == null)
+         throw new IllegalArgumentException("Null version");
+      this.version = version;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/EjbJar30MetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/EjbJar30MetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/EjbJar30MetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,63 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.spec.JavaEEMetaDataConstants;
+import org.jboss.xb.annotations.JBossXmlSchema;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * EjbJar30MetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at JBossXmlSchema(ignoreUnresolvedFieldOrClass=false)
+ at XmlType(name="ejb-jarType", namespace=JavaEEMetaDataConstants.JAVAEE_NS)
+/*@XmlTypeImpls
+({
+   @XmlTypeImpl(name="fully-qualified-classType", startElementCreatesObject=false),
+   @XmlTypeImpl(name="java-typeType", startElementCreatesObject=false),
+   @XmlTypeImpl(name="java-identifierType", startElementCreatesObject=false),
+   @XmlTypeImpl(name="true-falseType", startElementCreatesObject=false),
+   @XmlTypeImpl(name="string", namespace=JavaEEMetaDataConstants.JAVAEE_NS, startElementCreatesObject=false),
+   @XmlTypeImpl(name="xsdStringType", startElementCreatesObject=false),
+   @XmlTypeImpl(name="env-entry-type-valuesType", startElementCreatesObject=false),
+   @XmlTypeImpl(name="ejb-linkType", startElementCreatesObject=false),
+   @XmlTypeImpl(name="jndi-nameType", startElementCreatesObject=false),
+   @XmlTypeImpl(name="role-nameType", startElementCreatesObject=false),
+   @XmlTypeImpl(name="message-destination-typeType", startElementCreatesObject=false),
+   @XmlTypeImpl(name="message-destination-linkType", startElementCreatesObject=false),
+})
+*/public class EjbJar30MetaData extends EjbJar3xMetaData
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 4822895045737616761L;
+
+   /**
+    * Create a new EjbJar30MetaData.
+    */
+   public EjbJar30MetaData()
+   {
+      // For serialization
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/EjbJar3xMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/EjbJar3xMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/EjbJar3xMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,123 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+/**
+ * EjbJar3xMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public abstract class EjbJar3xMetaData extends EjbJarMetaData
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 272246605720472113L;
+
+   /** The version */
+   private String version;
+   
+   /** Metadata complete */
+   private boolean metadataComplete;
+   
+   /** The interceptors */
+   private InterceptorsMetaData interceptors;
+   
+   /**
+    * Create a new EjbJar3xMetaData.
+    */
+   public EjbJar3xMetaData()
+   {
+      // For serialization
+   }
+   
+   @Override
+   public boolean isEJB3x()
+   {
+      return true;
+   }
+
+   /**
+    * Get the version.
+    * 
+    * @return the version.
+    */
+   public String getVersion()
+   {
+      return version;
+   }
+
+   /**
+    * Set the version.
+    * 
+    * @param version the version.
+    * @throws IllegalArgumentException for a null version
+    */
+   public void setVersion(String version)
+   {
+      if (version == null)
+         throw new IllegalArgumentException("Null version");
+      this.version = version;
+   }
+
+   /**
+    * Get the metadataComplete.
+    * 
+    * @return the metadataComplete.
+    */
+   public boolean isMetadataComplete()
+   {
+      return metadataComplete;
+   }
+
+   /**
+    * Set the metadataComplete.
+    * 
+    * @param metadataComplete the metadataComplete.
+    */
+   public void setMetadataComplete(boolean metadataComplete)
+   {
+      this.metadataComplete = metadataComplete;
+   }
+
+   /**
+    * Get the interceptors.
+    * 
+    * @return the interceptors.
+    */
+   public InterceptorsMetaData getInterceptors()
+   {
+      return interceptors;
+   }
+
+   /**
+    * Set the interceptors.
+    * 
+    * @param interceptors the interceptors.
+    * @throws IllegalArgumentException for a null interceptors
+    */
+   public void setInterceptors(InterceptorsMetaData interceptors)
+   {
+      if (interceptors == null)
+         throw new IllegalArgumentException("Null interceptors");
+      this.interceptors = interceptors;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/EjbJarMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/EjbJarMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/EjbJarMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,189 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.IdMetaDataImplWithDescriptionGroup;
+
+/**
+ * EjbJarMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public abstract class EjbJarMetaData extends IdMetaDataImplWithDescriptionGroup
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 809339942454480150L;
+
+   /** The ejb client jar */
+   private String ejbClientJar;
+
+   /** The enterprise beans */
+   private EnterpriseBeansMetaData enterpriseBeans;
+
+   /** The relations */
+   private RelationsMetaData relationships;
+
+   /** The assembly descriptor */
+   private AssemblyDescriptorMetaData assemblyDescriptor;
+   
+   /**
+    * Create a new EjbJarMetaData.
+    */
+   public EjbJarMetaData()
+   {
+      // For serialization
+   }
+
+   /**
+    * Whether this is ejb1.x
+    * 
+    * @return true when ejb1.x
+    */
+   public boolean isEJB1x()
+   {
+      return false;
+   }
+
+   /**
+    * Whether this is ejb2.x
+    * 
+    * @return true when ejb2.x
+    */
+   public boolean isEJB2x()
+   {
+      return false;
+   }
+
+   /**
+    * Whether this is ejb2.1
+    * 
+    * @return true when ejb2.1
+    */
+   public boolean isEJB21()
+   {
+      return false;
+   }
+
+   /**
+    * Whether this is ejb3.x
+    * 
+    * @return true when ejb3.x
+    */
+   public boolean isEJB3x()
+   {
+      return false;
+   }
+   
+   /**
+    * Get the ejbClientJar.
+    * 
+    * @return the ejbClientJar.
+    */
+   public String getEjbClientJar()
+   {
+      return ejbClientJar;
+   }
+
+   /**
+    * Set the ejbClientJar.
+    * 
+    * @param ejbClientJar the ejbClientJar.
+    * @throws IllegalArgumentException for a null ejbClientJar
+    */
+   public void setEjbClientJar(String ejbClientJar)
+   {
+      if (ejbClientJar == null)
+         throw new IllegalArgumentException("Null ejbClientJar");
+      this.ejbClientJar = ejbClientJar;
+   }
+
+   /**
+    * Get the enterpriseBeans.
+    * 
+    * @return the enterpriseBeans.
+    */
+   public EnterpriseBeansMetaData getEnterpriseBeans()
+   {
+      return enterpriseBeans;
+   }
+
+   /**
+    * Set the enterpriseBeans.
+    * 
+    * @param enterpriseBeans the enterpriseBeans.
+    * @throws IllegalArgumentException for a null enterpriseBeans
+    */
+   public void setEnterpriseBeans(EnterpriseBeansMetaData enterpriseBeans)
+   {
+      if (enterpriseBeans == null)
+         throw new IllegalArgumentException("Null enterpriseBeans");
+      this.enterpriseBeans = enterpriseBeans;
+      enterpriseBeans.setEjbJarMetaData(this);
+   }
+
+   /**
+    * Get the relationships.
+    * 
+    * @return the relationships.
+    */
+   public RelationsMetaData getRelationships()
+   {
+      return relationships;
+   }
+
+   /**
+    * Set the relationships.
+    * 
+    * @param relationships the relationships.
+    * @throws IllegalArgumentException for a null relationships
+    */
+   public void setRelationships(RelationsMetaData relationships)
+   {
+      if (relationships == null)
+         throw new IllegalArgumentException("Null relationships");
+      this.relationships = relationships;
+   }
+
+   /**
+    * Get the assemblyDescriptor.
+    * 
+    * @return the assemblyDescriptor.
+    */
+   public AssemblyDescriptorMetaData getAssemblyDescriptor()
+   {
+      return assemblyDescriptor;
+   }
+
+   /**
+    * Set the assemblyDescriptor.
+    * 
+    * @param assemblyDescriptor the assemblyDescriptor.
+    * @throws IllegalArgumentException for a null assemblyDescriptor
+    */
+   public void setAssemblyDescriptor(AssemblyDescriptorMetaData assemblyDescriptor)
+   {
+      if (assemblyDescriptor == null)
+         throw new IllegalArgumentException("Null assemblyDescriptor");
+      this.assemblyDescriptor = assemblyDescriptor;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/EnterpriseBeanMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/EnterpriseBeanMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/EnterpriseBeanMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,556 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import java.lang.reflect.Method;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.jboss.javaee.metadata.spec.EJBLocalReferenceMetaData;
+import org.jboss.javaee.metadata.spec.EJBLocalReferencesMetaData;
+import org.jboss.javaee.metadata.spec.EJBReferenceMetaData;
+import org.jboss.javaee.metadata.spec.EJBReferencesMetaData;
+import org.jboss.javaee.metadata.spec.Environment;
+import org.jboss.javaee.metadata.spec.EnvironmentEntriesMetaData;
+import org.jboss.javaee.metadata.spec.EnvironmentEntryMetaData;
+import org.jboss.javaee.metadata.spec.EnvironmentRefsGroupMetaData;
+import org.jboss.javaee.metadata.spec.LifecycleCallbacksMetaData;
+import org.jboss.javaee.metadata.spec.MessageDestinationReferenceMetaData;
+import org.jboss.javaee.metadata.spec.MessageDestinationReferencesMetaData;
+import org.jboss.javaee.metadata.spec.PersistenceContextReferenceMetaData;
+import org.jboss.javaee.metadata.spec.PersistenceContextReferencesMetaData;
+import org.jboss.javaee.metadata.spec.PersistenceUnitReferenceMetaData;
+import org.jboss.javaee.metadata.spec.PersistenceUnitReferencesMetaData;
+import org.jboss.javaee.metadata.spec.ResourceEnvironmentReferenceMetaData;
+import org.jboss.javaee.metadata.spec.ResourceEnvironmentReferencesMetaData;
+import org.jboss.javaee.metadata.spec.ResourceReferenceMetaData;
+import org.jboss.javaee.metadata.spec.ResourceReferencesMetaData;
+import org.jboss.javaee.metadata.spec.ServiceReferenceMetaData;
+import org.jboss.javaee.metadata.spec.ServiceReferencesMetaData;
+import org.jboss.javaee.metadata.support.AbstractMappedMetaData;
+import org.jboss.javaee.metadata.support.NamedMetaDataWithDescriptionGroup;
+import org.jboss.xb.annotations.JBossXmlConstants;
+import org.jboss.xb.annotations.JBossXmlModelGroup;
+
+import javax.xml.bind.annotation.XmlElement;
+
+/**
+ * EnterpriseBean.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at JBossXmlModelGroup(
+      kind=JBossXmlConstants.MODEL_GROUP_CHOICE,
+      particles={
+            @JBossXmlModelGroup.Particle(element=@XmlElement(name="session"), type=SessionBeanMetaData.class),
+            @JBossXmlModelGroup.Particle(element=@XmlElement(name="entity"), type=EntityBeanMetaData.class),
+            @JBossXmlModelGroup.Particle(element=@XmlElement(name="message-driven"), type=MessageDrivenBeanMetaData.class)})
+public abstract class EnterpriseBeanMetaData extends NamedMetaDataWithDescriptionGroup implements Environment
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -10005320902508914L;
+
+   /** The enterprise bean container */
+   private EnterpriseBeansMetaData enterpriseBeansMetaData;
+
+   /** The mapped name */
+   private String mappedName;
+
+   /** The ejb class */
+   private String ejbClass;
+   
+   /** The environment */
+   private EnvironmentRefsGroupMetaData jndiEnvironmentRefsGroup;
+   
+   /** The security identity */
+   private SecurityIdentityMetaData securityIdentity;
+
+   /** The cached container transactions */
+   private transient ContainerTransactionsMetaData cachedContainerTransactions;
+   
+   /** The transaction type cache */
+   private transient ConcurrentHashMap<Method, TransAttributeType> methodTx; 
+   
+   /**
+    * Create a new EnterpriseBeanMetaData.
+    */
+   public EnterpriseBeanMetaData()
+   {
+      // For serialization
+   }
+
+   /**
+    * Set the enterpriseBeansMetaData.
+    * 
+    * @param enterpriseBeansMetaData the enterpriseBeansMetaData.
+    */
+   void setEnterpriseBeansMetaData(EnterpriseBeansMetaData enterpriseBeansMetaData)
+   {
+      this.enterpriseBeansMetaData = enterpriseBeansMetaData;
+   }
+
+   /**
+    * Get the ejbJarMetaData.
+    * 
+    * @return the ejbJarMetaData.
+    */
+   public EjbJarMetaData getEjbJarMetaData()
+   {
+      if (enterpriseBeansMetaData == null)
+         return null;
+      return enterpriseBeansMetaData.getEjbJarMetaData();
+   }
+
+   /**
+    * Get the assembly descriptor
+    * 
+    * @return the ejbJarMetaData.
+    */
+   AssemblyDescriptorMetaData getAssemblyDescriptor()
+   {
+      EjbJarMetaData ejbJar = getEjbJarMetaData();
+      if (ejbJar == null)
+         return null;
+      return ejbJar.getAssemblyDescriptor();
+   }
+   
+   /**
+    * Get the ejbName.
+    * 
+    * @return the ejbName.
+    */
+   public String getEjbName()
+   {
+      return getName();
+   }
+
+   /**
+    * Set the ejbName.
+    * 
+    * @param ejbName the ejbName.
+    * @throws IllegalArgumentException for a null ejbName
+    */
+   public void setEjbName(String ejbName)
+   {
+      setName(ejbName);
+   }
+
+   /**
+    * Whether this is a session bean
+    * 
+    * @return true when a session bean
+    */
+   public boolean isSession()
+   {
+      return false;
+   }
+
+   /**
+    * Whether this is a message driven bean
+    * 
+    * @return true when a message driven bean
+    */
+   public boolean isMessageDriven()
+   {
+      return false;
+   }
+
+   /**
+    * Whether this is an entity bean
+    * 
+    * @return true when an entity bean
+    */
+   public boolean isEntity()
+   {
+      return false;
+   }
+
+   /**
+    * Get the transactionType.
+    * 
+    * @return the transactionType.
+    */
+   public TransactionType getTransactionType()
+   {
+      return TransactionType.Container;
+   }
+
+   /**
+    * Is this container managed transactions
+    * 
+    * @return true when CMT
+    */
+   public boolean isCMT()
+   {
+      TransactionType type = getTransactionType();
+      if (type == null)
+         return true;
+      else
+         return type == TransactionType.Container;
+   }
+
+   /**
+    * Is this bean managed transactions
+    * 
+    * @return true when BMT
+    */
+   public boolean isBMT()
+   {
+      return isCMT() == false;
+   }
+   
+   /**
+    * Get the mappedName.
+    * 
+    * @return the mappedName.
+    */
+   public String getMappedName()
+   {
+      return mappedName;
+   }
+
+   /**
+    * Set the mappedName.
+    * 
+    * @param mappedName the mappedName.
+    * @throws IllegalArgumentException for a null mappedName
+    */
+   @XmlElement(required=false)
+   public void setMappedName(String mappedName)
+   {
+      if (mappedName == null)
+         throw new IllegalArgumentException("Null mappedName");
+      this.mappedName = mappedName;
+   }
+
+   /**
+    * Get the ejbClass.
+    * 
+    * @return the ejbClass.
+    */
+   public String getEjbClass()
+   {
+      return ejbClass;
+   }
+
+   /**
+    * Set the ejbClass.
+    * 
+    * @param ejbClass the ejbClass.
+    * @throws IllegalArgumentException for a null ejbClass
+    */
+   public void setEjbClass(String ejbClass)
+   {
+      if (ejbClass == null)
+         throw new IllegalArgumentException("Null ejbClass");
+      this.ejbClass = ejbClass;
+   }
+
+   /**
+    * Get the jndiEnvironmentRefsGroup.
+    * 
+    * @return the jndiEnvironmentRefsGroup.
+    */
+   public EnvironmentRefsGroupMetaData getJndiEnvironmentRefsGroup()
+   {
+      return jndiEnvironmentRefsGroup;
+   }
+
+   /**
+    * Set the jndiEnvironmentRefsGroup.
+    * 
+    * @param jndiEnvironmentRefsGroup the jndiEnvironmentRefsGroup.
+    * @throws IllegalArgumentException for a null jndiEnvironmentRefsGroup
+    */
+   public void setJndiEnvironmentRefsGroup(EnvironmentRefsGroupMetaData jndiEnvironmentRefsGroup)
+   {
+      if (jndiEnvironmentRefsGroup == null)
+         throw new IllegalArgumentException("Null jndiEnvironmentRefsGroup");
+      this.jndiEnvironmentRefsGroup = jndiEnvironmentRefsGroup;
+   }
+
+   /**
+    * Get the securityIdentity.
+    * 
+    * @return the securityIdentity.
+    */
+   public SecurityIdentityMetaData getSecurityIdentity()
+   {
+      return securityIdentity;
+   }
+
+   /**
+    * Set the securityIdentity.
+    * 
+    * @param securityIdentity the securityIdentity.
+    * @throws IllegalArgumentException for a null securityIdentity
+    */
+   public void setSecurityIdentity(SecurityIdentityMetaData securityIdentity)
+   {
+      if (securityIdentity == null)
+         throw new IllegalArgumentException("Null securityIdentity");
+      this.securityIdentity = securityIdentity;
+   }
+
+   public EJBLocalReferenceMetaData getEjbLocalReferenceByName(String name)
+   {
+      return AbstractMappedMetaData.getByName(name, getEjbLocalReferences());
+   }
+
+   public EJBLocalReferencesMetaData getEjbLocalReferences()
+   {
+      if (jndiEnvironmentRefsGroup != null)
+         return jndiEnvironmentRefsGroup.getEjbLocalReferences();
+      return null;
+   }
+
+   public EJBReferenceMetaData getEjbReferenceByName(String name)
+   {
+      return AbstractMappedMetaData.getByName(name, getEjbReferences());
+   }
+
+   public EJBReferencesMetaData getEjbReferences()
+   {
+      if (jndiEnvironmentRefsGroup != null)
+         return jndiEnvironmentRefsGroup.getEjbReferences();
+      return null;
+   }
+
+   public EnvironmentEntriesMetaData getEnvironmentEntries()
+   {
+      if (jndiEnvironmentRefsGroup != null)
+         return jndiEnvironmentRefsGroup.getEnvironmentEntries();
+      return null;
+   }
+
+   public EnvironmentEntryMetaData getEnvironmentEntryByName(String name)
+   {
+      return AbstractMappedMetaData.getByName(name, getEnvironmentEntries());
+   }
+
+   public MessageDestinationReferenceMetaData getMessageDestinationReferenceByName(String name)
+   {
+      return AbstractMappedMetaData.getByName(name, getMessageDestinationReferences());
+   }
+
+   public MessageDestinationReferencesMetaData getMessageDestinationReferences()
+   {
+      if (jndiEnvironmentRefsGroup != null)
+         return jndiEnvironmentRefsGroup.getMessageDestinationReferences();
+      return null;
+   }
+
+   public PersistenceContextReferenceMetaData getPersistenceContextReferenceByName(String name)
+   {
+      return AbstractMappedMetaData.getByName(name, getPersistenceContextRefs());
+   }
+
+   public PersistenceContextReferencesMetaData getPersistenceContextRefs()
+   {
+      if (jndiEnvironmentRefsGroup != null)
+         return jndiEnvironmentRefsGroup.getPersistenceContextRefs();
+      return null;
+   }
+
+   public PersistenceUnitReferenceMetaData getPersistenceUnitReferenceByName(String name)
+   {
+      return AbstractMappedMetaData.getByName(name, getPersistenceUnitRefs());
+   }
+
+   public PersistenceUnitReferencesMetaData getPersistenceUnitRefs()
+   {
+      if (jndiEnvironmentRefsGroup != null)
+         return jndiEnvironmentRefsGroup.getPersistenceUnitRefs();
+      return null;
+   }
+
+   public LifecycleCallbacksMetaData getPostConstructs()
+   {
+      if (jndiEnvironmentRefsGroup != null)
+         return jndiEnvironmentRefsGroup.getPostConstructs();
+      return null;
+   }
+
+   public LifecycleCallbacksMetaData getPreDestroys()
+   {
+      if (jndiEnvironmentRefsGroup != null)
+         return jndiEnvironmentRefsGroup.getPreDestroys();
+      return null;
+   }
+
+   public ResourceEnvironmentReferenceMetaData getResourceEnvironmentReferenceByName(String name)
+   {
+      return AbstractMappedMetaData.getByName(name, getResourceEnvironmentReferences());
+   }
+
+   public ResourceEnvironmentReferencesMetaData getResourceEnvironmentReferences()
+   {
+      if (jndiEnvironmentRefsGroup != null)
+         return jndiEnvironmentRefsGroup.getResourceEnvironmentReferences();
+      return null;
+   }
+
+   public ResourceReferenceMetaData getResourceReferenceByName(String name)
+   {
+      return AbstractMappedMetaData.getByName(name, getResourceReferences());
+   }
+
+   public ResourceReferencesMetaData getResourceReferences()
+   {
+      if (jndiEnvironmentRefsGroup != null)
+         return jndiEnvironmentRefsGroup.getResourceReferences();
+      return null;
+   }
+
+   public ServiceReferenceMetaData getServiceReferenceByName(String name)
+   {
+      return AbstractMappedMetaData.getByName(name, getServiceReferences());
+   }
+
+   public ServiceReferencesMetaData getServiceReferences()
+   {
+      if (jndiEnvironmentRefsGroup != null)
+         return jndiEnvironmentRefsGroup.getServiceReferences();
+      return null;
+   }
+
+   /**
+    * Get the methods permissions
+    * 
+    * @return the method permissions or null for no result
+    */
+   public MethodPermissionsMetaData getMethodPermissions()
+   {
+      AssemblyDescriptorMetaData assemblyDescriptor = getAssemblyDescriptor();
+      if (assemblyDescriptor == null)
+         return null;
+      return assemblyDescriptor.getMethodPermissionsByEjbName(getEjbName()); 
+   }
+
+   /**
+    * Get the container transactions
+    * 
+    * @return the container transactions or null for no result
+    */
+   public ContainerTransactionsMetaData getContainerTransactions()
+   {
+      if (cachedContainerTransactions != null)
+         return cachedContainerTransactions;
+      AssemblyDescriptorMetaData assemblyDescriptor = getAssemblyDescriptor();
+      if (assemblyDescriptor == null)
+         return null;
+      return assemblyDescriptor.getContainerTransactionsByEjbName(getEjbName()); 
+   }
+
+   /**
+    * Get the method transaction type
+    * 
+    * @param methodName the method name
+    * @param params the parameters
+    * @param iface the interface type
+    * @return the method transaction type
+    */
+   public TransAttributeType getMethodTransactionType(String methodName, Class[] params, MethodInterfaceType iface)
+   {
+      // default value
+      TransAttributeType result = null;
+
+      ContainerTransactionsMetaData containerTransactions = getContainerTransactions();
+      if (containerTransactions == null || containerTransactions.isEmpty())
+         return result;
+
+      ContainerTransactionMetaData bestMatchTransaction = null;
+      MethodMetaData bestMatch = null;
+      for (ContainerTransactionMetaData transaction : containerTransactions)
+      {
+         MethodMetaData match = transaction.bestMatch(methodName, params, iface, bestMatch);
+         if (match != bestMatch)
+         {
+            bestMatchTransaction = transaction;
+            bestMatch = match;
+         }
+      }
+
+      if (bestMatchTransaction != null)
+         result = bestMatchTransaction.getTransAttribute();
+
+      return result;
+   }
+
+   /**
+    * Get the transaction type
+    * 
+    * @param m the method
+    * @param iface the interface type
+    * @return the transaction type
+    */
+   public TransAttributeType getMethodTransactionType(Method m, MethodInterfaceType iface)
+   {
+      if (m == null)
+         return TransAttributeType.Supports;
+
+      TransAttributeType result = null;
+      if (methodTx != null)
+      {
+         result = methodTx.get(m);
+         if (result != null) 
+            return result;
+      }
+
+      result = getMethodTransactionType(m.getName(), m.getParameterTypes(), iface);
+
+      // provide default if method is not found in descriptor
+      if (result == null)
+         result = TransAttributeType.Required;
+
+      if (methodTx == null)
+         methodTx = new ConcurrentHashMap<Method, TransAttributeType>();
+      methodTx.put(m, result);
+      return result;
+   }
+
+   /**
+    * Get the interceptor binding
+    * 
+    * @return the interceptor binding or null for no result
+    */
+   public InterceptorBindingMetaData getInterceptorBinding()
+   {
+      AssemblyDescriptorMetaData assemblyDescriptor = getAssemblyDescriptor();
+      if (assemblyDescriptor == null)
+         return null;
+      return assemblyDescriptor.getInterceptorBindingByEjbName(getEjbName()); 
+   }
+
+   /**
+    * Get the exclude list
+    * 
+    * @return the exclude list or null for no result
+    */
+   public ExcludeListMetaData getExcludeList()
+   {
+      AssemblyDescriptorMetaData assemblyDescriptor = getAssemblyDescriptor();
+      if (assemblyDescriptor == null)
+         return null;
+      return assemblyDescriptor.getExcludeListByEjbName(getEjbName()); 
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/EnterpriseBeansMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/EnterpriseBeansMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/EnterpriseBeansMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,84 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.AbstractMappedMetaData;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * EnterpriseBeansMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="enterprise-beansType")
+public class EnterpriseBeansMetaData extends AbstractMappedMetaData<EnterpriseBeanMetaData>
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -5528174778237011844L;
+
+   /** The top level metadata */
+   private EjbJarMetaData ejbJarMetaData;
+   
+   /**
+    * Create a new EnterpriseBeansMetaData.
+    */
+   public EnterpriseBeansMetaData()
+   {
+      super("ejb name for enterprise bean");
+   }
+
+   /**
+    * Get the ejbJarMetaData.
+    * 
+    * @return the ejbJarMetaData.
+    */
+   EjbJarMetaData getEjbJarMetaData()
+   {
+      return ejbJarMetaData;
+   }
+
+   /**
+    * Set the ejbJarMetaData.
+    * 
+    * @param ejbJarMetaData the ejbJarMetaData.
+    * @throws IllegalArgumentException for a null ejbJarMetaData
+    */
+   void setEjbJarMetaData(EjbJarMetaData ejbJarMetaData)
+   {
+      if (ejbJarMetaData == null)
+         throw new IllegalArgumentException("Null ejbJarMetaData");
+      this.ejbJarMetaData = ejbJarMetaData;
+   }
+
+   @Override
+   public void addNotification(EnterpriseBeanMetaData added)
+   {
+      added.setEnterpriseBeansMetaData(this);
+   }
+   
+   @Override
+   public void removeNotification(EnterpriseBeanMetaData removed)
+   {
+      removed.setEnterpriseBeansMetaData(null);
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/EntityBeanMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/EntityBeanMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/EntityBeanMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,424 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.spec.SecurityRoleRefsMetaData;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * EntityBeanMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="entity-beanType")
+public class EntityBeanMetaData extends EnterpriseBeanMetaData
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 1538890391418490043L;
+   
+   /** The home interface */
+   private String home;
+
+   /** The remote interface */
+   private String remote;
+
+   /** The local home */
+   private String localHome;
+
+   /** The local */
+   private String local;
+   
+   /** The persistence type */
+   private PersistenceType persistenceType;
+   
+   /** The primary key class */
+   private String primKeyClass;
+   
+   /** The reentrant */
+   private boolean reentrant;
+
+   /** The cmp version */
+   private String cmpVersion;
+
+   /** The abstract schema name */
+   private String abstractSchemaName;
+   
+   /** The cmp fields */
+   private CMPFieldsMetaData cmpFields;
+   
+   /** The primary key field */
+   private String primKeyField;
+   
+   /** The security role refs */
+   private SecurityRoleRefsMetaData securityRoleRefs;
+   
+   /** The queries */
+   private QueriesMetaData queries;
+
+   /**
+    * Create a new EntityBeanMetaData.
+    */
+   public EntityBeanMetaData()
+   {
+      // For serialization
+   }
+
+   @Override
+   public boolean isEntity()
+   {
+      return true;
+   }
+
+   /**
+    * Get the home.
+    * 
+    * @return the home.
+    */
+   public String getHome()
+   {
+      return home;
+   }
+
+   /**
+    * Set the home.
+    * 
+    * @param home the home.
+    * @throws IllegalArgumentException for a null home
+    */
+   public void setHome(String home)
+   {
+      if (home == null)
+         throw new IllegalArgumentException("Null home");
+      this.home = home;
+   }
+
+   /**
+    * Get the remote.
+    * 
+    * @return the remote.
+    */
+   public String getRemote()
+   {
+      return remote;
+   }
+
+   /**
+    * Set the remote.
+    * 
+    * @param remote the remote.
+    * @throws IllegalArgumentException for a null remote
+    */
+   public void setRemote(String remote)
+   {
+      if (remote == null)
+         throw new IllegalArgumentException("Null remote");
+      this.remote = remote;
+   }
+
+   /**
+    * Get the localHome.
+    * 
+    * @return the localHome.
+    */
+   public String getLocalHome()
+   {
+      return localHome;
+   }
+
+   /**
+    * Set the localHome.
+    * 
+    * @param localHome the localHome.
+    * @throws IllegalArgumentException for a null localHome
+    */
+   public void setLocalHome(String localHome)
+   {
+      if (localHome == null)
+         throw new IllegalArgumentException("Null localHome");
+      this.localHome = localHome;
+   }
+
+   /**
+    * Get the local.
+    * 
+    * @return the local.
+    */
+   public String getLocal()
+   {
+      return local;
+   }
+
+   /**
+    * Set the local.
+    * 
+    * @param local the local.
+    * @throws IllegalArgumentException for a null local
+    */
+   public void setLocal(String local)
+   {
+      if (local == null)
+         throw new IllegalArgumentException("Null local");
+      this.local = local;
+   }
+
+   /**
+    * Is this container managed persistence
+    * 
+    * @return true for cmp
+    */
+   public boolean isCMP()
+   {
+      if (persistenceType == null)
+         return true;
+      return persistenceType == PersistenceType.Container;
+   }
+
+   /**
+    * Is this bean managed persistence
+    * 
+    * @return true for bmp
+    */
+   public boolean isBMP()
+   {
+      return isCMP() == false;
+   }
+
+   /**
+    * Get the persistenceType.
+    * 
+    * @return the persistenceType.
+    */
+   public PersistenceType getPersistenceType()
+   {
+      return persistenceType;
+   }
+
+   /**
+    * Set the persistenceType.
+    * 
+    * @param persistenceType the persistenceType.
+    * @throws IllegalArgumentException for a null persistenceType
+    */
+   public void setPersistenceType(PersistenceType persistenceType)
+   {
+      if (persistenceType == null)
+         throw new IllegalArgumentException("Null persistenceType");
+      this.persistenceType = persistenceType;
+   }
+
+   /**
+    * Get the primKeyClass.
+    * 
+    * @return the primKeyClass.
+    */
+   public String getPrimKeyClass()
+   {
+      return primKeyClass;
+   }
+
+   /**
+    * Set the primKeyClass.
+    * 
+    * @param primKeyClass the primKeyClass.
+    * @throws IllegalArgumentException for a null primKeyClass
+    */
+   public void setPrimKeyClass(String primKeyClass)
+   {
+      if (primKeyClass == null)
+         throw new IllegalArgumentException("Null primKeyClass");
+      this.primKeyClass = primKeyClass;
+   }
+
+   /**
+    * Get the reentrant.
+    * 
+    * @return the reentrant.
+    */
+   public boolean isReentrant()
+   {
+      return reentrant;
+   }
+
+   /**
+    * Set the reentrant.
+    * 
+    * @param reentrant the reentrant.
+    */
+   public void setReentrant(boolean reentrant)
+   {
+      this.reentrant = reentrant;
+   }
+
+   /**
+    * Whether it is CMP1x
+    * 
+    * @return true for cmp1x
+    */
+   public boolean isCMP1x()
+   {
+      return "1.x".equals(cmpVersion);
+   }
+   
+   /**
+    * Get the cmpVersion.
+    * 
+    * @return the cmpVersion.
+    */
+   public String getCmpVersion()
+   {
+      return cmpVersion;
+   }
+
+   /**
+    * Set the cmpVersion.
+    * 
+    * @param cmpVersion the cmpVersion.
+    * @throws IllegalArgumentException for a null cmpVersion
+    */
+   public void setCmpVersion(String cmpVersion)
+   {
+      if (cmpVersion == null)
+         throw new IllegalArgumentException("Null cmpVersion");
+      this.cmpVersion = cmpVersion;
+   }
+
+   /**
+    * Get the abstractSchemaName.
+    * 
+    * @return the abstractSchemaName.
+    */
+   public String getAbstractSchemaName()
+   {
+      return abstractSchemaName;
+   }
+
+   /**
+    * Set the abstractSchemaName.
+    * 
+    * @param abstractSchemaName the abstractSchemaName.
+    * @throws IllegalArgumentException for a null abstractSchemaName
+    */
+   public void setAbstractSchemaName(String abstractSchemaName)
+   {
+      if (abstractSchemaName == null)
+         throw new IllegalArgumentException("Null abstractSchemaName");
+      this.abstractSchemaName = abstractSchemaName;
+   }
+
+   /**
+    * Get the primKeyField.
+    * 
+    * @return the primKeyField.
+    */
+   public String getPrimKeyField()
+   {
+      return primKeyField;
+   }
+
+   /**
+    * Set the primKeyField.
+    * 
+    * @param primKeyField the primKeyField.
+    * @throws IllegalArgumentException for a null primKeyField
+    */
+   @XmlElement(name="primkey-field")
+   public void setPrimKeyField(String primKeyField)
+   {
+      if (primKeyField == null)
+         throw new IllegalArgumentException("Null primKeyField");
+      this.primKeyField = primKeyField;
+   }
+
+   /**
+    * Get the cmpFields.
+    * 
+    * @return the cmpFields.
+    */
+   public CMPFieldsMetaData getCmpFields()
+   {
+      return cmpFields;
+   }
+
+   /**
+    * Set the cmpFields.
+    * 
+    * @param cmpFields the cmpFields.
+    * @throws IllegalArgumentException for a null cmpFields
+    */
+   @XmlElement(name="cmp-field")
+   public void setCmpFields(CMPFieldsMetaData cmpFields)
+   {
+      if (cmpFields == null)
+         throw new IllegalArgumentException("Null cmpFields");
+      this.cmpFields = cmpFields;
+   }
+
+   /**
+    * Get the securityRoleRefs.
+    * 
+    * @return the securityRoleRefs.
+    */
+   public SecurityRoleRefsMetaData getSecurityRoleRefs()
+   {
+      return securityRoleRefs;
+   }
+
+   /**
+    * Set the securityRoleRefs.
+    * 
+    * @param securityRoleRefs the securityRoleRefs.
+    * @throws IllegalArgumentException for a null securityRoleRefs
+    */
+   @XmlElement(name="security-role-ref")
+   public void setSecurityRoleRefs(SecurityRoleRefsMetaData securityRoleRefs)
+   {
+      if (securityRoleRefs == null)
+         throw new IllegalArgumentException("Null securityRoleRefs");
+      this.securityRoleRefs = securityRoleRefs;
+   }
+
+   /**
+    * Get the queries.
+    * 
+    * @return the queries.
+    */
+   public QueriesMetaData getQueries()
+   {
+      return queries;
+   }
+
+   /**
+    * Set the queries.
+    * 
+    * @param queries the queries.
+    * @throws IllegalArgumentException for a null queries
+    */
+   @XmlElement(name="query")
+   public void setQueries(QueriesMetaData queries)
+   {
+      if (queries == null)
+         throw new IllegalArgumentException("Null queries");
+      this.queries = queries;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ExcludeListMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ExcludeListMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ExcludeListMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,119 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.IdMetaDataImplWithDescriptions;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * ExcludeListMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="exclude-listType")
+public class ExcludeListMetaData extends IdMetaDataImplWithDescriptions
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -7505132782235878508L;
+   
+   /** The methods */
+   private MethodsMetaData methods;
+   
+   /**
+    * Create a new ExcludeListMetaData.
+    */
+   public ExcludeListMetaData()
+   {
+      // For serialization
+   }
+
+   /**
+    * Get the methods.
+    * 
+    * @return the methods.
+    */
+   public MethodsMetaData getMethods()
+   {
+      return methods;
+   }
+
+   /**
+    * Set the methods.
+    * 
+    * @param methods the methods.
+    * @throws IllegalArgumentException for a null methods
+    */
+   @XmlElement(name="method")
+   public void setMethods(MethodsMetaData methods)
+   {
+      if (methods == null)
+         throw new IllegalArgumentException("Null methods");
+      this.methods = methods;
+   }
+   
+   /**
+    * Whether this matches
+    * 
+    * @param methodName the method name
+    * @param params the parameters
+    * @param interfaceType the interface type
+    * @return true when it matches
+    */
+   public boolean matches(String methodName, Class[] params, MethodInterfaceType interfaceType)
+   {
+      if (methods == null)
+         return false;
+      return methods.matches(methodName, params, interfaceType);
+   }
+
+   /**
+    * Get the exclude list for an ejb
+    * 
+    * @param ejbName the ejb name
+    * @return the exclude list or null for no result
+    * @throws IllegalArgumentException for a null ejb name
+    */
+   public ExcludeListMetaData getExcludeListByEjbName(String ejbName)
+   {
+      if (ejbName == null)
+         throw new IllegalArgumentException("Null ejbName");
+
+      if (methods == null)
+         return null;
+      
+      MethodsMetaData ejbMethods = methods.getMethodsByEjbName(ejbName);
+      if (ejbMethods == null)
+         return null;
+      
+      ExcludeListMetaData result = clone();
+      result.setMethods(ejbMethods);
+      return result;
+   }
+   
+   @Override
+   public ExcludeListMetaData clone()
+   {
+      return (ExcludeListMetaData) super.clone();
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/InitMethodMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/InitMethodMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/InitMethodMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,98 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.IdMetaDataImpl;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * InitMethodMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="init-methodType")
+public class InitMethodMetaData extends IdMetaDataImpl
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 1830841714074832930L;
+   
+   /** The create method */
+   private NamedMethodMetaData createMethod;
+   
+   /** The bean method */
+   private NamedMethodMetaData beanMethod;
+   
+   /**
+    * Create a new InitMethodMetaData.
+    */
+   public InitMethodMetaData()
+   {
+      // For serialization
+   }
+
+   /**
+    * Get the createMethod.
+    * 
+    * @return the createMethod.
+    */
+   public NamedMethodMetaData getCreateMethod()
+   {
+      return createMethod;
+   }
+
+   /**
+    * Set the createMethod.
+    * 
+    * @param createMethod the createMethod.
+    * @throws IllegalArgumentException for a null createMethod
+    */
+   public void setCreateMethod(NamedMethodMetaData createMethod)
+   {
+      if (createMethod == null)
+         throw new IllegalArgumentException("Null createMethod");
+      this.createMethod = createMethod;
+   }
+
+   /**
+    * Get the beanMethod.
+    * 
+    * @return the beanMethod.
+    */
+   public NamedMethodMetaData getBeanMethod()
+   {
+      return beanMethod;
+   }
+
+   /**
+    * Set the beanMethod.
+    * 
+    * @param beanMethod the beanMethod.
+    * @throws IllegalArgumentException for a null beanMethod
+    */
+   public void setBeanMethod(NamedMethodMetaData beanMethod)
+   {
+      if (beanMethod == null)
+         throw new IllegalArgumentException("Null beanMethod");
+      this.beanMethod = beanMethod;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/InitMethodsMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/InitMethodsMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/InitMethodsMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,44 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.NonNullLinkedHashSet;
+
+/**
+ * InitMethodsMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class InitMethodsMetaData extends NonNullLinkedHashSet<InitMethodMetaData>
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -2908907768394563619L;
+
+   /**
+    * Create a new InitMethodsMetaData.
+    */
+   public InitMethodsMetaData()
+   {
+      // For serialization
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/InterceptorBindingMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/InterceptorBindingMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/InterceptorBindingMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,193 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.NamedMetaDataWithDescriptions;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * InterceptorBindingMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="interceptor-bindingType")
+public class InterceptorBindingMetaData extends NamedMetaDataWithDescriptions
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 3265594088830429912L;
+   
+   /** The interceptor classes */
+   private InterceptorClassesMetaData interceptorClasses;
+
+   /** The interceptor order */
+   private InterceptorOrderMetaData interceptorOrder;
+   
+   /** Exclude the default interceptors */
+   private boolean excludeDefaultInterceptors = false; 
+   
+   /** Exclude the class interceptors */
+   private boolean excludeClassInterceptors = false;
+   
+   /** The method */
+   private NamedMethodMetaData method;
+   
+   /**
+    * Create a new MethodMetaData.
+    */
+   public InterceptorBindingMetaData()
+   {
+      // For serialization
+   }
+   
+   /**
+    * Get the ejbName.
+    * 
+    * @return the ejbName.
+    */
+   public String getEjbName()
+   {
+      return getName();
+   }
+
+   /**
+    * Set the ejbName.
+    * 
+    * @param ejbName the ejbName.
+    * @throws IllegalArgumentException for a null ejbName
+    */
+   public void setEjbName(String ejbName)
+   {
+      setName(ejbName);
+   }
+
+   /**
+    * Get the excludeClassInterceptors.
+    * 
+    * @return the excludeClassInterceptors.
+    */
+   public boolean isExcludeClassInterceptors()
+   {
+      return excludeClassInterceptors;
+   }
+
+   /**
+    * Set the excludeClassInterceptors.
+    * 
+    * @param excludeClassInterceptors the excludeClassInterceptors.
+    */
+   public void setExcludeClassInterceptors(boolean excludeClassInterceptors)
+   {
+      this.excludeClassInterceptors = excludeClassInterceptors;
+   }
+
+   /**
+    * Get the excludeDefaultInterceptors.
+    * 
+    * @return the excludeDefaultInterceptors.
+    */
+   public boolean isExcludeDefaultInterceptors()
+   {
+      return excludeDefaultInterceptors;
+   }
+
+   /**
+    * Set the excludeDefaultInterceptors.
+    * 
+    * @param excludeDefaultInterceptors the excludeDefaultInterceptors.
+    */
+   public void setExcludeDefaultInterceptors(boolean excludeDefaultInterceptors)
+   {
+      this.excludeDefaultInterceptors = excludeDefaultInterceptors;
+   }
+
+   /**
+    * Get the interceptorClasses.
+    * 
+    * @return the interceptorClasses.
+    */
+   public InterceptorClassesMetaData getInterceptorClasses()
+   {
+      return interceptorClasses;
+   }
+
+   /**
+    * Set the interceptorClasses.
+    * 
+    * @param interceptorClasses the interceptorClasses.
+    * @throws IllegalArgumentException for a null interceptorClasses
+    */
+   @XmlElement(name="interceptor-class")
+   public void setInterceptorClasses(InterceptorClassesMetaData interceptorClasses)
+   {
+      if (interceptorClasses == null)
+         throw new IllegalArgumentException("Null interceptorClasses");
+      this.interceptorClasses = interceptorClasses;
+   }
+
+   /**
+    * Get the interceptorOrder.
+    * 
+    * @return the interceptorOrder.
+    */
+   public InterceptorOrderMetaData getInterceptorOrder()
+   {
+      return interceptorOrder;
+   }
+
+   /**
+    * Set the interceptorOrder.
+    * 
+    * @param interceptorOrder the interceptorOrder.
+    * @throws IllegalArgumentException for a null interceptorOrder
+    */
+   public void setInterceptorOrder(InterceptorOrderMetaData interceptorOrder)
+   {
+      if (interceptorOrder == null)
+         throw new IllegalArgumentException("Null interceptorOrder");
+      this.interceptorOrder = interceptorOrder;
+   }
+
+   /**
+    * Get the method.
+    * 
+    * @return the method.
+    */
+   public NamedMethodMetaData getMethod()
+   {
+      return method;
+   }
+
+   /**
+    * Set the method.
+    * 
+    * @param method the method.
+    * @throws IllegalArgumentException for a null method
+    */
+   public void setMethod(NamedMethodMetaData method)
+   {
+      if (method == null)
+         throw new IllegalArgumentException("Null method");
+      this.method = method;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/InterceptorBindingsMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/InterceptorBindingsMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/InterceptorBindingsMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,44 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.AbstractMappedMetaData;
+
+/**
+ * InterceptorBindingsMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class InterceptorBindingsMetaData extends AbstractMappedMetaData<InterceptorBindingMetaData>
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 7802311372886754408L;
+
+   /**
+    * Create a new InterceptorBindingsMetaData.
+    */
+   public InterceptorBindingsMetaData()
+   {
+      super("ejb name for interceptor binding");
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/InterceptorClassesMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/InterceptorClassesMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/InterceptorClassesMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,44 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.NonNullLinkedHashSetWithId;
+
+/**
+ * InterceptorClassesMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class InterceptorClassesMetaData extends NonNullLinkedHashSetWithId<String>
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 5516210500525606753L;
+
+   /**
+    * Create a new InterceptorClassesMetaData.
+    */
+   public InterceptorClassesMetaData()
+   {
+      // For serialization
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/InterceptorMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/InterceptorMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/InterceptorMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,320 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.spec.EJBLocalReferenceMetaData;
+import org.jboss.javaee.metadata.spec.EJBLocalReferencesMetaData;
+import org.jboss.javaee.metadata.spec.EJBReferenceMetaData;
+import org.jboss.javaee.metadata.spec.EJBReferencesMetaData;
+import org.jboss.javaee.metadata.spec.Environment;
+import org.jboss.javaee.metadata.spec.EnvironmentEntriesMetaData;
+import org.jboss.javaee.metadata.spec.EnvironmentEntryMetaData;
+import org.jboss.javaee.metadata.spec.EnvironmentRefsGroupMetaData;
+import org.jboss.javaee.metadata.spec.LifecycleCallbacksMetaData;
+import org.jboss.javaee.metadata.spec.MessageDestinationReferenceMetaData;
+import org.jboss.javaee.metadata.spec.MessageDestinationReferencesMetaData;
+import org.jboss.javaee.metadata.spec.PersistenceContextReferenceMetaData;
+import org.jboss.javaee.metadata.spec.PersistenceContextReferencesMetaData;
+import org.jboss.javaee.metadata.spec.PersistenceUnitReferenceMetaData;
+import org.jboss.javaee.metadata.spec.PersistenceUnitReferencesMetaData;
+import org.jboss.javaee.metadata.spec.ResourceEnvironmentReferenceMetaData;
+import org.jboss.javaee.metadata.spec.ResourceEnvironmentReferencesMetaData;
+import org.jboss.javaee.metadata.spec.ResourceReferenceMetaData;
+import org.jboss.javaee.metadata.spec.ResourceReferencesMetaData;
+import org.jboss.javaee.metadata.spec.ServiceReferenceMetaData;
+import org.jboss.javaee.metadata.spec.ServiceReferencesMetaData;
+import org.jboss.javaee.metadata.support.AbstractMappedMetaData;
+import org.jboss.javaee.metadata.support.NamedMetaDataWithDescriptions;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * InterceptorMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="interceptorType")
+public class InterceptorMetaData extends NamedMetaDataWithDescriptions implements Environment
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 334047485589422650L;
+   
+   /** The around invokes */
+   private AroundInvokesMetaData aroundInvokes;
+   
+   /** The environment */
+   private EnvironmentRefsGroupMetaData environment;
+   
+   /** The post activate method */ 
+   private LifecycleCallbacksMetaData postActivates;
+   
+   /** The pre passivate method */
+   private LifecycleCallbacksMetaData prePassivates;
+   
+   /**
+    * Create a new InterceptorMetaData.
+    */
+   public InterceptorMetaData()
+   {
+      // For serialization
+   }
+
+   /**
+    * Get the environment.
+    * 
+    * @return the environment.
+    */
+   public EnvironmentRefsGroupMetaData getJndiEnvironmentRefsGroup()
+   {
+      return environment;
+   }
+
+   /**
+    * Set the environment.
+    * 
+    * @param environment the environment.
+    * @throws IllegalArgumentException for a null environment
+    */
+   @XmlElement(/*noInterceptor=true*/)
+   public void setJndiEnvironmentRefsGroup(EnvironmentRefsGroupMetaData environment)
+   {
+      if (environment == null)
+         throw new IllegalArgumentException("Null environment");
+      this.environment = environment;
+   }
+
+   /**
+    * Get the interceptorClass.
+    * 
+    * @return the interceptorClass.
+    */
+   public String getInterceptorClass()
+   {
+      return getName();
+   }
+
+   /**
+    * Set the interceptorClass.
+    * 
+    * @param interceptorClass the interceptorClass.
+    * @throws IllegalArgumentException for a null interceptorClass
+    */
+   public void setInterceptorClass(String interceptorClass)
+   {
+      setName(interceptorClass);
+   }
+
+   /**
+    * Get the aroundInvokes.
+    * 
+    * @return the aroundInvokes.
+    */
+   public AroundInvokesMetaData getAroundInvokes()
+   {
+      return aroundInvokes;
+   }
+
+   /**
+    * Set the aroundInvokes.
+    * 
+    * @param aroundInvokes the aroundInvokes.
+    * @throws IllegalArgumentException for a null aroundInvokes
+    */
+   @XmlElement(name="around-invoke")
+   public void setAroundInvokes(AroundInvokesMetaData aroundInvokes)
+   {
+      if (aroundInvokes == null)
+         throw new IllegalArgumentException("Null aroundInvokes");
+      this.aroundInvokes = aroundInvokes;
+   }
+
+   /**
+    * Get the postActivates.
+    * 
+    * @return the postActivates.
+    */
+   public LifecycleCallbacksMetaData getPostActivates()
+   {
+      return postActivates;
+   }
+
+   /**
+    * Set the postActivates.
+    * 
+    * @param postActivates the postActivates.
+    * @throws IllegalArgumentException for a null postActivates
+    */
+   @XmlElement(name="post-activate")
+   public void setPostActivates(LifecycleCallbacksMetaData postActivates)
+   {
+      if (postActivates == null)
+         throw new IllegalArgumentException("Null postActivates");
+      this.postActivates = postActivates;
+   }
+
+   /**
+    * Get the prePassivates.
+    * 
+    * @return the prePassivates.
+    */
+   public LifecycleCallbacksMetaData getPrePassivates()
+   {
+      return prePassivates;
+   }
+
+   /**
+    * Set the prePassivates.
+    * 
+    * @param prePassivates the prePassivates.
+    * @throws IllegalArgumentException for a null prePassivates
+    */
+   @XmlElement(name="pre-passivate")
+   public void setPrePassivates(LifecycleCallbacksMetaData prePassivates)
+   {
+      if (prePassivates == null)
+         throw new IllegalArgumentException("Null prePassivates");
+      this.prePassivates = prePassivates;
+   }
+
+   public EJBLocalReferenceMetaData getEjbLocalReferenceByName(String name)
+   {
+      return AbstractMappedMetaData.getByName(name, getEjbLocalReferences());
+   }
+
+   public EJBLocalReferencesMetaData getEjbLocalReferences()
+   {
+      if (environment != null)
+         return environment.getEjbLocalReferences();
+      return null;
+   }
+
+   public EJBReferenceMetaData getEjbReferenceByName(String name)
+   {
+      return AbstractMappedMetaData.getByName(name, getEjbReferences());
+   }
+
+   public EJBReferencesMetaData getEjbReferences()
+   {
+      if (environment != null)
+         return environment.getEjbReferences();
+      return null;
+   }
+
+   public EnvironmentEntriesMetaData getEnvironmentEntries()
+   {
+      if (environment != null)
+         return environment.getEnvironmentEntries();
+      return null;
+   }
+
+   public EnvironmentEntryMetaData getEnvironmentEntryByName(String name)
+   {
+      return AbstractMappedMetaData.getByName(name, getEnvironmentEntries());
+   }
+
+   public MessageDestinationReferenceMetaData getMessageDestinationReferenceByName(String name)
+   {
+      return AbstractMappedMetaData.getByName(name, getMessageDestinationReferences());
+   }
+
+   public MessageDestinationReferencesMetaData getMessageDestinationReferences()
+   {
+      if (environment != null)
+         return environment.getMessageDestinationReferences();
+      return null;
+   }
+
+   public PersistenceContextReferenceMetaData getPersistenceContextReferenceByName(String name)
+   {
+      return AbstractMappedMetaData.getByName(name, getPersistenceContextRefs());
+   }
+
+   public PersistenceContextReferencesMetaData getPersistenceContextRefs()
+   {
+      if (environment != null)
+         return environment.getPersistenceContextRefs();
+      return null;
+   }
+
+   public PersistenceUnitReferenceMetaData getPersistenceUnitReferenceByName(String name)
+   {
+      return AbstractMappedMetaData.getByName(name, getPersistenceUnitRefs());
+   }
+
+   public PersistenceUnitReferencesMetaData getPersistenceUnitRefs()
+   {
+      if (environment != null)
+         return environment.getPersistenceUnitRefs();
+      return null;
+   }
+
+   public LifecycleCallbacksMetaData getPostConstructs()
+   {
+      if (environment != null)
+         return environment.getPostConstructs();
+      return null;
+   }
+
+   public LifecycleCallbacksMetaData getPreDestroys()
+   {
+      if (environment != null)
+         return environment.getPreDestroys();
+      return null;
+   }
+
+   public ResourceEnvironmentReferenceMetaData getResourceEnvironmentReferenceByName(String name)
+   {
+      return AbstractMappedMetaData.getByName(name, getResourceEnvironmentReferences());
+   }
+
+   public ResourceEnvironmentReferencesMetaData getResourceEnvironmentReferences()
+   {
+      if (environment != null)
+         return environment.getResourceEnvironmentReferences();
+      return null;
+   }
+
+   public ResourceReferenceMetaData getResourceReferenceByName(String name)
+   {
+      return AbstractMappedMetaData.getByName(name, getResourceReferences());
+   }
+
+   public ResourceReferencesMetaData getResourceReferences()
+   {
+      if (environment != null)
+         return environment.getResourceReferences();
+      return null;
+   }
+
+   public ServiceReferenceMetaData getServiceReferenceByName(String name)
+   {
+      return AbstractMappedMetaData.getByName(name, getServiceReferences());
+   }
+
+   public ServiceReferencesMetaData getServiceReferences()
+   {
+      if (environment != null)
+         return environment.getServiceReferences();
+      return null;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/InterceptorOrderMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/InterceptorOrderMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/InterceptorOrderMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,45 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * InterceptorClassesMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="interceptor-orderType")
+public class InterceptorOrderMetaData extends InterceptorClassesMetaData
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 5127501603376984685L;
+
+   /**
+    * Create a new InterceptorClassesMetaData.
+    */
+   public InterceptorOrderMetaData()
+   {
+      // For serialization
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/InterceptorsMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/InterceptorsMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/InterceptorsMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,46 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.MappedMetaDataWithDescriptions;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * InterceptorsMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="interceptorsType")
+public class InterceptorsMetaData extends MappedMetaDataWithDescriptions<InterceptorMetaData>
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 2111431052074738841L;
+
+   /**
+    * Create a new EnterpriseBeansMetaData.
+    */
+   public InterceptorsMetaData()
+   {
+      super("interceptor class");
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/MessageDrivenBeanMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/MessageDrivenBeanMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/MessageDrivenBeanMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,338 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * MessageDrivenBeanMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="message-driven-beanType")
+public class MessageDrivenBeanMetaData extends EnterpriseBeanMetaData
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -7353017099819838715L;
+   
+   /** The messaging type */
+   private String messagingType;
+   
+   /** The timeout method */
+   private NamedMethodMetaData timeoutMethod;
+
+   /** The transaction type */
+   private TransactionType transactionType;
+   
+   /** The message destination type */
+   private String messageDestinationType;
+   
+   /** The message destination link */
+   private String messageDestinationLink;
+
+   /** The activation config */
+   private ActivationConfigMetaData activationConfig;
+   
+   /** The around invokes */
+   private AroundInvokesMetaData aroundInvokes;
+
+   /** The message selector */
+   private String messageSelector;
+   
+   /** The acknowledge mode */
+   private String acknowledgeMode;
+   
+   /** The subscription durability */
+   private SubscriptionDurability subscriptionDurability = SubscriptionDurability.NonDurable;
+
+   /**
+    * Create a new MessageDrivenBeanMetaData.
+    */
+   public MessageDrivenBeanMetaData()
+   {
+      // For serialization
+   }
+
+   @Override
+   public boolean isMessageDriven()
+   {
+      return true;
+   }
+
+
+   /**
+    * Get the messagingType.
+    * 
+    * @return the messagingType.
+    */
+   public String getMessagingType()
+   {
+      return messagingType;
+   }
+
+   /**
+    * Is this JMS
+    * 
+    * @return true for jms
+    */
+   public boolean isJMS()
+   {
+      return "javax.jms.MessageListener".equals(getMessagingType());
+   }
+
+
+   /**
+    * Set the messagingType.
+    * 
+    * @param messagingType the messagingType.
+    * @throws IllegalArgumentException for a null messagingType
+    */
+   public void setMessagingType(String messagingType)
+   {
+      if (messagingType == null)
+         throw new IllegalArgumentException("Null messagingType");
+      this.messagingType = messagingType;
+   }
+
+
+   /**
+    * Get the timeoutMethod.
+    * 
+    * @return the timeoutMethod.
+    */
+   public NamedMethodMetaData getTimeoutMethod()
+   {
+      return timeoutMethod;
+   }
+
+
+   /**
+    * Set the timeoutMethod.
+    * 
+    * @param timeoutMethod the timeoutMethod.
+    * @throws IllegalArgumentException for a null timeoutMethod
+    */
+   @XmlElement(required=false)
+   public void setTimeoutMethod(NamedMethodMetaData timeoutMethod)
+   {
+      if (timeoutMethod == null)
+         throw new IllegalArgumentException("Null timeoutMethod");
+      this.timeoutMethod = timeoutMethod;
+   }
+
+
+   @Override
+   public TransactionType getTransactionType()
+   {
+      return transactionType;
+   }
+
+
+   /**
+    * Set the transactionType.
+    * 
+    * @param transactionType the transactionType.
+    * @throws IllegalArgumentException for a null transactionType
+    */
+   public void setTransactionType(TransactionType transactionType)
+   {
+      if (transactionType == null)
+         throw new IllegalArgumentException("Null transactionType");
+      this.transactionType = transactionType;
+   }
+
+
+   /**
+    * Get the messageDestinationType.
+    * 
+    * @return the messageDestinationType.
+    */
+   public String getMessageDestinationType()
+   {
+      return messageDestinationType;
+   }
+
+
+   /**
+    * Set the messageDestinationType.
+    * 
+    * @param messageDestinationType the messageDestinationType.
+    * @throws IllegalArgumentException for a null messageDestinationType
+    */
+   public void setMessageDestinationType(String messageDestinationType)
+   {
+      if (messageDestinationType == null)
+         throw new IllegalArgumentException("Null messageDestinationType");
+      this.messageDestinationType = messageDestinationType;
+   }
+
+
+   /**
+    * Get the aroundInvokes.
+    * 
+    * @return the aroundInvokes.
+    */
+   public AroundInvokesMetaData getAroundInvokes()
+   {
+      return aroundInvokes;
+   }
+
+
+   /**
+    * Set the aroundInvokes.
+    * 
+    * @param aroundInvokes the aroundInvokes.
+    * @throws IllegalArgumentException for a null aroundInvokes
+    */
+   @XmlElement(name="around-invoke", required=false)
+   public void setAroundInvokes(AroundInvokesMetaData aroundInvokes)
+   {
+      if (aroundInvokes == null)
+         throw new IllegalArgumentException("Null aroundInvokes");
+      this.aroundInvokes = aroundInvokes;
+   }
+
+
+   /**
+    * Get the messageDestinationLink.
+    * 
+    * @return the messageDestinationLink.
+    */
+   public String getMessageDestinationLink()
+   {
+      return messageDestinationLink;
+   }
+
+
+   /**
+    * Set the messageDestinationLink.
+    * 
+    * @param messageDestinationLink the messageDestinationLink.
+    * @throws IllegalArgumentException for a null messageDestinationLink
+    */
+   public void setMessageDestinationLink(String messageDestinationLink)
+   {
+      if (messageDestinationLink == null)
+         throw new IllegalArgumentException("Null messageDestinationLink");
+      this.messageDestinationLink = messageDestinationLink;
+   }
+
+
+   /**
+    * Get the activationConfig.
+    * 
+    * @return the activationConfig.
+    */
+   public ActivationConfigMetaData getActivationConfig()
+   {
+      return activationConfig;
+   }
+
+
+   /**
+    * Set the activationConfig.
+    * 
+    * @param activationConfig the activationConfig.
+    * @throws IllegalArgumentException for a null activationConfig
+    */
+   public void setActivationConfig(ActivationConfigMetaData activationConfig)
+   {
+      if (activationConfig == null)
+         throw new IllegalArgumentException("Null activationConfig");
+      this.activationConfig = activationConfig;
+   }
+
+   /**
+    * Get the messageSelector.
+    * 
+    * @return the messageSelector.
+    */
+   public String getMessageSelector()
+   {
+      return messageSelector;
+   }
+
+   /**
+    * Set the messageSelector.
+    * 
+    * @param messageSelector the messageSelector.
+    * @throws IllegalArgumentException for a null messageSelector
+    */
+   @XmlElement(required=false)
+   public void setMessageSelector(String messageSelector)
+   {
+      if (messageSelector == null)
+         throw new IllegalArgumentException("Null messageSelector");
+      this.messageSelector = messageSelector;
+   }
+
+   /**
+    * Get the acknowledgeMode.
+    * 
+    * @return the acknowledgeMode.
+    */
+   public String getAcknowledgeMode()
+   {
+      return acknowledgeMode;
+   }
+
+   /**
+    * Set the acknowledgeMode.
+    * 
+    * @param acknowledgeMode the acknowledgeMode.
+    * @throws IllegalArgumentException for a null acknowledgeMode
+    */
+   @XmlElement(required=false)
+   public void setAcknowledgeMode(String acknowledgeMode)
+   {
+      if (acknowledgeMode == null)
+         throw new IllegalArgumentException("Null acknowledgeMode");
+      this.acknowledgeMode = acknowledgeMode;
+   }
+
+   /**
+    * Get the subscriptionDurability.
+    * 
+    * @return the subscriptionDurability.
+    */
+   public SubscriptionDurability getSubscriptionDurability()
+   {
+      return subscriptionDurability;
+   }
+
+   /**
+    * Set the subscriptionDurability.
+    * 
+    * @param subscriptionDurability the subscriptionDurability.
+    * @throws IllegalArgumentException for a null subscriptionDurability
+    */
+   @XmlElement(required=false)
+   public void setSubscriptionDurability(SubscriptionDurability subscriptionDurability)
+   {
+      if (subscriptionDurability == null)
+         throw new IllegalArgumentException("Null subscriptionDurability");
+      this.subscriptionDurability = subscriptionDurability;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/MethodInterfaceType.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/MethodInterfaceType.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/MethodInterfaceType.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,49 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * MethodInterfaceType.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="method-intfType")
+public enum MethodInterfaceType
+{
+   /** Home */
+   Home,
+   
+   /** Remote */
+   Remote,
+   
+   /** LocalHome */
+   LocalHome,
+   
+   /** Local */
+   Local,
+   
+   /** ServiceEndpoint */
+   ServiceEndpoint,
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/MethodMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/MethodMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/MethodMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,250 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.IdMetaDataImplWithDescriptions;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * MethodMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="methodType")
+public class MethodMetaData extends IdMetaDataImplWithDescriptions
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -985973586611090108L;
+
+   /** The ejb name */
+   private String ejbName;
+   
+   /** The method interface */
+   private MethodInterfaceType methodInterface;
+   
+   /** The method name */
+   private String methodName;
+   
+   /** The method parameters */
+   private MethodParametersMetaData methodParams;
+   
+   /**
+    * Create a new MethodMetaData.
+    */
+   public MethodMetaData()
+   {
+      // For serialization
+   }
+
+   /**
+    * Get the ejbName.
+    * 
+    * @return the ejbName.
+    */
+   public String getEjbName()
+   {
+      return ejbName;
+   }
+
+   /**
+    * Set the ejbName.
+    * 
+    * @param ejbName the ejbName.
+    * @throws IllegalArgumentException for a null ejbName
+    */
+   public void setEjbName(String ejbName)
+   {
+      if (ejbName == null)
+         throw new IllegalArgumentException("Null ejbName");
+      this.ejbName = ejbName;
+   }
+
+   /**
+    * Get the methodInterface.
+    * 
+    * @return the methodInterface.
+    */
+   public MethodInterfaceType getMethodIntf()
+   {
+      return methodInterface;
+   }
+
+   /**
+    * Set the methodInterface.
+    * 
+    * @param methodInterface the methodInterface.
+    * @throws IllegalArgumentException for a null methodInterface
+    */
+   @XmlElement(name="method-intf")
+   public void setMethodIntf(MethodInterfaceType methodInterface)
+   {
+      if (methodInterface == null)
+         throw new IllegalArgumentException("Null methodInterface");
+      this.methodInterface = methodInterface;
+   }
+
+   /**
+    * Get the methodName.
+    * 
+    * @return the methodName.
+    */
+   public String getMethodName()
+   {
+      return methodName;
+   }
+
+   /**
+    * Set the methodName.
+    * 
+    * @param methodName the methodName.
+    * @throws IllegalArgumentException for a null methodName
+    */
+   public void setMethodName(String methodName)
+   {
+      if (methodName == null)
+         throw new IllegalArgumentException("Null methodName");
+      this.methodName = methodName;
+   }
+
+   /**
+    * Get the methodParams.
+    * 
+    * @return the methodParams.
+    */
+   public MethodParametersMetaData getMethodParams()
+   {
+      return methodParams;
+   }
+
+   /**
+    * Set the methodParams.
+    * 
+    * TODO this should probably be done with XmlElementWrapper annotation
+    * instead of the JBossXmlChild...
+    * 
+    * @param methodParams the methodParams.
+    * @throws IllegalArgumentException for a null methodParams
+    */
+   public void setMethodParams(MethodParametersMetaData methodParams)
+   {
+      if (methodParams == null)
+         throw new IllegalArgumentException("Null methodParams");
+      this.methodParams = methodParams;
+   }
+
+   /**
+    * Whether this matches
+    * 
+    * @param methodName the method name
+    * @param params the parameters
+    * @param interfaceType the interface type
+    * @return true when it matches
+    */
+   public boolean matches(String methodName, String[] params, MethodInterfaceType interfaceType)
+   {
+      if (methodName == null)
+         throw new IllegalArgumentException("Null methodName");
+
+      // Check the type
+      if (methodInterface != null && methodInterface != interfaceType)
+         return false;
+      
+      // the wildcard matches everything
+      if (getMethodName().equals("*"))
+         return true;
+
+      // Method name does not match
+      if (getMethodName().equals(methodName) == false)
+         return false;
+      
+      // No parameters to match
+      if (methodParams == null)
+         return true;
+
+      // Wrong number of paremters
+      if (params.length != methodParams.size())
+         return false;
+
+      // Check each parameter
+      int i = 0;
+      for (String param : methodParams)
+      {
+         if (param.equals(params[i++]) == false)
+            return false;
+      }
+      
+      // We match
+      return true;
+   }
+
+   /**
+    * Whether this is a home method
+    * 
+    * @return true when a home method
+    */
+   public boolean isHomeMethod()
+   {
+      return MethodInterfaceType.Home == methodInterface;
+   }
+
+   /**
+    * Whether this is a remote method
+    * 
+    * @return true when a remote method
+    */
+   public boolean isRemoteMethod()
+   {
+      return MethodInterfaceType.Remote == methodInterface;
+   }
+
+   /**
+    * Whether this is a local home method
+    * 
+    * @return true when a local home method
+    */
+   public boolean isLocalHomeMethod()
+   {
+      return MethodInterfaceType.LocalHome == methodInterface;
+   }
+
+   /**
+    * Whether this is a local method
+    * 
+    * @return true when a local method
+    */
+   public boolean isLocalMethod()
+   {
+      return MethodInterfaceType.Local == methodInterface;
+   }
+
+   /**
+    * Whether this is a service endpoint method
+    * 
+    * @return true when a service endpoint method
+    */
+   public boolean isServiceEndpointMethod()
+   {
+      return MethodInterfaceType.ServiceEndpoint == methodInterface;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/MethodParametersMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/MethodParametersMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/MethodParametersMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,49 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.NonNullLinkedHashSet;
+import org.jboss.xb.annotations.JBossXmlChild;
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * MethodParametersMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="method-paramsType")
+ at JBossXmlChild(name="method-param", type=String.class, unbounded=true)
+public class MethodParametersMetaData extends NonNullLinkedHashSet<String>
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -9138498601978922673L;
+
+   /**
+    * Create a new MethodParametersMetaData.
+    */
+   public MethodParametersMetaData()
+   {
+      // For serialization
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/MethodPermissionMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/MethodPermissionMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/MethodPermissionMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,195 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import java.util.Set;
+
+import org.jboss.javaee.metadata.spec.EmptyMetaData;
+import org.jboss.javaee.metadata.support.IdMetaDataImplWithDescriptions;
+import org.jboss.javaee.metadata.support.NonNullLinkedHashSet;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * MethodPermissionMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="method-permissionType")
+public class MethodPermissionMetaData extends IdMetaDataImplWithDescriptions
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -985973586611090108L;
+   
+   /** Whether it is unchecked */
+   private EmptyMetaData unchecked;
+   
+   /** The roles */
+   private Set<String> roles;
+   
+   /** The methods */
+   private MethodsMetaData methods;
+   
+   /**
+    * Create a new MethodPermissionMetaData.
+    */
+   public MethodPermissionMetaData()
+   {
+      // For serialization
+   }
+
+   /**
+    * Get the unchecked.
+    * 
+    * @return the unchecked.
+    */
+   public boolean isNotChecked()
+   {
+      return unchecked != null;
+   }
+
+   /**
+    * Get the unchecked.
+    * 
+    * @return the unchecked.
+    */
+   public EmptyMetaData getUnchecked()
+   {
+      return unchecked;
+   }
+
+   /**
+    * Set the unchecked.
+    * 
+    * @param unchecked the unchecked.
+    */
+   public void setUnchecked(EmptyMetaData unchecked)
+   {
+      this.unchecked = unchecked;
+   }
+
+   /**
+    * Get the roles.
+    * 
+    * @return the roles.
+    */
+   public Set<String> getRoles()
+   {
+      return roles;
+   }
+
+   /**
+    * Set the roles.
+    * 
+    * @param roles the roles.
+    */
+   @XmlElement(name="role-name", type=NonNullLinkedHashSet.class)
+   public void setRoles(Set<String> roles)
+   {
+      this.roles = roles;
+   }
+
+   /**
+    * Get the methods.
+    * 
+    * @return the methods.
+    */
+   public MethodsMetaData getMethods()
+   {
+      return methods;
+   }
+
+   /**
+    * Set the methods.
+    * 
+    * @param methods the methods.
+    * @throws IllegalArgumentException for a null methods
+    */
+   @XmlElement(name="method")
+   public void setMethods(MethodsMetaData methods)
+   {
+      if (methods == null)
+         throw new IllegalArgumentException("Null methods");
+      this.methods = methods;
+   }
+
+   /**
+    * Get the method permissions for an ejb
+    * 
+    * @param ejbName the ejb name
+    * @return the method permission or null for no result
+    * @throws IllegalArgumentException for a null ejb name
+    */
+   public MethodPermissionMetaData getMethodPermissionByEjbName(String ejbName)
+   {
+      if (ejbName == null)
+         throw new IllegalArgumentException("Null ejbName");
+
+      if (methods == null)
+         return null;
+      
+      MethodsMetaData ejbMethods = methods.getMethodsByEjbName(ejbName);
+      if (ejbMethods == null)
+         return null;
+      
+      MethodPermissionMetaData result = clone();
+      result.setMethods(ejbMethods);
+      return result;
+   }
+
+   @Override
+   public MethodPermissionMetaData clone()
+   {
+      return (MethodPermissionMetaData) super.clone();
+   }
+   
+   /**
+    * Whether this matches
+    * 
+    * @param methodName the method name
+    * @param params the parameters
+    * @param interfaceType the interface type
+    * @return true when it matches
+    */
+   public boolean matches(String methodName, Class[] params, MethodInterfaceType interfaceType)
+   {
+      if (methods == null)
+         return false;
+      return methods.matches(methodName, params, interfaceType);
+   }
+   
+   /**
+    * Whether this is not checked
+    * 
+    * @param methodName the method name
+    * @param params the parameters
+    * @param interfaceType the interface type
+    * @return true when it is not checked and it matches matches
+    */
+   public boolean isNotChecked(String methodName, Class[] params, MethodInterfaceType interfaceType)
+   {
+      if (isNotChecked() == false)
+         return false;
+      return matches(methodName, params, interfaceType);
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/MethodPermissionsMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/MethodPermissionsMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/MethodPermissionsMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,89 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.IdMetaData;
+import org.jboss.javaee.metadata.support.NonNullLinkedHashSet;
+
+/**
+ * MethodPermissionsMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class MethodPermissionsMetaData extends NonNullLinkedHashSet<MethodPermissionMetaData> implements IdMetaData
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -1393413242478179085L;
+
+   /** The id */
+   private String id;
+   
+   /**
+    * Get the id.
+    * 
+    * @return the id.
+    */
+   public String getId()
+   {
+      return id;
+   }
+
+   /**
+    * Set the id.
+    * 
+    * @param id the id.
+    */
+   public void setId(String id)
+   {
+      this.id = id;
+   }
+
+   /**
+    * Get the methods permissions for an ejb
+    * 
+    * @param ejbName the ejb name
+    * @return the method permissions or null for no result
+    * @throws IllegalArgumentException for a null ejb name
+    */
+   public MethodPermissionsMetaData getMethodPermissionsByEjbName(String ejbName)
+   {
+      if (ejbName == null)
+         throw new IllegalArgumentException("Null ejbName");
+
+      if (isEmpty())
+         return null;
+      
+      MethodPermissionsMetaData result = null;
+      for (MethodPermissionMetaData permission : this)
+      {
+         MethodPermissionMetaData ejbPermission = permission.getMethodPermissionByEjbName(ejbName);
+         if (ejbPermission != null)
+         {
+            if (result == null)
+               result = new MethodPermissionsMetaData();
+            result.add(ejbPermission);
+         }
+      }
+      return result;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/MethodsMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/MethodsMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/MethodsMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,167 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.NonNullLinkedHashSet;
+
+/**
+ * MethodsMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class MethodsMetaData extends NonNullLinkedHashSet<MethodMetaData>
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -1713776894150257182L;
+   
+   /**
+    * Whether this matches
+    * 
+    * @param methodName the method name
+    * @param params the parameters
+    * @param interfaceType the interface type
+    * @return true when it matches
+    */
+   public boolean matches(String methodName, Class[] params, MethodInterfaceType interfaceType)
+   {
+      return matches(methodName, getParametersAsStrings(params), interfaceType);
+   }
+
+   /**
+    * Whether this matches
+    * 
+    * @param methodName the method name
+    * @param params the parameters
+    * @param interfaceType the interface type
+    * @return true when it matches
+    */
+   public boolean matches(String methodName, String[] params, MethodInterfaceType interfaceType)
+   {
+      if (isEmpty())
+         return false;
+
+      for (MethodMetaData method : this)
+      {
+         if (method.matches(methodName, params, interfaceType))
+            return true;
+      }
+      return false;
+   }
+
+   /**
+    * Whether this matches
+    * 
+    * @param methodName the method name
+    * @param params the parameters
+    * @param interfaceType the interface type
+    * @param bestMatch the previous best match
+    * @return best match
+    */
+   public MethodMetaData bestMatch(String methodName, Class[] params, MethodInterfaceType interfaceType, MethodMetaData bestMatch)
+   {
+      return bestMatch(methodName, getParametersAsStrings(params), interfaceType, bestMatch);
+   }
+
+   /**
+    * Whether this matches
+    * 
+    * @param methodName the method name
+    * @param params the parameters
+    * @param interfaceType the interface type
+    * @param bestMatch the previous best match
+    * @return best match
+    */
+   public MethodMetaData bestMatch(String methodName, String[] params, MethodInterfaceType interfaceType, MethodMetaData bestMatch)
+   {
+      if (isEmpty())
+         return bestMatch;
+
+      for (MethodMetaData method : this)
+      {
+         if (method.matches(methodName, params, interfaceType))
+         {
+            // No previous best match
+            if (bestMatch == null)
+               bestMatch = method;
+            // better match because the previous was a wildcard
+            else if ("*".equals(bestMatch.getMethodName()))
+               bestMatch = method;
+            // better because it specifies parameters
+            else if (method.getMethodParams() != null)
+               bestMatch = method;
+         }
+      }
+      return bestMatch;
+   }
+
+   /**
+    * Get the methods for an ejb
+    * 
+    * @param ejbName the ejb name
+    * @return the methods or null for no methods
+    * @throws IllegalArgumentException for a null ejb name
+    */
+   public MethodsMetaData getMethodsByEjbName(String ejbName)
+   {
+      if (ejbName == null)
+         throw new IllegalArgumentException("Null ejbName");
+
+      MethodsMetaData result = null;
+      for (MethodMetaData method : this)
+      {
+         if (ejbName.equals(method.getEjbName()))
+         {
+            if (result == null)
+               result = new MethodsMetaData();
+            result.add(method);
+         }
+      }
+      return result;
+   }
+
+   /**
+    * Get string names of classes
+    * 
+    * @param classes the classes
+    * @return the string names
+    */
+   private String[] getParametersAsStrings(Class[] classes)
+   {
+      if (classes == null)
+         return null;
+                          
+      String out[] = new String[classes.length];
+      for (int i = 0; i < out.length; i++)
+      {
+         String brackets = "";
+         Class cls = classes[i];
+         while (cls.isArray())
+         {
+            brackets += "[]";
+            cls = cls.getComponentType();
+         }
+         out[i] = cls.getName() + brackets;
+      }
+      return out;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/MultiplicityType.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/MultiplicityType.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/MultiplicityType.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,40 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * MultiplicityType.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="multiplicityType")
+public enum MultiplicityType
+{
+   /** One */
+   One,
+   
+   /** Many */
+   Many,
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/NamedMethodMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/NamedMethodMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/NamedMethodMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,93 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.NamedMetaData;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * NamedMethodMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="named-methodType")
+public class NamedMethodMetaData extends NamedMetaData
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -2439949201898491207L;
+
+   /** The method parameters */
+   private MethodParametersMetaData methodParams;
+   
+   /**
+    * Create a new NamedMethodMetaData.
+    */
+   public NamedMethodMetaData()
+   {
+      // For serialization
+   }
+
+   /**
+    * Get the methodName.
+    * 
+    * @return the methodName.
+    */
+   public String getMethodName()
+   {
+      return getName();
+   }
+
+   /**
+    * Set the methodName.
+    * 
+    * @param methodName the methodName.
+    * @throws IllegalArgumentException for a null methodName
+    */
+   public void setMethodName(String methodName)
+   {
+      setName(methodName);
+   }
+
+   /**
+    * Get the methodParams.
+    * 
+    * @return the methodParams.
+    */
+   public MethodParametersMetaData getMethodParams()
+   {
+      return methodParams;
+   }
+
+   /**
+    * Set the methodParams.
+    * 
+    * @param methodParams the methodParams.
+    * @throws IllegalArgumentException for a null methodParams
+    */
+   public void setMethodParams(MethodParametersMetaData methodParams)
+   {
+      if (methodParams == null)
+         throw new IllegalArgumentException("Null methodParams");
+      this.methodParams = methodParams;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/PersistenceType.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/PersistenceType.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/PersistenceType.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,40 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * PersistenceType.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="persistence-typeType")
+public enum PersistenceType
+{
+   /** CMP */
+   Container,
+   
+   /** BMP */
+   Bean,
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/QueriesMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/QueriesMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/QueriesMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,44 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.NonNullLinkedHashSet;
+
+/**
+ * QueriesMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class QueriesMetaData extends NonNullLinkedHashSet<QueryMetaData>
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -3666752837810424640L;
+
+   /**
+    * Create a new QueriessMetaData.
+    */
+   public QueriesMetaData()
+   {
+      // For serialization
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/QueryMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/QueryMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/QueryMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,127 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.IdMetaDataImpl;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * QueryMetaData.
+ * 
+ * TODO JBossXB description
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="queryType")
+public class QueryMetaData extends IdMetaDataImpl
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -8080829946285127796L;
+
+   /** The query method */
+   private QueryMethodMetaData queryMethod;
+   
+   /** The result type mapping */
+   private ResultTypeMapping resultTypeMapping;
+
+   /** The ejb ql */
+   private String ejbQL;
+   
+   /**
+    * Create a new MethodPermissionMetaData.
+    */
+   public QueryMetaData()
+   {
+      // For serialization
+   }
+
+   /**
+    * Get the ejbQL.
+    * 
+    * @return the ejbQL.
+    */
+   public String getEjbQL()
+   {
+      return ejbQL;
+   }
+
+   /**
+    * Set the ejbQL.
+    * 
+    * @param ejbQL the ejbQL.
+    * @throws IllegalArgumentException for a null ejbQL
+    */
+   @XmlElement(name="ejb-ql")
+   public void setEjbQL(String ejbQL)
+   {
+      if (ejbQL == null)
+         throw new IllegalArgumentException("Null ejbQL");
+      this.ejbQL = ejbQL;
+   }
+
+   /**
+    * Get the queryMethod.
+    * 
+    * @return the queryMethod.
+    */
+   public QueryMethodMetaData getQueryMethod()
+   {
+      return queryMethod;
+   }
+
+   /**
+    * Set the queryMethod.
+    * 
+    * @param queryMethod the queryMethod.
+    * @throws IllegalArgumentException for a null queryMethod
+    */
+   public void setQueryMethod(QueryMethodMetaData queryMethod)
+   {
+      if (queryMethod == null)
+         throw new IllegalArgumentException("Null queryMethod");
+      this.queryMethod = queryMethod;
+   }
+
+   /**
+    * Get the resultTypeMapping.
+    * 
+    * @return the resultTypeMapping.
+    */
+   public ResultTypeMapping getResultTypeMapping()
+   {
+      return resultTypeMapping;
+   }
+
+   /**
+    * Set the resultTypeMapping.
+    * 
+    * @param resultTypeMapping the resultTypeMapping.
+    * @throws IllegalArgumentException for a null resultTypeMapping
+    */
+   public void setResultTypeMapping(ResultTypeMapping resultTypeMapping)
+   {
+      if (resultTypeMapping == null)
+         throw new IllegalArgumentException("Null resultTypeMapping");
+      this.resultTypeMapping = resultTypeMapping;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/QueryMethodMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/QueryMethodMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/QueryMethodMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,93 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.NamedMetaData;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * QueryMethodMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="query-methodType")
+public class QueryMethodMetaData extends NamedMetaData
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -2699157157608413256L;
+
+   /** The method parameters */
+   private MethodParametersMetaData methodParams;
+   
+   /**
+    * Create a new QueryMethodMetaData.
+    */
+   public QueryMethodMetaData()
+   {
+      // For serialization
+   }
+
+   /**
+    * Get the methodName.
+    * 
+    * @return the methodName.
+    */
+   public String getMethodName()
+   {
+      return getName();
+   }
+
+   /**
+    * Set the methodName.
+    * 
+    * @param methodName the methodName.
+    * @throws IllegalArgumentException for a null methodName
+    */
+   public void setMethodName(String methodName)
+   {
+      setName(methodName);
+   }
+
+   /**
+    * Get the methodParams.
+    * 
+    * @return the methodParams.
+    */
+   public MethodParametersMetaData getMethodParams()
+   {
+      return methodParams;
+   }
+
+   /**
+    * Set the methodParams.
+    * 
+    * @param methodParams the methodParams.
+    * @throws IllegalArgumentException for a null methodParams
+    */
+   public void setMethodParams(MethodParametersMetaData methodParams)
+   {
+      if (methodParams == null)
+         throw new IllegalArgumentException("Null methodParams");
+      this.methodParams = methodParams;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/RelationMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/RelationMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/RelationMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,211 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import java.util.List;
+
+import org.jboss.javaee.metadata.support.NamedMetaDataWithDescriptions;
+import org.jboss.xb.annotations.JBossXmlConstants;
+import org.jboss.xb.annotations.JBossXmlModelGroup;
+
+import javax.xml.bind.annotation.XmlElement;
+
+/**
+ * RelationMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+// TODO it's currently bound as a choice with single particle...
+//@XmlType(name="ejb-relationType")
+ at JBossXmlModelGroup(
+      kind=JBossXmlConstants.MODEL_GROUP_CHOICE,
+      particles={@JBossXmlModelGroup.Particle(element=@XmlElement(name="ejb-relation"), type=RelationMetaData.class)})
+public class RelationMetaData extends NamedMetaDataWithDescriptions
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -3955264328575239287L;
+
+   /** The left role */
+   private RelationRoleMetaData leftRole;
+
+   /** The right role */
+   private RelationRoleMetaData rightRole;
+
+   /**
+    * Create a new RelationMetaData.
+    */
+   public RelationMetaData()
+   {
+      // For serialization
+   }
+   
+   /**
+    * Get the ejbRelationName.
+    * 
+    * @return the ejbRelationName.
+    */
+   public String getEjbRelationName()
+   {
+      return getName();
+   }
+
+   /**
+    * Set the ejbRelationName.
+    * 
+    * @param ejbRelationName the ejbRelationName.
+    * @throws IllegalArgumentException for a null ejbRelationName
+    */
+   public void setEjbRelationName(String ejbRelationName)
+   {
+      setName(ejbRelationName);
+   }
+
+   /**
+    * Get the leftRole.
+    * 
+    * @return the leftRole.
+    */
+   public RelationRoleMetaData getLeftRole()
+   {
+      return leftRole;
+   }
+
+   /**
+    * Set the leftRole.
+    * 
+    * @param leftRole the leftRole.
+    * @throws IllegalArgumentException for a null leftRole
+    */
+   @XmlElement(required=false)
+   public void setLeftRole(RelationRoleMetaData leftRole)
+   {
+      if (leftRole == null)
+         throw new IllegalArgumentException("Null leftRole");
+      this.leftRole = leftRole;
+      leftRole.setRelation(this);
+   }
+
+   /**
+    * Get the rightRole.
+    * 
+    * @return the rightRole.
+    */
+   public RelationRoleMetaData getRightRole()
+   {
+      return rightRole;
+   }
+
+   /**
+    * Set the rightRole.
+    * 
+    * @param rightRole the rightRole.
+    * @throws IllegalArgumentException for a null rightRole
+    */
+   @XmlElement(required=false)
+   public void setRightRole(RelationRoleMetaData rightRole)
+   {
+      if (rightRole == null)
+         throw new IllegalArgumentException("Null rightRole");
+      this.rightRole = rightRole;
+      rightRole.setRelation(this);
+   }
+   
+   /**
+    * Get the other role
+    * 
+    * @param role the reference role
+    * @return the related role
+    * @throws IllegalArgumentException if the role is not a role in this relationship
+    */
+   public RelationRoleMetaData getRelatedRole(RelationRoleMetaData role)
+   {
+      if (role == leftRole)
+         return rightRole;
+      else if (role == rightRole)
+         return leftRole;
+      throw new IllegalArgumentException(role + " is not a role in this relationship: " + this);
+   }
+   
+   /** 
+    * TODO JBossXB figureout why this is required and why
+    * JBossXB wants to use the xml name as the property rather than the one I want to give it
+    * 
+    * @return null always
+    */
+   public List<RelationRoleMetaData> getEjbRelationshipRoles()
+   {
+      return new java.util.AbstractList<RelationRoleMetaData>()
+      {
+         @Override
+         public RelationRoleMetaData get(int index)
+         {
+            if(index > size())
+            {
+               throw new IllegalArgumentException("Index must be less then " + size() + ": " + index);
+            }
+            return index == 0 ? leftRole : rightRole;
+         }
+
+         @Override
+         public int size()
+         {
+            return leftRole == null ? (rightRole == null ? 0 : 1) : 2;
+         }
+         
+         @Override
+         public boolean add(RelationRoleMetaData o)
+         {
+            if(leftRole == null)
+            {
+               leftRole = o;
+            }
+            else if(rightRole == null)
+            {
+               rightRole = o;
+            }
+            else
+            {
+               throw new IllegalStateException("Too many roles: " + o);
+            }
+            return true;
+         }
+      };
+   }
+   
+   /**
+    * Set the relation role metadata<p>
+    * 
+    * On first invocation it sets the left role,
+    * on second invocation it sets the right role,
+    * after that it throws an IllegalStateException
+    * 
+    * @param roleMetaData
+    * @throws IllegalArgumentException for a null role metadata
+    * @throws IllegalStateException for too many roles
+    */
+   @XmlElement(name="ejb-relationship-role")
+   public void setEjbRelationshipRoles(List<RelationRoleMetaData> roleMetaData)
+   {
+      throw new UnsupportedOperationException("this list shouldn't be set");
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/RelationRoleMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/RelationRoleMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/RelationRoleMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,235 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.spec.EmptyMetaData;
+import org.jboss.javaee.metadata.support.NamedMetaDataWithDescriptions;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * RelationRoleMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="ejb-relationship-roleType")
+public class RelationRoleMetaData extends NamedMetaDataWithDescriptions
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 16044363266734061L;
+
+   /** The multiplicity type */
+   private MultiplicityType multiplicityType;
+
+   /** Cascaded delete */
+   private EmptyMetaData cascadedDelete;
+
+   /** The relation metadata */
+   private RelationMetaData relation;
+   
+   /** The role source */
+   private RelationRoleSourceMetaData roleSource;
+   
+   /** The cmr field */
+   private CMRFieldMetaData cmrField;
+   
+   /**
+    * Create a new EnterpriseBeanMetaData.
+    */
+   public RelationRoleMetaData()
+   {
+      // For serialization
+   }
+   
+   /**
+    * Get the ejbRelationshipRoleName.
+    * 
+    * @return the ejbRelationshipRoleName.
+    */
+   public String getEjbRelationshipRoleName()
+   {
+      return getName();
+   }
+
+   /**
+    * Set the ejbRelationshipRoleName.
+    * 
+    * @param ejbRelationshipRoleName the ejbRelationshipRoleName.
+    * @throws IllegalArgumentException for a null ejbRelationshipRoleName
+    */
+   public void setEjbRelationshipRoleName(String ejbRelationshipRoleName)
+   {
+      setName(ejbRelationshipRoleName);
+   }
+
+   /**
+    * Get the multiplicityType.
+    * 
+    * @return the multiplicityType.
+    */
+   public MultiplicityType getMultiplicity()
+   {
+      return multiplicityType;
+   }
+
+   /**
+    * Set the multiplicityType.
+    * 
+    * @param multiplicityType the multiplicityType.
+    * @throws IllegalArgumentException for a null multiplicityType
+    */
+   @XmlElement(name="multiplicity")
+   public void setMultiplicity(MultiplicityType multiplicityType)
+   {
+      if (multiplicityType == null)
+         throw new IllegalArgumentException("Null multiplicityType");
+      this.multiplicityType = multiplicityType;
+   }
+
+   /**
+    * Is this multiplicity one 
+    * 
+    * @return true when it is one
+    */
+   public boolean isMultiplicityOne()
+   {
+      return multiplicityType == MultiplicityType.One;
+   }
+
+   /**
+    * Is this multiplicity many
+    * 
+    * @return true when it is many
+    */
+   public boolean isMultiplicityMany()
+   {
+      return multiplicityType == MultiplicityType.Many;
+   }
+   
+   public boolean isCascadedDelete()
+   {
+      return cascadedDelete != null;
+   }
+   
+   /**
+    * Get the cascadedDelete.
+    * 
+    * @return the cascadedDelete.
+    */
+   public EmptyMetaData getCascadeDelete()
+   {
+      return cascadedDelete;
+   }
+
+   /**
+    * Set the cascadedDelete.
+    * 
+    * @param cascadedDelete the cascadedDelete.
+    */
+   public void setCascadeDelete(EmptyMetaData cascadedDelete)
+   {
+      this.cascadedDelete = cascadedDelete;
+   }
+
+   /**
+    * Get the relation.
+    * 
+    * @return the relation.
+    */
+   public RelationMetaData getRelation()
+   {
+      return relation;
+   }
+
+   /**
+    * Set the relation.
+    * 
+    * @param relation the relation.
+    * @throws IllegalArgumentException for a null relation
+    */
+   void setRelation(RelationMetaData relation)
+   {
+      if (relation == null)
+         throw new IllegalArgumentException("Null relation");
+      this.relation = relation;
+   }
+   
+   /**
+    * Get the releated role
+    * 
+    * @return the related role
+    */
+   public RelationRoleMetaData getRelatedRole()
+   {
+      if (relation == null)
+         throw new IllegalStateException("Relation has not been set");
+      return relation.getRelatedRole(this);
+   }
+
+   /**
+    * Get the roleSource.
+    * 
+    * @return the roleSource.
+    */
+   public RelationRoleSourceMetaData getRoleSource()
+   {
+      return roleSource;
+   }
+
+   /**
+    * Set the roleSource.
+    * 
+    * @param roleSource the roleSource.
+    * @throws IllegalArgumentException for a null roleSource
+    */
+   @XmlElement(name="relationship-role-source")
+   public void setRoleSource(RelationRoleSourceMetaData roleSource)
+   {
+      if (roleSource == null)
+         throw new IllegalArgumentException("Null roleSource");
+      this.roleSource = roleSource;
+   }
+
+   /**
+    * Get the cmrField.
+    * 
+    * @return the cmrField.
+    */
+   public CMRFieldMetaData getCmrField()
+   {
+      return cmrField;
+   }
+
+   /**
+    * Set the cmrField.
+    * 
+    * @param cmrField the cmrField.
+    * @throws IllegalArgumentException for a null cmrField
+    */
+   public void setCmrField(CMRFieldMetaData cmrField)
+   {
+      if (cmrField == null)
+         throw new IllegalArgumentException("Null cmrField");
+      this.cmrField = cmrField;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/RelationRoleSourceMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/RelationRoleSourceMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/RelationRoleSourceMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,72 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.IdMetaDataImplWithDescriptions;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * RelationRoleSourceMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="relationship-role-sourceType")
+public class RelationRoleSourceMetaData extends IdMetaDataImplWithDescriptions
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -9067826695189947397L;
+   
+   /** The ejb name */
+   private String ejbName;
+   
+   /**
+    * Create a new RelationRoleSourceMetaData.
+    */
+   public RelationRoleSourceMetaData()
+   {
+      // For serialization
+   }
+
+   /**
+    * Get the ejbName.
+    * 
+    * @return the ejbName.
+    */
+   public String getEjbName()
+   {
+      return ejbName;
+   }
+
+   /**
+    * Set the ejbName.
+    * 
+    * @param ejbName the ejbName.
+    * @throws IllegalArgumentException for a null ejbName
+    */
+   public void setEjbName(String ejbName)
+   {
+      if (ejbName == null)
+         throw new IllegalArgumentException("Null ejbName");
+      this.ejbName = ejbName;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/RelationsMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/RelationsMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/RelationsMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,46 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.MappedMetaDataWithDescriptions;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * RelationsMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="relationshipsType")
+public class RelationsMetaData extends MappedMetaDataWithDescriptions<RelationMetaData>
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -3080564843998267217L;
+   
+   /**
+    * Create a new RelationsMetaData.
+    */
+   public RelationsMetaData()
+   {
+      super("relation name");
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/RemoveMethodMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/RemoveMethodMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/RemoveMethodMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,95 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.IdMetaDataImpl;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * RemoveMethodMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="remove-methodType")
+public class RemoveMethodMetaData extends IdMetaDataImpl
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 1830841714074832930L;
+   
+   /** The bean method */
+   private NamedMethodMetaData beanMethod;
+   
+   /** Retain if exception */
+   private boolean retainIfException = false;
+   
+   /**
+    * Create a new RemoveMethodMetaData.
+    */
+   public RemoveMethodMetaData()
+   {
+      // For serialization
+   }
+
+   /**
+    * Get the beanMethod.
+    * 
+    * @return the beanMethod.
+    */
+   public NamedMethodMetaData getBeanMethod()
+   {
+      return beanMethod;
+   }
+
+   /**
+    * Set the beanMethod.
+    * 
+    * @param beanMethod the beanMethod.
+    * @throws IllegalArgumentException for a null beanMethod
+    */
+   public void setBeanMethod(NamedMethodMetaData beanMethod)
+   {
+      if (beanMethod == null)
+         throw new IllegalArgumentException("Null beanMethod");
+      this.beanMethod = beanMethod;
+   }
+
+   /**
+    * Get the retainIfException.
+    * 
+    * @return the retainIfException.
+    */
+   public boolean isRetainIfException()
+   {
+      return retainIfException;
+   }
+
+   /**
+    * Set the retainIfException.
+    * 
+    * @param retainIfException the retainIfException.
+    */
+   public void setRetainIfException(boolean retainIfException)
+   {
+      this.retainIfException = retainIfException;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/RemoveMethodsMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/RemoveMethodsMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/RemoveMethodsMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,44 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.support.NonNullLinkedHashSet;
+
+/**
+ * RemoveMethodsMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class RemoveMethodsMetaData extends NonNullLinkedHashSet<RemoveMethodMetaData>
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -7679945562287708913L;
+
+   /**
+    * Create a new RemoveMethodsMetaData.
+    */
+   public RemoveMethodsMetaData()
+   {
+      // For serialization
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ResultTypeMapping.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ResultTypeMapping.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/ResultTypeMapping.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,40 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * ResultTypeMapping.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="result-type-mappingType")
+public enum ResultTypeMapping
+{
+   /** Local */
+   Local,
+   
+   /** Remote */
+   Remote,
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/SecurityIdentityMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/SecurityIdentityMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/SecurityIdentityMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,159 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.spec.EmptyMetaData;
+import org.jboss.javaee.metadata.spec.RunAsMetaData;
+import org.jboss.javaee.metadata.support.IdMetaDataImplWithDescriptions;
+import org.jboss.javaee.metadata.support.MergeableMetaData;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * SecurityIdentityMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="security-identityType")
+public class SecurityIdentityMetaData extends IdMetaDataImplWithDescriptions implements MergeableMetaData<SecurityIdentityMetaData>
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -6336033602938028216L;
+   
+   /** The use caller identity */
+   private EmptyMetaData useCallerIdentity;
+   
+   /** The run as */
+   private RunAsMetaData runAs;
+
+   /** The run as principal */
+   private String runAsPrincipal;
+
+   /**
+    * Create a new SecurityIdentityMetaData
+    */
+   public SecurityIdentityMetaData()
+   {
+      // For serialization
+   }
+
+   /**
+    * Whether to use caller identity
+    * 
+    * @return true for caller id
+    */
+   public boolean isUseCallerId()
+   {
+      return useCallerIdentity != null;
+   }
+   
+   /**
+    * Get the useCallerIdentity.
+    * 
+    * @return the useCallerIdentity.
+    */
+   public EmptyMetaData getUseCallerIdentity()
+   {
+      return useCallerIdentity;
+   }
+
+   /**
+    * Set the useCallerIdentity.
+    * 
+    * @param useCallerIdentity the useCallerIdentity.
+    */
+   @XmlElement(required=false)
+   public void setUseCallerIdentity(EmptyMetaData useCallerIdentity)
+   {
+      this.useCallerIdentity = useCallerIdentity;
+   }
+
+   /**
+    * Get the runAs.
+    * 
+    * @return the runAs.
+    */
+   public RunAsMetaData getRunAs()
+   {
+      return runAs;
+   }
+
+   /**
+    * Set the runAs.
+    * 
+    * @param runAs the runAs.
+    * @throws IllegalArgumentException for a null runAs
+    */
+   @XmlElement(required=false)
+   public void setRunAs(RunAsMetaData runAs)
+   {
+      if (runAs == null)
+         throw new IllegalArgumentException("Null runAs");
+      this.runAs = runAs;
+   }
+
+   /**
+    * Get the runAsPrincipal.
+    * 
+    * @return the runAsPrincipal.
+    */
+   public String getRunAsPrincipal()
+   {
+      return runAsPrincipal;
+   }
+
+   /**
+    * Set the runAsPrincipal.
+    * 
+    * @param runAsPrincipal the runAsPrincipal.
+    * @throws IllegalArgumentException for a null runAsPrincipal
+    */
+   @XmlElement(required=false)
+   public void setRunAsPrincipal(String runAsPrincipal)
+   {
+      if (runAsPrincipal == null)
+         throw new IllegalArgumentException("Null runAsPrincipal");
+      this.runAsPrincipal = runAsPrincipal;
+   }
+
+   public SecurityIdentityMetaData merge(SecurityIdentityMetaData original)
+   {
+      SecurityIdentityMetaData merged = new SecurityIdentityMetaData();
+      merge(merged, original);
+      return merged;
+   }
+
+   /**
+    * Merge
+    * 
+    * @param merged the data to merge into
+    * @param original the original data
+    */
+   public void merge(SecurityIdentityMetaData merged, SecurityIdentityMetaData original)
+   {
+      super.merge(merged, original);
+      merged.setUseCallerIdentity(original.getUseCallerIdentity());
+      merged.setRunAs(original.getRunAs());
+      merged.setRunAsPrincipal(getRunAsPrincipal());
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/SessionBeanMetaData.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/SessionBeanMetaData.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/SessionBeanMetaData.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,497 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import org.jboss.javaee.metadata.spec.LifecycleCallbacksMetaData;
+import org.jboss.javaee.metadata.spec.SecurityRoleRefsMetaData;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * SessionBeanMetaData.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="session-beanType")
+public class SessionBeanMetaData extends EnterpriseBeanMetaData
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 2093953120735574157L;
+   
+   /** The home interface */
+   private String home;
+
+   /** The remote interface */
+   private String remote;
+
+   /** The local home */
+   private String localHome;
+
+   /** The local */
+   private String local;
+   
+   /** The business locals */
+   private BusinessLocalsMetaData businessLocals;
+   
+   /** The business remotes */
+   private BusinessRemotesMetaData businessRemotes;
+   
+   /** The service endpoint */
+   private String serviceEndpoint;
+
+   /** The sesion type */
+   private SessionType sessionType;
+   
+   /** The timeout method */
+   private NamedMethodMetaData timeoutMethod;
+   
+   /** The init methods */
+   private InitMethodsMetaData initMethods;
+   
+   /** The remove methods */
+   private RemoveMethodsMetaData removeMethods;
+   
+   /** The transaction type */
+   private TransactionType transactionType;
+   
+   /** The around invoke */
+   private AroundInvokesMetaData aroundInvokes;
+
+   /** The post activates */
+   private LifecycleCallbacksMetaData postActivates;
+
+   /** The pre passivates */
+   private LifecycleCallbacksMetaData prePassivates;
+
+   /** The security role ref */
+   private SecurityRoleRefsMetaData securityRoleRefs;
+   
+   /**
+    * Create a new SessionBeanMetaData.
+    */
+   public SessionBeanMetaData()
+   {
+      // For serialization
+   }
+
+   @Override
+   public boolean isSession()
+   {
+      return true;
+   }
+
+   /**
+    * Get the home.
+    * 
+    * @return the home.
+    */
+   public String getHome()
+   {
+      return home;
+   }
+
+   /**
+    * Set the home.
+    * 
+    * @param home the home.
+    * @throws IllegalArgumentException for a null home
+    */
+   public void setHome(String home)
+   {
+      if (home == null)
+         throw new IllegalArgumentException("Null home");
+      this.home = home;
+   }
+
+   /**
+    * Get the remote.
+    * 
+    * @return the remote.
+    */
+   public String getRemote()
+   {
+      return remote;
+   }
+
+   /**
+    * Set the remote.
+    * 
+    * @param remote the remote.
+    * @throws IllegalArgumentException for a null remote
+    */
+   public void setRemote(String remote)
+   {
+      if (remote == null)
+         throw new IllegalArgumentException("Null remote");
+      this.remote = remote;
+   }
+
+   /**
+    * Get the localHome.
+    * 
+    * @return the localHome.
+    */
+   public String getLocalHome()
+   {
+      return localHome;
+   }
+
+   /**
+    * Set the localHome.
+    * 
+    * @param localHome the localHome.
+    * @throws IllegalArgumentException for a null localHome
+    */
+   public void setLocalHome(String localHome)
+   {
+      if (localHome == null)
+         throw new IllegalArgumentException("Null localHome");
+      this.localHome = localHome;
+   }
+
+   /**
+    * Get the local.
+    * 
+    * @return the local.
+    */
+   public String getLocal()
+   {
+      return local;
+   }
+
+   /**
+    * Set the local.
+    * 
+    * @param local the local.
+    * @throws IllegalArgumentException for a null local
+    */
+   public void setLocal(String local)
+   {
+      if (local == null)
+         throw new IllegalArgumentException("Null local");
+      this.local = local;
+   }
+
+   /**
+    * Get the businessLocals.
+    * 
+    * @return the businessLocals.
+    */
+   public BusinessLocalsMetaData getBusinessLocals()
+   {
+      return businessLocals;
+   }
+
+   /**
+    * Set the businessLocals.
+    * 
+    * @param businessLocals the businessLocals.
+    * @throws IllegalArgumentException for a null businessLocasl
+    */
+   @XmlElement(name="business-local", required=false)
+   public void setBusinessLocals(BusinessLocalsMetaData businessLocals)
+   {
+      if (businessLocals == null)
+         throw new IllegalArgumentException("Null businessLocals");
+      this.businessLocals = businessLocals;
+   }
+
+   /**
+    * Get the businessRemotes.
+    * 
+    * @return the businessRemotes.
+    */
+   public BusinessRemotesMetaData getBusinessRemotes()
+   {
+      return businessRemotes;
+   }
+
+   /**
+    * Set the businessRemotes.
+    * 
+    * @param businessRemotes the businessRemotes.
+    * @throws IllegalArgumentException for a null businessRemotes
+    */
+   @XmlElement(name="business-remote", required=false)
+   public void setBusinessRemotes(BusinessRemotesMetaData businessRemotes)
+   {
+      if (businessRemotes == null)
+         throw new IllegalArgumentException("Null businessRemotes");
+      this.businessRemotes = businessRemotes;
+   }
+
+   /**
+    * Get the serviceEndpoint.
+    * 
+    * @return the serviceEndpoint.
+    */
+   public String getServiceEndpoint()
+   {
+      return serviceEndpoint;
+   }
+
+   /**
+    * Set the serviceEndpoint.
+    * 
+    * @param serviceEndpoint the serviceEndpoint.
+    * @throws IllegalArgumentException for a null serviceEndpoint
+    */
+   public void setServiceEndpoint(String serviceEndpoint)
+   {
+      if (serviceEndpoint == null)
+         throw new IllegalArgumentException("Null serviceEndpoint");
+      this.serviceEndpoint = serviceEndpoint;
+   }
+
+   /**
+    * Get the sessionType.
+    * 
+    * @return the sessionType.
+    */
+   public SessionType getSessionType()
+   {
+      return sessionType;
+   }
+
+   /**
+    * Set the sessionType.
+    * 
+    * @param sessionType the sessionType.
+    * @throws IllegalArgumentException for a null sessionType
+    */
+   public void setSessionType(SessionType sessionType)
+   {
+      if (sessionType == null)
+         throw new IllegalArgumentException("Null sessionType");
+      this.sessionType = sessionType;
+   }
+
+   /**
+    * Is this stateful
+    * 
+    * @return true for stateful
+    */
+   public boolean isStateful()
+   {
+      if (sessionType == null)
+         return false;
+      return sessionType == SessionType.Stateful;
+   }
+
+   /**
+    * Is this stateless
+    * 
+    * @return true for stateless
+    */
+   public boolean isStateless()
+   {
+      return isStateful() == false;
+   }
+   
+   /**
+    * Get the timeoutMethod.
+    * 
+    * @return the timeoutMethod.
+    */
+   public NamedMethodMetaData getTimeoutMethod()
+   {
+      return timeoutMethod;
+   }
+
+   /**
+    * Set the timeoutMethod.
+    * 
+    * @param timeoutMethod the timeoutMethod.
+    * @throws IllegalArgumentException for a null timeoutMethod
+    */
+   @XmlElement(required=false)
+   public void setTimeoutMethod(NamedMethodMetaData timeoutMethod)
+   {
+      if (timeoutMethod == null)
+         throw new IllegalArgumentException("Null timeoutMethod");
+      this.timeoutMethod = timeoutMethod;
+   }
+
+   /**
+    * Get the initMethods.
+    * 
+    * @return the initMethods.
+    */
+   public InitMethodsMetaData getInitMethods()
+   {
+      return initMethods;
+   }
+
+   /**
+    * Set the initMethods.
+    * 
+    * @param initMethods the initMethods.
+    * @throws IllegalArgumentException for a null initMethods
+    */
+   @XmlElement(name="init-method", required=false)
+   public void setInitMethods(InitMethodsMetaData initMethods)
+   {
+      if (initMethods == null)
+         throw new IllegalArgumentException("Null initMethods");
+      this.initMethods = initMethods;
+   }
+
+   /**
+    * Get the removeMethods.
+    * 
+    * @return the removeMethods.
+    */
+   public RemoveMethodsMetaData getRemoveMethods()
+   {
+      return removeMethods;
+   }
+
+   /**
+    * Set the removeMethods.
+    * 
+    * @param removeMethods the removeMethods.
+    * @throws IllegalArgumentException for a null removeMethods
+    */
+   @XmlElement(name="remove-method", required=false)
+   public void setRemoveMethods(RemoveMethodsMetaData removeMethods)
+   {
+      if (removeMethods == null)
+         throw new IllegalArgumentException("Null removeMethods");
+      this.removeMethods = removeMethods;
+   }
+
+   @Override
+   public TransactionType getTransactionType()
+   {
+      return transactionType;
+   }
+
+   /**
+    * Set the transactionType.
+    * 
+    * @param transactionType the transactionType.
+    * @throws IllegalArgumentException for a null transactionType
+    */
+   public void setTransactionType(TransactionType transactionType)
+   {
+      if (transactionType == null)
+         throw new IllegalArgumentException("Null transactionType");
+      this.transactionType = transactionType;
+   }
+
+   /**
+    * Get the aroundInvokes.
+    * 
+    * @return the aroundInvokes.
+    */
+   public AroundInvokesMetaData getAroundInvokes()
+   {
+      return aroundInvokes;
+   }
+
+   /**
+    * Set the aroundInvokes.
+    * 
+    * @param aroundInvokes the aroundInvokes.
+    * @throws IllegalArgumentException for a null aroundInvokes
+    */
+   @XmlElement(name="around-invoke", required=false)
+   public void setAroundInvokes(AroundInvokesMetaData aroundInvokes)
+   {
+      if (aroundInvokes == null)
+         throw new IllegalArgumentException("Null aroundInvokes");
+      this.aroundInvokes = aroundInvokes;
+   }
+
+   /**
+    * Get the postActivates.
+    * 
+    * @return the postActivates.
+    */
+   public LifecycleCallbacksMetaData getPostActivates()
+   {
+      return postActivates;
+   }
+
+   /**
+    * Set the postActivates.
+    * 
+    * @param postActivates the postActivates.
+    * @throws IllegalArgumentException for a null postActivates
+    */
+   @XmlElement(name="post-activate", required=false)
+   public void setPostActivates(LifecycleCallbacksMetaData postActivates)
+   {
+      if (postActivates == null)
+         throw new IllegalArgumentException("Null postActivates");
+      this.postActivates = postActivates;
+   }
+
+   /**
+    * Get the prePassivates.
+    * 
+    * @return the prePassivates.
+    */
+   public LifecycleCallbacksMetaData getPrePassivates()
+   {
+      return prePassivates;
+   }
+
+   /**
+    * Set the prePassivates.
+    * 
+    * @param prePassivates the prePassivates.
+    * @throws IllegalArgumentException for a null prePassivates
+    */
+   @XmlElement(name="pre-passivate", required=false)
+   public void setPrePassivates(LifecycleCallbacksMetaData prePassivates)
+   {
+      if (prePassivates == null)
+         throw new IllegalArgumentException("Null prePassivates");
+      this.prePassivates = prePassivates;
+   }
+
+   /**
+    * Get the securityRoleRefs.
+    * 
+    * @return the securityRoleRefs.
+    */
+   public SecurityRoleRefsMetaData getSecurityRoleRefs()
+   {
+      return securityRoleRefs;
+   }
+
+   /**
+    * Set the securityRoleRefs.
+    * 
+    * @param securityRoleRefs the securityRoleRefs.
+    * @throws IllegalArgumentException for a null securityRoleRefs
+    */
+   @XmlElement(name="security-role-ref")
+   public void setSecurityRoleRefs(SecurityRoleRefsMetaData securityRoleRefs)
+   {
+      if (securityRoleRefs == null)
+         throw new IllegalArgumentException("Null securityRoleRefs");
+      this.securityRoleRefs = securityRoleRefs;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/SessionType.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/SessionType.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/SessionType.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,42 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * SessionType.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="session-typeType")
+ at XmlEnum(String.class)
+public enum SessionType
+{
+   /** Stateless session bean */
+   Stateless,
+   
+   /** Stateful session bean */
+   Stateful,
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/SubscriptionDurability.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/SubscriptionDurability.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/SubscriptionDurability.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,37 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+/**
+ * Subscription durability
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public enum SubscriptionDurability
+{
+   /** Durable */
+   Durable,
+   
+   /** Non durable */
+   NonDurable,
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/TransAttributeType.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/TransAttributeType.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/TransAttributeType.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,52 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * TransAttributeType.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="trans-attributeType")
+public enum TransAttributeType
+{
+   /** Not Supprot */
+   NotSupported,
+   
+   /** Supports */
+   Supports,
+   
+   /** Required */
+   Required,
+   
+   /** RequiresNew */
+   RequiresNew,
+   
+   /** Mandatory */
+   Mandatory,
+   
+   /** Never */
+   Never,
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/TransactionType.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/TransactionType.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/ejb/metadata/spec/TransactionType.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,40 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ejb.metadata.spec;
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * TransactionType.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="transaction-typeType")
+public enum TransactionType
+{
+   /** CMT */
+   Container,
+   
+   /** BMT */
+   Bean,
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/AbstractEJBEverythingTest.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/AbstractEJBEverythingTest.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/AbstractEJBEverythingTest.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,1266 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.ejb;
+
+import java.util.Iterator;
+import java.util.Set;
+
+import junit.framework.AssertionFailedError;
+
+import org.jboss.ejb.metadata.jboss.CacheInvalidationConfigMetaData;
+import org.jboss.ejb.metadata.jboss.ClusterConfigMetaData;
+import org.jboss.ejb.metadata.jboss.IORASContextMetaData;
+import org.jboss.ejb.metadata.jboss.IORSASContextMetaData;
+import org.jboss.ejb.metadata.jboss.IORSecurityConfigMetaData;
+import org.jboss.ejb.metadata.jboss.IORTransportConfigMetaData;
+import org.jboss.ejb.metadata.jboss.MethodAttributeMetaData;
+import org.jboss.ejb.metadata.jboss.MethodAttributesMetaData;
+import org.jboss.ejb.metadata.jboss.RemoteBindingMetaData;
+import org.jboss.ejb.metadata.spec.ActivationConfigMetaData;
+import org.jboss.ejb.metadata.spec.ActivationConfigPropertiesMetaData;
+import org.jboss.ejb.metadata.spec.ActivationConfigPropertyMetaData;
+import org.jboss.ejb.metadata.spec.AssemblyDescriptorMetaData;
+import org.jboss.ejb.metadata.spec.CMRFieldMetaData;
+import org.jboss.ejb.metadata.spec.ContainerTransactionMetaData;
+import org.jboss.ejb.metadata.spec.ContainerTransactionsMetaData;
+import org.jboss.ejb.metadata.spec.EjbJarMetaData;
+import org.jboss.ejb.metadata.spec.EnterpriseBeanMetaData;
+import org.jboss.ejb.metadata.spec.EnterpriseBeansMetaData;
+import org.jboss.ejb.metadata.spec.EntityBeanMetaData;
+import org.jboss.ejb.metadata.spec.ExcludeListMetaData;
+import org.jboss.ejb.metadata.spec.MessageDrivenBeanMetaData;
+import org.jboss.ejb.metadata.spec.MethodInterfaceType;
+import org.jboss.ejb.metadata.spec.MethodMetaData;
+import org.jboss.ejb.metadata.spec.MethodParametersMetaData;
+import org.jboss.ejb.metadata.spec.MethodPermissionMetaData;
+import org.jboss.ejb.metadata.spec.MethodPermissionsMetaData;
+import org.jboss.ejb.metadata.spec.MethodsMetaData;
+import org.jboss.ejb.metadata.spec.MultiplicityType;
+import org.jboss.ejb.metadata.spec.PersistenceType;
+import org.jboss.ejb.metadata.spec.RelationMetaData;
+import org.jboss.ejb.metadata.spec.RelationRoleMetaData;
+import org.jboss.ejb.metadata.spec.RelationRoleSourceMetaData;
+import org.jboss.ejb.metadata.spec.RelationsMetaData;
+import org.jboss.ejb.metadata.spec.SecurityIdentityMetaData;
+import org.jboss.ejb.metadata.spec.SessionBeanMetaData;
+import org.jboss.ejb.metadata.spec.SessionType;
+import org.jboss.ejb.metadata.spec.TransAttributeType;
+import org.jboss.ejb.metadata.spec.TransactionType;
+import org.jboss.javaee.metadata.jboss.IgnoreDependencyMetaData;
+import org.jboss.javaee.metadata.spec.RunAsMetaData;
+import org.jboss.javaee.metadata.spec.SecurityRoleRefMetaData;
+import org.jboss.javaee.metadata.spec.SecurityRoleRefsMetaData;
+//import org.jboss.metadata.ApplicationMetaData;
+//import org.jboss.metadata.BeanMetaData;
+//import org.jboss.metadata.EntityMetaData;
+//import org.jboss.metadata.IorSecurityConfigMetaData;
+//import org.jboss.metadata.MessageDrivenMetaData;
+//import org.jboss.metadata.MetaData;
+//import org.jboss.metadata.RelationshipRoleMetaData;
+//import org.jboss.metadata.SessionMetaData;
+import org.jboss.test.javaee.AbstractJavaEEEverythingTest;
+import org.jboss.util.NotImplementedException;
+
+/**
+ * AbstractEJBEverythingTest.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public abstract class AbstractEJBEverythingTest extends AbstractJavaEEEverythingTest
+{
+   public AbstractEJBEverythingTest(String name)
+   {
+      super(name);
+   }
+
+   protected void assertEnterpriseBeans(EjbJarMetaData ejbJarMetaData)
+   {
+      EnterpriseBeansMetaData enterpriseBeansMetaData = ejbJarMetaData.getEnterpriseBeans();
+      assertNotNull(enterpriseBeansMetaData);
+      assertId("enterprise-beans", enterpriseBeansMetaData);
+      assertEquals(15, enterpriseBeansMetaData.size());
+
+      assertNullSession("session0", enterpriseBeansMetaData);
+      assertFullSession("session1", enterpriseBeansMetaData);
+      assertFullSession("session2", enterpriseBeansMetaData);
+      SessionBeanMetaData session = assertSession("session3", enterpriseBeansMetaData);
+      assertEquals(SessionType.Stateful, session.getSessionType());
+      session = assertSession("session4", enterpriseBeansMetaData);
+      assertEquals(TransactionType.Bean, session.getTransactionType());
+      session = assertSession("session5", enterpriseBeansMetaData);
+      SecurityIdentityMetaData securityIdentityMetaData = session.getSecurityIdentity();
+      assertNotNull(securityIdentityMetaData);
+      assertFalse(securityIdentityMetaData.isUseCallerId());
+      
+      assertNullEntity("entity0", enterpriseBeansMetaData);
+      assertFullEntity("entity1", enterpriseBeansMetaData);
+      assertFullEntity("entity2", enterpriseBeansMetaData);
+      EntityBeanMetaData entity = assertEntity("entity3", enterpriseBeansMetaData);
+      assertEquals(PersistenceType.Bean, entity.getPersistenceType());
+      entity = assertEntity("entity4", enterpriseBeansMetaData);
+      assertFalse(entity.isReentrant());
+      entity = assertEntity("entity5", enterpriseBeansMetaData);
+      assertEquals("1.x", entity.getCmpVersion());
+      assertTrue(entity.isCMP1x());
+      
+      assertNullMDB("mdb0", enterpriseBeansMetaData);
+      assertFullMDB("mdb1", enterpriseBeansMetaData);
+      assertFullMDB("mdb2", enterpriseBeansMetaData);
+   }
+
+/*   protected void assertEnterpriseBeans(ApplicationMetaData applicationMetaData)
+   {
+      Iterator<BeanMetaData> i = applicationMetaData.getEnterpriseBeans();
+      assertNotNull(i);
+      int count = 0;
+      while (i.hasNext())
+      {
+         i.next();
+         ++count;
+      }
+      
+      assertEquals(15, count);
+
+      assertNullSession("session0", applicationMetaData);
+      assertFullSession("session1", applicationMetaData);
+      assertFullSession("session2", applicationMetaData);
+      SessionMetaData session = assertSession("session3", applicationMetaData);
+      assertTrue(session.isStateful());
+      assertFalse(session.isStateless());
+      session = assertSession("session4", applicationMetaData);
+      assertTrue(session.isBeanManagedTx());
+      assertFalse(session.isContainerManagedTx());
+      session = assertSession("session5", applicationMetaData);
+      org.jboss.metadata.SecurityIdentityMetaData securityIdentityMetaData = session.getSecurityIdentityMetaData();
+      assertNotNull(securityIdentityMetaData);
+      assertFalse(securityIdentityMetaData.getUseCallerIdentity());
+      
+      assertNullEntity("entity0", applicationMetaData);
+      assertFullEntity("entity1", applicationMetaData);
+      assertFullEntity("entity2", applicationMetaData);
+      EntityMetaData entity = assertEntity("entity3", applicationMetaData);
+      assertTrue(entity.isBMP());
+      entity = assertEntity("entity4", applicationMetaData);
+      assertFalse(entity.isReentrant());
+      entity = assertEntity("entity5", applicationMetaData);
+      assertTrue(entity.isCMP1x());
+      assertTrue(entity.isCMP1x());
+      
+      assertNullMDB("mdb0", applicationMetaData);
+      assertFullMDB("mdb1", applicationMetaData);
+      assertFullMDB("mdb2", applicationMetaData);
+   }
+*/   
+   protected SessionBeanMetaData assertFullSession(String ejbName, EnterpriseBeansMetaData enterpriseBeansMetaData)
+   {
+      throw new NotImplementedException();
+   }
+   
+   private SessionBeanMetaData assertNullSession(String ejbName, EnterpriseBeansMetaData enterpriseBeansMetaData)
+   {
+      SessionBeanMetaData session = assertSession(ejbName, enterpriseBeansMetaData);
+      assertNull(session.getId());
+      assertNull(session.getMappedName());
+      assertNull(session.getHome());
+      assertNull(session.getRemote());
+      assertNull(session.getLocalHome());
+      assertNull(session.getLocal());
+      assertNull(session.getBusinessLocals());
+      assertNull(session.getBusinessRemotes());
+      assertNull(session.getServiceEndpoint());
+      assertNull(session.getEjbClass());
+      assertNull(session.getSessionType());
+      assertNull(session.getTimeoutMethod());
+      assertNull(session.getInitMethods());
+      assertNull(session.getRemoveMethods());
+      assertNull(session.getTransactionType());
+      assertNull(session.getAroundInvokes());
+      assertNull(session.getPostActivates());
+      assertNull(session.getPrePassivates());
+      assertNull(session.getJndiEnvironmentRefsGroup());
+      assertNull(session.getContainerTransactions());
+      assertNull(session.getMethodPermissions());
+      assertNull(session.getExcludeList());
+      assertNull(session.getSecurityRoleRefs());
+      assertNull(session.getSecurityIdentity());
+      
+      return session;
+   }
+
+   protected SessionBeanMetaData assertSession(String ejbName, EnterpriseBeansMetaData enterpriseBeansMetaData)
+   {
+      SessionBeanMetaData session = assertEnterpriseBean(ejbName, enterpriseBeansMetaData, SessionBeanMetaData.class);
+      assertTrue(session.isSession());
+      assertFalse(session.isEntity());
+      assertFalse(session.isMessageDriven());
+      return session;
+   }
+
+/*   private SessionMetaData assertFullSession(String ejbName, ApplicationMetaData applicationMetaData)
+   {
+      SessionMetaData session = assertSession(ejbName, applicationMetaData);
+      assertClass(ejbName, "Home", session.getHome());
+      assertClass(ejbName, "Remote", session.getRemote());
+      assertClass(ejbName, "LocalHome", session.getLocalHome());
+      assertClass(ejbName, "Local", session.getLocal());
+      assertClass(ejbName, "ServiceEndpoint", session.getServiceEndpoint());
+      assertClass(ejbName, "EjbClass", session.getEjbClass());
+      assertTrue(session.isStateless());
+      assertTrue(session.isContainerManagedTx());
+      assertEnvironment(ejbName, session, true);
+      assertMethodAttributes(ejbName, session);
+      assertContainerTransactions(session.getTransactionMethods());
+      assertMethodPermissions(7, session);
+      assertExcludedMethods(ejbName, session.getExcludedMethods());
+      assertSecurityRoleRefs(ejbName, 2, session.getSecurityRoleReferences());
+      assertSecurityIdentity(ejbName, "SecurityIdentity", session.getSecurityIdentityMetaData(), true);
+      
+      return session;
+   }
+*/
+/*   private SessionMetaData assertNullSession(String ejbName, ApplicationMetaData applicationMetaData)
+   {
+      SessionMetaData session = assertSession(ejbName, applicationMetaData);
+      assertNull(session.getHome());
+      assertNull(session.getRemote());
+      assertNull(session.getLocalHome());
+      assertNull(session.getLocal());
+      assertNull(session.getServiceEndpoint());
+      assertNull(session.getEjbClass());
+      assertTrue(session.isStateless());
+      assertTrue(session.isContainerManagedTx());
+      assertNullEnvironment(session);
+      assertDefaultMethodAttributes(ejbName, session);
+      assertEmptyIterator(session.getTransactionMethods());
+      assertEmptyIterator(session.getPermissionMethods());
+      assertEmptyIterator(session.getExcludedMethods());
+      assertEmptyIterator(session.getSecurityRoleReferences());
+      assertNull(session.getSecurityIdentityMetaData());
+      
+      return session;
+   }
+*/   
+/*   private SessionMetaData assertSession(String ejbName, ApplicationMetaData applicationMetaData)
+   {
+      SessionMetaData session = assertEnterpriseBean(ejbName, applicationMetaData, SessionMetaData.class);
+      assertTrue(session.isSession());
+      assertFalse(session.isEntity());
+      assertFalse(session.isMessageDriven());
+      return session;
+   }
+*/
+   protected EntityBeanMetaData assertFullEntity(String ejbName, EnterpriseBeansMetaData enterpriseBeansMetaData)
+   {
+      throw new NotImplementedException();
+   }
+
+   private EntityBeanMetaData assertNullEntity(String ejbName, EnterpriseBeansMetaData enterpriseBeansMetaData)
+   {
+      EntityBeanMetaData entity = assertEntity(ejbName, enterpriseBeansMetaData);
+      assertNull(entity.getId());
+      assertNull(entity.getMappedName());
+      assertNull(entity.getHome());
+      assertNull(entity.getRemote());
+      assertNull(entity.getLocalHome());
+      assertNull(entity.getLocal());
+      assertNull(entity.getEjbClass());
+      assertNull(entity.getPersistenceType());
+      assertNull(entity.getPrimKeyClass());
+      assertFalse(entity.isReentrant());
+      assertNull(entity.getCmpVersion());
+      assertFalse(entity.isCMP1x());
+      assertNull(entity.getAbstractSchemaName());
+      assertNull(entity.getCmpFields());
+      assertNull(entity.getPrimKeyField());
+      assertNull(entity.getJndiEnvironmentRefsGroup());
+      assertNull(entity.getContainerTransactions());
+      assertNull(entity.getMethodPermissions());
+      assertNull(entity.getExcludeList());
+      assertNull(entity.getSecurityRoleRefs());
+      assertNull(entity.getSecurityIdentity());
+      assertNull(entity.getQueries());
+      
+      return entity;
+   }
+   
+   protected EntityBeanMetaData assertEntity(String ejbName, EnterpriseBeansMetaData enterpriseBeansMetaData)
+   {
+      EntityBeanMetaData entity = assertEnterpriseBean(ejbName, enterpriseBeansMetaData, EntityBeanMetaData.class);
+      assertFalse(entity.isSession());
+      assertTrue(entity.isEntity());
+      assertFalse(entity.isMessageDriven());
+      return entity;
+   }
+
+/*   private EntityMetaData assertFullEntity(String ejbName, ApplicationMetaData applicationMetaData)
+   {
+      EntityMetaData entity = assertEntity(ejbName, applicationMetaData);
+      assertEquals(ejbName + "Home", entity.getHome());
+      assertEquals(ejbName + "Remote", entity.getRemote());
+      assertEquals(ejbName + "LocalHome", entity.getLocalHome());
+      assertEquals(ejbName + "Local",entity.getLocal());
+      assertEquals(ejbName + "EjbClass", entity.getEjbClass());
+      assertTrue(entity.isCMP());
+      assertEquals(ejbName + "PrimKeyClass", entity.getPrimaryKeyClass());
+      assertTrue(entity.isReentrant());
+      assertTrue(entity.isCMP2x());
+      assertFalse(entity.isCMP1x());
+      assertEquals(ejbName + "AbstractSchemaName", entity.getAbstractSchemaName());
+      assertCmpFields(ejbName, 2, entity.getCMPFields());
+      assertEquals(ejbName + "PrimKeyField",entity.getPrimKeyField());
+      assertEnvironment(ejbName, entity, true);
+      assertMethodAttributes(ejbName, entity);
+      assertMethodPermissions(7, entity);
+      assertExcludedMethods(ejbName, entity.getExcludedMethods());
+      assertSecurityRoleRefs(ejbName, 2, entity.getSecurityRoleReferences());
+      assertSecurityIdentity(ejbName, "SecurityIdentity", entity.getSecurityIdentityMetaData(), true);
+      assertQueries(ejbName, 2, entity.getQueries());
+      
+      return entity;
+   }
+*/
+/*   private EntityMetaData assertNullEntity(String ejbName, ApplicationMetaData applicationMetaData)
+   {
+      EntityMetaData entity = assertEntity(ejbName, applicationMetaData);
+      assertNull(entity.getHome());
+      assertNull(entity.getRemote());
+      assertNull(entity.getLocalHome());
+      assertNull(entity.getLocal());
+      assertNull(entity.getEjbClass());
+      assertTrue(entity.isCMP());
+      assertNull(entity.getPrimaryKeyClass());
+      assertFalse(entity.isReentrant());
+      assertTrue(entity.isCMP2x());
+      assertFalse(entity.isCMP1x());
+      assertNull(entity.getAbstractSchemaName());
+      assertEmptyIterator(entity.getCMPFields());
+      assertNull(entity.getPrimKeyField());
+      assertNullEnvironment(entity);
+      assertDefaultMethodAttributes(ejbName, entity);
+      assertEmptyIterator(entity.getPermissionMethods());
+      assertEmptyIterator(entity.getExcludedMethods());
+      assertEmptyIterator(entity.getSecurityRoleReferences());
+      assertNull(entity.getSecurityIdentityMetaData());
+      assertEmptyIterator(entity.getQueries());
+      
+      return entity;
+   }
+*/   
+/*   protected EntityMetaData assertEntity(String ejbName, ApplicationMetaData applicationMetaData)
+   {
+      EntityMetaData entity = assertEnterpriseBean(ejbName, applicationMetaData, EntityMetaData.class);
+      assertFalse(entity.isSession());
+      assertTrue(entity.isEntity());
+      assertFalse(entity.isMessageDriven());
+      return entity;
+   }
+*/
+/*   private void assertCmpFields(String ejbName, int size, Iterator<String> cmpFieldsMetaData)
+   {
+      assertNotNull(cmpFieldsMetaData);
+      int count = 1;
+      while (cmpFieldsMetaData.hasNext())
+      {
+         assertEquals(ejbName + "CmpField" + count, cmpFieldsMetaData.next());
+         ++count;
+      }
+      assertEquals(size + 1, count);
+   }
+*/
+/*   private void assertQueries(String ejbName, int size, Iterator<org.jboss.metadata.QueryMetaData> queries)
+   {
+      assertNotNull(queries);
+      int count = 1;
+      while (queries.hasNext())
+      {
+         org.jboss.metadata.QueryMetaData query = queries.next();
+         String prefix = ejbName + "Query" + count;
+         assertEquals(prefix + "QueryMethod", query.getMethodName());
+         assertMethodParams(prefix + "QueryMethod", 2, query.getMethodParams());
+         if (count == 1)
+            assertEquals("Local", query.getResultTypeMapping());
+         else
+            assertEquals("Remote", query.getResultTypeMapping());
+         assertEquals(prefix + "EjbQL", query.getEjbQl());
+         ++count;
+      }
+      assertEquals(size + 1, count);
+   }
+*/
+   private void assertMethodParams(String prefix, int size, Iterator<String> params)
+   {
+      assertNotNull(params);
+      int count = 1;
+      while (params.hasNext())
+      {
+         assertEquals(prefix + "Param" + count, params.next());
+         ++count;
+      }
+      assertEquals(size + 1, count);
+   }
+
+   private void assertMethodParams(String prefix, int size, String[] params)
+   {
+      assertNotNull(params);
+      assertEquals(size, params.length);
+      for (int count = 1; count <= params.length; ++count)
+         assertEquals(prefix + "Param" + count, params[count-1]);
+   }
+
+   protected MessageDrivenBeanMetaData assertFullMDB(String ejbName, EnterpriseBeansMetaData enterpriseBeansMetaData)
+   {
+      throw new NotImplementedException();
+   }
+
+   private MessageDrivenBeanMetaData assertNullMDB(String ejbName, EnterpriseBeansMetaData enterpriseBeansMetaData)
+   {
+      MessageDrivenBeanMetaData mdb = assertMDB(ejbName, enterpriseBeansMetaData);
+
+      assertNull(mdb.getId());
+      assertNull(mdb.getMappedName());
+      assertNull(mdb.getEjbClass());
+      assertNull(mdb.getMessagingType());
+      assertNull(mdb.getTimeoutMethod());
+      assertNull(mdb.getTransactionType());
+      assertNull(mdb.getMessageDestinationType());
+      assertNull(mdb.getMessageDestinationLink());
+      assertNull(mdb.getActivationConfig());
+      assertNull(mdb.getAroundInvokes());
+      assertNull(mdb.getJndiEnvironmentRefsGroup());
+      assertNull(mdb.getContainerTransactions());
+      assertNull(mdb.getMethodPermissions());
+      assertNull(mdb.getExcludeList());
+      assertNull(mdb.getSecurityIdentity());
+      
+      return mdb;
+   }
+   
+   protected MessageDrivenBeanMetaData assertMDB(String ejbName, EnterpriseBeansMetaData enterpriseBeansMetaData)
+   {
+      MessageDrivenBeanMetaData mdb = assertEnterpriseBean(ejbName, enterpriseBeansMetaData, MessageDrivenBeanMetaData.class);
+      assertFalse(mdb.isSession());
+      assertFalse(mdb.isEntity());
+      assertTrue(mdb.isMessageDriven());
+      return mdb;
+   }
+
+/*   protected MessageDrivenMetaData assertFullMDB(String ejbName, ApplicationMetaData applicationMetaData)
+   {
+      MessageDrivenMetaData mdb = assertMDB(ejbName, applicationMetaData);
+
+      assertEquals(ejbName + "EjbClass", mdb.getEjbClass());
+      assertEquals(ejbName + "MessagingType", mdb.getMessagingType());
+      assertTrue(mdb.isContainerManagedTx());
+      assertEquals(ejbName + "MessageDestinationType", mdb.getDestinationType());
+      assertEquals(ejbName + "MessageDestinationLink", mdb.getDestinationLink());
+      assertActivationConfigProperties(ejbName, 2, mdb.getActivationConfigProperties());
+      assertEnvironment(ejbName, mdb, true);
+      assertMethodAttributes(ejbName, mdb);
+      assertMethodPermissions(7, mdb);
+      assertExcludedMethods(ejbName, mdb.getExcludedMethods());
+      assertSecurityIdentity(ejbName, "SecurityIdentity", mdb.getSecurityIdentityMetaData(), true);
+      
+      return mdb;
+   }
+*/
+/*   private MessageDrivenMetaData assertNullMDB(String ejbName, ApplicationMetaData applicationMetaData)
+   {
+      MessageDrivenMetaData mdb = assertMDB(ejbName, applicationMetaData);
+
+      assertNull(mdb.getEjbClass());
+      assertNull(mdb.getMessagingType());
+      assertTrue(mdb.isContainerManagedTx());
+      assertNull(mdb.getDestinationType());
+      assertNull(mdb.getDestinationLink());
+      assertEquals(0, mdb.getActivationConfigProperties().size());
+      assertNullEnvironment(mdb);
+      assertDefaultMethodAttributes(ejbName, mdb);
+      assertEmptyIterator(mdb.getPermissionMethods());
+      assertEmptyIterator(mdb.getExcludedMethods());
+      assertNull(mdb.getSecurityIdentityMetaData());
+      
+      return mdb;
+   }
+*/
+   protected void assertActivationConfig(String prefix, ActivationConfigMetaData activationConfigMetaData)
+   {
+      assertNotNull(activationConfigMetaData);
+      assertId(prefix + "ActivationConfig", activationConfigMetaData);
+      assertActivationConfigProperties(prefix, 2, activationConfigMetaData.getActivationConfigProperties());
+   }
+
+   private void assertActivationConfigProperties(String prefix, int size, ActivationConfigPropertiesMetaData activationConfigPropertiesMetaData)
+   {
+      assertNotNull(activationConfigPropertiesMetaData);
+      assertEquals(size, activationConfigPropertiesMetaData.size());
+      int count = 1;
+      for (ActivationConfigPropertyMetaData property : activationConfigPropertiesMetaData)
+      {
+         assertId(prefix + "ActivationConfigProperty" + count, property);
+         assertEquals(prefix + "ActivationConfigProperty" + count + "Name", property.getActivationConfigPropertyName());
+         assertEquals(prefix + "ActivationConfigProperty" + count + "Value", property.getValue());
+         ++count;
+      }
+   }
+
+/*   private void assertActivationConfigProperties(String ejbName, int size, Map<String, org.jboss.metadata.ActivationConfigPropertyMetaData> activationConfigPropertiesMetaData)
+   {
+      assertNotNull(activationConfigPropertiesMetaData);
+      assertEquals(size, activationConfigPropertiesMetaData.size());
+      int count = 1;
+      for (Entry<String, org.jboss.metadata.ActivationConfigPropertyMetaData> property : activationConfigPropertiesMetaData.entrySet())
+      {
+         String prefix = ejbName + "ActivationConfigProperty" + count;
+         assertEquals(prefix + "Name", property.getKey());
+         assertEquals(prefix + "Name", property.getValue().getName());
+         assertEquals(prefix + "Value", property.getValue().getValue());
+         ++count;
+      }
+   }
+*/
+/*   protected MessageDrivenMetaData assertMDB(String ejbName, ApplicationMetaData applicationMetaData)
+   {
+      MessageDrivenMetaData mdb = assertEnterpriseBean(ejbName, applicationMetaData, MessageDrivenMetaData.class);
+      assertFalse(mdb.isSession());
+      assertFalse(mdb.isEntity());
+      assertTrue(mdb.isMessageDriven());
+      return mdb;
+   }
+*/
+   protected <T extends EnterpriseBeanMetaData> T assertEnterpriseBean(String ejbName, EnterpriseBeansMetaData enterpriseBeansMetaData, Class<T> expected)
+   {
+      EnterpriseBeanMetaData enterpriseBeanMeta = enterpriseBeansMetaData.get(ejbName);
+      assertNotNull(enterpriseBeanMeta);
+      assertEquals(ejbName, enterpriseBeanMeta.getEjbName());
+      return expected.cast(enterpriseBeanMeta);
+   }
+   
+/*   private <T extends BeanMetaData> T assertEnterpriseBean(String ejbName, ApplicationMetaData applicationMetaData, Class<T> expected)
+   {
+      BeanMetaData beanMeta = applicationMetaData.getBeanByEjbName(ejbName);
+      assertNotNull(beanMeta);
+      assertEquals(ejbName, beanMeta.getEjbName());
+      return expected.cast(beanMeta);
+   }
+*/   
+   protected void assertRelationships(EjbJarMetaData ejbJarMetaData)
+   {
+      RelationsMetaData relationsMetaData = ejbJarMetaData.getRelationships();
+      assertNotNull(relationsMetaData);
+      assertId("relationships", relationsMetaData);
+      assertDescriptions("relationships", relationsMetaData.getDescriptions());
+      assertEquals(2, relationsMetaData.size());
+      int count = 1;
+      for (RelationMetaData relation : relationsMetaData)
+         assertRelation("relation" + (count++), relation);
+   }
+   
+   private void assertRelation(String prefix, RelationMetaData relationMetaData)
+   {
+      assertId(prefix, relationMetaData);
+      assertDescriptions(prefix, relationMetaData.getDescriptions());
+      assertEquals(prefix + "Name", relationMetaData.getEjbRelationName());
+      assertRelationRole(prefix + "Role1", MultiplicityType.One, relationMetaData.getLeftRole());
+      assertRelationRole(prefix + "Role2", MultiplicityType.Many, relationMetaData.getRightRole());
+      assertEquals(relationMetaData.getLeftRole(), relationMetaData.getRelatedRole(relationMetaData.getRightRole()));
+      assertEquals(relationMetaData.getRightRole(), relationMetaData.getRelatedRole(relationMetaData.getLeftRole()));
+      assertEquals(relationMetaData.getLeftRole(), relationMetaData.getRightRole().getRelatedRole());
+      assertEquals(relationMetaData.getRightRole(), relationMetaData.getLeftRole().getRelatedRole());
+   }
+   
+   private void assertRelationRole(String prefix, MultiplicityType multiplicity, RelationRoleMetaData relationRoleMetaData)
+   {
+      assertNotNull(relationRoleMetaData);
+      assertId(prefix, relationRoleMetaData);
+      assertDescriptions(prefix, relationRoleMetaData.getDescriptions());
+      assertEquals(prefix + "Name", relationRoleMetaData.getEjbRelationshipRoleName());
+      assertEquals(multiplicity, relationRoleMetaData.getMultiplicity());
+      if (multiplicity == MultiplicityType.Many)
+      {
+         assertTrue(relationRoleMetaData.isMultiplicityMany());
+         assertFalse(relationRoleMetaData.isMultiplicityOne());
+      }
+      else
+      {
+         assertFalse(relationRoleMetaData.isMultiplicityMany());
+         assertTrue(relationRoleMetaData.isMultiplicityOne());
+      }
+      assertEmpty(prefix, "CascadeDelete", relationRoleMetaData.getCascadeDelete());
+      assertTrue(relationRoleMetaData.isCascadedDelete());
+      assertRelationRoleSource(prefix + "RoleSource", relationRoleMetaData.getRoleSource());
+      assertCmrField(prefix + "CmrField", relationRoleMetaData.getCmrField());
+   }
+   
+   private void assertRelationRoleSource(String prefix, RelationRoleSourceMetaData relationRoleSourceMetaData)
+   {
+      assertNotNull(relationRoleSourceMetaData);
+      assertId(prefix, relationRoleSourceMetaData);
+      assertDescriptions(prefix, relationRoleSourceMetaData.getDescriptions());
+      assertEquals(prefix + "Name", relationRoleSourceMetaData.getEjbName());
+   }
+   
+   private void assertCmrField(String prefix, CMRFieldMetaData cmrFieldMetaData)
+   {
+      assertNotNull(cmrFieldMetaData);
+      assertId(prefix, cmrFieldMetaData);
+      assertDescriptions(prefix, cmrFieldMetaData.getDescriptions());
+      assertEquals(prefix + "Name", cmrFieldMetaData.getCmrFieldName());
+      assertEquals(prefix + "Type", cmrFieldMetaData.getCmrFieldType());
+   }
+   
+/*   protected void assertRelationships(ApplicationMetaData applicationMetaData)
+   {
+      Iterator<org.jboss.metadata.RelationMetaData> i = applicationMetaData.getRelationships();
+      assertNotNull(i);
+      int count = 1;
+      while (i.hasNext())
+      {
+         org.jboss.metadata.RelationMetaData relation = i.next();
+         assertRelation("relation" + (count++), relation);
+      }
+      assertEquals(3, count);
+   }
+*/   
+/*   private void assertRelation(String prefix, org.jboss.metadata.RelationMetaData relationMetaData)
+   {
+      assertEquals(prefix + "Name", relationMetaData.getRelationName());
+      assertRelationRole(prefix + "Role1", false, relationMetaData.getLeftRelationshipRole());
+      assertRelationRole(prefix + "Role2", true, relationMetaData.getRightRelationshipRole());
+      assertEquals(relationMetaData.getLeftRelationshipRole(), relationMetaData.getOtherRelationshipRole(relationMetaData.getRightRelationshipRole()));
+      assertEquals(relationMetaData.getRightRelationshipRole(), relationMetaData.getOtherRelationshipRole(relationMetaData.getLeftRelationshipRole()));
+      assertEquals(relationMetaData.getLeftRelationshipRole(), relationMetaData.getRightRelationshipRole().getRelatedRoleMetaData());
+      assertEquals(relationMetaData.getRightRelationshipRole(), relationMetaData.getLeftRelationshipRole().getRelatedRoleMetaData());
+   }
+*/   
+/*   private void assertRelationRole(String prefix, boolean many, RelationshipRoleMetaData relationRoleMetaData)
+   {
+      assertNotNull(relationRoleMetaData);
+      assertEquals(prefix + "Name", relationRoleMetaData.getRelationshipRoleName());
+      if (many)
+      {
+         assertTrue(relationRoleMetaData.isMultiplicityMany());
+         assertFalse(relationRoleMetaData.isMultiplicityOne());
+      }
+      else
+      {
+         assertFalse(relationRoleMetaData.isMultiplicityMany());
+         assertTrue(relationRoleMetaData.isMultiplicityOne());
+      }
+      assertTrue(relationRoleMetaData.isCascadeDelete());
+      assertEquals(prefix + "RoleSourceName", relationRoleMetaData.getEntityName());
+      assertEquals(prefix + "CmrFieldName", relationRoleMetaData.getCMRFieldName());
+      assertEquals(prefix + "CmrFieldType", relationRoleMetaData.getCMRFieldType());
+   }
+*/   
+   protected AssemblyDescriptorMetaData assertAssemblyDescriptor(EjbJarMetaData ejbJarMetaData)
+   {
+      AssemblyDescriptorMetaData assemblyDescriptorMetaData = ejbJarMetaData.getAssemblyDescriptor();
+      assertNotNull(assemblyDescriptorMetaData);
+      assertId("assembly-descriptor", assemblyDescriptorMetaData);
+      assertSecurityRoles(2, assemblyDescriptorMetaData.getSecurityRoles());
+      assertMethodPermissions(null, "methodPermission", 21, 3, assemblyDescriptorMetaData.getMethodPermissions());
+      assertContainerTransactions(null, 42, 6, assemblyDescriptorMetaData.getContainerTransactions());
+      assertMessageDestinations(2, assemblyDescriptorMetaData.getMessageDestinations());
+      assertExcludeList(null, 35, 5, assemblyDescriptorMetaData.getExcludeList());
+      return assemblyDescriptorMetaData;
+   }
+   
+/*   protected void assertAssemblyDescriptor(ApplicationMetaData applicationMetaData)
+   {
+      org.jboss.metadata.AssemblyDescriptorMetaData assemblyDescriptorMetaData = applicationMetaData.getAssemblyDescriptor();
+      assertNotNull(assemblyDescriptorMetaData);
+      assertSecurityRoles(2, assemblyDescriptorMetaData.getSecurityRoles());
+      assertMessageDestination("messageDestination1", assemblyDescriptorMetaData.getMessageDestinationMetaData("messageDestination1Name"));
+      assertMessageDestination("messageDestination2", assemblyDescriptorMetaData.getMessageDestinationMetaData("messageDestination2Name"));
+   }
+*/
+   protected void assertMethodPermissions(String ejbName, String prefix, int size, int limit, MethodPermissionsMetaData methodPermissionsMetaData)
+   {
+      assertNotNull(methodPermissionsMetaData);
+      assertEquals(size, methodPermissionsMetaData.size());
+      int count = 1;
+      for (MethodPermissionMetaData methodPermissionMetaData : methodPermissionsMetaData)
+      {
+         assertId(prefix + count, methodPermissionMetaData);
+         assertDescriptions(prefix + count, methodPermissionMetaData.getDescriptions());
+         if (count == 1)
+         {
+            assertEmpty(prefix + count, "Unchecked", methodPermissionMetaData.getUnchecked());
+            assertTrue(methodPermissionMetaData.isNotChecked());
+         }
+         else
+         {
+            assertRolesNames(prefix + count, 2, methodPermissionMetaData.getRoles());
+            assertFalse(methodPermissionMetaData.isNotChecked());
+         }
+         if (count == 1)
+            assertMethods(ejbName, prefix + count + "Method", 5, methodPermissionMetaData.getMethods());
+         else
+            assertMethods(ejbName, prefix + count + "Method", 1, methodPermissionMetaData.getMethods());
+         ++count;
+         if (count > limit)
+            break;
+      }
+   }
+
+/*   private void assertMethodPermissions(int size, BeanMetaData beanMetaData)
+   {
+      int count = 1;
+      Iterator<org.jboss.metadata.MethodMetaData> methods = beanMetaData.getPermissionMethods();
+      assertNotNull(methods);
+      while(methods.hasNext())
+      {
+         String permissionPrefix = null;
+         if (count <= 5)
+            permissionPrefix = beanMetaData.getEjbName() + "MethodPermission1";
+         else if (count == 6)
+            permissionPrefix = beanMetaData.getEjbName() + "MethodPermission2";
+         else if (count == 7)
+            permissionPrefix = beanMetaData.getEjbName() + "MethodPermission3";
+
+         org.jboss.metadata.MethodMetaData<?> methodMetaData = methods.next();
+         if (count <= 5)
+         {
+            assertEmpty(methodMetaData.getRoles());
+            assertTrue(methodMetaData.isUnchecked());
+         }
+         else
+         {
+            assertRolesNames(permissionPrefix, 2, methodMetaData.getRoles());
+            assertFalse(methodMetaData.isUnchecked());
+         }
+         assertEquals(beanMetaData.getEjbName(), methodMetaData.getEjbName());
+         assertTrue(methodMetaData.isIntfGiven());
+         if (count == 1)
+         {
+            assertEquals(org.jboss.metadata.MethodMetaData.HOME_TYPE, methodMetaData.getInterfaceType());
+            assertTrue(methodMetaData.isHomeMethod());
+            assertFalse(methodMetaData.isRemoteMethod());
+            assertFalse(methodMetaData.isLocalHomeMethod());
+            assertFalse(methodMetaData.isLocalMethod());
+            assertFalse(methodMetaData.isServiceEndpointMethod());
+            String prefix = permissionPrefix + "Method1"; 
+            assertEquals(prefix + "MethodName", methodMetaData.getMethodName());
+            assertTrue(methodMetaData.isParamGiven());
+            assertMethodParams(prefix, 2, methodMetaData.getMethodParams());
+         }
+         else if (count == 2)
+         {
+            assertEquals(org.jboss.metadata.MethodMetaData.REMOTE_TYPE, methodMetaData.getInterfaceType());
+            assertFalse(methodMetaData.isHomeMethod());
+            assertTrue(methodMetaData.isRemoteMethod());
+            assertFalse(methodMetaData.isLocalHomeMethod());
+            assertFalse(methodMetaData.isLocalMethod());
+            assertFalse(methodMetaData.isServiceEndpointMethod());
+            String prefix = permissionPrefix + "Method2"; 
+            assertEquals(prefix + "MethodName", methodMetaData.getMethodName());
+            assertFalse(methodMetaData.isParamGiven());
+         }
+         else if (count == 3)
+         {
+            assertEquals(org.jboss.metadata.MethodMetaData.LOCAL_HOME_TYPE, methodMetaData.getInterfaceType());
+            assertFalse(methodMetaData.isHomeMethod());
+            assertFalse(methodMetaData.isRemoteMethod());
+            assertTrue(methodMetaData.isLocalHomeMethod());
+            assertFalse(methodMetaData.isLocalMethod());
+            assertFalse(methodMetaData.isServiceEndpointMethod());
+            String prefix = permissionPrefix + "Method3"; 
+            assertEquals(prefix + "MethodName", methodMetaData.getMethodName());
+            assertFalse(methodMetaData.isParamGiven());
+         }
+         else if (count == 4)
+         {
+            assertEquals(org.jboss.metadata.MethodMetaData.LOCAL_TYPE, methodMetaData.getInterfaceType());
+            assertFalse(methodMetaData.isHomeMethod());
+            assertFalse(methodMetaData.isRemoteMethod());
+            assertFalse(methodMetaData.isLocalHomeMethod());
+            assertTrue(methodMetaData.isLocalMethod());
+            assertFalse(methodMetaData.isServiceEndpointMethod());
+            String prefix = permissionPrefix + "Method4"; 
+            assertEquals(prefix + "MethodName", methodMetaData.getMethodName());
+            assertFalse(methodMetaData.isParamGiven());
+         }
+         else if (count == 5)
+         {
+            assertEquals(org.jboss.metadata.MethodMetaData.SERVICE_ENDPOINT_TYPE, methodMetaData.getInterfaceType());
+            assertFalse(methodMetaData.isHomeMethod());
+            assertFalse(methodMetaData.isRemoteMethod());
+            assertFalse(methodMetaData.isLocalHomeMethod());
+            assertFalse(methodMetaData.isLocalMethod());
+            assertTrue(methodMetaData.isServiceEndpointMethod());
+            String prefix = permissionPrefix + "Method5"; 
+            assertEquals(prefix + "MethodName", methodMetaData.getMethodName());
+            assertFalse(methodMetaData.isParamGiven());
+         }
+         else if (count > 5)
+         {
+            assertEquals(org.jboss.metadata.MethodMetaData.HOME_TYPE, methodMetaData.getInterfaceType());
+            assertTrue(methodMetaData.isHomeMethod());
+            assertFalse(methodMetaData.isRemoteMethod());
+            assertFalse(methodMetaData.isLocalHomeMethod());
+            assertFalse(methodMetaData.isLocalMethod());
+            assertFalse(methodMetaData.isServiceEndpointMethod());
+            String prefix = permissionPrefix + "Method1"; 
+            assertEquals(prefix + "MethodName", methodMetaData.getMethodName());
+            assertMethodParams(prefix, 2, methodMetaData.getMethodParams());
+         }
+         ++count;
+      }
+      assertEquals(beanMetaData.getEjbName(), size, count-1);
+   }
+*/   
+   private void assertRolesNames(String prefix, int size, Set<String> roles)
+   {
+      assertNotNull(roles);
+      assertEquals(size, roles.size());
+      int count = 1;
+      for (String roleName : roles)
+      {
+         assertEquals(prefix + "RoleName" + count, roleName);
+         ++count;
+      }
+   }
+
+   private void assertMethods(String ejbName, String prefix, int size, MethodsMetaData methodsMetaData)
+   {
+      assertMethods(ejbName, prefix, size, size, methodsMetaData);
+   }
+
+   private void assertMethods(String ejbName, String prefix, int size, int limit, MethodsMetaData methodsMetaData)
+   {
+      assertNotNull(methodsMetaData);
+      assertEquals(size, methodsMetaData.size());
+      int count = 1;
+      for (MethodMetaData methodMetaData : methodsMetaData)
+      {
+         assertId(prefix + count, methodMetaData);
+         assertDescriptions(prefix + count, methodMetaData.getDescriptions());
+         if (ejbName == null)
+            assertEquals(prefix + count + "EjbName", methodMetaData.getEjbName());
+         else
+            assertEquals(ejbName, methodMetaData.getEjbName());
+         if (count == 1)
+            assertEquals(MethodInterfaceType.Home, methodMetaData.getMethodIntf());
+         else if (count == 2)
+            assertEquals(MethodInterfaceType.Remote, methodMetaData.getMethodIntf());
+         else if (count == 3)
+            assertEquals(MethodInterfaceType.LocalHome, methodMetaData.getMethodIntf());
+         else if (count == 4)
+            assertEquals(MethodInterfaceType.Local, methodMetaData.getMethodIntf());
+         else
+            assertEquals(MethodInterfaceType.ServiceEndpoint, methodMetaData.getMethodIntf());
+         assertEquals(prefix + count + "MethodName", methodMetaData.getMethodName());
+         if (count == 1)
+            assertMethodParams(prefix + count, 2, methodMetaData.getMethodParams());
+         ++count;
+         if (count > limit)
+            break;
+      }
+   }
+
+/*   private void assertMethods(String ejbName, String prefix, int size, Iterator<org.jboss.metadata.MethodMetaData> methods)
+   {
+      assertNotNull(methods);
+      int count = 1;
+      while (methods.hasNext())
+      {
+         org.jboss.metadata.MethodMetaData methodMetaData = methods.next();
+         if (ejbName == null)
+            assertEquals(prefix + count + "EjbName", methodMetaData.getEjbName());
+         else
+            assertEquals(ejbName, methodMetaData.getEjbName());
+         if (count == 1)
+            assertEquals(org.jboss.metadata.MethodMetaData.HOME_TYPE, methodMetaData.getInterfaceType());
+         else if (count == 2)
+            assertEquals(org.jboss.metadata.MethodMetaData.REMOTE_TYPE, methodMetaData.getInterfaceType());
+         else if (count == 3)
+            assertEquals(org.jboss.metadata.MethodMetaData.LOCAL_HOME_TYPE, methodMetaData.getInterfaceType());
+         else if (count == 4)
+            assertEquals(org.jboss.metadata.MethodMetaData.LOCAL_TYPE, methodMetaData.getInterfaceType());
+         else
+            assertEquals(org.jboss.metadata.MethodMetaData.SERVICE_ENDPOINT_TYPE, methodMetaData.getInterfaceType());
+         assertEquals(prefix + count + "MethodName", methodMetaData.getMethodName());
+         if (count == 1)
+            assertMethodParams(prefix + count, 2, methodMetaData.getMethodParams());
+         ++count;
+      }
+      assertEquals(size, count-1);
+   }
+*/
+   protected void assertMethodParams(String prefix, int size, MethodParametersMetaData methodParametersMetaData)
+   {
+      assertNotNull(methodParametersMetaData);
+      assertEquals(size, methodParametersMetaData.size());
+      int count = 1;
+      for (String parameter : methodParametersMetaData)
+         assertEquals(prefix + "Param" + (count++), parameter);
+   }
+
+   protected void assertContainerTransactions(String ejbName, int size, int limit, ContainerTransactionsMetaData containerTransactionsMetaData)
+   {
+      assertNotNull(containerTransactionsMetaData);
+      assertEquals(size, containerTransactionsMetaData.size());
+      int count = 1;
+      String prefix;
+      if (ejbName == null)
+         prefix = "containerTransaction";
+      else
+         prefix = ejbName + "ContainerTransaction";
+      for (ContainerTransactionMetaData containerTransactionMetaData : containerTransactionsMetaData)
+      {
+         assertId(prefix + count, containerTransactionMetaData);
+         assertDescriptions(prefix + count, containerTransactionMetaData.getDescriptions());
+         if (count == 1)
+            assertMethods(ejbName, prefix + count + "Method", 5, containerTransactionMetaData.getMethods());
+         else
+            assertMethods(ejbName, prefix + count + "Method", 1, containerTransactionMetaData.getMethods());
+         if (count == 1)
+            assertEquals(TransAttributeType.NotSupported, containerTransactionMetaData.getTransAttribute());
+         else if (count == 2)
+            assertEquals(TransAttributeType.Supports, containerTransactionMetaData.getTransAttribute());
+         else if (count == 3)
+            assertEquals(TransAttributeType.Required, containerTransactionMetaData.getTransAttribute());
+         else if (count == 4)
+            assertEquals(TransAttributeType.RequiresNew, containerTransactionMetaData.getTransAttribute());
+         else if (count == 5)
+            assertEquals(TransAttributeType.Mandatory, containerTransactionMetaData.getTransAttribute());
+         else
+            assertEquals(TransAttributeType.Never, containerTransactionMetaData.getTransAttribute());
+         ++count;
+         if (count > limit)
+            break;
+      }
+   }
+
+/*   private void assertContainerTransactions(Iterator<org.jboss.metadata.MethodMetaData> transactions)
+   {
+      assertNotNull(transactions);
+      int count = 1;
+      while(transactions.hasNext())
+      {
+         org.jboss.metadata.MethodMetaData<?> method = transactions.next();
+         if (count <= 5)
+            assertEquals(MetaData.TX_NOT_SUPPORTED, method.getTransactionType());
+         else if (count == 6)
+            assertEquals(MetaData.TX_SUPPORTS, method.getTransactionType());
+         else if (count == 7)
+            assertEquals(MetaData.TX_REQUIRED, method.getTransactionType());
+         else if (count == 8)
+            assertEquals(MetaData.TX_REQUIRES_NEW, method.getTransactionType());
+         else if (count == 9)
+            assertEquals(MetaData.TX_MANDATORY, method.getTransactionType());
+         else
+            assertEquals(MetaData.TX_NEVER, method.getTransactionType());
+         ++count;
+      }
+      assertEquals(10, count-1);
+   }
+*/
+   protected void assertExcludeList(String ejbName, int size, int limit, ExcludeListMetaData excludeListMetaData)
+   {
+      assertNotNull(excludeListMetaData);
+      assertId("excludeList", excludeListMetaData);
+      assertDescriptions("excludeList", excludeListMetaData.getDescriptions());
+      if (ejbName != null)
+         assertMethods(ejbName, ejbName + "ExcludeListMethod", size, limit, excludeListMetaData.getMethods());
+      else
+         assertMethods(null, "excludeListMethod", size, limit, excludeListMetaData.getMethods());
+   }
+
+/*   private void assertExcludedMethods(String ejbName, Iterator<org.jboss.metadata.MethodMetaData> excluded)
+   {
+      assertMethods(ejbName, ejbName + "ExcludeListMethod", 5, excluded);
+   }
+*/   
+/*   protected void assertEnvironment(String prefix, BeanMetaData bean, boolean full)
+   {
+      if (full)
+         assertEnvEntries(prefix, 2, bean.getEnvironmentEntries(), full);
+      assertEjbRefs(prefix, 2, bean.getEjbReferences(), full);
+      assertEjbLocalRefs(prefix, 2, bean.getEjbLocalReferences(), full);
+      // TODO webservice service references
+      assertResourceRefs(prefix, 2, bean.getResourceReferences(), full);
+      assertResourceEnvRefs(prefix, 2, bean.getResourceEnvReferences(), full);
+      assertMessageDestinationRefs(prefix, 3, bean.getMessageDestinationReferences(), full);
+   }
+*/
+/*   protected void assertNullEnvironment(BeanMetaData bean)
+   {
+      assertEmptyIterator(bean.getEnvironmentEntries());
+      assertEmptyIterator(bean.getEjbReferences());
+      assertEmptyIterator(bean.getEjbLocalReferences());
+      // TODO webservice service references
+      assertEmptyIterator(bean.getResourceReferences());
+      assertEmptyIterator(bean.getResourceEnvReferences());
+      assertEmptyIterator(bean.getMessageDestinationReferences());
+   }
+*/   
+   protected void assertSecurityIdentity(String ejbName, String type, SecurityIdentityMetaData securityIdentity, boolean full)
+   {
+      assertNotNull(ejbName, securityIdentity);
+      String prefix = ejbName + type;
+      assertId(prefix, securityIdentity);
+      assertDescriptions(prefix, securityIdentity.getDescriptions());
+      if (full)
+      {
+         assertEmpty(prefix, "UseCallerIdentity", securityIdentity.getUseCallerIdentity());
+         assertTrue(securityIdentity.isUseCallerId());
+         assertRunAs(ejbName, type, securityIdentity.getRunAs());
+      }
+   }
+   
+/*   protected void assertSecurityIdentity(String ejbName, String type, org.jboss.metadata.SecurityIdentityMetaData securityIdentity, boolean full)
+   {
+      assertNotNull(ejbName, securityIdentity);
+      String prefix = ejbName + type;
+      assertEquals("en-" + prefix + "-desc", securityIdentity.getDescription());
+      if (full)
+      {
+         assertTrue(securityIdentity.getUseCallerIdentity());
+         assertEquals(prefix + "RunAsRoleName", securityIdentity.getRunAsRoleName());
+      }
+   }
+*/
+   protected void assertRunAs(String prefix, String type, RunAsMetaData runAsMetaData)
+   {
+      assertNotNull(runAsMetaData);
+      assertId(prefix + type + "RunAs", runAsMetaData);
+      assertDescriptions(prefix + type + "RunAs", runAsMetaData.getDescriptions());
+      assertEquals(prefix + type + "RunAsRoleName", runAsMetaData.getRoleName());
+   }
+
+   protected void assertSecurityRoleRefs(String ejbName, int size, SecurityRoleRefsMetaData securityRoleRefsMetaData)
+   {
+      assertNotNull(securityRoleRefsMetaData);
+      assertEquals(size, securityRoleRefsMetaData.size());
+      int count = 1;
+      for (SecurityRoleRefMetaData securityRoleRefMetaData : securityRoleRefsMetaData)
+      {
+         assertId(ejbName + "SecurityRoleRef" + count, securityRoleRefMetaData);
+         assertDescriptions(ejbName + "SecurityRoleRef" + count, securityRoleRefMetaData.getDescriptions());
+         assertEquals(ejbName + "SecurityRoleRef" + count + "RoleName", securityRoleRefMetaData.getRoleName());
+         assertEquals(ejbName + "SecurityRoleRef" + count + "RoleLink", securityRoleRefMetaData.getRoleLink());
+         ++count;
+      }
+   }
+
+/*   protected void assertSecurityRoleRefs(String ejbName, int size, Iterator<org.jboss.metadata.SecurityRoleRefMetaData> securityRoleRefs)
+   {
+      assertNotNull(securityRoleRefs);
+      int count = 1;
+      while (securityRoleRefs.hasNext())
+      {
+         org.jboss.metadata.SecurityRoleRefMetaData securityRoleRefMetaData = securityRoleRefs.next();
+         assertEquals("en-" + ejbName + "SecurityRoleRef" + count + "-desc", securityRoleRefMetaData.getDescription());
+         assertEquals(ejbName + "SecurityRoleRef" + count + "RoleName", securityRoleRefMetaData.getName());
+         assertEquals(ejbName + "SecurityRoleRef" + count + "RoleLink", securityRoleRefMetaData.getLink());
+         ++count;
+      }
+      assertEquals(ejbName, size, count-1);
+   }
+*/
+   protected void assertClusterConfig(String prefix, ClusterConfigMetaData clusterConfig, boolean isSession)
+   {
+      assertNotNull(clusterConfig);
+      prefix = prefix + "ClusterConfig";
+      assertId(prefix, clusterConfig);
+      assertDescriptions(prefix, clusterConfig.getDescriptions());
+      assertEquals(prefix + "PartitionName", clusterConfig.getPartitionName());
+      assertEquals(prefix + "HomeLoadBalancingPolicy", clusterConfig.getHomeLoadBalancingPolicy());
+      assertEquals(prefix + "BeanLoadBalancingPolicy", clusterConfig.getBeanLoadBalancingPolicy());
+      if (isSession)
+         assertEquals(prefix + "SessionStateManagerJndiName", clusterConfig.getSessionStateManagerJndiName());
+   }
+
+/*   protected void assertClusterConfig(String prefix, org.jboss.metadata.ClusterConfigMetaData clusterConfig, boolean isSession)
+   {
+      assertNotNull(clusterConfig);
+      prefix = prefix + "ClusterConfig";
+      assertEquals(prefix + "PartitionName", clusterConfig.getPartitionName());
+      assertEquals(prefix + "HomeLoadBalancingPolicy", clusterConfig.getHomeLoadBalancePolicy());
+      assertEquals(prefix + "BeanLoadBalancingPolicy", clusterConfig.getBeanLoadBalancePolicy());
+      if (isSession)
+         assertEquals(prefix + "SessionStateManagerJndiName", clusterConfig.getHaSessionStateName());
+   }
+*/
+   protected void assertCacheInvalidationConfig(String prefix, CacheInvalidationConfigMetaData invalidationConfig)
+   {
+      assertNotNull(invalidationConfig);
+      prefix = prefix + "CacheInvalidationConfig";
+      assertId(prefix, invalidationConfig);
+      assertDescriptions(prefix, invalidationConfig.getDescriptions());
+      assertEquals(prefix + "InvalidationGroupName", invalidationConfig.getInvalidationGroupName());
+      assertEquals(prefix + "InvalidationManagerName", invalidationConfig.getInvalidationManagerName());
+   }
+
+/*   protected void assertCacheInvalidationConfig(String prefix, org.jboss.metadata.CacheInvalidationConfigMetaData invalidationConfig)
+   {
+      assertNotNull(invalidationConfig);
+      prefix = prefix + "CacheInvalidationConfig";
+      assertEquals(prefix + "InvalidationGroupName", invalidationConfig.getInvalidationGroupName());
+      assertEquals(prefix + "InvalidationManagerName", invalidationConfig.getInvalidationManagerName());
+   }
+*/
+   protected void assertIORSecurityConfig(String ejbName, IORSecurityConfigMetaData iorSecurityConfig)
+   {
+      assertNotNull(iorSecurityConfig);
+      String prefix = ejbName + "IorSecurityConfig";
+      assertId(prefix, iorSecurityConfig);
+      assertDescriptions(prefix, iorSecurityConfig.getDescriptions());
+      assertIORTransportConfig(ejbName, iorSecurityConfig.getTransportConfig());
+      assertIORASContext(ejbName, iorSecurityConfig.getAsContext());
+      assertIORSASContext(ejbName, iorSecurityConfig.getSasContext());
+   }
+
+/*   protected void assertIORSecurityConfig(String ejbName, IorSecurityConfigMetaData iorSecurityConfig)
+   {
+      assertNotNull(iorSecurityConfig);
+      assertIORTransportConfig(ejbName, iorSecurityConfig.getTransportConfig());
+      assertIORASContext(ejbName, iorSecurityConfig.getAsContext());
+      assertIORSASContext(ejbName, iorSecurityConfig.getSasContext());
+   }
+*/
+   protected void assertIORTransportConfig(String ejbName, IORTransportConfigMetaData iorTransportConfig)
+   {
+      assertNotNull(iorTransportConfig);
+      String prefix = ejbName + "TransportConfig";
+      assertId(prefix, iorTransportConfig);
+      assertDescriptions(prefix, iorTransportConfig.getDescriptions());
+      assertEquals(IORTransportConfigMetaData.INTEGRITY_NONE, iorTransportConfig.getIntegrity());
+      assertEquals(IORTransportConfigMetaData.CONFIDENTIALITY_NONE, iorTransportConfig.getConfidentiality());
+      assertEquals(IORTransportConfigMetaData.ESTABLISH_TRUST_IN_TARGET_NONE, iorTransportConfig.getEstablishTrustInTarget());
+      assertEquals(IORTransportConfigMetaData.ESTABLISH_TRUST_IN_CLIENT_NONE, iorTransportConfig.getEstablishTrustInClient());
+      assertEquals(IORTransportConfigMetaData.DETECT_MISORDERING_NONE, iorTransportConfig.getDetectMisordering());
+      assertEquals(IORTransportConfigMetaData.DETECT_REPLAY_NONE, iorTransportConfig.getDetectReplay());
+   }
+
+/*   protected void assertIORTransportConfig(String ejbName, IorSecurityConfigMetaData.TransportConfig iorTransportConfig)
+   {
+      assertNotNull(iorTransportConfig);
+      assertEquals(IORTransportConfigMetaData.INTEGRITY_NONE, iorTransportConfig.getIntegrity());
+      assertEquals(IORTransportConfigMetaData.CONFIDENTIALITY_NONE, iorTransportConfig.getConfidentiality());
+      assertEquals(IORTransportConfigMetaData.ESTABLISH_TRUST_IN_TARGET_NONE, iorTransportConfig.getEstablishTrustInTarget());
+      assertEquals(IORTransportConfigMetaData.ESTABLISH_TRUST_IN_CLIENT_NONE, iorTransportConfig.getEstablishTrustInClient());
+      assertEquals(IORTransportConfigMetaData.DETECT_MISORDERING_NONE, iorTransportConfig.getDetectMisordering());
+      assertEquals(IORTransportConfigMetaData.DETECT_REPLAY_NONE, iorTransportConfig.getDetectReplay());
+   }
+*/
+   protected void assertIORASContext(String ejbName, IORASContextMetaData asContext)
+   {
+      assertNotNull(asContext);
+      String prefix = ejbName + "ASContext";
+      assertId(prefix, asContext);
+      assertDescriptions(prefix, asContext.getDescriptions());
+      assertEquals(IORASContextMetaData.AUTH_METHOD_USERNAME_PASSWORD, asContext.getAuthMethod());
+      assertEquals(prefix + "Realm", asContext.getRealm());
+      assertFalse(asContext.isRequired());
+   }
+
+/*   protected void assertIORASContext(String ejbName, IorSecurityConfigMetaData.AsContext asContext)
+   {
+      assertNotNull(asContext);
+      String prefix = ejbName + "ASContext";
+      assertEquals(IORASContextMetaData.AUTH_METHOD_USERNAME_PASSWORD, asContext.getAuthMethod());
+      assertEquals(prefix + "Realm", asContext.getRealm());
+      assertFalse(asContext.isRequired());
+   }
+*/
+   protected void assertIORSASContext(String ejbName, IORSASContextMetaData sasContext)
+   {
+      assertNotNull(sasContext);
+      String prefix = ejbName + "SASContext";
+      assertId(prefix, sasContext);
+      assertDescriptions(prefix, sasContext.getDescriptions());
+      assertEquals(IORSASContextMetaData.CALLER_PROPAGATION_NONE, sasContext.getCallerPropagation());
+   }
+
+/*   protected void assertIORSASContext(String ejbName, IorSecurityConfigMetaData.SasContext sasContext)
+   {
+      assertNotNull(sasContext);
+      assertEquals(IORSASContextMetaData.CALLER_PROPAGATION_NONE, sasContext.getCallerPropagation());
+   }
+*/
+   protected void assertIgnoreDependency(String ejbName, IgnoreDependencyMetaData ignoreDependency)
+   {
+      assertNotNull(ejbName, ignoreDependency);
+      String prefix = ejbName + "IgnoreDependency";
+      assertId(prefix, ignoreDependency);
+      assertDescriptions(prefix, ignoreDependency.getDescriptions());
+      assertResourceInjectionTargets(prefix, 2, ignoreDependency.getInjectionTargets());
+   }
+
+   protected void assertRemoteBinding(String ejbName, RemoteBindingMetaData remoteBinding)
+   {
+      assertNotNull(ejbName, remoteBinding);
+      String prefix = ejbName + "RemoteBinding";
+      assertId(prefix, remoteBinding);
+      assertDescriptions(prefix, remoteBinding.getDescriptions());
+      assertEquals(prefix + "JndiName", remoteBinding.getJndiName());
+      assertEquals(prefix + "ClientBindUrl", remoteBinding.getClientBindUrl());
+      assertEquals(prefix + "InterceptorStack", remoteBinding.getInterceptorStack());
+      assertEquals(prefix + "ProxyFactory", remoteBinding.getProxyFactory());
+   }
+
+   protected void assertMethodAttributes(String ejbName, MethodAttributesMetaData methodAttributes)
+   {
+      assertNotNull(ejbName, methodAttributes);
+      assertEquals(2, methodAttributes.size());
+      String prefix = ejbName + "MethodAttributes";
+      assertId(prefix, methodAttributes);
+      int count = 1;
+      for (MethodAttributeMetaData methodAttribute : methodAttributes)
+      {
+         if (count++ == 1)
+         {
+            assertEquals("get*", methodAttribute.getMethodName());
+            assertTrue(methodAttribute.isReadOnly());
+            assertTrue(methodAttribute.isIdempotent());
+            assertEquals(5000, methodAttribute.getTransactionTimeout());
+         }
+         else
+         {
+            assertEquals("*", methodAttribute.getMethodName());
+            assertFalse(methodAttribute.isReadOnly());
+            assertFalse(methodAttribute.isIdempotent());
+            assertEquals(0, methodAttribute.getTransactionTimeout());
+         }
+      }
+   }
+
+/*   protected void assertMethodAttributes(String ejbName, BeanMetaData bean)
+   {
+      assertDefaultMethodAttributes(ejbName, bean);
+   }
+*/
+/*   protected void assertDefaultMethodAttributes(String ejbName, BeanMetaData bean)
+   {
+      assertFalse(bean.isMethodReadOnly("getSomething"));
+      assertEquals(0, bean.getTransactionTimeout("getSomething"));
+   }
+*/   
+   private void assertEmptyIterator(Iterator i)
+   {
+      if (i != null && i.hasNext())
+         throw new AssertionFailedError("The iterator should be empty: " + i);
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/EJBTestSuite.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/EJBTestSuite.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/EJBTestSuite.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,51 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2005, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.ejb;
+
+import org.jboss.test.ejb.metadata.test.EJBMetaDataTestSuite;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+/**
+ * EJB Test Suite.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.8 $
+ */
+public class EJBTestSuite extends TestSuite
+{
+   public static void main(String[] args)
+   {
+      TestRunner.run(suite());
+   }
+
+   public static Test suite()
+   {
+      TestSuite suite = new TestSuite("EJB Tests");
+
+      suite.addTest(EJBMetaDataTestSuite.suite());
+      
+      return suite;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/EJBMetaDataTestSuite.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/EJBMetaDataTestSuite.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/EJBMetaDataTestSuite.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,53 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2005, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.ejb.metadata.test;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+/**
+ * EJB Metadata Test Suite.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.8 $
+ */
+public class EJBMetaDataTestSuite extends TestSuite
+{
+   public static void main(String[] args)
+   {
+      TestRunner.run(suite());
+   }
+
+   public static Test suite()
+   {
+      TestSuite suite = new TestSuite("EJB Metadata Tests");
+
+      suite.addTest(EjbJar3xUnitTestCase.suite());
+      suite.addTest(EjbJar21UnitTestCase.suite());
+      suite.addTest(EjbJar3xEverythingUnitTestCase.suite());
+      suite.addTest(EjbJar21EverythingUnitTestCase.suite());
+      suite.addTest(JBoss5xEverythingUnitTestCase.suite());
+      
+      return suite;
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/EjbJar21EverythingUnitTestCase.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/EjbJar21EverythingUnitTestCase.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/EjbJar21EverythingUnitTestCase.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,257 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.ejb.metadata.test;
+
+import java.math.BigDecimal;
+
+import junit.framework.Test;
+
+import org.jboss.ejb.metadata.spec.CMPFieldMetaData;
+import org.jboss.ejb.metadata.spec.CMPFieldsMetaData;
+import org.jboss.ejb.metadata.spec.EjbJar21MetaData;
+import org.jboss.ejb.metadata.spec.EjbJar2xMetaData;
+import org.jboss.ejb.metadata.spec.EjbJarMetaData;
+import org.jboss.ejb.metadata.spec.EnterpriseBeansMetaData;
+import org.jboss.ejb.metadata.spec.EntityBeanMetaData;
+import org.jboss.ejb.metadata.spec.MessageDrivenBeanMetaData;
+import org.jboss.ejb.metadata.spec.PersistenceType;
+import org.jboss.ejb.metadata.spec.QueriesMetaData;
+import org.jboss.ejb.metadata.spec.QueryMetaData;
+import org.jboss.ejb.metadata.spec.QueryMethodMetaData;
+import org.jboss.ejb.metadata.spec.ResultTypeMapping;
+import org.jboss.ejb.metadata.spec.SessionBeanMetaData;
+import org.jboss.ejb.metadata.spec.SessionType;
+import org.jboss.ejb.metadata.spec.TransactionType;
+import org.jboss.javaee.metadata.spec.LifecycleCallbacksMetaData;
+import org.jboss.javaee.metadata.spec.PersistenceContextReferencesMetaData;
+import org.jboss.javaee.metadata.spec.PersistenceUnitReferencesMetaData;
+import org.jboss.javaee.metadata.spec.ResourceInjectionMetaData;
+import org.jboss.test.ejb.AbstractEJBEverythingTest;
+import org.jboss.xb.binding.sunday.unmarshalling.SchemaBindingResolver;
+
+/**
+ * EjbJar2xUnitTestCase.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class EjbJar21EverythingUnitTestCase extends AbstractEJBEverythingTest
+{
+   public static Test suite()
+   {
+      return suite(EjbJar21EverythingUnitTestCase.class);
+   }
+   
+   public static SchemaBindingResolver initResolver()
+   {
+      return schemaResolverForClass(EjbJar21MetaData.class);
+      //return AbstractJavaEEMetaDataTest.initResolverJ2EE(EjbJar21MetaData.class);
+   }
+   
+   public EjbJar21EverythingUnitTestCase(String name)
+   {
+      super(name);
+   }
+   
+   protected EjbJar2xMetaData unmarshal() throws Exception
+   {
+      return unmarshal(EjbJar21MetaData.class);
+   }
+   
+   public void testEverything() throws Exception
+   {
+      //enableTrace("org.jboss.xb");
+      enableTrace("org.jboss.xb.builder");
+      EjbJar2xMetaData ejbJarMetaData = unmarshal();
+      //ApplicationMetaData applicationMetaData = new ApplicationMetaData(ejbJarMetaData); 
+      assertVersion(ejbJarMetaData);
+      //assertVersion(applicationMetaData);
+      assertId("ejb-jar", ejbJarMetaData);
+      assertEquals("ejb-jar-id", ejbJarMetaData.getId());
+      assertEjbClientJar(ejbJarMetaData);
+      assertDescriptionGroup("ejb-jar", ejbJarMetaData.getDescriptionGroup());
+      assertEnterpriseBeans(ejbJarMetaData);
+      //assertEnterpriseBeans(applicationMetaData);
+      assertRelationships(ejbJarMetaData);
+      //assertRelationships(applicationMetaData);
+      assertAssemblyDescriptor(ejbJarMetaData);
+      //assertAssemblyDescriptor(applicationMetaData);
+   }
+   
+   private void assertVersion(EjbJar2xMetaData ejbJar2xMetaData)
+   {
+      assertEquals(new BigDecimal("2.1"), ejbJar2xMetaData.getVersion());
+      assertFalse(ejbJar2xMetaData.isEJB1x());
+      assertTrue(ejbJar2xMetaData.isEJB2x());
+      assertTrue(ejbJar2xMetaData.isEJB21());
+      assertFalse(ejbJar2xMetaData.isEJB3x());
+   }
+   
+/*   private void assertVersion(ApplicationMetaData applicationMetadata)
+   {
+      assertFalse(applicationMetadata.isEJB1x());
+      assertTrue(applicationMetadata.isEJB2x());
+      assertTrue(applicationMetadata.isEJB21());
+      assertFalse(applicationMetadata.isEJB3x());
+   }
+*/
+   protected SessionBeanMetaData assertFullSession(String ejbName, EnterpriseBeansMetaData enterpriseBeansMetaData)
+   {
+      SessionBeanMetaData session = assertSession(ejbName, enterpriseBeansMetaData);
+      assertId(ejbName, session);
+      assertClass(ejbName, "Home", session.getHome());
+      assertClass(ejbName, "Remote", session.getRemote());
+      assertClass(ejbName, "LocalHome", session.getLocalHome());
+      assertClass(ejbName, "Local", session.getLocal());
+      assertClass(ejbName, "ServiceEndpoint", session.getServiceEndpoint());
+      assertClass(ejbName, "EjbClass", session.getEjbClass());
+      assertEquals(SessionType.Stateless, session.getSessionType());
+      assertEquals(TransactionType.Container, session.getTransactionType());
+      assertEnvironment(ejbName, session.getJndiEnvironmentRefsGroup(), true);
+      assertContainerTransactions(ejbName, 6, 6, session.getContainerTransactions());
+      assertMethodPermissions(ejbName, ejbName + "MethodPermission", 3, 3, session.getMethodPermissions());
+      assertExcludeList(ejbName, 5, 5, session.getExcludeList());
+      assertSecurityRoleRefs(ejbName, 2, session.getSecurityRoleRefs());
+      assertSecurityIdentity(ejbName, "SecurityIdentity", session.getSecurityIdentity(), true);
+      
+      return session;
+   }
+   
+   protected EntityBeanMetaData assertFullEntity(String ejbName, EnterpriseBeansMetaData enterpriseBeansMetaData)
+   {
+      EntityBeanMetaData entity = assertEntity(ejbName, enterpriseBeansMetaData);
+      assertId(ejbName, entity);
+      assertClass(ejbName, "Home", entity.getHome());
+      assertClass(ejbName, "Remote", entity.getRemote());
+      assertClass(ejbName, "LocalHome", entity.getLocalHome());
+      assertClass(ejbName, "Local", entity.getLocal());
+      assertClass(ejbName, "EjbClass", entity.getEjbClass());
+      assertEquals(PersistenceType.Container, entity.getPersistenceType());
+      assertEquals(ejbName + "PrimKeyClass", entity.getPrimKeyClass());
+      assertTrue(entity.isReentrant());
+      assertEquals("2.x", entity.getCmpVersion());
+      assertFalse(entity.isCMP1x());
+      assertEquals(ejbName + "AbstractSchemaName", entity.getAbstractSchemaName());
+      assertCmpFields(ejbName, 2, entity.getCmpFields());
+      assertEquals(ejbName + "PrimKeyField", entity.getPrimKeyField());
+      assertEnvironment(ejbName, entity.getJndiEnvironmentRefsGroup(), true);
+      assertContainerTransactions(ejbName, 6, 6, entity.getContainerTransactions());
+      assertMethodPermissions(ejbName, ejbName + "MethodPermission", 3, 3, entity.getMethodPermissions());
+      assertExcludeList(ejbName, 5, 5, entity.getExcludeList());
+      assertSecurityRoleRefs(ejbName, 2, entity.getSecurityRoleRefs());
+      assertSecurityIdentity(ejbName, "SecurityIdentity", entity.getSecurityIdentity(), true);
+      assertQueries(ejbName, 2, entity.getQueries());
+      
+      return entity;
+   }
+
+   private void assertCmpFields(String ejbName, int size, CMPFieldsMetaData cmpFieldsMetaData)
+   {
+      assertNotNull(cmpFieldsMetaData);
+      assertEquals(size, cmpFieldsMetaData.size());
+      int count = 1;
+      for (CMPFieldMetaData cmpField : cmpFieldsMetaData)
+      {
+         assertId(ejbName + "CmpField" + count, cmpField);
+         assertEquals(ejbName + "CmpField" + count, cmpField.getFieldName());
+         ++count;
+      }
+   }
+
+   private void assertQueries(String ejbName, int size, QueriesMetaData queriesMetaData)
+   {
+      assertNotNull(queriesMetaData);
+      assertEquals(size, queriesMetaData.size());
+      int count = 1;
+      for (QueryMetaData query : queriesMetaData)
+      {
+         assertId(ejbName + "Query" + count, query);
+         assertQueryMethod(ejbName + "Query" + count, 2, query.getQueryMethod());
+         if (count == 1)
+            assertEquals(ResultTypeMapping.Local, query.getResultTypeMapping());
+         else
+            assertEquals(ResultTypeMapping.Remote, query.getResultTypeMapping());
+         assertEquals(ejbName + "Query" + count + "EjbQL", query.getEjbQL());
+         ++count;
+      }
+   }
+
+   private void assertQueryMethod(String ejbName, int size, QueryMethodMetaData queryMethodMetaData)
+   {
+      assertNotNull(queryMethodMetaData);
+      assertId(ejbName + "QueryMethod", queryMethodMetaData);
+      assertEquals(ejbName + "QueryMethod", queryMethodMetaData.getMethodName());
+      if (size > 0)
+         assertMethodParams(ejbName + "QueryMethod", size, queryMethodMetaData.getMethodParams());
+   }
+   
+   protected MessageDrivenBeanMetaData assertFullMDB(String ejbName, EnterpriseBeansMetaData enterpriseBeansMetaData)
+   {
+      MessageDrivenBeanMetaData mdb = assertMDB(ejbName, enterpriseBeansMetaData);
+      assertId(ejbName, mdb);
+      assertEquals(ejbName + "MessagingType", mdb.getMessagingType());
+      assertEquals(TransactionType.Container, mdb.getTransactionType());
+      assertEquals(ejbName + "MessageDestinationType", mdb.getMessageDestinationType());
+      assertEquals(ejbName + "MessageDestinationLink", mdb.getMessageDestinationLink());
+      assertActivationConfig(ejbName, mdb.getActivationConfig());
+      assertEnvironment(ejbName, mdb.getJndiEnvironmentRefsGroup(), true);
+      assertContainerTransactions(ejbName, 6, 6, mdb.getContainerTransactions());
+      assertMethodPermissions(ejbName, ejbName + "MethodPermission", 3, 3, mdb.getMethodPermissions());
+      assertExcludeList(ejbName, 5, 5, mdb.getExcludeList());
+      assertSecurityIdentity(ejbName, "SecurityIdentity", mdb.getSecurityIdentity(), true);
+      
+      return mdb;
+   }
+   
+   private void assertEjbClientJar(EjbJarMetaData ejbJarMetaData)
+   {
+      assertEquals("some/path/client.jar", ejbJarMetaData.getEjbClientJar());
+   }
+
+   protected void assertPersistenceContextRefs(String prefix, int size, PersistenceContextReferencesMetaData persistenceContextReferencesMetaData)
+   {
+      assertNull(persistenceContextReferencesMetaData);
+   }
+
+   protected void assertPersistenceUnitRefs(String prefix, int size, PersistenceUnitReferencesMetaData persistenceUnitReferencesMetaData)
+   {
+      assertNull(persistenceUnitReferencesMetaData);
+   }
+
+   protected void assertLifecycleCallbacks(String ejbName, String type, int size, LifecycleCallbacksMetaData lifecycleCallbacksMetaData)
+   {
+      assertNull(lifecycleCallbacksMetaData);
+   }
+
+   protected void assertResourceGroup(String prefix, ResourceInjectionMetaData resourceInjectionMetaData, boolean full, boolean first)
+   {
+      return;
+   }
+
+   protected void assertJndiName(String prefix, boolean full, String jndiName)
+   {
+      if (full)
+         assertNull(jndiName);
+      else
+         assertEquals(prefix + "JndiName", jndiName);
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/EjbJar21UnitTestCase.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/EjbJar21UnitTestCase.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/EjbJar21UnitTestCase.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,77 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.ejb.metadata.test;
+
+import java.math.BigDecimal;
+
+import junit.framework.Test;
+
+import org.jboss.ejb.metadata.spec.EjbJar21MetaData;
+import org.jboss.ejb.metadata.spec.EjbJar2xMetaData;
+//import org.jboss.metadata.ApplicationMetaData;
+import org.jboss.test.javaee.metadata.AbstractJavaEEMetaDataTest;
+import org.jboss.xb.binding.sunday.unmarshalling.SchemaBindingResolver;
+
+/**
+ * EjbJarUnitTestCase.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class EjbJar21UnitTestCase extends AbstractJavaEEMetaDataTest
+{
+   public static Test suite()
+   {
+      return suite(EjbJar21UnitTestCase.class);
+   }
+   
+   public static SchemaBindingResolver initResolver()
+   {
+      return AbstractJavaEEMetaDataTest.initResolverJ2EE(EjbJar21MetaData.class);
+   }
+   
+   public EjbJar21UnitTestCase(String name)
+   {
+      super(name);
+   }
+   
+   protected EjbJar21MetaData unmarshal() throws Exception
+   {
+      return unmarshal(EjbJar21MetaData.class);
+   }
+   
+   public void testVersion() throws Exception
+   {
+      EjbJar2xMetaData result = unmarshal();
+      assertEquals(new BigDecimal("2.1"), result.getVersion());
+      assertFalse(result.isEJB1x());
+      assertTrue(result.isEJB2x());
+      assertTrue(result.isEJB21());
+      assertFalse(result.isEJB3x());
+      
+/*      ApplicationMetaData old = new ApplicationMetaData(result);
+      assertFalse(old.isEJB1x());
+      assertTrue(old.isEJB2x());
+      assertTrue(old.isEJB21());
+      assertFalse(old.isEJB3x());
+*/   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/EjbJar3xEverythingUnitTestCase.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/EjbJar3xEverythingUnitTestCase.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/EjbJar3xEverythingUnitTestCase.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,432 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.ejb.metadata.test;
+
+import java.util.LinkedHashSet;
+
+import junit.framework.Test;
+
+import org.jboss.ejb.metadata.spec.ApplicationExceptionMetaData;
+import org.jboss.ejb.metadata.spec.ApplicationExceptionsMetaData;
+import org.jboss.ejb.metadata.spec.AroundInvokeMetaData;
+import org.jboss.ejb.metadata.spec.AroundInvokesMetaData;
+import org.jboss.ejb.metadata.spec.AssemblyDescriptorMetaData;
+import org.jboss.ejb.metadata.spec.CMPFieldMetaData;
+import org.jboss.ejb.metadata.spec.CMPFieldsMetaData;
+import org.jboss.ejb.metadata.spec.EjbJar30MetaData;
+import org.jboss.ejb.metadata.spec.EjbJar3xMetaData;
+import org.jboss.ejb.metadata.spec.EjbJarMetaData;
+import org.jboss.ejb.metadata.spec.EnterpriseBeansMetaData;
+import org.jboss.ejb.metadata.spec.EntityBeanMetaData;
+import org.jboss.ejb.metadata.spec.InitMethodMetaData;
+import org.jboss.ejb.metadata.spec.InitMethodsMetaData;
+import org.jboss.ejb.metadata.spec.InterceptorBindingMetaData;
+import org.jboss.ejb.metadata.spec.InterceptorBindingsMetaData;
+import org.jboss.ejb.metadata.spec.InterceptorClassesMetaData;
+import org.jboss.ejb.metadata.spec.InterceptorMetaData;
+import org.jboss.ejb.metadata.spec.InterceptorOrderMetaData;
+import org.jboss.ejb.metadata.spec.InterceptorsMetaData;
+import org.jboss.ejb.metadata.spec.MessageDrivenBeanMetaData;
+import org.jboss.ejb.metadata.spec.NamedMethodMetaData;
+import org.jboss.ejb.metadata.spec.PersistenceType;
+import org.jboss.ejb.metadata.spec.QueriesMetaData;
+import org.jboss.ejb.metadata.spec.QueryMetaData;
+import org.jboss.ejb.metadata.spec.QueryMethodMetaData;
+import org.jboss.ejb.metadata.spec.RemoveMethodMetaData;
+import org.jboss.ejb.metadata.spec.RemoveMethodsMetaData;
+import org.jboss.ejb.metadata.spec.ResultTypeMapping;
+import org.jboss.ejb.metadata.spec.SessionBeanMetaData;
+import org.jboss.ejb.metadata.spec.SessionType;
+import org.jboss.ejb.metadata.spec.TransactionType;
+import org.jboss.javaee.metadata.spec.MessageDestinationMetaData;
+//import org.jboss.metadata.ApplicationMetaData;
+import org.jboss.test.ejb.AbstractEJBEverythingTest;
+import org.jboss.xb.binding.sunday.unmarshalling.SchemaBindingResolver;
+
+/**
+ * EjbJar3xUnitTestCase.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class EjbJar3xEverythingUnitTestCase extends AbstractEJBEverythingTest
+{
+   public static Test suite()
+   {
+      return suite(EjbJar3xEverythingUnitTestCase.class);
+   }
+   
+   public static SchemaBindingResolver initResolver()
+   {
+      return initResolverJavaEE(EjbJar30MetaData.class);
+   }
+   
+   public EjbJar3xEverythingUnitTestCase(String name)
+   {
+      super(name);
+   }
+   
+   protected EjbJar3xMetaData unmarshal() throws Exception
+   {
+      return unmarshal(EjbJar30MetaData.class);
+   }
+   
+   public void testEverything() throws Exception
+   {
+      //enableTrace("org.jboss.xb");
+      //enableTrace("org.jboss.xb.binding.builder");
+      EjbJar3xMetaData ejbJarMetaData = unmarshal();
+      //ApplicationMetaData applicationMetaData = new ApplicationMetaData(ejbJarMetaData); 
+      assertVersion(ejbJarMetaData);
+      //assertVersion(applicationMetaData);
+      assertMetaDataComplete(ejbJarMetaData);
+      assertId("ejb-jar", ejbJarMetaData);
+      assertEjbClientJar(ejbJarMetaData);
+      assertDescriptionGroup("ejb-jar", ejbJarMetaData.getDescriptionGroup());
+      assertEnterpriseBeans(ejbJarMetaData);
+      //assertEnterpriseBeans(applicationMetaData);
+      assertInterceptors(ejbJarMetaData);
+      assertRelationships(ejbJarMetaData);
+      //assertRelationships(applicationMetaData);
+      assertAssemblyDescriptor(ejbJarMetaData);
+      //assertAssemblyDescriptor(applicationMetaData);
+   }
+   
+   private void assertVersion(EjbJar3xMetaData ejbJar3xMetaData)
+   {
+      assertEquals("3.0", ejbJar3xMetaData.getVersion());
+      assertFalse(ejbJar3xMetaData.isEJB1x());
+      assertFalse(ejbJar3xMetaData.isEJB2x());
+      assertFalse(ejbJar3xMetaData.isEJB21());
+      assertTrue(ejbJar3xMetaData.isEJB3x());
+   }
+   
+/*   private void assertVersion(ApplicationMetaData applicationMetadata)
+   {
+      assertFalse(applicationMetadata.isEJB1x());
+      assertFalse(applicationMetadata.isEJB2x());
+      assertFalse(applicationMetadata.isEJB21());
+      assertTrue(applicationMetadata.isEJB3x());
+   }
+*/   
+   private void assertMetaDataComplete(EjbJar3xMetaData ejbJar3xMetaData)
+   {
+      assertEquals(true, ejbJar3xMetaData.isMetadataComplete());
+   }
+   
+   protected SessionBeanMetaData assertFullSession(String ejbName, EnterpriseBeansMetaData enterpriseBeansMetaData)
+   {
+      SessionBeanMetaData session = assertSession(ejbName, enterpriseBeansMetaData);
+      assertId(ejbName, session);
+      assertMappedName(ejbName, session.getMappedName());
+      assertClass(ejbName, "Home", session.getHome());
+      assertClass(ejbName, "Remote", session.getRemote());
+      assertClass(ejbName, "LocalHome", session.getLocalHome());
+      assertClass(ejbName, "Local", session.getLocal());
+      assertClasses(ejbName, "BusinessLocal", 2, session.getBusinessLocals());
+      assertClasses(ejbName, "BusinessRemote", 2, session.getBusinessRemotes());
+      assertClass(ejbName, "ServiceEndpoint", session.getServiceEndpoint());
+      assertClass(ejbName, "EjbClass", session.getEjbClass());
+      assertEquals(SessionType.Stateless, session.getSessionType());
+      assertNamedMethod(ejbName + "TimeoutMethod", 2, session.getTimeoutMethod());
+      assertInitMethods(ejbName, 2, session.getInitMethods());
+      assertRemoveMethods(ejbName, 3, session.getRemoveMethods());
+      assertEquals(TransactionType.Container, session.getTransactionType());
+      assertAroundInvokes(ejbName, 2, session.getAroundInvokes());
+      assertLifecycleCallbacks(ejbName, "PostActivate", 2, session.getPostActivates());
+      assertLifecycleCallbacks(ejbName, "PrePassivate", 2, session.getPrePassivates());
+      assertEnvironment(ejbName, session.getJndiEnvironmentRefsGroup(), true);
+      assertContainerTransactions(ejbName, 6, 6, session.getContainerTransactions());
+      assertMethodPermissions(ejbName, ejbName + "MethodPermission", 3, 3, session.getMethodPermissions());
+      assertExcludeList(ejbName, 5, 5, session.getExcludeList());
+      assertSecurityRoleRefs(ejbName, 2, session.getSecurityRoleRefs());
+      assertSecurityIdentity(ejbName, "SecurityIdentity", session.getSecurityIdentity(), true);
+      
+      return session;
+   }
+
+   private void assertInitMethods(String ejbName, int size, InitMethodsMetaData initMethodsMetaData)
+   {
+      assertNotNull(initMethodsMetaData);
+      assertEquals(size, initMethodsMetaData.size());
+      int count = 1;
+      for (InitMethodMetaData initMethod : initMethodsMetaData)
+      {
+         assertId(ejbName + "InitMethod" + count, initMethod);
+         assertNamedMethod(ejbName + "InitCreateMethod" + count, 0, initMethod.getCreateMethod());
+         assertNamedMethod(ejbName + "InitBeanMethod" + count, 0, initMethod.getBeanMethod());
+         ++count;
+      }
+   }
+
+   private void assertRemoveMethods(String ejbName, int size, RemoveMethodsMetaData removeMethodsMetaData)
+   {
+      assertNotNull(removeMethodsMetaData);
+      assertEquals(size, removeMethodsMetaData.size());
+      int count = 1;
+      for (RemoveMethodMetaData removeMethod : removeMethodsMetaData)
+      {
+         assertId(ejbName + "RemoveMethod" + count, removeMethod);
+         assertNamedMethod(ejbName + "RemoveBeanMethod" + count, 0, removeMethod.getBeanMethod());
+         if (count == 1)
+            assertTrue(removeMethod.isRetainIfException());
+         else
+            assertFalse(removeMethod.isRetainIfException());
+         ++count;
+      }
+   }
+   
+   protected EntityBeanMetaData assertFullEntity(String ejbName, EnterpriseBeansMetaData enterpriseBeansMetaData)
+   {
+      EntityBeanMetaData entity = assertEntity(ejbName, enterpriseBeansMetaData);
+      assertId(ejbName, entity);
+      assertMappedName(ejbName, entity.getMappedName());
+      assertClass(ejbName, "Home", entity.getHome());
+      assertClass(ejbName, "Remote", entity.getRemote());
+      assertClass(ejbName, "LocalHome", entity.getLocalHome());
+      assertClass(ejbName, "Local", entity.getLocal());
+      assertClass(ejbName, "EjbClass", entity.getEjbClass());
+      assertEquals(PersistenceType.Container, entity.getPersistenceType());
+      assertEquals(ejbName + "PrimKeyClass", entity.getPrimKeyClass());
+      assertTrue(entity.isReentrant());
+      assertEquals("2.x", entity.getCmpVersion());
+      assertFalse(entity.isCMP1x());
+      assertEquals(ejbName + "AbstractSchemaName", entity.getAbstractSchemaName());
+      assertCmpFields(ejbName, 2, entity.getCmpFields());
+      assertEquals(ejbName + "PrimKeyField", entity.getPrimKeyField());
+      assertEnvironment(ejbName, entity.getJndiEnvironmentRefsGroup(), true);
+      assertContainerTransactions(ejbName, 6, 6, entity.getContainerTransactions());
+      assertMethodPermissions(ejbName, ejbName + "MethodPermission", 3, 3, entity.getMethodPermissions());
+      assertExcludeList(ejbName, 5, 5, entity.getExcludeList());
+      assertSecurityRoleRefs(ejbName, 2, entity.getSecurityRoleRefs());
+      assertSecurityIdentity(ejbName, "SecurityIdentity", entity.getSecurityIdentity(), true);
+      assertQueries(ejbName, 2, entity.getQueries());
+      
+      return entity;
+   }
+
+   private void assertCmpFields(String ejbName, int size, CMPFieldsMetaData cmpFieldsMetaData)
+   {
+      assertNotNull(cmpFieldsMetaData);
+      assertEquals(size, cmpFieldsMetaData.size());
+      int count = 1;
+      for (CMPFieldMetaData cmpField : cmpFieldsMetaData)
+      {
+         assertId(ejbName + "CmpField" + count, cmpField);
+         assertEquals(ejbName + "CmpField" + count, cmpField.getFieldName());
+         ++count;
+      }
+   }
+
+   private void assertQueries(String ejbName, int size, QueriesMetaData queriesMetaData)
+   {
+      assertNotNull(queriesMetaData);
+      assertEquals(size, queriesMetaData.size());
+      int count = 1;
+      for (QueryMetaData query : queriesMetaData)
+      {
+         assertId(ejbName + "Query" + count, query);
+         assertQueryMethod(ejbName + "Query" + count, 2, query.getQueryMethod());
+         if (count == 1)
+            assertEquals(ResultTypeMapping.Local, query.getResultTypeMapping());
+         else
+            assertEquals(ResultTypeMapping.Remote, query.getResultTypeMapping());
+         assertEquals(ejbName + "Query" + count + "EjbQL", query.getEjbQL());
+         ++count;
+      }
+   }
+
+   private void assertQueryMethod(String ejbName, int size, QueryMethodMetaData queryMethodMetaData)
+   {
+      assertNotNull(queryMethodMetaData);
+      assertId(ejbName + "QueryMethod", queryMethodMetaData);
+      assertEquals(ejbName + "QueryMethod", queryMethodMetaData.getMethodName());
+      if (size > 0)
+         assertMethodParams(ejbName + "QueryMethod", size, queryMethodMetaData.getMethodParams());
+   }
+   
+   protected MessageDrivenBeanMetaData assertFullMDB(String ejbName, EnterpriseBeansMetaData enterpriseBeansMetaData)
+   {
+      MessageDrivenBeanMetaData mdb = assertMDB(ejbName, enterpriseBeansMetaData);
+      assertId(ejbName, mdb);
+      assertMappedName(ejbName, mdb.getMappedName());
+      assertEquals(ejbName + "MessagingType", mdb.getMessagingType());
+      assertNamedMethod(ejbName + "TimeoutMethod", 2, mdb.getTimeoutMethod());
+      assertEquals(TransactionType.Container, mdb.getTransactionType());
+      assertEquals(ejbName + "MessageDestinationType", mdb.getMessageDestinationType());
+      assertEquals(ejbName + "MessageDestinationLink", mdb.getMessageDestinationLink());
+      assertActivationConfig(ejbName, mdb.getActivationConfig());
+      assertAroundInvokes(ejbName, 2, mdb.getAroundInvokes());
+      assertEnvironment(ejbName, mdb.getJndiEnvironmentRefsGroup(), true);
+      assertContainerTransactions(ejbName, 6, 6, mdb.getContainerTransactions());
+      assertMethodPermissions(ejbName, ejbName + "MethodPermission", 3, 3, mdb.getMethodPermissions());
+      assertExcludeList(ejbName, 5, 5, mdb.getExcludeList());
+      assertSecurityIdentity(ejbName, "SecurityIdentity", mdb.getSecurityIdentity(), true);
+      
+      return mdb;
+   }
+   
+   private void assertInterceptors(EjbJar3xMetaData ejbJarMetaData)
+   {
+      InterceptorsMetaData interceptorsMetaData = ejbJarMetaData.getInterceptors();
+      assertNotNull(interceptorsMetaData);
+      assertId("interceptors", interceptorsMetaData);
+      assertDescriptions("interceptors", interceptorsMetaData.getDescriptions());
+      assertEquals(2, interceptorsMetaData.size());
+      int count = 1;
+      for (InterceptorMetaData interceptor : interceptorsMetaData)
+         assertInterceptor("interceptor" + (count++), interceptor);
+   }
+   
+   private void assertInterceptor(String prefix, InterceptorMetaData interceptorMetaData)
+   {
+      assertId(prefix, interceptorMetaData);
+      assertDescriptions(prefix, interceptorMetaData.getDescriptions());
+      assertEquals(prefix + "Class", interceptorMetaData.getInterceptorClass());
+      assertAroundInvokes(prefix, 2, interceptorMetaData.getAroundInvokes());
+      assertEnvironment(prefix, interceptorMetaData.getJndiEnvironmentRefsGroup(), true);
+      assertLifecycleCallbacks(prefix, "PostActivate", 2, interceptorMetaData.getPostActivates());
+      assertLifecycleCallbacks(prefix, "PrePassivate", 2, interceptorMetaData.getPrePassivates());
+   }
+   
+   private AssemblyDescriptorMetaData assertAssemblyDescriptor(EjbJar3xMetaData ejbJarMetaData)
+   {
+      AssemblyDescriptorMetaData assemblyDescriptorMetaData = super.assertAssemblyDescriptor(ejbJarMetaData);
+      assertInterceptorBindings(2, assemblyDescriptorMetaData.getInterceptorBindings());
+      assertApplicationExceptions(2, assemblyDescriptorMetaData.getApplicationExceptions());
+      return assemblyDescriptorMetaData;
+   }
+
+   private void assertAroundInvokes(String ejbName, int size, AroundInvokesMetaData aroundInvokesMetaData)
+   {
+      assertNotNull(aroundInvokesMetaData);
+      assertEquals(size, aroundInvokesMetaData.size());
+      int count = 1;
+      for (AroundInvokeMetaData aroundInvoke : aroundInvokesMetaData)
+      {
+         assertEquals(ejbName + "AroundInvoke" + count + "Class", aroundInvoke.getClassName());
+         assertEquals(ejbName + "AroundInvoke" + count + "Method", aroundInvoke.getMethodName());
+         ++count;
+      }
+   }
+   
+   private void assertEjbClientJar(EjbJarMetaData ejbJarMetaData)
+   {
+      assertEquals("some/path/client.jar", ejbJarMetaData.getEjbClientJar());
+   }
+
+   private void assertInterceptorBindings(int size, InterceptorBindingsMetaData interceptorBindingsMetaData)
+   {
+      assertNotNull(interceptorBindingsMetaData);
+      assertEquals(size, interceptorBindingsMetaData.size());
+      int count = 1;
+      for (InterceptorBindingMetaData interceptorBindingMetaData : interceptorBindingsMetaData)
+      {
+         assertId("interceptorBinding" + count, interceptorBindingMetaData);
+         assertDescriptions("interceptorBinding" + count, interceptorBindingMetaData.getDescriptions());
+         assertEquals("interceptorBinding" + count + "EjbName", interceptorBindingMetaData.getEjbName());
+         if (count == 1)
+         {
+            assertInterceptorClasses("interceptorBinding" + count, 2, interceptorBindingMetaData.getInterceptorClasses());
+            assertTrue(interceptorBindingMetaData.isExcludeDefaultInterceptors());
+            assertTrue(interceptorBindingMetaData.isExcludeClassInterceptors());
+         }
+         else
+         {
+            assertInterceptorOrder("interceptorBinding" + count, 2, interceptorBindingMetaData.getInterceptorOrder());
+            assertFalse(interceptorBindingMetaData.isExcludeDefaultInterceptors());
+            assertFalse(interceptorBindingMetaData.isExcludeClassInterceptors());
+         }
+         assertNamedMethod("interceptorBinding" + count + "Method", 2, interceptorBindingMetaData.getMethod());
+         ++count;
+      }
+   }
+
+   private void assertInterceptorClasses(String prefix, int size, InterceptorClassesMetaData interceptorClassesMetaData)
+   {
+      assertNotNull(interceptorClassesMetaData);
+      assertEquals(size, interceptorClassesMetaData.size());
+      int count = 1;
+      for (String interceptorClass : interceptorClassesMetaData)
+      {
+         assertEquals(prefix + "Class" + count, interceptorClass);
+         ++count;
+      }
+   }
+
+   private void assertInterceptorOrder(String prefix, int size, InterceptorOrderMetaData interceptorOrderMetaData)
+   {
+      assertNotNull(interceptorOrderMetaData);
+      assertId(prefix + "InterceptorOrder", interceptorOrderMetaData);
+      assertInterceptorClasses(prefix, size, interceptorOrderMetaData);
+   }
+
+   protected void assertMessageDestination(String prefix, MessageDestinationMetaData messageDestinationMetaData)
+   {
+      assertMessageDestination50(prefix, messageDestinationMetaData);
+   }
+
+/*   protected void assertMessageDestination(String prefix, org.jboss.metadata.MessageDestinationMetaData messageDestinationMetaData)
+   {
+      assertMessageDestination50(prefix, messageDestinationMetaData);
+   }
+*/
+   private void assertApplicationExceptions(int size, ApplicationExceptionsMetaData applicationExceptionsMetaData)
+   {
+      assertNotNull(applicationExceptionsMetaData);
+      assertEquals(size, applicationExceptionsMetaData.size());
+      int count = 1;
+      for (ApplicationExceptionMetaData applicationExceptionMetaData : applicationExceptionsMetaData)
+      {
+         assertId("applicationException" + count, applicationExceptionMetaData);
+         assertEquals("applicationException" + count + "Class", applicationExceptionMetaData.getExceptionClass());
+         if (count == 1)
+            assertTrue(applicationExceptionMetaData.isRollback());
+         else
+            assertFalse(applicationExceptionMetaData.isRollback());
+         ++count;
+      }
+   }
+
+   private void assertMappedName(String prefix, String mappedName)
+   {
+      assertEquals(prefix + "-mapped-name", mappedName);
+   }
+
+   private void assertClasses(String prefix, String type, int size, LinkedHashSet<String> classes)
+   {
+      assertNotNull(classes);
+      assertEquals(size, classes.size());
+      int count = 1;
+      for (String className : classes)
+         assertClass(prefix, type + count++, className);
+   }
+
+   private void assertNamedMethod(String prefix, int size, NamedMethodMetaData namedMethodMetaData)
+   {
+      assertNotNull(namedMethodMetaData);
+      assertId(prefix, namedMethodMetaData);
+      assertEquals(prefix, namedMethodMetaData.getMethodName());
+      if (size > 0)
+         assertMethodParams(prefix, size, namedMethodMetaData.getMethodParams());
+   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/EjbJar3xUnitTestCase.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/EjbJar3xUnitTestCase.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/EjbJar3xUnitTestCase.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,160 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.ejb.metadata.test;
+
+import java.util.Iterator;
+
+import junit.framework.Test;
+
+import org.jboss.ejb.metadata.spec.EjbJar30MetaData;
+import org.jboss.ejb.metadata.spec.EjbJar3xMetaData;
+import org.jboss.ejb.metadata.spec.EnterpriseBeanMetaData;
+import org.jboss.ejb.metadata.spec.EnterpriseBeansMetaData;
+import org.jboss.javaee.annotation.Description;
+import org.jboss.javaee.annotation.Descriptions;
+import org.jboss.javaee.annotation.DisplayName;
+import org.jboss.javaee.annotation.DisplayNames;
+import org.jboss.javaee.annotation.Icon;
+import org.jboss.javaee.annotation.Icons;
+import org.jboss.javaee.metadata.spec.DescriptionGroupMetaData;
+import org.jboss.javaee.metadata.spec.DescriptionImpl;
+import org.jboss.javaee.metadata.spec.DisplayNameImpl;
+import org.jboss.javaee.metadata.spec.IconImpl;
+//import org.jboss.metadata.ApplicationMetaData;
+//import org.jboss.metadata.BeanMetaData;
+import org.jboss.test.javaee.metadata.AbstractJavaEEMetaDataTest;
+import org.jboss.xb.binding.sunday.unmarshalling.SchemaBindingResolver;
+
+/**
+ * EjbJar3xUnitTestCase.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class EjbJar3xUnitTestCase extends AbstractJavaEEMetaDataTest
+{
+   public static Test suite()
+   {
+      return suite(EjbJar3xUnitTestCase.class);
+   }
+   
+   public static SchemaBindingResolver initResolver()
+   {
+      return AbstractJavaEEMetaDataTest.initResolverJavaEE(EjbJar30MetaData.class);
+   }
+   
+   public EjbJar3xUnitTestCase(String name)
+   {
+      super(name);
+   }
+   
+   protected EjbJar3xMetaData unmarshal() throws Exception
+   {
+      return unmarshal(EjbJar30MetaData.class);
+   }
+
+   public void testId() throws Exception
+   {
+      EjbJar3xMetaData result = unmarshal();
+      assertEquals("ejb-jar-test-id", result.getId());
+   }
+   
+   public void testVersion() throws Exception
+   {
+      EjbJar3xMetaData result = unmarshal();
+      assertEquals("3.0", result.getVersion());
+      assertFalse(result.isEJB1x());
+      assertFalse(result.isEJB2x());
+      assertFalse(result.isEJB21());
+      assertTrue(result.isEJB3x());
+      
+/*      ApplicationMetaData old = new ApplicationMetaData(result);
+      assertFalse(old.isEJB1x());
+      assertFalse(old.isEJB2x());
+      assertFalse(old.isEJB21());
+      assertTrue(old.isEJB3x());
+*/   }
+   
+   public void testDescriptionDefaultLanguage() throws Exception
+   {
+      EjbJar3xMetaData result = unmarshal();
+      DescriptionGroupMetaData group = result.getDescriptionGroup();
+      assertNotNull(group);
+      Descriptions descriptions = group.getDescriptions();
+      assertNotNull(descriptions);
+      
+      DescriptionImpl hello = new DescriptionImpl();
+      hello.setDescription("Hello");
+      assertEquals(new Description[] { hello }, descriptions.value());
+   }
+   
+   public void testDisplayNameDefaultLanguage() throws Exception
+   {
+      EjbJar3xMetaData result = unmarshal();
+      DescriptionGroupMetaData group = result.getDescriptionGroup();
+      assertNotNull(group);
+      DisplayNames displayNames = group.getDisplayNames();
+      assertNotNull(displayNames);
+      
+      DisplayNameImpl hello = new DisplayNameImpl();
+      hello.setDisplayName("Hello");
+      assertEquals(new DisplayName[] { hello }, displayNames.value());
+   }
+   
+   public void testIconDefaultLanguage() throws Exception
+   {
+      EjbJar3xMetaData result = unmarshal();
+      DescriptionGroupMetaData group = result.getDescriptionGroup();
+      assertNotNull(group);
+      Icons icons = group.getIcons();
+      assertNotNull(icons);
+      
+      IconImpl icon = new IconImpl();
+      icon.setSmallIcon("small");
+      icon.setLargeIcon("large");
+      assertEquals(new Icon[] { icon }, icons.value());
+   }
+   
+   public void testEjbClientJar() throws Exception
+   {
+      EjbJar3xMetaData result = unmarshal();
+      assertEquals("some/path/client.jar", result.getEjbClientJar());
+   }
+   
+   public void testEnterpriseBeans() throws Exception
+   {
+      EjbJar3xMetaData result = unmarshal();
+      EnterpriseBeansMetaData beans = result.getEnterpriseBeans();
+      assertNotNull(beans);
+      
+      assertEquals(1, beans.size());
+      EnterpriseBeanMetaData bean = beans.iterator().next();
+      assertEquals("TestBean", bean.getEjbName());
+      
+/*      ApplicationMetaData old = new ApplicationMetaData(result);
+      Iterator<BeanMetaData> iterator = old.getEnterpriseBeans();
+      assertTrue(iterator.hasNext());
+      BeanMetaData beanMetaData = iterator.next();
+      assertEquals("TestBean", beanMetaData.getEjbName());
+      assertFalse(iterator.hasNext());
+*/   }
+}

Added: jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/JBoss5xEverythingUnitTestCase.java
===================================================================
--- jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/JBoss5xEverythingUnitTestCase.java	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/java/org/jboss/test/ejb/metadata/test/JBoss5xEverythingUnitTestCase.java	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,1402 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.ejb.metadata.test;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+import junit.framework.Test;
+
+import org.jboss.ejb.metadata.jboss.CommitOption;
+import org.jboss.ejb.metadata.jboss.ContainerConfigurationMetaData;
+import org.jboss.ejb.metadata.jboss.ContainerConfigurationsMetaData;
+import org.jboss.ejb.metadata.jboss.InvokerBindingMetaData;
+import org.jboss.ejb.metadata.jboss.InvokerBindingsMetaData;
+import org.jboss.ejb.metadata.jboss.InvokerProxyBindingMetaData;
+import org.jboss.ejb.metadata.jboss.InvokerProxyBindingsMetaData;
+import org.jboss.ejb.metadata.jboss.JBoss50MetaData;
+import org.jboss.ejb.metadata.jboss.JBossAssemblyDescriptorMetaData;
+import org.jboss.ejb.metadata.jboss.JBossEnterpriseBeanMetaData;
+import org.jboss.ejb.metadata.jboss.JBossEnterpriseBeansMetaData;
+import org.jboss.ejb.metadata.jboss.JBossEntityBeanMetaData;
+import org.jboss.ejb.metadata.jboss.JBossMessageDrivenBeanMetaData;
+import org.jboss.ejb.metadata.jboss.JBossMetaData;
+import org.jboss.ejb.metadata.jboss.JBossSessionBeanMetaData;
+import org.jboss.ejb.metadata.jboss.LoaderRepositoryConfigMetaData;
+import org.jboss.ejb.metadata.jboss.LoaderRepositoryMetaData;
+import org.jboss.ejb.metadata.jboss.ResourceManagerMetaData;
+import org.jboss.ejb.metadata.jboss.ResourceManagersMetaData;
+import org.jboss.ejb.metadata.jboss.WebserviceDescriptionMetaData;
+import org.jboss.ejb.metadata.jboss.WebserviceDescriptionsMetaData;
+import org.jboss.ejb.metadata.jboss.WebservicesMetaData;
+import org.jboss.ejb.metadata.spec.AssemblyDescriptorMetaData;
+import org.jboss.ejb.metadata.spec.EjbJar30MetaData;
+import org.jboss.ejb.metadata.spec.EjbJarMetaData;
+import org.jboss.ejb.metadata.spec.EnterpriseBeanMetaData;
+import org.jboss.ejb.metadata.spec.EnterpriseBeansMetaData;
+import org.jboss.ejb.metadata.spec.EntityBeanMetaData;
+import org.jboss.ejb.metadata.spec.MessageDrivenBeanMetaData;
+import org.jboss.ejb.metadata.spec.SecurityIdentityMetaData;
+import org.jboss.ejb.metadata.spec.SessionBeanMetaData;
+import org.jboss.javaee.metadata.spec.EJBLocalReferencesMetaData;
+import org.jboss.javaee.metadata.spec.EJBReferencesMetaData;
+import org.jboss.javaee.metadata.spec.EnvironmentRefsGroupMetaData;
+import org.jboss.javaee.metadata.spec.MessageDestinationMetaData;
+import org.jboss.javaee.metadata.spec.MessageDestinationReferencesMetaData;
+import org.jboss.javaee.metadata.spec.MessageDestinationsMetaData;
+import org.jboss.javaee.metadata.spec.ResourceEnvironmentReferencesMetaData;
+import org.jboss.javaee.metadata.spec.ResourceInjectionMetaData;
+import org.jboss.javaee.metadata.spec.ResourceReferencesMetaData;
+import org.jboss.javaee.metadata.spec.SecurityRoleMetaData;
+//import org.jboss.metadata.ApplicationMetaData;
+//import org.jboss.metadata.BeanMetaData;
+//import org.jboss.metadata.ConfigurationMetaData;
+//import org.jboss.metadata.EntityMetaData;
+//import org.jboss.metadata.MessageDrivenMetaData;
+//import org.jboss.metadata.SessionMetaData;
+import org.jboss.test.ejb.AbstractEJBEverythingTest;
+import org.jboss.test.javaee.metadata.AbstractJavaEEMetaDataTest;
+import org.jboss.xb.binding.sunday.unmarshalling.SchemaBindingResolver;
+
+/**
+ * JBoss5xEverythingUnitTestCase.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class JBoss5xEverythingUnitTestCase extends AbstractEJBEverythingTest
+{
+   public static Test suite()
+   {
+      return suite(JBoss5xEverythingUnitTestCase.class);
+   }
+   
+   public static SchemaBindingResolver initResolver()
+   {
+      return AbstractJavaEEMetaDataTest.initResolverJavaEE(JBoss50MetaData.class);
+   }
+   
+   public JBoss5xEverythingUnitTestCase(String name)
+   {
+      super(name);
+   }
+   
+   protected JBoss50MetaData unmarshal() throws Exception
+   {
+      return unmarshal(JBoss50MetaData.class);
+   }
+   
+   public void testEverything() throws Exception
+   {
+      //enableTrace("org.jboss.xb");
+      //enableTrace("org.jboss.xb.binding.builder");
+      JBoss50MetaData jbossMetaData = unmarshal();
+      assertVersion(jbossMetaData);
+      assertId("jboss", jbossMetaData);
+      assertDescriptionGroup("jboss", jbossMetaData.getDescriptionGroup());
+      assertLoaderRepository(jbossMetaData.getLoaderRepository());
+      assertEquals("jboss-jmx-name", jbossMetaData.getJmxName());
+      assertEquals("jboss-security-domain", jbossMetaData.getSecurityDomain());
+      assertFalse(jbossMetaData.isExcludeMissingMethods());
+      assertEquals("jboss-unauthenticated-principal", jbossMetaData.getUnauthenticatedPrincipal());
+      assertTrue(jbossMetaData.isExceptionOnRollback());
+      assertWebservices(jbossMetaData.getWebservices());
+      assertJBossEnterpriseBeans(jbossMetaData);
+      assertAssemblyDescriptor(jbossMetaData);
+      assertResourceManagers(jbossMetaData.getResourceManagers());
+      assertResourceManager("resourceManager1", true, jbossMetaData.getResourceManager("resourceManager1Name"));
+      assertResourceManager("resourceManager2", false, jbossMetaData.getResourceManager("resourceManager2Name"));
+      assertInvokerProxyBindings(jbossMetaData.getInvokerProxyBindings());
+      assertInvokerProxyBinding("invokerProxyBinding1", 1, jbossMetaData.getInvokerProxyBinding("invokerProxyBinding1Name"));
+      assertInvokerProxyBinding("invokerProxyBinding2", 2, jbossMetaData.getInvokerProxyBinding("invokerProxyBinding2Name"));
+      fixUpContainerConfigurations(jbossMetaData);
+      assertContainerConfigurations(jbossMetaData);
+      
+      fixUpEjbJar(jbossMetaData);
+      //ApplicationMetaData application = new ApplicationMetaData(jbossMetaData);
+      //assertEquals("jboss-jmx-name", application.getJmxName());
+      //assertEquals("jboss-security-domain", application.getSecurityDomain());
+      //assertFalse(application.isExcludeMissingMethods());
+      //assertEquals("jboss-unauthenticated-principal", application.getUnauthenticatedPrincipal());
+      //assertTrue(application.getExceptionRollback());
+      //assertWebservices(application);
+      fixUpEnterpriseBeans(jbossMetaData);
+      //assertJBossEnterpriseBeans(application);
+      fixUpAssemblyDescriptor(jbossMetaData);
+      //assertAssemblyDescriptor(application);
+      //assertEquals("resourceManager1JndiName", application.getResourceByName("resourceManager1Name"));
+      //assertEquals("resourceManager2URL", application.getResourceByName("resourceManager2Name"));
+      //assertInvokerProxyBindings(application.getInvokerProxyBindings());
+      //assertInvokerProxyBinding("invokerProxyBinding1", application.getInvokerProxyBindingMetaDataByName("invokerProxyBinding1Name"));
+      //assertInvokerProxyBinding("invokerProxyBinding2", application.getInvokerProxyBindingMetaDataByName("invokerProxyBinding2Name"));
+      //assertContainerConfigurations(application);
+   }
+   
+   private void fixUpEjbJar(JBossMetaData jbossMetaData)
+   {
+      EjbJarMetaData ejbJarMetaData = jbossMetaData.getOverridenMetaData();
+      if (ejbJarMetaData == null)
+      {
+         ejbJarMetaData = new EjbJar30MetaData();
+         jbossMetaData.setOverridenMetaData(ejbJarMetaData);
+      }
+   }
+   
+   private void assertVersion(JBoss50MetaData jbossMetaData)
+   {
+      assertEquals("5.0", jbossMetaData.getVersion());
+   }
+   
+   private void assertLoaderRepository(LoaderRepositoryMetaData loaderRepositoryMetaData)
+   {
+      assertNotNull(loaderRepositoryMetaData);
+      assertId("loaderRepository", loaderRepositoryMetaData);
+      assertEquals("loaderRepositoryClass", loaderRepositoryMetaData.getLoaderRepositoryClass());
+      assertEquals("loaderRepositoryName", trim(loaderRepositoryMetaData.getName()));
+      assertLoaderRepositoryConfig(2, loaderRepositoryMetaData);
+   }
+   
+   private void assertLoaderRepositoryConfig(int size, LoaderRepositoryMetaData loaderRepositoryMetaData)
+   {
+      Set<LoaderRepositoryConfigMetaData> configs = loaderRepositoryMetaData.getLoaderRepositoryConfig();
+      assertNotNull(configs);
+      assertEquals(size, configs.size());
+      int count = 1;
+      for (LoaderRepositoryConfigMetaData config : configs)
+      {
+         assertId("loaderRepositoryConfig" + count, config);
+         assertEquals("loaderRepositoryConfigParserClass" + count, config.getConfigParserClass());
+         assertEquals("loaderRepositoryConfig" + count, trim(config.getConfig()));
+         ++count;
+      }
+   }
+   
+   private void assertWebservices(WebservicesMetaData webservices)
+   {
+      assertNotNull(webservices);
+      assertId("webservices", webservices);
+      assertEquals("webservicesContextRoot", webservices.getContextRoot());
+      WebserviceDescriptionsMetaData webserviceDescriptionsMetaData = webservices.getWebserviceDescriptions();
+      assertNotNull(webserviceDescriptionsMetaData);
+      assertEquals(2, webserviceDescriptionsMetaData.size());
+      int count = 1;
+      for (WebserviceDescriptionMetaData description : webserviceDescriptionsMetaData)
+      {
+         assertId("webserviceDescription" + count, description);
+         assertEquals("webserviceDescription" + count + "ConfigName", description.getConfigName());
+         assertEquals("webserviceDescription" + count + "ConfigFile", description.getConfigFile());
+         assertEquals("webserviceDescription" + count + "WsdlPublishLocation", description.getWsdlPublishLocation());
+         ++count;
+      }
+   }
+   
+/*   private void assertWebservices(ApplicationMetaData application)
+   {
+      assertEquals("webservicesContextRoot", application.getWebServiceContextRoot());
+      assertEquals("webserviceDescription2ConfigName", application.getConfigName());
+      assertEquals("webserviceDescription2ConfigFile", application.getConfigFile());
+      Map<String, String> result = application.getWsdlPublishLocations();
+      Map<String, String> expected = new HashMap<String, String>();
+      expected.put("webserviceDescription1Name", "webserviceDescription1WsdlPublishLocation");
+      expected.put("webserviceDescription2Name", "webserviceDescription2WsdlPublishLocation");
+      assertEquals(expected, result);
+      assertEquals("webserviceDescription1WsdlPublishLocation", application.getWsdlPublishLocationByName("webserviceDescription1Name"));
+      assertEquals("webserviceDescription2WsdlPublishLocation", application.getWsdlPublishLocationByName("webserviceDescription2Name"));
+   }
+*/   
+   private String trim(String string)
+   {
+      assertNotNull(string);
+      return string.trim();
+   }
+   
+   private void assertJBossEnterpriseBeans(JBossMetaData jbossMetaData)
+   {
+      JBossEnterpriseBeansMetaData enterpriseBeansMetaData = jbossMetaData.getEnterpriseBeans();
+      assertNotNull(enterpriseBeansMetaData);
+      assertEquals(9, enterpriseBeansMetaData.size());
+
+      assertNullSessionBean("session0", jbossMetaData);
+      assertFullSessionBean("session1", jbossMetaData, true);
+      assertFullSessionBean("session2", jbossMetaData, false);
+
+      assertNullEntityBean("entity0", jbossMetaData);
+      assertFullEntityBean("entity1", jbossMetaData, true);
+      assertFullEntityBean("entity2", jbossMetaData, false);
+
+      assertNullMessageDrivenBean("mdb0", jbossMetaData);
+      assertFullMessageDrivenBean("mdb1", jbossMetaData, true);
+      assertFullMessageDrivenBean("mdb2", jbossMetaData, false);
+   }
+   
+   private void fixUpEnterpriseBeans(JBossMetaData jbossMetaData)
+   {
+      EjbJarMetaData ejbJarMetaData = jbossMetaData.getOverridenMetaData();
+      assertNotNull(ejbJarMetaData);
+
+      EnterpriseBeansMetaData enterpriseBeansMetaData = ejbJarMetaData.getEnterpriseBeans();
+      if (enterpriseBeansMetaData == null)
+      {
+         enterpriseBeansMetaData = new EnterpriseBeansMetaData();
+         ejbJarMetaData.setEnterpriseBeans(enterpriseBeansMetaData);
+      }
+
+      JBossEnterpriseBeansMetaData jbossEnterpriseBeansMetaData = jbossMetaData.getEnterpriseBeans();
+      for (JBossEnterpriseBeanMetaData jbossEnterpriseBeanMetaData : jbossEnterpriseBeansMetaData)
+      {
+         String name = jbossEnterpriseBeanMetaData.getEjbName();
+         if (enterpriseBeansMetaData.get(name) == null)
+         {
+            EnterpriseBeanMetaData enterpriseBeanMetaData = null;
+            if (jbossEnterpriseBeanMetaData instanceof JBossSessionBeanMetaData)
+               enterpriseBeanMetaData = new SessionBeanMetaData();
+            else if (jbossEnterpriseBeanMetaData instanceof JBossEntityBeanMetaData)
+               enterpriseBeanMetaData = new EntityBeanMetaData();
+            else if (jbossEnterpriseBeanMetaData instanceof JBossMessageDrivenBeanMetaData)
+               enterpriseBeanMetaData = new MessageDrivenBeanMetaData();
+            enterpriseBeanMetaData.setEjbName(name);
+            jbossEnterpriseBeanMetaData.setOverridenMetaData(enterpriseBeanMetaData);
+            enterpriseBeansMetaData.add(enterpriseBeanMetaData);
+         }
+      }
+      
+      for (JBossEnterpriseBeanMetaData enterpriseBean : jbossMetaData.getEnterpriseBeans())
+         fixUpEnterpriseBean(enterpriseBean);
+   }
+   
+/*   private void assertJBossEnterpriseBeans(ApplicationMetaData application)
+   {
+      Iterator<BeanMetaData> beans = application.getEnterpriseBeans();
+      assertNotNull(beans);
+      int count = 0;
+      while (beans.hasNext())
+      {
+         beans.next();
+         ++count;
+      }
+      assertEquals(9, count);
+      
+      assertNullSessionBean("session0", application);
+      assertFullSessionBean("session1", application, true);
+      assertFullSessionBean("session2", application, false);
+
+      assertNullEntityBean("entity0", application);
+      assertFullEntityBean("entity1", application, true);
+      assertFullEntityBean("entity2", application, false);
+
+      assertNullMessageDrivenBean("mdb0", application);
+      assertFullMessageDrivenBean("mdb1", application, true);
+      assertFullMessageDrivenBean("mdb2", application, false);
+   }
+*/   
+   private void fixUpEnterpriseBean(JBossEnterpriseBeanMetaData jbossEjb)
+   {
+      EnterpriseBeanMetaData ejb = jbossEjb.getOverridenMetaData();
+      fixUpEnvironment(ejb, jbossEjb);
+   }
+   
+   private <T extends JBossEnterpriseBeanMetaData> T assertJBossEnterpriseBean(String prefix, JBossMetaData jBossMetaData, Class<T> expected)
+   {
+      JBossEnterpriseBeanMetaData ejb = jBossMetaData.getEnterpriseBean(prefix + "EjbName");
+      assertNotNull(ejb);
+      assertEquals(prefix + "EjbName", ejb.getEjbName());
+      assertTrue(expected.isInstance(ejb));
+      return expected.cast(ejb);
+   }
+   
+/*   private <T extends BeanMetaData> T assertBeanMetaData(String prefix, ApplicationMetaData application, Class<T> expected)
+   {
+      BeanMetaData ejb = application.getBeanByEjbName(prefix + "EjbName");
+      assertNotNull(ejb);
+      assertEquals(prefix + "EjbName", ejb.getEjbName());
+      assertTrue(expected.isInstance(ejb));
+      return expected.cast(ejb);
+   }
+*/   
+   private JBossSessionBeanMetaData assertJBossSessionBean(String prefix, JBossMetaData jbossMetaData)
+   {
+      JBossSessionBeanMetaData ejb = assertJBossEnterpriseBean(prefix, jbossMetaData, JBossSessionBeanMetaData.class);
+      assertTrue(ejb.isSession());
+      assertFalse(ejb.isEntity());
+      assertFalse(ejb.isMessageDriven());
+      return ejb;
+   }
+   
+/*   private SessionMetaData assertJBossSessionBean(String prefix, ApplicationMetaData application)
+   {
+      SessionMetaData ejb = assertBeanMetaData(prefix, application, SessionMetaData.class);
+      assertTrue(ejb.isSession());
+      assertFalse(ejb.isEntity());
+      assertFalse(ejb.isMessageDriven());
+      return ejb;
+   }
+*/   
+   private void assertFullSessionBean(String prefix, JBossMetaData jbossMetaData, boolean first)
+   {
+      JBossSessionBeanMetaData session = assertJBossSessionBean(prefix, jbossMetaData);
+      assertId(prefix, session);
+      assertDescriptionGroup(prefix, session.getDescriptionGroup());
+
+      assertRemoteBinding(prefix, session.getRemoteBinding());
+      
+      assertEquals(prefix + "JndiName", session.getJndiName());
+      assertEquals(prefix + "LocalJndiName", session.getLocalJndiName());
+      assertEquals(prefix + "ConfigurationName", session.getConfigurationName());
+      assertEquals(prefix + "SecurityProxy", session.getSecurityProxy());
+      assertEquals(prefix + "SecurityDomain", session.getSecurityDomain());
+
+      if (first)
+      {
+         assertTrue(session.isCallByValue());
+         assertTrue(session.isExceptionOnRollback());
+         assertTrue(session.isTimerPersistence());
+         assertTrue(session.isClustered());
+      }
+      else
+      {
+         assertFalse(session.isCallByValue());
+         assertFalse(session.isExceptionOnRollback());
+         assertFalse(session.isTimerPersistence());
+         assertFalse(session.isClustered());
+      }
+      
+      assertInvokerBindings(prefix, session.getInvokerBindings());
+
+      assertEnvironment(prefix, session.getJbossJndiEnvironmentRefsGroup(), false);
+
+      assertSecurityIdentity(prefix, "SecurityIdentity", session.getSecurityIdentity(), false);
+
+      assertClusterConfig(prefix, session.determineClusterConfig(), true);
+      
+      assertMethodAttributes(prefix, session.getMethodAttributes());
+
+      assertDepends(prefix, 2, session.getDepends());
+      
+      assertIORSecurityConfig(prefix, session.getIorSecurityConfig());
+      
+      // TODO webservice port-component
+      
+      assertSecurityIdentity(prefix, "EjbTimeoutIdentity", session.getEjbTimeoutIdentity(), false);
+      
+      assertAnnotations(prefix, 2, session.getAnnotations());
+
+      assertIgnoreDependency(prefix, session.getIgnoreDependency());
+
+      assertEquals(prefix + "AOPDomain", session.getAopDomainName());
+      
+      // TODO DOM cache-config
+      
+      // TODO DOM pool-config
+      
+      if (first)
+         assertTrue(session.isConcurrent());
+      else
+         assertFalse(session.isConcurrent());
+      
+      assertJndiRefs(prefix, 2, session.getJndiRefs());
+   }
+   
+   private void assertNullSessionBean(String prefix, JBossMetaData jbossMetaData)
+   {
+      JBossSessionBeanMetaData session = assertJBossSessionBean(prefix, jbossMetaData);
+      assertNull(session.getId());
+      assertNull(session.getDescriptionGroup());
+
+      assertNull(session.getRemoteBinding());
+      
+      assertNull(session.getJndiName());
+      assertNull(session.getLocalJndiName());
+      assertNull(session.getConfigurationName());
+      assertNull(session.getSecurityProxy());
+      assertNull(session.getSecurityDomain());
+
+      assertFalse(session.isCallByValue());
+      assertFalse(session.isExceptionOnRollback());
+      assertTrue(session.isTimerPersistence());
+      assertFalse(session.isClustered());
+
+      assertNull(session.getInvokerBindings());
+
+      assertNullEnvironment(session.getJbossJndiEnvironmentRefsGroup());
+
+      assertNull(session.getMethodAttributes());
+      
+      assertNull(session.getSecurityIdentity());
+      assertNull(session.getEjbTimeoutIdentity());
+      
+      assertNull(session.getClusterConfig());
+      
+      assertNull(session.getDepends());
+
+      assertNull(session.getIorSecurityConfig());
+
+      assertNull(session.getAnnotations());
+      assertNull(session.getIgnoreDependency());
+      assertNull(session.getAopDomainName());
+      assertFalse(session.isConcurrent());
+      assertNull(session.getJndiRefs());
+   }
+   
+/*   private void assertFullSessionBean(String prefix, ApplicationMetaData application, boolean first)
+   {
+      SessionMetaData session = assertJBossSessionBean(prefix, application);
+
+      assertEquals(prefix + "JndiName", session.getJndiName());
+      assertEquals(prefix + "LocalJndiName", session.getLocalJndiName());
+      assertEquals(prefix + "ConfigurationName", session.getConfigurationName());
+      assertEquals(prefix + "SecurityProxy", session.getSecurityProxy());
+
+      if (first)
+      {
+         assertTrue(session.isCallByValue());
+         assertTrue(session.getExceptionRollback());
+         assertTrue(session.getTimerPersistence());
+         assertTrue(session.isClustered());
+      }
+      else
+      {
+         assertFalse(session.isCallByValue());
+         assertFalse(session.getExceptionRollback());
+         assertFalse(session.getTimerPersistence());
+         assertFalse(session.isClustered());
+      }
+
+      assertInvokerBindings(prefix, session, session.getInvokerBindings());
+
+      assertEnvironment(prefix, session, false);
+
+      assertSecurityIdentity(prefix, "SecurityIdentity", session.getSecurityIdentityMetaData(), false);
+      
+      assertClusterConfig(prefix, session.getClusterConfigMetaData(), true);
+      
+      assertMethodAttributes(prefix, session);
+
+      assertDepends(prefix, 2, session.getDepends());
+      
+      assertIORSecurityConfig(prefix, session.getIorSecurityConfigMetaData());
+      
+      // TODO webservice port-component
+      
+      assertSecurityIdentity(prefix, "EjbTimeoutIdentity", session.getEjbTimeoutIdentity(), false);
+   }
+*/   
+/*   private void assertNullSessionBean(String prefix, ApplicationMetaData application)
+   {
+      SessionMetaData session = assertJBossSessionBean(prefix, application);
+      
+      String ejbName = session.getEjbName();
+      assertEquals(session.getEjbName(), session.getJndiName());
+      String localName = "local/" + ejbName + '@' + System.identityHashCode(ejbName);
+      assertEquals(localName, session.getLocalJndiName());
+      assertEquals(ContainerConfigurationMetaData.STATELESS, session.getConfigurationName());
+      assertNull(session.getSecurityProxy());
+
+      assertFalse(session.isCallByValue());
+      assertFalse(session.getExceptionRollback());
+      assertTrue(session.getTimerPersistence());
+      assertFalse(session.isClustered());
+      
+      assertDefaultInvoker(InvokerBindingMetaData.STATELESS, session);
+      
+      assertNullEnvironment(session);
+
+      assertNull(session.getSecurityIdentityMetaData());
+      
+      assertDefaultMethodAttributes(ejbName, session);
+
+      assertEmpty(session.getDepends());
+
+      assertNull(session.getIorSecurityConfigMetaData());
+      
+      // TODO webservice port-component
+      
+      assertNull(session.getEjbTimeoutIdentity());
+   }
+*/   
+   private JBossEntityBeanMetaData assertJBossEntityBean(String prefix, JBossMetaData jbossMetaData)
+   {
+      JBossEntityBeanMetaData ejb = assertJBossEnterpriseBean(prefix, jbossMetaData, JBossEntityBeanMetaData.class);
+      assertFalse(ejb.isSession());
+      assertTrue(ejb.isEntity());
+      assertFalse(ejb.isMessageDriven());
+      return ejb;
+   }
+   
+/*   private EntityMetaData assertJBossEntityBean(String prefix, ApplicationMetaData application)
+   {
+      EntityMetaData ejb = assertBeanMetaData(prefix, application, EntityMetaData.class);
+      assertFalse(ejb.isSession());
+      assertTrue(ejb.isEntity());
+      assertFalse(ejb.isMessageDriven());
+      return ejb;
+   }
+*/
+   private void assertFullEntityBean(String prefix, JBossMetaData jbossMetaData, boolean first)
+   {
+      JBossEntityBeanMetaData entity = assertJBossEntityBean(prefix, jbossMetaData);
+      assertId(prefix, entity);
+      assertDescriptionGroup(prefix, entity.getDescriptionGroup());
+      
+      assertEquals(prefix + "JndiName", entity.getJndiName());
+      assertEquals(prefix + "LocalJndiName", entity.getLocalJndiName());
+      assertEquals(prefix + "ConfigurationName", entity.getConfigurationName());
+      assertEquals(prefix + "SecurityProxy", entity.getSecurityProxy());
+      assertEquals(prefix + "SecurityDomain", entity.getSecurityDomain());
+
+      if (first)
+      {
+         assertTrue(entity.isCallByValue());
+         assertTrue(entity.isReadOnly());
+         assertTrue(entity.isExceptionOnRollback());
+         assertTrue(entity.isTimerPersistence());
+         assertTrue(entity.isClustered());
+         assertTrue(entity.isCacheInvalidation());
+      }
+      else
+      {
+         assertFalse(entity.isCallByValue());
+         assertFalse(entity.isReadOnly());
+         assertFalse(entity.isExceptionOnRollback());
+         assertFalse(entity.isTimerPersistence());
+         assertFalse(entity.isClustered());
+         assertFalse(entity.isCacheInvalidation());
+      }
+      
+      assertInvokerBindings(prefix, entity.getInvokerBindings());
+
+      assertEnvironment(prefix, entity.getJbossJndiEnvironmentRefsGroup(), false);
+
+      assertSecurityIdentity(prefix, "SecurityIdentity", entity.getSecurityIdentity(), false);
+
+      assertClusterConfig(prefix, entity.getClusterConfig(), false);
+      
+      assertMethodAttributes(prefix, entity.getMethodAttributes());
+
+      assertDepends(prefix, 2, entity.getDepends());
+      
+      assertIORSecurityConfig(prefix, entity.getIorSecurityConfig());
+      
+      assertAnnotations(prefix, 2, entity.getAnnotations());
+
+      assertIgnoreDependency(prefix, entity.getIgnoreDependency());
+
+      assertEquals(prefix + "AOPDomain", entity.getAopDomainName());
+
+      assertCacheInvalidationConfig(prefix, entity.getCacheInvalidationConfig());
+
+      // TODO DOM cache-config
+      
+      // TODO DOM pool-config
+      
+      assertJndiRefs(prefix, 2, entity.getJndiRefs());
+   }
+   
+   private void assertNullEntityBean(String prefix, JBossMetaData jbossMetaData)
+   {
+      JBossEntityBeanMetaData entity = assertJBossEntityBean(prefix, jbossMetaData);
+      assertNull(entity.getId());
+      assertNull(entity.getDescriptionGroup());
+      
+      assertNull(entity.getJndiName());
+      assertNull(entity.getLocalJndiName());
+      assertNull(entity.getConfigurationName());
+      assertNull(entity.getSecurityProxy());
+      assertNull(entity.getSecurityDomain());
+
+      assertFalse(entity.isCallByValue());
+      assertFalse(entity.isReadOnly());
+      assertFalse(entity.isExceptionOnRollback());
+      assertTrue(entity.isTimerPersistence());
+      assertFalse(entity.isClustered());
+      assertFalse(entity.isCacheInvalidation());
+      
+      assertNull(entity.getInvokerBindings());
+
+      assertNullEnvironment(entity.getJbossJndiEnvironmentRefsGroup());
+
+      assertNull(entity.getMethodAttributes());
+      
+      assertNull(entity.getSecurityIdentity());
+      
+      assertNull(entity.getClusterConfig());
+
+      assertNull(entity.getCacheInvalidationConfig());
+
+      assertNull(entity.getDepends());
+
+      assertNull(entity.getIorSecurityConfig());
+
+      assertNull(entity.getAnnotations());
+      assertNull(entity.getIgnoreDependency());
+      assertNull(entity.getAopDomainName());
+      assertNull(entity.getJndiRefs());
+   }
+   
+/*   private void assertFullEntityBean(String prefix, ApplicationMetaData application, boolean first)
+   {
+      EntityMetaData entity = assertJBossEntityBean(prefix, application);
+
+      assertEquals(prefix + "JndiName", entity.getJndiName());
+      assertEquals(prefix + "LocalJndiName", entity.getLocalJndiName());
+      assertEquals(prefix + "ConfigurationName", entity.getConfigurationName());
+      assertEquals(prefix + "SecurityProxy", entity.getSecurityProxy());
+
+      if (first)
+      {
+         assertTrue(entity.isCallByValue());
+         assertTrue(entity.isReadOnly());
+         assertTrue(entity.getExceptionRollback());
+         assertTrue(entity.getTimerPersistence());
+         assertTrue(entity.isClustered());
+      }
+      else
+      {
+         assertFalse(entity.isCallByValue());
+         assertFalse(entity.isReadOnly());
+         assertFalse(entity.getExceptionRollback());
+         assertFalse(entity.getTimerPersistence());
+         assertFalse(entity.isClustered());
+      }
+
+      assertInvokerBindings(prefix, entity, entity.getInvokerBindings());
+
+      assertEnvironment(prefix, entity, false);
+
+      assertSecurityIdentity(prefix, "SecurityIdentity", entity.getSecurityIdentityMetaData(), false);
+      
+      assertClusterConfig(prefix, entity.getClusterConfigMetaData(), false);
+      
+      assertMethodAttributes(prefix, entity);
+
+      assertCacheInvalidationConfig(prefix, entity.getDistributedCacheInvalidationConfig());
+
+      assertDepends(prefix, 2, entity.getDepends());
+      
+      assertIORSecurityConfig(prefix, entity.getIorSecurityConfigMetaData());
+   }
+*/   
+/*   private void assertNullEntityBean(String prefix, ApplicationMetaData application)
+   {
+      EntityMetaData entity = assertJBossEntityBean(prefix, application);
+      
+      String ejbName = entity.getEjbName();
+      assertEquals(entity.getEjbName(), entity.getJndiName());
+      String localName = "local/" + ejbName + '@' + System.identityHashCode(ejbName);
+      assertEquals(localName, entity.getLocalJndiName());
+      assertEquals(ContainerConfigurationMetaData.CMP_2x, entity.getConfigurationName());
+      assertNull(entity.getSecurityProxy());
+
+      assertFalse(entity.isCallByValue());
+      assertFalse(entity.isReadOnly());
+      assertFalse(entity.getExceptionRollback());
+      assertTrue(entity.getTimerPersistence());
+      assertFalse(entity.isClustered());
+      assertFalse(entity.doDistributedCacheInvalidations());
+      
+      assertDefaultInvoker(InvokerBindingMetaData.CMP_2x, entity);
+      
+      assertNullEnvironment(entity);
+
+      assertNull(entity.getSecurityIdentityMetaData());
+
+      assertNull(entity.getDistributedCacheInvalidationConfig());
+     
+      assertEmpty(entity.getDepends());
+
+      assertNull(entity.getIorSecurityConfigMetaData());
+   }
+*/   
+   private JBossMessageDrivenBeanMetaData assertJBossMessageDrivenBean(String prefix, JBossMetaData jbossMetaData)
+   {
+      JBossMessageDrivenBeanMetaData ejb = assertJBossEnterpriseBean(prefix, jbossMetaData, JBossMessageDrivenBeanMetaData.class);
+      assertFalse(ejb.isSession());
+      assertFalse(ejb.isEntity());
+      assertTrue(ejb.isMessageDriven());
+      return ejb;
+   }
+   
+/*   private MessageDrivenMetaData assertJBossMessageDrivenBean(String prefix, ApplicationMetaData application)
+   {
+      MessageDrivenMetaData ejb = assertBeanMetaData(prefix, application, MessageDrivenMetaData.class);
+      assertFalse(ejb.isSession());
+      assertFalse(ejb.isEntity());
+      assertTrue(ejb.isMessageDriven());
+      return ejb;
+   }
+*/
+   private void assertFullMessageDrivenBean(String prefix, JBossMetaData jbossMetaData, boolean first)
+   {
+      JBossMessageDrivenBeanMetaData mdb = assertJBossMessageDrivenBean(prefix, jbossMetaData);
+      assertId(prefix, mdb);
+      assertDescriptionGroup(prefix, mdb.getDescriptionGroup());
+      
+      assertEquals(prefix + "DestinationJndiName", mdb.getDestinationJndiName());
+      assertEquals(prefix + "LocalJndiName", mdb.getLocalJndiName());
+      assertEquals(prefix + "User", mdb.getMdbUser());
+      assertEquals(prefix + "Password", mdb.getMdbPassword());
+      assertEquals(prefix + "ClientId", mdb.getMdbClientId());
+      assertEquals(prefix + "SubscriptionId", mdb.getMdbSubscriptionId());
+      assertEquals(prefix + "RAR", mdb.getResourceAdapterName());
+      assertEquals(prefix + "ConfigurationName", mdb.getConfigurationName());
+      assertEquals(prefix + "SecurityProxy", mdb.getSecurityProxy());
+
+      if (first)
+      {
+         assertTrue(mdb.isExceptionOnRollback());
+         assertTrue(mdb.isTimerPersistence());
+      }
+      else
+      {
+         assertFalse(mdb.isExceptionOnRollback());
+         assertFalse(mdb.isTimerPersistence());
+      }
+      
+      assertInvokerBindings(prefix, mdb.getInvokerBindings());
+
+      assertEnvironment(prefix, mdb.getJbossJndiEnvironmentRefsGroup(), false);
+
+      assertMethodAttributes(prefix, mdb.getMethodAttributes());
+
+      assertSecurityIdentity(prefix, "SecurityIdentity", mdb.getSecurityIdentity(), false);
+
+      assertDepends(prefix, 2, mdb.getDepends());
+      
+      assertIORSecurityConfig(prefix, mdb.getIorSecurityConfig());
+      
+      assertSecurityIdentity(prefix, "EjbTimeoutIdentity", mdb.getEjbTimeoutIdentity(), false);
+      
+      assertAnnotations(prefix, 2, mdb.getAnnotations());
+
+      assertIgnoreDependency(prefix, mdb.getIgnoreDependency());
+
+      assertEquals(prefix + "AOPDomain", mdb.getAopDomainName());
+     
+      // TODO DOM pool-config
+      
+      assertJndiRefs(prefix, 2, mdb.getJndiRefs());
+
+      assertActivationConfig(prefix + "Default", mdb.getDefaultActivationConfig());
+   }
+   
+   private void assertNullMessageDrivenBean(String prefix, JBossMetaData jbossMetaData)
+   {
+      JBossMessageDrivenBeanMetaData mdb = assertJBossMessageDrivenBean(prefix, jbossMetaData);
+      assertNull(mdb.getId());
+      assertNull(mdb.getDescriptionGroup());
+      
+      assertNull(mdb.getDestinationJndiName());
+      assertNull(mdb.getLocalJndiName());
+      assertNull(mdb.getMdbUser());
+      assertNull(mdb.getMdbPassword());
+      assertNull(mdb.getMdbClientId());
+      assertNull(mdb.getMdbSubscriptionId());
+      assertNull(mdb.getResourceAdapterName());
+      assertNull(mdb.getConfigurationName());
+      assertNull(mdb.getSecurityProxy());
+
+      assertFalse(mdb.isExceptionOnRollback());
+      assertTrue(mdb.isTimerPersistence());
+
+      assertNull(mdb.getInvokerBindings());
+
+      assertNullEnvironment(mdb.getJbossJndiEnvironmentRefsGroup());
+
+      assertNull(mdb.getMethodAttributes());
+
+      assertNull(mdb.getSecurityIdentity());
+      assertNull(mdb.getEjbTimeoutIdentity());
+
+      assertNull(mdb.getDepends());
+
+      assertNull(mdb.getIorSecurityConfig());
+
+      assertNull(mdb.getAnnotations());
+      assertNull(mdb.getIgnoreDependency());
+      assertNull(mdb.getAopDomainName());
+      assertNull(mdb.getJndiRefs());
+   }
+   
+/*   private void assertFullMessageDrivenBean(String prefix, ApplicationMetaData application, boolean first)
+   {
+      MessageDrivenMetaData mdb = assertJBossMessageDrivenBean(prefix, application);
+
+      assertEquals(prefix + "DestinationJndiName", mdb.getDestinationJndiName());
+      assertEquals(prefix + "LocalJndiName", mdb.getLocalJndiName());
+      assertEquals(prefix + "User", mdb.getUser());
+      assertEquals(prefix + "Password", mdb.getPasswd());
+      assertEquals(prefix + "ClientId", mdb.getClientId());
+      assertEquals(prefix + "SubscriptionId", mdb.getSubscriptionId());
+      assertEquals(prefix + "RAR", mdb.getResourceAdapterName());
+      assertEquals(prefix + "ConfigurationName", mdb.getConfigurationName());
+      assertEquals(prefix + "SecurityProxy", mdb.getSecurityProxy());
+
+      if (first)
+      {
+         assertTrue(mdb.getExceptionRollback());
+         assertTrue(mdb.getTimerPersistence());
+      }
+      else
+      {
+         assertFalse(mdb.getExceptionRollback());
+         assertFalse(mdb.getTimerPersistence());
+      }
+
+      assertInvokerBindings(prefix, mdb, mdb.getInvokerBindings());
+
+      assertEnvironment(prefix, mdb, false);
+
+      assertSecurityIdentity(prefix, "SecurityIdentity", mdb.getSecurityIdentityMetaData(), false);
+
+      assertSecurityIdentity(prefix, "EjbTimeoutIdentity", mdb.getEjbTimeoutIdentity(), false);
+      
+      assertMethodAttributes(prefix, mdb);
+
+      assertDepends(prefix, 2, mdb.getDepends());
+      
+      assertIORSecurityConfig(prefix, mdb.getIorSecurityConfigMetaData());
+   }
+*/   
+/*   private void assertNullMessageDrivenBean(String prefix, ApplicationMetaData application)
+   {
+      MessageDrivenMetaData mdb = assertJBossMessageDrivenBean(prefix, application);
+      
+      assertNull(mdb.getDestinationJndiName());
+      String ejbName = mdb.getEjbName();
+      String localName = "local/" + ejbName + '@' + System.identityHashCode(ejbName);
+      assertEquals(localName, mdb.getLocalJndiName());
+      assertNull(mdb.getUser());
+      assertNull(mdb.getPasswd());
+      assertNull(mdb.getClientId());
+      assertNull(mdb.getSubscriptionId());
+      assertNull(mdb.getResourceAdapterName());
+      assertEquals(ContainerConfigurationMetaData.MESSAGE_INFLOW_DRIVEN, mdb.getConfigurationName());
+      assertNull(mdb.getSecurityProxy());
+
+      assertFalse(mdb.getExceptionRollback());
+      assertTrue(mdb.getTimerPersistence());
+      
+      assertNullEnvironment(mdb);
+
+      assertDefaultMethodAttributes(prefix, mdb);
+      
+      assertNull(mdb.getSecurityIdentityMetaData());
+      
+      assertNull(mdb.getEjbTimeoutIdentity());
+      
+      assertEmpty(mdb.getDepends());
+
+      assertNull(mdb.getIorSecurityConfigMetaData());
+   }
+*/   
+   private void fixUpContainerConfigurations(JBossMetaData jbossMetaData)
+   {
+      ContainerConfigurationsMetaData configurations = jbossMetaData.getContainerConfigurations();
+      assertNotNull(configurations);
+      fixUpContainerConfiguration(ContainerConfigurationMetaData.STATELESS, configurations);
+      fixUpContainerConfiguration(ContainerConfigurationMetaData.CMP_2x, configurations);
+      fixUpContainerConfiguration(ContainerConfigurationMetaData.MESSAGE_INFLOW_DRIVEN, configurations);
+      fixUpContainerConfiguration("session1ConfigurationName", configurations);
+      fixUpContainerConfiguration("session2ConfigurationName", configurations);
+      fixUpContainerConfiguration("entity1ConfigurationName", configurations);
+      fixUpContainerConfiguration("entity2ConfigurationName", configurations);
+      fixUpContainerConfiguration("mdb1ConfigurationName", configurations);
+      fixUpContainerConfiguration("mdb2ConfigurationName", configurations);
+   }
+   
+   private void fixUpContainerConfiguration(String name, ContainerConfigurationsMetaData configurations)
+   {
+      if (configurations.get(name) == null)
+      {
+         ContainerConfigurationMetaData configuration = new ContainerConfigurationMetaData();
+         configuration.setName(name);
+         configurations.add(configuration);
+      }
+   }
+   
+   private void assertContainerConfigurations(JBossMetaData jbossMetaData)
+   {
+      ContainerConfigurationsMetaData configurations = jbossMetaData.getContainerConfigurations();
+      assertNotNull(configurations);
+      assertEquals(14, configurations.size());
+      assertNullContainerConfiguration("containerConfiguration0", jbossMetaData);
+      assertFullContainerConfiguration("containerConfiguration1", jbossMetaData, true);
+      assertFullContainerConfiguration("containerConfiguration2", jbossMetaData, false);
+      ContainerConfigurationMetaData configuration = assertContainerConfiguration("containerConfiguration3", jbossMetaData);
+      assertEquals(CommitOption.B, configuration.getCommitOption());
+      configuration = assertContainerConfiguration("containerConfiguration4", jbossMetaData);
+      assertEquals(CommitOption.C, configuration.getCommitOption());
+   }
+   
+/*   private void assertContainerConfigurations(ApplicationMetaData application)
+   {
+      Iterator<ConfigurationMetaData> configurations = application.getConfigurations();
+      assertNotNull(configurations);
+      int count = 0;
+      while (configurations.hasNext())
+      {
+         configurations.next();
+         ++count;
+      }
+      assertEquals(14, count);
+      assertNullContainerConfiguration("containerConfiguration0", application);
+      assertFullContainerConfiguration("containerConfiguration1", application, true);
+      assertFullContainerConfiguration("containerConfiguration2", application, false);
+      ConfigurationMetaData configuration = assertContainerConfiguration("containerConfiguration3", application);
+      assertEquals(ConfigurationMetaData.B_COMMIT_OPTION, configuration.getCommitOption());
+      configuration = assertContainerConfiguration("containerConfiguration4", application);
+      assertEquals(ConfigurationMetaData.C_COMMIT_OPTION, configuration.getCommitOption());
+   }
+*/   
+   private ContainerConfigurationMetaData assertContainerConfiguration(String prefix, JBossMetaData jBossMetaData)
+   {
+      ContainerConfigurationMetaData configuration = jBossMetaData.getContainerConfiguration(prefix + "Name");
+      assertNotNull(configuration);
+      assertEquals(prefix + "Name", configuration.getContainerName());
+      return configuration;
+   }
+   
+   private void assertFullContainerConfiguration(String prefix, JBossMetaData jBossMetaData, boolean first)
+   {
+      ContainerConfigurationMetaData configuration = assertContainerConfiguration(prefix, jBossMetaData);
+      assertId(prefix, configuration);
+      assertDescriptions(prefix, configuration.getDescriptions());
+      assertEquals(prefix + "Extends", configuration.getExtendsName());
+      assertEquals(prefix + "InstancePool", configuration.getInstancePool());
+      assertEquals(prefix + "InstanceCache", configuration.getInstanceCache());
+      assertEquals(prefix + "PersistenceManager", configuration.getPersistenceManager());
+      assertEquals(prefix + "WebClassLoader", configuration.getWebClassLoader());
+      assertEquals(prefix + "LockingPolicy", configuration.getLockingPolicy());
+      assertEquals(prefix + "SecurityDomain", configuration.getSecurityDomain());
+      if (first)
+      {
+         assertTrue(configuration.isCallLogging());
+         assertTrue(configuration.isSyncOnCommitOnly());
+         assertTrue(configuration.isInsertAfterEjbPostCreate());
+         assertTrue(configuration.isEjbStoreOnClean());
+         assertTrue(configuration.isStoreNotFlushed());
+      }
+      else
+      {
+         assertFalse(configuration.isCallLogging());
+         assertFalse(configuration.isSyncOnCommitOnly());
+         assertFalse(configuration.isInsertAfterEjbPostCreate());
+         assertFalse(configuration.isEjbStoreOnClean());
+         assertFalse(configuration.isStoreNotFlushed());
+      }
+      assertInvokerProxyBindingNames(prefix, 2, configuration.getInvokerProxyBindingNames());
+      // TODO DOM container interceptors
+      // TODO DOM container cache conf
+      // TODO DOM container pool conf
+      assertEquals(CommitOption.D, configuration.getCommitOption());
+      assertEquals(10000, configuration.getOptiondRefreshRateMillis());
+      assertClusterConfig(prefix, configuration.getClusterConfig(), true);
+      assertDepends(prefix, 2, configuration.getDepends());
+   }
+   
+   private void assertNullContainerConfiguration(String prefix, JBossMetaData jBossMetaData)
+   {
+      ContainerConfigurationMetaData configuration = assertContainerConfiguration(prefix, jBossMetaData);
+      assertNull(configuration.getId());
+      assertNull(configuration.getDescriptions());
+      assertNull(configuration.getExtendsName());
+      assertNull(configuration.getInstancePool());
+      assertNull(configuration.getInstanceCache());
+      assertNull(configuration.getPersistenceManager());
+      assertNull(configuration.getWebClassLoader());
+      assertNull(configuration.getLockingPolicy());
+      assertNull(configuration.getSecurityDomain());
+      assertFalse(configuration.isCallLogging());
+      assertFalse(configuration.isSyncOnCommitOnly());
+      assertFalse(configuration.isInsertAfterEjbPostCreate());
+      assertFalse(configuration.isEjbStoreOnClean());
+      assertTrue(configuration.isStoreNotFlushed());
+      assertNull(configuration.getInvokerProxyBindingNames());
+      // TODO DOM container interceptors
+      // TODO DOM container cache conf
+      // TODO DOM container pool conf
+      assertEquals(CommitOption.A, configuration.getCommitOption());
+      assertEquals(30000, configuration.getOptiondRefreshRateMillis());
+      assertNull(configuration.getClusterConfig());
+      assertNull(configuration.getDepends());
+   }
+   
+/*   private ConfigurationMetaData assertContainerConfiguration(String prefix, ApplicationMetaData application)
+   {
+      ConfigurationMetaData configuration = application.getConfigurationMetaDataByName(prefix + "Name");
+      assertNotNull(configuration);
+      assertEquals(prefix + "Name", configuration.getName());
+      return configuration;
+   }
+*/   
+/*   private void assertFullContainerConfiguration(String prefix, ApplicationMetaData application, boolean first)
+   {
+      ConfigurationMetaData configuration = assertContainerConfiguration(prefix, application);
+      assertEquals(prefix + "InstancePool", configuration.getInstancePool());
+      assertEquals(prefix + "InstanceCache", configuration.getInstanceCache());
+      assertEquals(prefix + "PersistenceManager", configuration.getPersistenceManager());
+      assertEquals(prefix + "WebClassLoader", configuration.getWebClassLoader());
+      assertEquals(prefix + "LockingPolicy", configuration.getLockClass());
+      assertEquals(prefix + "SecurityDomain", configuration.getSecurityDomain());
+      if (first)
+      {
+         assertTrue(configuration.getCallLogging());
+         assertTrue(configuration.getSyncOnCommitOnly());
+         assertTrue(configuration.isInsertAfterEjbPostCreate());
+         assertTrue(configuration.isEjbStoreForClean());
+         assertTrue(configuration.isStoreNotFlushed());
+      }
+      else
+      {
+         assertFalse(configuration.getCallLogging());
+         assertFalse(configuration.getSyncOnCommitOnly());
+         assertFalse(configuration.isInsertAfterEjbPostCreate());
+         assertFalse(configuration.isEjbStoreForClean());
+         assertFalse(configuration.isStoreNotFlushed());
+      }
+      assertInvokerProxyBindingNames(prefix, 2, configuration.getInvokers());
+      // TODO DOM container interceptors
+      // TODO DOM container cache conf
+      // TODO DOM container pool conf
+      assertEquals(ConfigurationMetaData.D_COMMIT_OPTION, configuration.getCommitOption());
+      assertEquals(10000, configuration.getOptionDRefreshRate());
+      assertClusterConfig(prefix, configuration.getClusterConfigMetaData(), true);
+      assertDepends(prefix, 2, configuration.getDepends());
+   }
+*/   
+/*   private void assertNullContainerConfiguration(String prefix, ApplicationMetaData application)
+   {
+      ConfigurationMetaData configuration = assertContainerConfiguration(prefix, application);
+      assertNull(configuration.getInstancePool());
+      assertNull(configuration.getInstanceCache());
+      assertNull(configuration.getPersistenceManager());
+      assertNull(configuration.getWebClassLoader());
+      assertNull(configuration.getLockClass());
+      assertNull(configuration.getSecurityDomain());
+      assertFalse(configuration.getCallLogging());
+      assertFalse(configuration.getSyncOnCommitOnly());
+      assertFalse(configuration.isInsertAfterEjbPostCreate());
+      assertFalse(configuration.isEjbStoreForClean());
+      assertTrue(configuration.isStoreNotFlushed());
+      assertInvokerProxyBindingNames(null, 0, configuration.getInvokers());
+      // TODO DOM container interceptors
+      // TODO DOM container cache conf
+      // TODO DOM container pool conf
+      assertEquals(ConfigurationMetaData.A_COMMIT_OPTION, configuration.getCommitOption());
+      assertEquals(30000, configuration.getOptionDRefreshRate());
+      assertNull(configuration.getClusterConfigMetaData());
+      assertEmpty(configuration.getDepends());
+   }
+*/   
+   private void assertInvokerProxyBindingNames(String prefix, int size, Collection<String> names)
+   {
+      assertNotNull(names);
+      assertEquals(2, names.size());
+      int count = 1;
+      for (String name : names)
+      {
+         assertEquals(prefix + "InvokerProxyBindingName" + count, name);
+         ++count;
+      }
+   }
+   
+   private void assertInvokerProxyBindingNames(String prefix, int size, String[] names)
+   {
+      assertNotNull(names);
+      assertEquals(size, names.length);
+      int count = 1;
+      for (String name : names)
+      {
+         assertEquals(prefix + "InvokerProxyBindingName" + count, name);
+         ++count;
+      }
+   }
+   
+   private void assertDepends(String prefix, int size, Collection<String> depends)
+   {
+      assertNotNull(depends);
+      assertEquals(size, depends.size());
+      int count = 1;
+      for (String depend : depends)
+      {
+         assertEquals(prefix + "Depends" + count, depend);
+         ++count;
+      }
+   }
+   
+   private void assertInvokerProxyBindings(InvokerProxyBindingsMetaData bindings)
+   {
+      assertNotNull(bindings);
+      assertId("invoker-proxy-bindings", bindings);
+      assertDescriptions("invoker-proxy-bindings", bindings.getDescriptions());
+      assertEquals(2, bindings.size());
+      int count = 1;
+      for (InvokerProxyBindingMetaData binding : bindings)
+      {
+         assertInvokerProxyBinding("invokerProxyBinding" + count, count, binding);
+         ++count;
+      }
+   }
+   
+   private void assertInvokerProxyBinding(String prefix, int count, InvokerProxyBindingMetaData binding)
+   {
+      assertNotNull(binding);
+      assertId(prefix, binding);
+      assertDescriptions(prefix, binding.getDescriptions());
+      assertEquals(prefix + "Name", binding.getInvokerProxyBindingName());
+      assertEquals(prefix + "InvokerMBean", binding.getInvokerMBean());
+      assertEquals(prefix + "ProxyFactory", binding.getProxyFactory());
+      // TODO DOM invoker-proxy-config
+   }
+   
+/*   private void assertInvokerProxyBindings(Iterator<org.jboss.metadata.InvokerProxyBindingMetaData> bindings)
+   {
+      assertNotNull(bindings);
+      int count = 1;
+      while (bindings.hasNext())
+      {
+         assertInvokerProxyBinding("invokerProxyBinding" + count, bindings.next());
+         ++count;
+      }
+      assertEquals(3, count);
+   }
+*/   
+/*   private void assertInvokerProxyBinding(String prefix, org.jboss.metadata.InvokerProxyBindingMetaData binding)
+   {
+      assertNotNull(binding);
+      assertEquals(prefix + "Name", binding.getName());
+      assertEquals(prefix + "InvokerMBean", binding.getInvokerMBean());
+      assertEquals(prefix + "ProxyFactory", binding.getProxyFactory());
+      // TODO DOM invoker-proxy-config
+   }
+*/   
+   private void assertInvokerBindings(String prefix, InvokerBindingsMetaData bindings)
+   {
+      assertId(prefix + "InvokerBindings", bindings);
+      assertDescriptions(prefix + "InvokerBindings", bindings.getDescriptions());
+      assertNotNull(bindings);
+      assertEquals(2, bindings.size());
+      int count = 1;
+      for (InvokerBindingMetaData binding : bindings)
+      {
+         assertInvokerBinding(prefix + "Invoker" + count, count, binding);
+         ++count;
+      }
+   }
+   
+   private void assertInvokerBinding(String prefix, int count, InvokerBindingMetaData binding)
+   {
+      assertNotNull(binding);
+      assertId(prefix, binding);
+      assertDescriptions(prefix, binding.getDescriptions());
+      assertEquals(prefix + "Name", binding.getInvokerProxyBindingName());
+      assertEquals(prefix + "JndiName", binding.getJndiName());
+      // TODO LAST ejb-ref - needs a seperate test
+   }
+   
+/*   private void assertInvokerBindings(String prefix, BeanMetaData bean, Iterator<String> names)
+   {
+      assertNotNull(names);
+      int count = 1;
+      while (names.hasNext())
+      {
+         String name = names.next();
+         assertInvokerBinding(prefix + "Invoker" + count, count, bean, name);
+         ++count;
+      }
+      assertEquals(3, count);
+   }
+*/   
+/*   private void assertInvokerBinding(String prefix, int count, BeanMetaData bean, String name)
+   {
+      assertEquals(prefix + "Name", name);
+      assertEquals(prefix + "JndiName", bean.getInvokerBinding(name));
+   }
+*/   
+/*   private void assertDefaultInvoker(String name, BeanMetaData bean)
+   {
+      assertEquals(bean.getJndiName(), bean.getInvokerBinding(name));
+   }
+*/   
+   private void assertResourceManagers(ResourceManagersMetaData resources)
+   {
+      assertNotNull(resources);
+      assertId("resource-managers", resources);
+      assertDescriptions("resource-managers", resources.getDescriptions());
+      assertEquals(2, resources.size());
+      int count = 1;
+      for (ResourceManagerMetaData resource : resources)
+      {
+         assertResourceManager("resourceManager" + count, count == 1, resource);
+         ++count;
+      }
+   }
+   
+   private void assertResourceManager(String prefix, boolean jndi, ResourceManagerMetaData resource)
+   {
+      assertNotNull(resource);
+      assertId(prefix, resource);
+      assertDescriptions(prefix, resource.getDescriptions());
+      assertEquals(prefix + "Name", resource.getResName());
+      if (jndi)
+      {
+         assertEquals(prefix + "JndiName", resource.getResJndiName());
+         assertNull(resource.getResUrl());
+         assertEquals(prefix + "JndiName", resource.getResource());
+      }
+      else
+      {
+         assertNull(resource.getResJndiName());
+         assertEquals(prefix + "URL", resource.getResUrl());
+         assertEquals(prefix + "URL", resource.getResource());
+      }
+   }
+   
+   protected void assertAssemblyDescriptor(JBossMetaData jbossMetaData)
+   {
+      JBossAssemblyDescriptorMetaData assemblyDescriptorMetaData = jbossMetaData.getAssemblyDescriptor();
+      assertNotNull(assemblyDescriptorMetaData);
+      assertId("assembly-descriptor", assemblyDescriptorMetaData);
+      assertSecurityRoles(2, assemblyDescriptorMetaData.getSecurityRoles());
+      assertMessageDestinations(2, assemblyDescriptorMetaData.getMessageDestinations());
+   }
+   
+   protected void fixUpAssemblyDescriptor(JBossMetaData jbossMetaData)
+   {
+      EjbJarMetaData ejbJarMetaData = jbossMetaData.getOverridenMetaData();
+      assertNotNull(ejbJarMetaData);
+      AssemblyDescriptorMetaData assemblyDescriptorMetaData = ejbJarMetaData.getAssemblyDescriptor();
+      if (assemblyDescriptorMetaData == null)
+      {
+         assemblyDescriptorMetaData = new AssemblyDescriptorMetaData();
+         ejbJarMetaData.setAssemblyDescriptor(assemblyDescriptorMetaData);
+      }
+      fixUpMessageDestinations(2, assemblyDescriptorMetaData);
+   }
+
+   protected void fixUpMessageDestinations(int size, AssemblyDescriptorMetaData assemblyDescriptorMetaData)
+   {
+      MessageDestinationsMetaData messageDestinationsMetaData = assemblyDescriptorMetaData.getMessageDestinations();
+      if (messageDestinationsMetaData == null)
+      {
+         messageDestinationsMetaData = new MessageDestinationsMetaData();
+         assemblyDescriptorMetaData.setMessageDestinations(messageDestinationsMetaData);
+      }
+      fixUpMessageDestinations(size, messageDestinationsMetaData);
+   }
+
+/*   protected void assertAssemblyDescriptor(ApplicationMetaData applicationMetaData)
+   {
+      org.jboss.metadata.AssemblyDescriptorMetaData assemblyDescriptorMetaData = applicationMetaData.getAssemblyDescriptor();
+      assertNotNull(assemblyDescriptorMetaData);
+      assertSecurityRoles(2, assemblyDescriptorMetaData.getSecurityRoles());
+      assertMessageDestination("messageDestination1", assemblyDescriptorMetaData.getMessageDestinationMetaData("messageDestination1Name"));
+      assertMessageDestination("messageDestination2", assemblyDescriptorMetaData.getMessageDestinationMetaData("messageDestination2Name"));
+   }
+*/
+   @Override
+   protected void assertSecurityRole(String prefix, SecurityRoleMetaData securityRoleMetaData)
+   {
+      super.assertSecurityRole(prefix, securityRoleMetaData);
+      assertPrincipals(prefix, 2, securityRoleMetaData.getPrincipals());
+   }
+
+/*   @Override
+   protected void assertSecurityRole(String prefix, org.jboss.security.SecurityRoleMetaData securityRoleMetaData)
+   {
+      super.assertSecurityRole(prefix, securityRoleMetaData);
+      assertPrincipals(prefix, 2, securityRoleMetaData.getPrincipals());
+   }
+*/
+   protected void assertMessageDestination(String prefix, MessageDestinationMetaData messageDestinationMetaData)
+   {
+      assertMessageDestination14(prefix, messageDestinationMetaData);
+      assertEquals(prefix + "JndiName", messageDestinationMetaData.getMappedName());
+   }
+
+   protected void fixUpEnvironment(EnterpriseBeanMetaData ejb, JBossEnterpriseBeanMetaData jbossEjb)
+   {
+      EnvironmentRefsGroupMetaData jbossEjbEnvironment = jbossEjb.getJbossJndiEnvironmentRefsGroup();
+      if (jbossEjbEnvironment == null)
+         return;
+
+      EnvironmentRefsGroupMetaData ejbEnvironment = ejb.getJndiEnvironmentRefsGroup();
+      if (ejbEnvironment == null)
+      {
+         ejbEnvironment = new EnvironmentRefsGroupMetaData();
+         ejb.setJndiEnvironmentRefsGroup(ejbEnvironment);
+      }
+
+      EJBReferencesMetaData ejbReferences = fixUpEjbRefs(ejbEnvironment.getEjbReferences(), jbossEjbEnvironment.getEjbReferences());
+      if (ejbReferences != null)
+         ejbEnvironment.setEjbReferences(ejbReferences);
+      EJBLocalReferencesMetaData ejbLocalReferences = fixUpEjbLocalRefs(ejbEnvironment.getEjbLocalReferences(), jbossEjbEnvironment.getEjbLocalReferences());
+      if (ejbLocalReferences != null)
+         ejbEnvironment.setEjbLocalReferences(ejbLocalReferences);
+      // TODO webservice service ref
+      ResourceReferencesMetaData resourceReferences = fixUpResourceRefs(ejbEnvironment.getResourceReferences(), jbossEjbEnvironment.getResourceReferences());
+      if (resourceReferences != null)
+         ejbEnvironment.setResourceReferences(resourceReferences);
+      ResourceEnvironmentReferencesMetaData resourceEnvironmentReferences = fixUpResourceEnvRefs(ejbEnvironment.getResourceEnvironmentReferences(), jbossEjbEnvironment.getResourceEnvironmentReferences());
+      if (resourceEnvironmentReferences != null)
+         ejbEnvironment.setResourceEnvironmentReferences(resourceEnvironmentReferences);
+      MessageDestinationReferencesMetaData messageDestinationReferences = fixUpMessageDestinationRefs(ejbEnvironment.getMessageDestinationReferences(), jbossEjbEnvironment.getMessageDestinationReferences());
+      if (messageDestinationReferences != null)
+         ejbEnvironment.setMessageDestinationReferences(messageDestinationReferences);
+   }
+   
+   @Override
+   protected void assertResourceGroup(String prefix, ResourceInjectionMetaData resourceInjectionMetaData, boolean full, boolean first)
+   {
+      super.assertResourceGroupNoJndiName(prefix, resourceInjectionMetaData, true, first);
+      assertEquals(prefix + "JndiName", resourceInjectionMetaData.getMappedName());
+      if (first)
+         assertTrue(resourceInjectionMetaData.isDependencyIgnored());
+      else
+         assertFalse(resourceInjectionMetaData.isDependencyIgnored());
+   }
+      
+   @Override
+   protected void assertSecurityIdentity(String ejbName, String type, SecurityIdentityMetaData securityIdentity, boolean full)
+   {
+      super.assertSecurityIdentity(ejbName, type, securityIdentity, full);
+      assertEquals(ejbName + type + "RunAsPrincipal", securityIdentity.getRunAsPrincipal());
+   }
+   
+/*   @Override
+   protected void assertSecurityIdentity(String ejbName, String type, org.jboss.metadata.SecurityIdentityMetaData securityIdentity, boolean full)
+   {
+      super.assertSecurityIdentity(ejbName, type, securityIdentity, full);
+      assertEquals(ejbName + type + "RunAsPrincipal", securityIdentity.getRunAsPrincipalName());
+   }
+*/
+/*   @Override
+   protected void assertMethodAttributes(String ejbName, BeanMetaData bean)
+   {
+      assertTrue(bean.isMethodReadOnly("getSomething"));
+      assertEquals(5000, bean.getTransactionTimeout("getSomething"));
+      assertFalse(bean.isMethodReadOnly("setSomething"));
+      assertEquals(0, bean.getTransactionTimeout("setSomething"));
+   }
+*/}

Added: jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar21Everything_testEverything.xml
===================================================================
--- jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar21Everything_testEverything.xml	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar21Everything_testEverything.xml	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,3313 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<ejb-jar xmlns="http://java.sun.com/xml/ns/j2ee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/javaee/ejb-jar_2_1.xsd"
+         version="2.1"
+         id="ejb-jar-id">
+         
+   <description>en-ejb-jar-desc</description>
+   <description xml:lang="fr">fr-ejb-jar-desc</description>
+   <description xml:lang="de">de-ejb-jar-desc</description>
+   <display-name>en-ejb-jar-disp</display-name>
+   <display-name xml:lang="fr">fr-ejb-jar-disp</display-name>
+   <display-name xml:lang="de">de-ejb-jar-disp</display-name>
+   <icon id="en-ejb-jar-icon-id">
+      <small-icon>en-ejb-jar-small-icon</small-icon>
+      <large-icon>en-ejb-jar-large-icon</large-icon>
+   </icon>
+   <icon xml:lang="fr" id="fr-ejb-jar-icon-id">
+      <small-icon>fr-ejb-jar-small-icon</small-icon>
+      <large-icon>fr-ejb-jar-large-icon</large-icon>
+   </icon>
+   <icon xml:lang="de" id="de-ejb-jar-icon-id">
+      <small-icon>de-ejb-jar-small-icon</small-icon>
+      <large-icon>de-ejb-jar-large-icon</large-icon>
+   </icon>
+
+   <enterprise-beans id="enterprise-beans-id">
+
+      <session>
+         <ejb-name>session0</ejb-name>
+      </session>
+
+      <session id="session1-id">
+      
+         <description>en-session1-desc</description>
+         <description xml:lang="fr">fr-session1-desc</description>
+         <description xml:lang="de">de-session1-desc</description>
+         <display-name>en-session1-disp</display-name>
+         <display-name xml:lang="fr">fr-session1-disp</display-name>
+         <display-name xml:lang="de">de-session1-disp</display-name>
+         <icon id="en-session1-icon-id">
+            <small-icon>en-session1-small-icon</small-icon>
+            <large-icon>en-session1-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="fr" id="fr-session1-icon-id">
+            <small-icon>fr-session1-small-icon</small-icon>
+            <large-icon>fr-session1-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="de" id="de-session1-icon-id">
+            <small-icon>de-session1-small-icon</small-icon>
+            <large-icon>de-session1-large-icon</large-icon>
+         </icon>
+
+         <ejb-name>session1</ejb-name>
+
+         <home>session1Home</home>
+         <remote>session1Remote</remote>
+         <local-home>session1LocalHome</local-home>
+         <local>session1Local</local>
+         <service-endpoint>session1ServiceEndpoint</service-endpoint>
+         <ejb-class>session1EjbClass</ejb-class>
+         <session-type>Stateless</session-type>
+         <transaction-type>Container</transaction-type>
+
+         <env-entry id="session1EnvEntry1-id">
+            <description>en-session1EnvEntry1-desc</description>
+            <description xml:lang="fr">fr-session1EnvEntry1-desc</description>
+            <description xml:lang="de">de-session1EnvEntry1-desc</description>
+            <env-entry-name>session1EnvEntry1Name</env-entry-name>
+            <env-entry-type>session1EnvEntry1Type</env-entry-type>
+            <env-entry-value>session1EnvEntry1Value</env-entry-value>
+         </env-entry>
+         <env-entry id="session1EnvEntry2-id">
+            <description>en-session1EnvEntry2-desc</description>
+            <description xml:lang="fr">fr-session1EnvEntry2-desc</description>
+            <description xml:lang="de">de-session1EnvEntry2-desc</description>
+            <env-entry-name>session1EnvEntry2Name</env-entry-name>
+            <env-entry-type>session1EnvEntry2Type</env-entry-type>
+            <env-entry-value>session1EnvEntry2Value</env-entry-value>
+         </env-entry>
+         <ejb-ref id="session1EjbRef1-id">
+            <description>en-session1EjbRef1-desc</description>
+            <description xml:lang="fr">fr-session1EjbRef1-desc</description>
+            <description xml:lang="de">de-session1EjbRef1-desc</description>
+            <ejb-ref-name>session1EjbRef1Name</ejb-ref-name>
+            <ejb-ref-type>Session</ejb-ref-type>
+            <home>session1EjbRef1Home</home>
+            <remote>session1EjbRef1Remote</remote>
+            <ejb-link>session1EjbRef1EjbLink</ejb-link>
+         </ejb-ref>
+         <ejb-ref id="session1EjbRef2-id">
+            <description>en-session1EjbRef2-desc</description>
+            <description xml:lang="fr">fr-session1EjbRef2-desc</description>
+            <description xml:lang="de">de-session1EjbRef2-desc</description>
+            <ejb-ref-name>session1EjbRef2Name</ejb-ref-name>
+            <ejb-ref-type>Entity</ejb-ref-type>
+            <home>session1EjbRef2Home</home>
+            <remote>session1EjbRef2Remote</remote>
+            <ejb-link>session1EjbRef2EjbLink</ejb-link>
+         </ejb-ref>
+         <ejb-local-ref id="session1EjbLocalRef1-id">
+            <description>en-session1EjbLocalRef1-desc</description>
+            <description xml:lang="fr">fr-session1EjbLocalRef1-desc</description>
+            <description xml:lang="de">de-session1EjbLocalRef1-desc</description>
+            <ejb-ref-name>session1EjbLocalRef1Name</ejb-ref-name>
+            <ejb-ref-type>Session</ejb-ref-type>
+            <local-home>session1EjbLocalRef1LocalHome</local-home>
+            <local>session1EjbLocalRef1Local</local>
+            <ejb-link>session1EjbLocalRef1EjbLink</ejb-link>
+         </ejb-local-ref>
+         <ejb-local-ref id="session1EjbLocalRef2-id">
+            <description>en-session1EjbLocalRef2-desc</description>
+            <description xml:lang="fr">fr-session1EjbLocalRef2-desc</description>
+            <description xml:lang="de">de-session1EjbLocalRef2-desc</description>
+            <ejb-ref-name>session1EjbLocalRef2Name</ejb-ref-name>
+            <ejb-ref-type>Entity</ejb-ref-type>
+            <local-home>session1EjbLocalRef2LocalHome</local-home>
+            <local>session1EjbLocalRef2Local</local>
+            <ejb-link>session1EjbLocalRef2EjbLink</ejb-link>
+         </ejb-local-ref>
+         
+         <!-- TODO service-refGroup -->
+
+         <resource-ref id="session1ResourceRef1-id">
+            <description>en-session1ResourceRef1-desc</description>
+            <description xml:lang="fr">fr-session1ResourceRef1-desc</description>
+            <description xml:lang="de">de-session1ResourceRef1-desc</description>
+            <res-ref-name>session1ResourceRef1Name</res-ref-name>
+            <res-type>session1ResourceRef1Type</res-type>
+            <res-auth>Application</res-auth>
+            <res-sharing-scope>Shareable</res-sharing-scope>
+         </resource-ref>
+         <resource-ref id="session1ResourceRef2-id">
+            <description>en-session1ResourceRef2-desc</description>
+            <description xml:lang="fr">fr-session1ResourceRef2-desc</description>
+            <description xml:lang="de">de-session1ResourceRef2-desc</description>
+            <res-ref-name>session1ResourceRef2Name</res-ref-name>
+            <res-type>session1ResourceRef2Type</res-type>
+            <res-auth>Container</res-auth>
+            <res-sharing-scope>Unshareable</res-sharing-scope>
+         </resource-ref>
+         <resource-env-ref id="session1ResourceEnvRef1-id">
+            <description>en-session1ResourceEnvRef1-desc</description>
+            <description xml:lang="fr">fr-session1ResourceEnvRef1-desc</description>
+            <description xml:lang="de">de-session1ResourceEnvRef1-desc</description>
+            <resource-env-ref-name>session1ResourceEnvRef1Name</resource-env-ref-name>
+            <resource-env-ref-type>session1ResourceEnvRef1Type</resource-env-ref-type>
+         </resource-env-ref>
+         <resource-env-ref id="session1ResourceEnvRef2-id">
+            <description>en-session1ResourceEnvRef2-desc</description>
+            <description xml:lang="fr">fr-session1ResourceEnvRef2-desc</description>
+            <description xml:lang="de">de-session1ResourceEnvRef2-desc</description>
+            <resource-env-ref-name>session1ResourceEnvRef2Name</resource-env-ref-name>
+            <resource-env-ref-type>session1ResourceEnvRef2Type</resource-env-ref-type>
+         </resource-env-ref>
+         <message-destination-ref id="session1MessageDestinationRef1-id">
+            <description>en-session1MessageDestinationRef1-desc</description>
+            <description xml:lang="fr">fr-session1MessageDestinationRef1-desc</description>
+            <description xml:lang="de">de-session1MessageDestinationRef1-desc</description>
+            <message-destination-ref-name>session1MessageDestinationRef1Name</message-destination-ref-name>
+            <message-destination-type>session1MessageDestinationRef1Type</message-destination-type>
+            <message-destination-usage>Consumes</message-destination-usage>
+            <message-destination-link>session1MessageDestinationRef1Link</message-destination-link>
+         </message-destination-ref>
+         <message-destination-ref id="session1MessageDestinationRef2-id">
+            <description>en-session1MessageDestinationRef2-desc</description>
+            <description xml:lang="fr">fr-session1MessageDestinationRef2-desc</description>
+            <description xml:lang="de">de-session1MessageDestinationRef2-desc</description>
+            <message-destination-ref-name>session1MessageDestinationRef2Name</message-destination-ref-name>
+            <message-destination-type>session1MessageDestinationRef2Type</message-destination-type>
+            <message-destination-usage>Produces</message-destination-usage>
+            <message-destination-link>session1MessageDestinationRef2Link</message-destination-link>
+         </message-destination-ref>
+         <message-destination-ref id="session1MessageDestinationRef3-id">
+            <description>en-session1MessageDestinationRef3-desc</description>
+            <description xml:lang="fr">fr-session1MessageDestinationRef3-desc</description>
+            <description xml:lang="de">de-session1MessageDestinationRef3-desc</description>
+            <message-destination-ref-name>session1MessageDestinationRef3Name</message-destination-ref-name>
+            <message-destination-type>session1MessageDestinationRef3Type</message-destination-type>
+            <message-destination-usage>ConsumesProduces</message-destination-usage>
+            <message-destination-link>session1MessageDestinationRef3Link</message-destination-link>
+         </message-destination-ref>
+         <security-role-ref id="session1SecurityRoleRef1-id">
+            <description>en-session1SecurityRoleRef1-desc</description>
+            <description xml:lang="fr">fr-session1SecurityRoleRef1-desc</description>
+            <description xml:lang="de">de-session1SecurityRoleRef1-desc</description>
+            <role-name>session1SecurityRoleRef1RoleName</role-name>
+            <role-link>session1SecurityRoleRef1RoleLink</role-link>
+         </security-role-ref>
+         <security-role-ref id="session1SecurityRoleRef2-id">
+            <description>en-session1SecurityRoleRef2-desc</description>
+            <description xml:lang="fr">fr-session1SecurityRoleRef2-desc</description>
+            <description xml:lang="de">de-session1SecurityRoleRef2-desc</description>
+            <role-name>session1SecurityRoleRef2RoleName</role-name>
+            <role-link>session1SecurityRoleRef2RoleLink</role-link>
+         </security-role-ref>
+         <security-identity id="session1SecurityIdentity-id">
+            <description>en-session1SecurityIdentity-desc</description>
+            <description xml:lang="fr">fr-session1SecurityIdentity-desc</description>
+            <description xml:lang="de">de-session1SecurityIdentity-desc</description>
+            <use-caller-identity id="session1SecurityIdentityUseCallerIdentity-id"/>
+            <run-as id="session1SecurityIdentityRunAs-id">
+               <description>en-session1SecurityIdentityRunAs-desc</description>
+               <description xml:lang="fr">fr-session1SecurityIdentityRunAs-desc</description>
+               <description xml:lang="de">de-session1SecurityIdentityRunAs-desc</description>
+               <role-name>session1SecurityIdentityRunAsRoleName</role-name>
+            </run-as>
+         </security-identity>
+
+      </session>
+
+      <session id="session2-id">
+      
+         <description>en-session2-desc</description>
+         <description xml:lang="fr">fr-session2-desc</description>
+         <description xml:lang="de">de-session2-desc</description>
+         <display-name>en-session2-disp</display-name>
+         <display-name xml:lang="fr">fr-session2-disp</display-name>
+         <display-name xml:lang="de">de-session2-disp</display-name>
+         <icon id="en-session2-icon-id">
+            <small-icon>en-session2-small-icon</small-icon>
+            <large-icon>en-session2-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="fr" id="fr-session2-icon-id">
+            <small-icon>fr-session2-small-icon</small-icon>
+            <large-icon>fr-session2-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="de" id="de-session2-icon-id">
+            <small-icon>de-session2-small-icon</small-icon>
+            <large-icon>de-session2-large-icon</large-icon>
+         </icon>
+
+         <ejb-name>session2</ejb-name>
+
+         <home>session2Home</home>
+         <remote>session2Remote</remote>
+         <local-home>session2LocalHome</local-home>
+         <local>session2Local</local>
+         <service-endpoint>session2ServiceEndpoint</service-endpoint>
+         <ejb-class>session2EjbClass</ejb-class>
+         <session-type>Stateless</session-type>
+         <transaction-type>Container</transaction-type>
+
+         <env-entry id="session2EnvEntry1-id">
+            <description>en-session2EnvEntry1-desc</description>
+            <description xml:lang="fr">fr-session2EnvEntry1-desc</description>
+            <description xml:lang="de">de-session2EnvEntry1-desc</description>
+            <env-entry-name>session2EnvEntry1Name</env-entry-name>
+            <env-entry-type>session2EnvEntry1Type</env-entry-type>
+            <env-entry-value>session2EnvEntry1Value</env-entry-value>
+         </env-entry>
+         <env-entry id="session2EnvEntry2-id">
+            <description>en-session2EnvEntry2-desc</description>
+            <description xml:lang="fr">fr-session2EnvEntry2-desc</description>
+            <description xml:lang="de">de-session2EnvEntry2-desc</description>
+            <env-entry-name>session2EnvEntry2Name</env-entry-name>
+            <env-entry-type>session2EnvEntry2Type</env-entry-type>
+            <env-entry-value>session2EnvEntry2Value</env-entry-value>
+         </env-entry>
+         <ejb-ref id="session2EjbRef1-id">
+            <description>en-session2EjbRef1-desc</description>
+            <description xml:lang="fr">fr-session2EjbRef1-desc</description>
+            <description xml:lang="de">de-session2EjbRef1-desc</description>
+            <ejb-ref-name>session2EjbRef1Name</ejb-ref-name>
+            <ejb-ref-type>Session</ejb-ref-type>
+            <home>session2EjbRef1Home</home>
+            <remote>session2EjbRef1Remote</remote>
+            <ejb-link>session2EjbRef1EjbLink</ejb-link>
+         </ejb-ref>
+         <ejb-ref id="session2EjbRef2-id">
+            <description>en-session2EjbRef2-desc</description>
+            <description xml:lang="fr">fr-session2EjbRef2-desc</description>
+            <description xml:lang="de">de-session2EjbRef2-desc</description>
+            <ejb-ref-name>session2EjbRef2Name</ejb-ref-name>
+            <ejb-ref-type>Entity</ejb-ref-type>
+            <home>session2EjbRef2Home</home>
+            <remote>session2EjbRef2Remote</remote>
+            <ejb-link>session2EjbRef2EjbLink</ejb-link>
+         </ejb-ref>
+         <ejb-local-ref id="session2EjbLocalRef1-id">
+            <description>en-session2EjbLocalRef1-desc</description>
+            <description xml:lang="fr">fr-session2EjbLocalRef1-desc</description>
+            <description xml:lang="de">de-session2EjbLocalRef1-desc</description>
+            <ejb-ref-name>session2EjbLocalRef1Name</ejb-ref-name>
+            <ejb-ref-type>Session</ejb-ref-type>
+            <local-home>session2EjbLocalRef1LocalHome</local-home>
+            <local>session2EjbLocalRef1Local</local>
+            <ejb-link>session2EjbLocalRef1EjbLink</ejb-link>
+         </ejb-local-ref>
+         <ejb-local-ref id="session2EjbLocalRef2-id">
+            <description>en-session2EjbLocalRef2-desc</description>
+            <description xml:lang="fr">fr-session2EjbLocalRef2-desc</description>
+            <description xml:lang="de">de-session2EjbLocalRef2-desc</description>
+            <ejb-ref-name>session2EjbLocalRef2Name</ejb-ref-name>
+            <ejb-ref-type>Entity</ejb-ref-type>
+            <local-home>session2EjbLocalRef2LocalHome</local-home>
+            <local>session2EjbLocalRef2Local</local>
+            <ejb-link>session2EjbLocalRef2EjbLink</ejb-link>
+         </ejb-local-ref>
+
+         <!-- TODO service-refGroup -->
+
+         <resource-ref id="session2ResourceRef1-id">
+            <description>en-session2ResourceRef1-desc</description>
+            <description xml:lang="fr">fr-session2ResourceRef1-desc</description>
+            <description xml:lang="de">de-session2ResourceRef1-desc</description>
+            <res-ref-name>session2ResourceRef1Name</res-ref-name>
+            <res-type>session2ResourceRef1Type</res-type>
+            <res-auth>Application</res-auth>
+            <res-sharing-scope>Shareable</res-sharing-scope>
+         </resource-ref>
+         <resource-ref id="session2ResourceRef2-id">
+            <description>en-session2ResourceRef2-desc</description>
+            <description xml:lang="fr">fr-session2ResourceRef2-desc</description>
+            <description xml:lang="de">de-session2ResourceRef2-desc</description>
+            <res-ref-name>session2ResourceRef2Name</res-ref-name>
+            <res-type>session2ResourceRef2Type</res-type>
+            <res-auth>Container</res-auth>
+            <res-sharing-scope>Unshareable</res-sharing-scope>
+         </resource-ref>
+         <resource-env-ref id="session2ResourceEnvRef1-id">
+            <description>en-session2ResourceEnvRef1-desc</description>
+            <description xml:lang="fr">fr-session2ResourceEnvRef1-desc</description>
+            <description xml:lang="de">de-session2ResourceEnvRef1-desc</description>
+            <resource-env-ref-name>session2ResourceEnvRef1Name</resource-env-ref-name>
+            <resource-env-ref-type>session2ResourceEnvRef1Type</resource-env-ref-type>
+         </resource-env-ref>
+         <resource-env-ref id="session2ResourceEnvRef2-id">
+            <description>en-session2ResourceEnvRef2-desc</description>
+            <description xml:lang="fr">fr-session2ResourceEnvRef2-desc</description>
+            <description xml:lang="de">de-session2ResourceEnvRef2-desc</description>
+            <resource-env-ref-name>session2ResourceEnvRef2Name</resource-env-ref-name>
+            <resource-env-ref-type>session2ResourceEnvRef2Type</resource-env-ref-type>
+         </resource-env-ref>
+         <message-destination-ref id="session2MessageDestinationRef1-id">
+            <description>en-session2MessageDestinationRef1-desc</description>
+            <description xml:lang="fr">fr-session2MessageDestinationRef1-desc</description>
+            <description xml:lang="de">de-session2MessageDestinationRef1-desc</description>
+            <message-destination-ref-name>session2MessageDestinationRef1Name</message-destination-ref-name>
+            <message-destination-type>session2MessageDestinationRef1Type</message-destination-type>
+            <message-destination-usage>Consumes</message-destination-usage>
+            <message-destination-link>session2MessageDestinationRef1Link</message-destination-link>
+         </message-destination-ref>
+         <message-destination-ref id="session2MessageDestinationRef2-id">
+            <description>en-session2MessageDestinationRef2-desc</description>
+            <description xml:lang="fr">fr-session2MessageDestinationRef2-desc</description>
+            <description xml:lang="de">de-session2MessageDestinationRef2-desc</description>
+            <message-destination-ref-name>session2MessageDestinationRef2Name</message-destination-ref-name>
+            <message-destination-type>session2MessageDestinationRef2Type</message-destination-type>
+            <message-destination-usage>Produces</message-destination-usage>
+            <message-destination-link>session2MessageDestinationRef2Link</message-destination-link>
+         </message-destination-ref>
+         <message-destination-ref id="session2MessageDestinationRef3-id">
+            <description>en-session2MessageDestinationRef3-desc</description>
+            <description xml:lang="fr">fr-session2MessageDestinationRef3-desc</description>
+            <description xml:lang="de">de-session2MessageDestinationRef3-desc</description>
+            <message-destination-ref-name>session2MessageDestinationRef3Name</message-destination-ref-name>
+            <message-destination-type>session2MessageDestinationRef3Type</message-destination-type>
+            <message-destination-usage>ConsumesProduces</message-destination-usage>
+            <message-destination-link>session2MessageDestinationRef3Link</message-destination-link>
+         </message-destination-ref>
+         <security-role-ref id="session2SecurityRoleRef1-id">
+            <description>en-session2SecurityRoleRef1-desc</description>
+            <description xml:lang="fr">fr-session2SecurityRoleRef1-desc</description>
+            <description xml:lang="de">de-session2SecurityRoleRef1-desc</description>
+            <role-name>session2SecurityRoleRef1RoleName</role-name>
+            <role-link>session2SecurityRoleRef1RoleLink</role-link>
+         </security-role-ref>
+         <security-role-ref id="session2SecurityRoleRef2-id">
+            <description>en-session2SecurityRoleRef2-desc</description>
+            <description xml:lang="fr">fr-session2SecurityRoleRef2-desc</description>
+            <description xml:lang="de">de-session2SecurityRoleRef2-desc</description>
+            <role-name>session2SecurityRoleRef2RoleName</role-name>
+            <role-link>session2SecurityRoleRef2RoleLink</role-link>
+         </security-role-ref>
+         <security-identity id="session2SecurityIdentity-id">
+            <description>en-session2SecurityIdentity-desc</description>
+            <description xml:lang="fr">fr-session2SecurityIdentity-desc</description>
+            <description xml:lang="de">de-session2SecurityIdentity-desc</description>
+            <use-caller-identity id="session2SecurityIdentityUseCallerIdentity-id"/>
+            <run-as id="session2SecurityIdentityRunAs-id">
+               <description>en-session2SecurityIdentityRunAs-desc</description>
+               <description xml:lang="fr">fr-session2SecurityIdentityRunAs-desc</description>
+               <description xml:lang="de">de-session2SecurityIdentityRunAs-desc</description>
+               <role-name>session2SecurityIdentityRunAsRoleName</role-name>
+            </run-as>
+         </security-identity>
+
+      </session>
+
+      <session>
+         <ejb-name>session3</ejb-name>
+         <ejb-class>session3EjbClass</ejb-class>
+         <session-type>Stateful</session-type>
+      </session>
+
+      <session>
+         <ejb-name>session4</ejb-name>
+         <ejb-class>session4EjbClass</ejb-class>
+         <session-type>Stateless</session-type>
+         <transaction-type>Bean</transaction-type>
+      </session>
+
+      <session>
+         <ejb-name>session5</ejb-name>
+         <ejb-class>session5EjbClass</ejb-class>
+         <session-type>Stateless</session-type>
+         <transaction-type>Container</transaction-type>
+         <security-identity/>
+      </session>
+
+      <entity>
+         <ejb-name>entity0</ejb-name>
+      </entity>
+
+      <entity id="entity1-id">
+      
+         <description>en-entity1-desc</description>
+         <description xml:lang="fr">fr-entity1-desc</description>
+         <description xml:lang="de">de-entity1-desc</description>
+         <display-name>en-entity1-disp</display-name>
+         <display-name xml:lang="fr">fr-entity1-disp</display-name>
+         <display-name xml:lang="de">de-entity1-disp</display-name>
+         <icon id="en-entity1-icon-id">
+            <small-icon>en-entity1-small-icon</small-icon>
+            <large-icon>en-entity1-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="fr" id="fr-entity1-icon-id">
+            <small-icon>fr-entity1-small-icon</small-icon>
+            <large-icon>fr-entity1-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="de" id="de-entity1-icon-id">
+            <small-icon>de-entity1-small-icon</small-icon>
+            <large-icon>de-entity1-large-icon</large-icon>
+         </icon>
+
+         <ejb-name>entity1</ejb-name>
+
+         <home>entity1Home</home>
+         <remote>entity1Remote</remote>
+         <local-home>entity1LocalHome</local-home>
+         <local>entity1Local</local>
+         <ejb-class>entity1EjbClass</ejb-class>
+         <persistence-type>Container</persistence-type>
+         <prim-key-class>entity1PrimKeyClass</prim-key-class>
+         <reentrant>true</reentrant>
+         <cmp-version>2.x</cmp-version>
+         <abstract-schema-name>entity1AbstractSchemaName</abstract-schema-name>
+         <cmp-field id="entity1CmpField1-id">
+            <field-name>entity1CmpField1</field-name>
+         </cmp-field>
+         <cmp-field id="entity1CmpField2-id">
+            <field-name>entity1CmpField2</field-name>
+         </cmp-field>
+         <primkey-field>entity1PrimKeyField</primkey-field>
+
+         <env-entry id="entity1EnvEntry1-id">
+            <description>en-entity1EnvEntry1-desc</description>
+            <description xml:lang="fr">fr-entity1EnvEntry1-desc</description>
+            <description xml:lang="de">de-entity1EnvEntry1-desc</description>
+            <env-entry-name>entity1EnvEntry1Name</env-entry-name>
+            <env-entry-type>entity1EnvEntry1Type</env-entry-type>
+            <env-entry-value>entity1EnvEntry1Value</env-entry-value>
+         </env-entry>
+         <env-entry id="entity1EnvEntry2-id">
+            <description>en-entity1EnvEntry2-desc</description>
+            <description xml:lang="fr">fr-entity1EnvEntry2-desc</description>
+            <description xml:lang="de">de-entity1EnvEntry2-desc</description>
+            <env-entry-name>entity1EnvEntry2Name</env-entry-name>
+            <env-entry-type>entity1EnvEntry2Type</env-entry-type>
+            <env-entry-value>entity1EnvEntry2Value</env-entry-value>
+         </env-entry>
+         <ejb-ref id="entity1EjbRef1-id">
+            <description>en-entity1EjbRef1-desc</description>
+            <description xml:lang="fr">fr-entity1EjbRef1-desc</description>
+            <description xml:lang="de">de-entity1EjbRef1-desc</description>
+            <ejb-ref-name>entity1EjbRef1Name</ejb-ref-name>
+            <ejb-ref-type>Session</ejb-ref-type>
+            <home>entity1EjbRef1Home</home>
+            <remote>entity1EjbRef1Remote</remote>
+            <ejb-link>entity1EjbRef1EjbLink</ejb-link>
+         </ejb-ref>
+         <ejb-ref id="entity1EjbRef2-id">
+            <description>en-entity1EjbRef2-desc</description>
+            <description xml:lang="fr">fr-entity1EjbRef2-desc</description>
+            <description xml:lang="de">de-entity1EjbRef2-desc</description>
+            <ejb-ref-name>entity1EjbRef2Name</ejb-ref-name>
+            <ejb-ref-type>Entity</ejb-ref-type>
+            <home>entity1EjbRef2Home</home>
+            <remote>entity1EjbRef2Remote</remote>
+            <ejb-link>entity1EjbRef2EjbLink</ejb-link>
+         </ejb-ref>
+         <ejb-local-ref id="entity1EjbLocalRef1-id">
+            <description>en-entity1EjbLocalRef1-desc</description>
+            <description xml:lang="fr">fr-entity1EjbLocalRef1-desc</description>
+            <description xml:lang="de">de-entity1EjbLocalRef1-desc</description>
+            <ejb-ref-name>entity1EjbLocalRef1Name</ejb-ref-name>
+            <ejb-ref-type>Session</ejb-ref-type>
+            <local-home>entity1EjbLocalRef1LocalHome</local-home>
+            <local>entity1EjbLocalRef1Local</local>
+            <ejb-link>entity1EjbLocalRef1EjbLink</ejb-link>
+         </ejb-local-ref>
+         <ejb-local-ref id="entity1EjbLocalRef2-id">
+            <description>en-entity1EjbLocalRef2-desc</description>
+            <description xml:lang="fr">fr-entity1EjbLocalRef2-desc</description>
+            <description xml:lang="de">de-entity1EjbLocalRef2-desc</description>
+            <ejb-ref-name>entity1EjbLocalRef2Name</ejb-ref-name>
+            <ejb-ref-type>Entity</ejb-ref-type>
+            <local-home>entity1EjbLocalRef2LocalHome</local-home>
+            <local>entity1EjbLocalRef2Local</local>
+            <ejb-link>entity1EjbLocalRef2EjbLink</ejb-link>
+         </ejb-local-ref>
+         
+         <!-- TODO service-refGroup -->
+
+         <resource-ref id="entity1ResourceRef1-id">
+            <description>en-entity1ResourceRef1-desc</description>
+            <description xml:lang="fr">fr-entity1ResourceRef1-desc</description>
+            <description xml:lang="de">de-entity1ResourceRef1-desc</description>
+            <res-ref-name>entity1ResourceRef1Name</res-ref-name>
+            <res-type>entity1ResourceRef1Type</res-type>
+            <res-auth>Application</res-auth>
+            <res-sharing-scope>Shareable</res-sharing-scope>
+         </resource-ref>
+         <resource-ref id="entity1ResourceRef2-id">
+            <description>en-entity1ResourceRef2-desc</description>
+            <description xml:lang="fr">fr-entity1ResourceRef2-desc</description>
+            <description xml:lang="de">de-entity1ResourceRef2-desc</description>
+            <res-ref-name>entity1ResourceRef2Name</res-ref-name>
+            <res-type>entity1ResourceRef2Type</res-type>
+            <res-auth>Container</res-auth>
+            <res-sharing-scope>Unshareable</res-sharing-scope>
+         </resource-ref>
+         <resource-env-ref id="entity1ResourceEnvRef1-id">
+            <description>en-entity1ResourceEnvRef1-desc</description>
+            <description xml:lang="fr">fr-entity1ResourceEnvRef1-desc</description>
+            <description xml:lang="de">de-entity1ResourceEnvRef1-desc</description>
+            <resource-env-ref-name>entity1ResourceEnvRef1Name</resource-env-ref-name>
+            <resource-env-ref-type>entity1ResourceEnvRef1Type</resource-env-ref-type>
+         </resource-env-ref>
+         <resource-env-ref id="entity1ResourceEnvRef2-id">
+            <description>en-entity1ResourceEnvRef2-desc</description>
+            <description xml:lang="fr">fr-entity1ResourceEnvRef2-desc</description>
+            <description xml:lang="de">de-entity1ResourceEnvRef2-desc</description>
+            <resource-env-ref-name>entity1ResourceEnvRef2Name</resource-env-ref-name>
+            <resource-env-ref-type>entity1ResourceEnvRef2Type</resource-env-ref-type>
+         </resource-env-ref>
+         <message-destination-ref id="entity1MessageDestinationRef1-id">
+            <description>en-entity1MessageDestinationRef1-desc</description>
+            <description xml:lang="fr">fr-entity1MessageDestinationRef1-desc</description>
+            <description xml:lang="de">de-entity1MessageDestinationRef1-desc</description>
+            <message-destination-ref-name>entity1MessageDestinationRef1Name</message-destination-ref-name>
+            <message-destination-type>entity1MessageDestinationRef1Type</message-destination-type>
+            <message-destination-usage>Consumes</message-destination-usage>
+            <message-destination-link>entity1MessageDestinationRef1Link</message-destination-link>
+         </message-destination-ref>
+         <message-destination-ref id="entity1MessageDestinationRef2-id">
+            <description>en-entity1MessageDestinationRef2-desc</description>
+            <description xml:lang="fr">fr-entity1MessageDestinationRef2-desc</description>
+            <description xml:lang="de">de-entity1MessageDestinationRef2-desc</description>
+            <message-destination-ref-name>entity1MessageDestinationRef2Name</message-destination-ref-name>
+            <message-destination-type>entity1MessageDestinationRef2Type</message-destination-type>
+            <message-destination-usage>Produces</message-destination-usage>
+            <message-destination-link>entity1MessageDestinationRef2Link</message-destination-link>
+         </message-destination-ref>
+         <message-destination-ref id="entity1MessageDestinationRef3-id">
+            <description>en-entity1MessageDestinationRef3-desc</description>
+            <description xml:lang="fr">fr-entity1MessageDestinationRef3-desc</description>
+            <description xml:lang="de">de-entity1MessageDestinationRef3-desc</description>
+            <message-destination-ref-name>entity1MessageDestinationRef3Name</message-destination-ref-name>
+            <message-destination-type>entity1MessageDestinationRef3Type</message-destination-type>
+            <message-destination-usage>ConsumesProduces</message-destination-usage>
+            <message-destination-link>entity1MessageDestinationRef3Link</message-destination-link>
+         </message-destination-ref>
+         
+         <security-role-ref id="entity1SecurityRoleRef1-id">
+            <description>en-entity1SecurityRoleRef1-desc</description>
+            <description xml:lang="fr">fr-entity1SecurityRoleRef1-desc</description>
+            <description xml:lang="de">de-entity1SecurityRoleRef1-desc</description>
+            <role-name>entity1SecurityRoleRef1RoleName</role-name>
+            <role-link>entity1SecurityRoleRef1RoleLink</role-link>
+         </security-role-ref>
+         <security-role-ref id="entity1SecurityRoleRef2-id">
+            <description>en-entity1SecurityRoleRef2-desc</description>
+            <description xml:lang="fr">fr-entity1SecurityRoleRef2-desc</description>
+            <description xml:lang="de">de-entity1SecurityRoleRef2-desc</description>
+            <role-name>entity1SecurityRoleRef2RoleName</role-name>
+            <role-link>entity1SecurityRoleRef2RoleLink</role-link>
+         </security-role-ref>
+         <security-identity id="entity1SecurityIdentity-id">
+            <description>en-entity1SecurityIdentity-desc</description>
+            <description xml:lang="fr">fr-entity1SecurityIdentity-desc</description>
+            <description xml:lang="de">de-entity1SecurityIdentity-desc</description>
+            <use-caller-identity id="entity1SecurityIdentityUseCallerIdentity-id"/>
+            <run-as id="entity1SecurityIdentityRunAs-id">
+               <description>en-entity1SecurityIdentityRunAs-desc</description>
+               <description xml:lang="fr">fr-entity1SecurityIdentityRunAs-desc</description>
+               <description xml:lang="de">de-entity1SecurityIdentityRunAs-desc</description>
+               <role-name>entity1SecurityIdentityRunAsRoleName</role-name>
+            </run-as>
+         </security-identity>
+         <query id="entity1Query1-id">
+            <!-- TODO description>en-entity1Query1-desc</description -->
+            <query-method id="entity1Query1QueryMethod-id">
+               <method-name>entity1Query1QueryMethod</method-name>
+               <method-params>
+                  <method-param>entity1Query1QueryMethodParam1</method-param>
+                  <method-param>entity1Query1QueryMethodParam2</method-param>
+               </method-params>
+            </query-method>
+            <result-type-mapping>Local</result-type-mapping>
+            <ejb-ql>entity1Query1EjbQL</ejb-ql>    
+         </query>
+         <query id="entity1Query2-id">
+            <!-- TODO description>en-entity1Query2-desc</description -->
+            <query-method id="entity1Query2QueryMethod-id">
+               <method-name>entity1Query2QueryMethod</method-name>
+               <method-params>
+                  <method-param>entity1Query2QueryMethodParam1</method-param>
+                  <method-param>entity1Query2QueryMethodParam2</method-param>
+               </method-params>
+            </query-method>
+            <result-type-mapping>Remote</result-type-mapping>
+            <ejb-ql>entity1Query2EjbQL</ejb-ql>    
+         </query>
+         
+      </entity>
+
+      <entity id="entity2-id">
+      
+         <description>en-entity2-desc</description>
+         <description xml:lang="fr">fr-entity2-desc</description>
+         <description xml:lang="de">de-entity2-desc</description>
+         <display-name>en-entity2-disp</display-name>
+         <display-name xml:lang="fr">fr-entity2-disp</display-name>
+         <display-name xml:lang="de">de-entity2-disp</display-name>
+         <icon id="en-entity2-icon-id">
+            <small-icon>en-entity2-small-icon</small-icon>
+            <large-icon>en-entity2-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="fr" id="fr-entity2-icon-id">
+            <small-icon>fr-entity2-small-icon</small-icon>
+            <large-icon>fr-entity2-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="de" id="de-entity2-icon-id">
+            <small-icon>de-entity2-small-icon</small-icon>
+            <large-icon>de-entity2-large-icon</large-icon>
+         </icon>
+
+         <ejb-name>entity2</ejb-name>
+
+         <home>entity2Home</home>
+         <remote>entity2Remote</remote>
+         <local-home>entity2LocalHome</local-home>
+         <local>entity2Local</local>
+         <ejb-class>entity2EjbClass</ejb-class>
+         <persistence-type>Container</persistence-type>
+         <prim-key-class>entity2PrimKeyClass</prim-key-class>
+         <reentrant>true</reentrant>
+         <cmp-version>2.x</cmp-version>
+         <abstract-schema-name>entity2AbstractSchemaName</abstract-schema-name>
+         <cmp-field id="entity2CmpField1-id">
+            <field-name>entity2CmpField1</field-name>
+         </cmp-field>
+         <cmp-field id="entity2CmpField2-id">
+            <field-name>entity2CmpField2</field-name>
+         </cmp-field>
+         <primkey-field>entity2PrimKeyField</primkey-field>
+
+         <env-entry id="entity2EnvEntry1-id">
+            <description>en-entity2EnvEntry1-desc</description>
+            <description xml:lang="fr">fr-entity2EnvEntry1-desc</description>
+            <description xml:lang="de">de-entity2EnvEntry1-desc</description>
+            <env-entry-name>entity2EnvEntry1Name</env-entry-name>
+            <env-entry-type>entity2EnvEntry1Type</env-entry-type>
+            <env-entry-value>entity2EnvEntry1Value</env-entry-value>
+         </env-entry>
+         <env-entry id="entity2EnvEntry2-id">
+            <description>en-entity2EnvEntry2-desc</description>
+            <description xml:lang="fr">fr-entity2EnvEntry2-desc</description>
+            <description xml:lang="de">de-entity2EnvEntry2-desc</description>
+            <env-entry-name>entity2EnvEntry2Name</env-entry-name>
+            <env-entry-type>entity2EnvEntry2Type</env-entry-type>
+            <env-entry-value>entity2EnvEntry2Value</env-entry-value>
+         </env-entry>
+         <ejb-ref id="entity2EjbRef1-id">
+            <description>en-entity2EjbRef1-desc</description>
+            <description xml:lang="fr">fr-entity2EjbRef1-desc</description>
+            <description xml:lang="de">de-entity2EjbRef1-desc</description>
+            <ejb-ref-name>entity2EjbRef1Name</ejb-ref-name>
+            <ejb-ref-type>Session</ejb-ref-type>
+            <home>entity2EjbRef1Home</home>
+            <remote>entity2EjbRef1Remote</remote>
+            <ejb-link>entity2EjbRef1EjbLink</ejb-link>
+         </ejb-ref>
+         <ejb-ref id="entity2EjbRef2-id">
+            <description>en-entity2EjbRef2-desc</description>
+            <description xml:lang="fr">fr-entity2EjbRef2-desc</description>
+            <description xml:lang="de">de-entity2EjbRef2-desc</description>
+            <ejb-ref-name>entity2EjbRef2Name</ejb-ref-name>
+            <ejb-ref-type>Entity</ejb-ref-type>
+            <home>entity2EjbRef2Home</home>
+            <remote>entity2EjbRef2Remote</remote>
+            <ejb-link>entity2EjbRef2EjbLink</ejb-link>
+         </ejb-ref>
+         <ejb-local-ref id="entity2EjbLocalRef1-id">
+            <description>en-entity2EjbLocalRef1-desc</description>
+            <description xml:lang="fr">fr-entity2EjbLocalRef1-desc</description>
+            <description xml:lang="de">de-entity2EjbLocalRef1-desc</description>
+            <ejb-ref-name>entity2EjbLocalRef1Name</ejb-ref-name>
+            <ejb-ref-type>Session</ejb-ref-type>
+            <local-home>entity2EjbLocalRef1LocalHome</local-home>
+            <local>entity2EjbLocalRef1Local</local>
+            <ejb-link>entity2EjbLocalRef1EjbLink</ejb-link>
+         </ejb-local-ref>
+         <ejb-local-ref id="entity2EjbLocalRef2-id">
+            <description>en-entity2EjbLocalRef2-desc</description>
+            <description xml:lang="fr">fr-entity2EjbLocalRef2-desc</description>
+            <description xml:lang="de">de-entity2EjbLocalRef2-desc</description>
+            <ejb-ref-name>entity2EjbLocalRef2Name</ejb-ref-name>
+            <ejb-ref-type>Entity</ejb-ref-type>
+            <local-home>entity2EjbLocalRef2LocalHome</local-home>
+            <local>entity2EjbLocalRef2Local</local>
+            <ejb-link>entity2EjbLocalRef2EjbLink</ejb-link>
+         </ejb-local-ref>
+         
+         <!-- TODO service-refGroup -->
+
+         <resource-ref id="entity2ResourceRef1-id">
+            <description>en-entity2ResourceRef1-desc</description>
+            <description xml:lang="fr">fr-entity2ResourceRef1-desc</description>
+            <description xml:lang="de">de-entity2ResourceRef1-desc</description>
+            <res-ref-name>entity2ResourceRef1Name</res-ref-name>
+            <res-type>entity2ResourceRef1Type</res-type>
+            <res-auth>Application</res-auth>
+            <res-sharing-scope>Shareable</res-sharing-scope>
+         </resource-ref>
+         <resource-ref id="entity2ResourceRef2-id">
+            <description>en-entity2ResourceRef2-desc</description>
+            <description xml:lang="fr">fr-entity2ResourceRef2-desc</description>
+            <description xml:lang="de">de-entity2ResourceRef2-desc</description>
+            <res-ref-name>entity2ResourceRef2Name</res-ref-name>
+            <res-type>entity2ResourceRef2Type</res-type>
+            <res-auth>Container</res-auth>
+            <res-sharing-scope>Unshareable</res-sharing-scope>
+         </resource-ref>
+         <resource-env-ref id="entity2ResourceEnvRef1-id">
+            <description>en-entity2ResourceEnvRef1-desc</description>
+            <description xml:lang="fr">fr-entity2ResourceEnvRef1-desc</description>
+            <description xml:lang="de">de-entity2ResourceEnvRef1-desc</description>
+            <resource-env-ref-name>entity2ResourceEnvRef1Name</resource-env-ref-name>
+            <resource-env-ref-type>entity2ResourceEnvRef1Type</resource-env-ref-type>
+         </resource-env-ref>
+         <resource-env-ref id="entity2ResourceEnvRef2-id">
+            <description>en-entity2ResourceEnvRef2-desc</description>
+            <description xml:lang="fr">fr-entity2ResourceEnvRef2-desc</description>
+            <description xml:lang="de">de-entity2ResourceEnvRef2-desc</description>
+            <resource-env-ref-name>entity2ResourceEnvRef2Name</resource-env-ref-name>
+            <resource-env-ref-type>entity2ResourceEnvRef2Type</resource-env-ref-type>
+         </resource-env-ref>
+         <message-destination-ref id="entity2MessageDestinationRef1-id">
+            <description>en-entity2MessageDestinationRef1-desc</description>
+            <description xml:lang="fr">fr-entity2MessageDestinationRef1-desc</description>
+            <description xml:lang="de">de-entity2MessageDestinationRef1-desc</description>
+            <message-destination-ref-name>entity2MessageDestinationRef1Name</message-destination-ref-name>
+            <message-destination-type>entity2MessageDestinationRef1Type</message-destination-type>
+            <message-destination-usage>Consumes</message-destination-usage>
+            <message-destination-link>entity2MessageDestinationRef1Link</message-destination-link>
+         </message-destination-ref>
+         <message-destination-ref id="entity2MessageDestinationRef2-id">
+            <description>en-entity2MessageDestinationRef2-desc</description>
+            <description xml:lang="fr">fr-entity2MessageDestinationRef2-desc</description>
+            <description xml:lang="de">de-entity2MessageDestinationRef2-desc</description>
+            <message-destination-ref-name>entity2MessageDestinationRef2Name</message-destination-ref-name>
+            <message-destination-type>entity2MessageDestinationRef2Type</message-destination-type>
+            <message-destination-usage>Produces</message-destination-usage>
+            <message-destination-link>entity2MessageDestinationRef2Link</message-destination-link>
+         </message-destination-ref>
+         <message-destination-ref id="entity2MessageDestinationRef3-id">
+            <description>en-entity2MessageDestinationRef3-desc</description>
+            <description xml:lang="fr">fr-entity2MessageDestinationRef3-desc</description>
+            <description xml:lang="de">de-entity2MessageDestinationRef3-desc</description>
+            <message-destination-ref-name>entity2MessageDestinationRef3Name</message-destination-ref-name>
+            <message-destination-type>entity2MessageDestinationRef3Type</message-destination-type>
+            <message-destination-usage>ConsumesProduces</message-destination-usage>
+            <message-destination-link>entity2MessageDestinationRef3Link</message-destination-link>
+         </message-destination-ref>
+         
+         <security-role-ref id="entity2SecurityRoleRef1-id">
+            <description>en-entity2SecurityRoleRef1-desc</description>
+            <description xml:lang="fr">fr-entity2SecurityRoleRef1-desc</description>
+            <description xml:lang="de">de-entity2SecurityRoleRef1-desc</description>
+            <role-name>entity2SecurityRoleRef1RoleName</role-name>
+            <role-link>entity2SecurityRoleRef1RoleLink</role-link>
+         </security-role-ref>
+         <security-role-ref id="entity2SecurityRoleRef2-id">
+            <description>en-entity2SecurityRoleRef2-desc</description>
+            <description xml:lang="fr">fr-entity2SecurityRoleRef2-desc</description>
+            <description xml:lang="de">de-entity2SecurityRoleRef2-desc</description>
+            <role-name>entity2SecurityRoleRef2RoleName</role-name>
+            <role-link>entity2SecurityRoleRef2RoleLink</role-link>
+         </security-role-ref>
+         <security-identity id="entity2SecurityIdentity-id">
+            <description>en-entity2SecurityIdentity-desc</description>
+            <description xml:lang="fr">fr-entity2SecurityIdentity-desc</description>
+            <description xml:lang="de">de-entity2SecurityIdentity-desc</description>
+            <use-caller-identity id="entity2SecurityIdentityUseCallerIdentity-id"/>
+            <run-as id="entity2SecurityIdentityRunAs-id">
+               <description>en-entity2SecurityIdentityRunAs-desc</description>
+               <description xml:lang="fr">fr-entity2SecurityIdentityRunAs-desc</description>
+               <description xml:lang="de">de-entity2SecurityIdentityRunAs-desc</description>
+               <role-name>entity2SecurityIdentityRunAsRoleName</role-name>
+            </run-as>
+         </security-identity>
+         <query id="entity2Query1-id">
+            <!-- TODO description>en-entity2Query1-desc</description -->
+            <query-method id="entity2Query1QueryMethod-id">
+               <method-name>entity2Query1QueryMethod</method-name>
+               <method-params>
+                  <method-param>entity2Query1QueryMethodParam1</method-param>
+                  <method-param>entity2Query1QueryMethodParam2</method-param>
+               </method-params>
+            </query-method>
+            <result-type-mapping>Local</result-type-mapping>
+            <ejb-ql>entity2Query1EjbQL</ejb-ql>    
+         </query>
+         <query id="entity2Query2-id">
+            <!-- TODO description>en-entity2Query2-desc</description -->
+            <query-method id="entity2Query2QueryMethod-id">
+               <method-name>entity2Query2QueryMethod</method-name>
+               <method-params>
+                  <method-param>entity2Query2QueryMethodParam1</method-param>
+                  <method-param>entity2Query2QueryMethodParam2</method-param>
+               </method-params>
+            </query-method>
+            <result-type-mapping>Remote</result-type-mapping>
+            <ejb-ql>entity2Query2EjbQL</ejb-ql>    
+         </query>
+         
+      </entity>
+
+      <entity>
+         <ejb-name>entity3</ejb-name>
+         <ejb-class>entity3Class</ejb-class>
+         <persistence-type>Bean</persistence-type>
+      </entity>
+
+      <entity>
+         <ejb-name>entity4</ejb-name>
+         <ejb-class>entity4Class</ejb-class>
+         <persistence-type>Container</persistence-type>
+         <prim-key-class>java.lang.Object</prim-key-class>
+         <reentrant>false</reentrant>
+      </entity>
+
+      <entity>
+         <ejb-name>entity5</ejb-name>
+         <ejb-class>entity5Class</ejb-class>
+         <persistence-type>Container</persistence-type>
+         <prim-key-class>java.lang.Object</prim-key-class>
+         <reentrant>false</reentrant>
+         <cmp-version>1.x</cmp-version>
+      </entity>
+
+      <message-driven>
+         <ejb-name>mdb0</ejb-name>
+      </message-driven>
+
+      <message-driven id="mdb1-id">
+      
+         <description>en-mdb1-desc</description>
+         <description xml:lang="fr">fr-mdb1-desc</description>
+         <description xml:lang="de">de-mdb1-desc</description>
+         <display-name>en-mdb1-disp</display-name>
+         <display-name xml:lang="fr">fr-mdb1-disp</display-name>
+         <display-name xml:lang="de">de-mdb1-disp</display-name>
+         <icon id="en-mdb1-icon-id">
+            <small-icon>en-mdb1-small-icon</small-icon>
+            <large-icon>en-mdb1-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="fr" id="fr-mdb1-icon-id">
+            <small-icon>fr-mdb1-small-icon</small-icon>
+            <large-icon>fr-mdb1-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="de" id="de-mdb1-icon-id">
+            <small-icon>de-mdb1-small-icon</small-icon>
+            <large-icon>de-mdb1-large-icon</large-icon>
+         </icon>
+
+         <ejb-name>mdb1</ejb-name>
+
+         <ejb-class>mdb1EjbClass</ejb-class>
+         <messaging-type>mdb1MessagingType</messaging-type>
+         <transaction-type>Container</transaction-type>
+         <message-destination-type>mdb1MessageDestinationType</message-destination-type>
+         <message-destination-link>mdb1MessageDestinationLink</message-destination-link>
+         <activation-config id="mdb1ActivationConfig-id">
+            <activation-config-property id="mdb1ActivationConfigProperty1-id">
+               <activation-config-property-name>mdb1ActivationConfigProperty1Name</activation-config-property-name>
+               <activation-config-property-value>mdb1ActivationConfigProperty1Value</activation-config-property-value>
+            </activation-config-property>
+            <activation-config-property id="mdb1ActivationConfigProperty2-id">
+               <activation-config-property-name>mdb1ActivationConfigProperty2Name</activation-config-property-name>
+               <activation-config-property-value>mdb1ActivationConfigProperty2Value</activation-config-property-value>
+            </activation-config-property>
+         </activation-config>
+
+         <env-entry id="mdb1EnvEntry1-id">
+            <description>en-mdb1EnvEntry1-desc</description>
+            <description xml:lang="fr">fr-mdb1EnvEntry1-desc</description>
+            <description xml:lang="de">de-mdb1EnvEntry1-desc</description>
+            <env-entry-name>mdb1EnvEntry1Name</env-entry-name>
+            <env-entry-type>mdb1EnvEntry1Type</env-entry-type>
+            <env-entry-value>mdb1EnvEntry1Value</env-entry-value>
+         </env-entry>
+         <env-entry id="mdb1EnvEntry2-id">
+            <description>en-mdb1EnvEntry2-desc</description>
+            <description xml:lang="fr">fr-mdb1EnvEntry2-desc</description>
+            <description xml:lang="de">de-mdb1EnvEntry2-desc</description>
+            <env-entry-name>mdb1EnvEntry2Name</env-entry-name>
+            <env-entry-type>mdb1EnvEntry2Type</env-entry-type>
+            <env-entry-value>mdb1EnvEntry2Value</env-entry-value>
+         </env-entry>
+         <ejb-ref id="mdb1EjbRef1-id">
+            <description>en-mdb1EjbRef1-desc</description>
+            <description xml:lang="fr">fr-mdb1EjbRef1-desc</description>
+            <description xml:lang="de">de-mdb1EjbRef1-desc</description>
+            <ejb-ref-name>mdb1EjbRef1Name</ejb-ref-name>
+            <ejb-ref-type>Session</ejb-ref-type>
+            <home>mdb1EjbRef1Home</home>
+            <remote>mdb1EjbRef1Remote</remote>
+            <ejb-link>mdb1EjbRef1EjbLink</ejb-link>
+         </ejb-ref>
+         <ejb-ref id="mdb1EjbRef2-id">
+            <description>en-mdb1EjbRef2-desc</description>
+            <description xml:lang="fr">fr-mdb1EjbRef2-desc</description>
+            <description xml:lang="de">de-mdb1EjbRef2-desc</description>
+            <ejb-ref-name>mdb1EjbRef2Name</ejb-ref-name>
+            <ejb-ref-type>Entity</ejb-ref-type>
+            <home>mdb1EjbRef2Home</home>
+            <remote>mdb1EjbRef2Remote</remote>
+            <ejb-link>mdb1EjbRef2EjbLink</ejb-link>
+         </ejb-ref>
+         <ejb-local-ref id="mdb1EjbLocalRef1-id">
+            <description>en-mdb1EjbLocalRef1-desc</description>
+            <description xml:lang="fr">fr-mdb1EjbLocalRef1-desc</description>
+            <description xml:lang="de">de-mdb1EjbLocalRef1-desc</description>
+            <ejb-ref-name>mdb1EjbLocalRef1Name</ejb-ref-name>
+            <ejb-ref-type>Session</ejb-ref-type>
+            <local-home>mdb1EjbLocalRef1LocalHome</local-home>
+            <local>mdb1EjbLocalRef1Local</local>
+            <ejb-link>mdb1EjbLocalRef1EjbLink</ejb-link>
+         </ejb-local-ref>
+         <ejb-local-ref id="mdb1EjbLocalRef2-id">
+            <description>en-mdb1EjbLocalRef2-desc</description>
+            <description xml:lang="fr">fr-mdb1EjbLocalRef2-desc</description>
+            <description xml:lang="de">de-mdb1EjbLocalRef2-desc</description>
+            <ejb-ref-name>mdb1EjbLocalRef2Name</ejb-ref-name>
+            <ejb-ref-type>Entity</ejb-ref-type>
+            <local-home>mdb1EjbLocalRef2LocalHome</local-home>
+            <local>mdb1EjbLocalRef2Local</local>
+            <ejb-link>mdb1EjbLocalRef2EjbLink</ejb-link>
+         </ejb-local-ref>
+         
+         <!-- TODO service-refGroup -->
+
+         <resource-ref id="mdb1ResourceRef1-id">
+            <description>en-mdb1ResourceRef1-desc</description>
+            <description xml:lang="fr">fr-mdb1ResourceRef1-desc</description>
+            <description xml:lang="de">de-mdb1ResourceRef1-desc</description>
+            <res-ref-name>mdb1ResourceRef1Name</res-ref-name>
+            <res-type>mdb1ResourceRef1Type</res-type>
+            <res-auth>Application</res-auth>
+            <res-sharing-scope>Shareable</res-sharing-scope>
+         </resource-ref>
+         <resource-ref id="mdb1ResourceRef2-id">
+            <description>en-mdb1ResourceRef2-desc</description>
+            <description xml:lang="fr">fr-mdb1ResourceRef2-desc</description>
+            <description xml:lang="de">de-mdb1ResourceRef2-desc</description>
+            <res-ref-name>mdb1ResourceRef2Name</res-ref-name>
+            <res-type>mdb1ResourceRef2Type</res-type>
+            <res-auth>Container</res-auth>
+            <res-sharing-scope>Unshareable</res-sharing-scope>
+         </resource-ref>
+         <resource-env-ref id="mdb1ResourceEnvRef1-id">
+            <description>en-mdb1ResourceEnvRef1-desc</description>
+            <description xml:lang="fr">fr-mdb1ResourceEnvRef1-desc</description>
+            <description xml:lang="de">de-mdb1ResourceEnvRef1-desc</description>
+            <resource-env-ref-name>mdb1ResourceEnvRef1Name</resource-env-ref-name>
+            <resource-env-ref-type>mdb1ResourceEnvRef1Type</resource-env-ref-type>
+         </resource-env-ref>
+         <resource-env-ref id="mdb1ResourceEnvRef2-id">
+            <description>en-mdb1ResourceEnvRef2-desc</description>
+            <description xml:lang="fr">fr-mdb1ResourceEnvRef2-desc</description>
+            <description xml:lang="de">de-mdb1ResourceEnvRef2-desc</description>
+            <resource-env-ref-name>mdb1ResourceEnvRef2Name</resource-env-ref-name>
+            <resource-env-ref-type>mdb1ResourceEnvRef2Type</resource-env-ref-type>
+         </resource-env-ref>
+         <message-destination-ref id="mdb1MessageDestinationRef1-id">
+            <description>en-mdb1MessageDestinationRef1-desc</description>
+            <description xml:lang="fr">fr-mdb1MessageDestinationRef1-desc</description>
+            <description xml:lang="de">de-mdb1MessageDestinationRef1-desc</description>
+            <message-destination-ref-name>mdb1MessageDestinationRef1Name</message-destination-ref-name>
+            <message-destination-type>mdb1MessageDestinationRef1Type</message-destination-type>
+            <message-destination-usage>Consumes</message-destination-usage>
+            <message-destination-link>mdb1MessageDestinationRef1Link</message-destination-link>
+         </message-destination-ref>
+         <message-destination-ref id="mdb1MessageDestinationRef2-id">
+            <description>en-mdb1MessageDestinationRef2-desc</description>
+            <description xml:lang="fr">fr-mdb1MessageDestinationRef2-desc</description>
+            <description xml:lang="de">de-mdb1MessageDestinationRef2-desc</description>
+            <message-destination-ref-name>mdb1MessageDestinationRef2Name</message-destination-ref-name>
+            <message-destination-type>mdb1MessageDestinationRef2Type</message-destination-type>
+            <message-destination-usage>Produces</message-destination-usage>
+            <message-destination-link>mdb1MessageDestinationRef2Link</message-destination-link>
+         </message-destination-ref>
+         <message-destination-ref id="mdb1MessageDestinationRef3-id">
+            <description>en-mdb1MessageDestinationRef3-desc</description>
+            <description xml:lang="fr">fr-mdb1MessageDestinationRef3-desc</description>
+            <description xml:lang="de">de-mdb1MessageDestinationRef3-desc</description>
+            <message-destination-ref-name>mdb1MessageDestinationRef3Name</message-destination-ref-name>
+            <message-destination-type>mdb1MessageDestinationRef3Type</message-destination-type>
+            <message-destination-usage>ConsumesProduces</message-destination-usage>
+            <message-destination-link>mdb1MessageDestinationRef3Link</message-destination-link>
+         </message-destination-ref>
+
+         <security-identity id="mdb1SecurityIdentity-id">
+            <description>en-mdb1SecurityIdentity-desc</description>
+            <description xml:lang="fr">fr-mdb1SecurityIdentity-desc</description>
+            <description xml:lang="de">de-mdb1SecurityIdentity-desc</description>
+            <use-caller-identity id="mdb1SecurityIdentityUseCallerIdentity-id"/>
+            <run-as id="mdb1SecurityIdentityRunAs-id">
+               <description>en-mdb1SecurityIdentityRunAs-desc</description>
+               <description xml:lang="fr">fr-mdb1SecurityIdentityRunAs-desc</description>
+               <description xml:lang="de">de-mdb1SecurityIdentityRunAs-desc</description>
+               <role-name>mdb1SecurityIdentityRunAsRoleName</role-name>
+            </run-as>
+         </security-identity>
+
+      </message-driven>
+
+      <message-driven id="mdb2-id">
+      
+         <description>en-mdb2-desc</description>
+         <description xml:lang="fr">fr-mdb2-desc</description>
+         <description xml:lang="de">de-mdb2-desc</description>
+         <display-name>en-mdb2-disp</display-name>
+         <display-name xml:lang="fr">fr-mdb2-disp</display-name>
+         <display-name xml:lang="de">de-mdb2-disp</display-name>
+         <icon id="en-mdb2-icon-id">
+            <small-icon>en-mdb2-small-icon</small-icon>
+            <large-icon>en-mdb2-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="fr" id="fr-mdb2-icon-id">
+            <small-icon>fr-mdb2-small-icon</small-icon>
+            <large-icon>fr-mdb2-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="de" id="de-mdb2-icon-id">
+            <small-icon>de-mdb2-small-icon</small-icon>
+            <large-icon>de-mdb2-large-icon</large-icon>
+         </icon>
+
+         <ejb-name>mdb2</ejb-name>
+
+         <ejb-class>mdb2EjbClass</ejb-class>
+         <messaging-type>mdb2MessagingType</messaging-type>
+         <transaction-type>Container</transaction-type>
+         <message-destination-type>mdb2MessageDestinationType</message-destination-type>
+         <message-destination-link>mdb2MessageDestinationLink</message-destination-link>
+         <activation-config id="mdb2ActivationConfig-id">
+            <activation-config-property id="mdb2ActivationConfigProperty1-id">
+               <activation-config-property-name>mdb2ActivationConfigProperty1Name</activation-config-property-name>
+               <activation-config-property-value>mdb2ActivationConfigProperty1Value</activation-config-property-value>
+            </activation-config-property>
+            <activation-config-property id="mdb2ActivationConfigProperty2-id">
+               <activation-config-property-name>mdb2ActivationConfigProperty2Name</activation-config-property-name>
+               <activation-config-property-value>mdb2ActivationConfigProperty2Value</activation-config-property-value>
+            </activation-config-property>
+         </activation-config>
+
+         <env-entry id="mdb2EnvEntry1-id">
+            <description>en-mdb2EnvEntry1-desc</description>
+            <description xml:lang="fr">fr-mdb2EnvEntry1-desc</description>
+            <description xml:lang="de">de-mdb2EnvEntry1-desc</description>
+            <env-entry-name>mdb2EnvEntry1Name</env-entry-name>
+            <env-entry-type>mdb2EnvEntry1Type</env-entry-type>
+            <env-entry-value>mdb2EnvEntry1Value</env-entry-value>
+         </env-entry>
+         <env-entry id="mdb2EnvEntry2-id">
+            <description>en-mdb2EnvEntry2-desc</description>
+            <description xml:lang="fr">fr-mdb2EnvEntry2-desc</description>
+            <description xml:lang="de">de-mdb2EnvEntry2-desc</description>
+            <env-entry-name>mdb2EnvEntry2Name</env-entry-name>
+            <env-entry-type>mdb2EnvEntry2Type</env-entry-type>
+            <env-entry-value>mdb2EnvEntry2Value</env-entry-value>
+         </env-entry>
+         <ejb-ref id="mdb2EjbRef1-id">
+            <description>en-mdb2EjbRef1-desc</description>
+            <description xml:lang="fr">fr-mdb2EjbRef1-desc</description>
+            <description xml:lang="de">de-mdb2EjbRef1-desc</description>
+            <ejb-ref-name>mdb2EjbRef1Name</ejb-ref-name>
+            <ejb-ref-type>Session</ejb-ref-type>
+            <home>mdb2EjbRef1Home</home>
+            <remote>mdb2EjbRef1Remote</remote>
+            <ejb-link>mdb2EjbRef1EjbLink</ejb-link>
+         </ejb-ref>
+         <ejb-ref id="mdb2EjbRef2-id">
+            <description>en-mdb2EjbRef2-desc</description>
+            <description xml:lang="fr">fr-mdb2EjbRef2-desc</description>
+            <description xml:lang="de">de-mdb2EjbRef2-desc</description>
+            <ejb-ref-name>mdb2EjbRef2Name</ejb-ref-name>
+            <ejb-ref-type>Entity</ejb-ref-type>
+            <home>mdb2EjbRef2Home</home>
+            <remote>mdb2EjbRef2Remote</remote>
+            <ejb-link>mdb2EjbRef2EjbLink</ejb-link>
+         </ejb-ref>
+         <ejb-local-ref id="mdb2EjbLocalRef1-id">
+            <description>en-mdb2EjbLocalRef1-desc</description>
+            <description xml:lang="fr">fr-mdb2EjbLocalRef1-desc</description>
+            <description xml:lang="de">de-mdb2EjbLocalRef1-desc</description>
+            <ejb-ref-name>mdb2EjbLocalRef1Name</ejb-ref-name>
+            <ejb-ref-type>Session</ejb-ref-type>
+            <local-home>mdb2EjbLocalRef1LocalHome</local-home>
+            <local>mdb2EjbLocalRef1Local</local>
+            <ejb-link>mdb2EjbLocalRef1EjbLink</ejb-link>
+         </ejb-local-ref>
+         <ejb-local-ref id="mdb2EjbLocalRef2-id">
+            <description>en-mdb2EjbLocalRef2-desc</description>
+            <description xml:lang="fr">fr-mdb2EjbLocalRef2-desc</description>
+            <description xml:lang="de">de-mdb2EjbLocalRef2-desc</description>
+            <ejb-ref-name>mdb2EjbLocalRef2Name</ejb-ref-name>
+            <ejb-ref-type>Entity</ejb-ref-type>
+            <local-home>mdb2EjbLocalRef2LocalHome</local-home>
+            <local>mdb2EjbLocalRef2Local</local>
+            <ejb-link>mdb2EjbLocalRef2EjbLink</ejb-link>
+         </ejb-local-ref>
+         
+         <!-- TODO service-refGroup -->
+
+         <resource-ref id="mdb2ResourceRef1-id">
+            <description>en-mdb2ResourceRef1-desc</description>
+            <description xml:lang="fr">fr-mdb2ResourceRef1-desc</description>
+            <description xml:lang="de">de-mdb2ResourceRef1-desc</description>
+            <res-ref-name>mdb2ResourceRef1Name</res-ref-name>
+            <res-type>mdb2ResourceRef1Type</res-type>
+            <res-auth>Application</res-auth>
+            <res-sharing-scope>Shareable</res-sharing-scope>
+         </resource-ref>
+         <resource-ref id="mdb2ResourceRef2-id">
+            <description>en-mdb2ResourceRef2-desc</description>
+            <description xml:lang="fr">fr-mdb2ResourceRef2-desc</description>
+            <description xml:lang="de">de-mdb2ResourceRef2-desc</description>
+            <res-ref-name>mdb2ResourceRef2Name</res-ref-name>
+            <res-type>mdb2ResourceRef2Type</res-type>
+            <res-auth>Container</res-auth>
+            <res-sharing-scope>Unshareable</res-sharing-scope>
+         </resource-ref>
+         <resource-env-ref id="mdb2ResourceEnvRef1-id">
+            <description>en-mdb2ResourceEnvRef1-desc</description>
+            <description xml:lang="fr">fr-mdb2ResourceEnvRef1-desc</description>
+            <description xml:lang="de">de-mdb2ResourceEnvRef1-desc</description>
+            <resource-env-ref-name>mdb2ResourceEnvRef1Name</resource-env-ref-name>
+            <resource-env-ref-type>mdb2ResourceEnvRef1Type</resource-env-ref-type>
+         </resource-env-ref>
+         <resource-env-ref id="mdb2ResourceEnvRef2-id">
+            <description>en-mdb2ResourceEnvRef2-desc</description>
+            <description xml:lang="fr">fr-mdb2ResourceEnvRef2-desc</description>
+            <description xml:lang="de">de-mdb2ResourceEnvRef2-desc</description>
+            <resource-env-ref-name>mdb2ResourceEnvRef2Name</resource-env-ref-name>
+            <resource-env-ref-type>mdb2ResourceEnvRef2Type</resource-env-ref-type>
+         </resource-env-ref>
+         <message-destination-ref id="mdb2MessageDestinationRef1-id">
+            <description>en-mdb2MessageDestinationRef1-desc</description>
+            <description xml:lang="fr">fr-mdb2MessageDestinationRef1-desc</description>
+            <description xml:lang="de">de-mdb2MessageDestinationRef1-desc</description>
+            <message-destination-ref-name>mdb2MessageDestinationRef1Name</message-destination-ref-name>
+            <message-destination-type>mdb2MessageDestinationRef1Type</message-destination-type>
+            <message-destination-usage>Consumes</message-destination-usage>
+            <message-destination-link>mdb2MessageDestinationRef1Link</message-destination-link>
+         </message-destination-ref>
+         <message-destination-ref id="mdb2MessageDestinationRef2-id">
+            <description>en-mdb2MessageDestinationRef2-desc</description>
+            <description xml:lang="fr">fr-mdb2MessageDestinationRef2-desc</description>
+            <description xml:lang="de">de-mdb2MessageDestinationRef2-desc</description>
+            <message-destination-ref-name>mdb2MessageDestinationRef2Name</message-destination-ref-name>
+            <message-destination-type>mdb2MessageDestinationRef2Type</message-destination-type>
+            <message-destination-usage>Produces</message-destination-usage>
+            <message-destination-link>mdb2MessageDestinationRef2Link</message-destination-link>
+         </message-destination-ref>
+         <message-destination-ref id="mdb2MessageDestinationRef3-id">
+            <description>en-mdb2MessageDestinationRef3-desc</description>
+            <description xml:lang="fr">fr-mdb2MessageDestinationRef3-desc</description>
+            <description xml:lang="de">de-mdb2MessageDestinationRef3-desc</description>
+            <message-destination-ref-name>mdb2MessageDestinationRef3Name</message-destination-ref-name>
+            <message-destination-type>mdb2MessageDestinationRef3Type</message-destination-type>
+            <message-destination-usage>ConsumesProduces</message-destination-usage>
+            <message-destination-link>mdb2MessageDestinationRef3Link</message-destination-link>
+         </message-destination-ref>
+
+         <security-identity id="mdb2SecurityIdentity-id">
+            <description>en-mdb2SecurityIdentity-desc</description>
+            <description xml:lang="fr">fr-mdb2SecurityIdentity-desc</description>
+            <description xml:lang="de">de-mdb2SecurityIdentity-desc</description>
+            <use-caller-identity id="mdb2SecurityIdentityUseCallerIdentity-id"/>
+            <run-as id="mdb2SecurityIdentityRunAs-id">
+               <description>en-mdb2SecurityIdentityRunAs-desc</description>
+               <description xml:lang="fr">fr-mdb2SecurityIdentityRunAs-desc</description>
+               <description xml:lang="de">de-mdb2SecurityIdentityRunAs-desc</description>
+               <role-name>mdb2SecurityIdentityRunAsRoleName</role-name>
+            </run-as>
+         </security-identity>
+
+      </message-driven>
+            
+   </enterprise-beans>   
+
+   <relationships id="relationships-id">
+      <description>en-relationships-desc</description>
+      <description xml:lang="fr">fr-relationships-desc</description>
+      <description xml:lang="de">de-relationships-desc</description>
+      <ejb-relation id="relation1-id">
+         <description>en-relation1-desc</description>
+         <description xml:lang="fr">fr-relation1-desc</description>
+         <description xml:lang="de">de-relation1-desc</description>
+         <ejb-relation-name>relation1Name</ejb-relation-name>
+         <ejb-relationship-role id="relation1Role1-id">
+            <description>en-relation1Role1-desc</description>
+            <description xml:lang="fr">fr-relation1Role1-desc</description>
+            <description xml:lang="de">de-relation1Role1-desc</description>
+            <ejb-relationship-role-name>relation1Role1Name</ejb-relationship-role-name>
+            <multiplicity>One</multiplicity>
+            <cascade-delete id="relation1Role1CascadeDelete-id"/>
+            <relationship-role-source id="relation1Role1RoleSource-id">
+               <description>en-relation1Role1RoleSource-desc</description>
+               <description xml:lang="fr">fr-relation1Role1RoleSource-desc</description>
+               <description xml:lang="de">de-relation1Role1RoleSource-desc</description>
+               <ejb-name>relation1Role1RoleSourceName</ejb-name>
+            </relationship-role-source>
+            <cmr-field id="relation1Role1CmrField-id">
+               <description>en-relation1Role1CmrField-desc</description>
+               <description xml:lang="fr">fr-relation1Role1CmrField-desc</description>
+               <description xml:lang="de">de-relation1Role1CmrField-desc</description>
+               <cmr-field-name>relation1Role1CmrFieldName</cmr-field-name>
+               <cmr-field-type>relation1Role1CmrFieldType</cmr-field-type>
+            </cmr-field>
+         </ejb-relationship-role>
+         <ejb-relationship-role id="relation1Role2-id">
+            <description>en-relation1Role2-desc</description>
+            <description xml:lang="fr">fr-relation1Role2-desc</description>
+            <description xml:lang="de">de-relation1Role2-desc</description>
+            <ejb-relationship-role-name>relation1Role2Name</ejb-relationship-role-name>
+            <multiplicity>Many</multiplicity>
+            <cascade-delete id="relation1Role2CascadeDelete-id"/>
+            <relationship-role-source id="relation1Role2RoleSource-id">
+               <description>en-relation1Role2RoleSource-desc</description>
+               <description xml:lang="fr">fr-relation1Role2RoleSource-desc</description>
+               <description xml:lang="de">de-relation1Role2RoleSource-desc</description>
+               <ejb-name>relation1Role2RoleSourceName</ejb-name>
+            </relationship-role-source>
+            <cmr-field id="relation1Role2CmrField-id">
+               <description>en-relation1Role2CmrField-desc</description>
+               <description xml:lang="fr">fr-relation1Role2CmrField-desc</description>
+               <description xml:lang="de">de-relation1Role2CmrField-desc</description>
+               <cmr-field-name>relation1Role2CmrFieldName</cmr-field-name>
+               <cmr-field-type>relation1Role2CmrFieldType</cmr-field-type>
+            </cmr-field>
+         </ejb-relationship-role>
+      </ejb-relation>
+      <ejb-relation id="relation2-id">
+         <description>en-relation2-desc</description>
+         <description xml:lang="fr">fr-relation2-desc</description>
+         <description xml:lang="de">de-relation2-desc</description>
+         <ejb-relation-name>relation2Name</ejb-relation-name>
+         <ejb-relationship-role id="relation2Role1-id">
+            <description>en-relation2Role1-desc</description>
+            <description xml:lang="fr">fr-relation2Role1-desc</description>
+            <description xml:lang="de">de-relation2Role1-desc</description>
+            <ejb-relationship-role-name>relation2Role1Name</ejb-relationship-role-name>
+            <multiplicity>One</multiplicity>
+            <cascade-delete id="relation2Role1CascadeDelete-id"/>
+            <relationship-role-source id="relation2Role1RoleSource-id">
+               <description>en-relation2Role1RoleSource-desc</description>
+               <description xml:lang="fr">fr-relation2Role1RoleSource-desc</description>
+               <description xml:lang="de">de-relation2Role1RoleSource-desc</description>
+               <ejb-name>relation2Role1RoleSourceName</ejb-name>
+            </relationship-role-source>
+            <cmr-field id="relation2Role1CmrField-id">
+               <description>en-relation2Role1CmrField-desc</description>
+               <description xml:lang="fr">fr-relation2Role1CmrField-desc</description>
+               <description xml:lang="de">de-relation2Role1CmrField-desc</description>
+               <cmr-field-name>relation2Role1CmrFieldName</cmr-field-name>
+               <cmr-field-type>relation2Role1CmrFieldType</cmr-field-type>
+            </cmr-field>
+         </ejb-relationship-role>
+         <ejb-relationship-role id="relation2Role2-id">
+            <description>en-relation2Role2-desc</description>
+            <description xml:lang="fr">fr-relation2Role2-desc</description>
+            <description xml:lang="de">de-relation2Role2-desc</description>
+            <ejb-relationship-role-name>relation2Role2Name</ejb-relationship-role-name>
+            <multiplicity>Many</multiplicity>
+            <cascade-delete id="relation2Role2CascadeDelete-id"/>
+            <relationship-role-source id="relation2Role2RoleSource-id">
+               <description>en-relation2Role2RoleSource-desc</description>
+               <description xml:lang="fr">fr-relation2Role2RoleSource-desc</description>
+               <description xml:lang="de">de-relation2Role2RoleSource-desc</description>
+               <ejb-name>relation2Role2RoleSourceName</ejb-name>
+            </relationship-role-source>
+            <cmr-field id="relation2Role2CmrField-id">
+               <description>en-relation2Role2CmrField-desc</description>
+               <description xml:lang="fr">fr-relation2Role2CmrField-desc</description>
+               <description xml:lang="de">de-relation2Role2CmrField-desc</description>
+               <cmr-field-name>relation2Role2CmrFieldName</cmr-field-name>
+               <cmr-field-type>relation2Role2CmrFieldType</cmr-field-type>
+            </cmr-field>
+         </ejb-relationship-role>
+      </ejb-relation>
+   </relationships>
+
+   <assembly-descriptor id="assembly-descriptor-id">
+
+      <security-role id="securityRole1-id">
+         <description>en-securityRole1-desc</description>
+         <description xml:lang="fr">fr-securityRole1-desc</description>
+         <description xml:lang="de">de-securityRole1-desc</description>
+         <role-name>securityRole1RoleName</role-name>
+      </security-role>
+      <security-role id="securityRole2-id">
+         <description>en-securityRole2-desc</description>
+         <description xml:lang="fr">fr-securityRole2-desc</description>
+         <description xml:lang="de">de-securityRole2-desc</description>
+         <role-name>securityRole2RoleName</role-name>
+      </security-role>
+      
+      <method-permission id="methodPermission1-id">
+         <description>en-methodPermission1-desc</description>
+         <description xml:lang="fr">fr-methodPermission1-desc</description>
+         <description xml:lang="de">de-methodPermission1-desc</description>
+         <unchecked id="methodPermission1Unchecked-id"/>
+         <method id="methodPermission1Method1-id">
+            <description>en-methodPermission1Method1-desc</description>
+            <description xml:lang="fr">fr-methodPermission1Method1-desc</description>
+            <description xml:lang="de">de-methodPermission1Method1-desc</description>
+            <ejb-name>methodPermission1Method1EjbName</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>methodPermission1Method1MethodName</method-name>
+            <method-params>
+               <method-param>methodPermission1Method1Param1</method-param>
+               <method-param>methodPermission1Method1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="methodPermission1Method2-id">
+            <description>en-methodPermission1Method2-desc</description>
+            <description xml:lang="fr">fr-methodPermission1Method2-desc</description>
+            <description xml:lang="de">de-methodPermission1Method2-desc</description>
+            <ejb-name>methodPermission1Method2EjbName</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>methodPermission1Method2MethodName</method-name>
+         </method>
+         <method id="methodPermission1Method3-id">
+            <description>en-methodPermission1Method3-desc</description>
+            <description xml:lang="fr">fr-methodPermission1Method3-desc</description>
+            <description xml:lang="de">de-methodPermission1Method3-desc</description>
+            <ejb-name>methodPermission1Method3EjbName</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>methodPermission1Method3MethodName</method-name>
+         </method>
+         <method id="methodPermission1Method4-id">
+            <description>en-methodPermission1Method4-desc</description>
+            <description xml:lang="fr">fr-methodPermission1Method4-desc</description>
+            <description xml:lang="de">de-methodPermission1Method4-desc</description>
+            <ejb-name>methodPermission1Method4EjbName</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>methodPermission1Method4MethodName</method-name>
+         </method>
+         <method id="methodPermission1Method5-id">
+            <description>en-methodPermission1Method5-desc</description>
+            <description xml:lang="fr">fr-methodPermission1Method5-desc</description>
+            <description xml:lang="de">de-methodPermission1Method5-desc</description>
+            <ejb-name>methodPermission1Method5EjbName</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>methodPermission1Method5MethodName</method-name>
+         </method>
+      </method-permission>
+      <method-permission id="methodPermission2-id">
+         <description>en-methodPermission2-desc</description>
+         <description xml:lang="fr">fr-methodPermission2-desc</description>
+         <description xml:lang="de">de-methodPermission2-desc</description>
+         <role-name>methodPermission2RoleName1</role-name>
+         <role-name>methodPermission2RoleName2</role-name>
+         <method id="methodPermission2Method1-id">
+            <description>en-methodPermission2Method1-desc</description>
+            <description xml:lang="fr">fr-methodPermission2Method1-desc</description>
+            <description xml:lang="de">de-methodPermission2Method1-desc</description>
+            <ejb-name>methodPermission2Method1EjbName</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>methodPermission2Method1MethodName</method-name>
+            <method-params>
+               <method-param>methodPermission2Method1Param1</method-param>
+               <method-param>methodPermission2Method1Param2</method-param>
+            </method-params>
+         </method>
+      </method-permission>
+      <method-permission id="methodPermission3-id">
+         <description>en-methodPermission3-desc</description>
+         <description xml:lang="fr">fr-methodPermission3-desc</description>
+         <description xml:lang="de">de-methodPermission3-desc</description>
+         <role-name>methodPermission3RoleName1</role-name>
+         <role-name>methodPermission3RoleName2</role-name>
+         <method id="methodPermission3Method1-id">
+            <description>en-methodPermission3Method1-desc</description>
+            <description xml:lang="fr">fr-methodPermission3Method1-desc</description>
+            <description xml:lang="de">de-methodPermission3Method1-desc</description>
+            <ejb-name>methodPermission3Method1EjbName</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>methodPermission3Method1MethodName</method-name>
+            <method-params>
+               <method-param>methodPermission3Method1Param1</method-param>
+               <method-param>methodPermission3Method1Param2</method-param>
+            </method-params>
+         </method>
+      </method-permission>
+      
+      <method-permission id="session1MethodPermission1-id">
+         <description>en-session1MethodPermission1-desc</description>
+         <description xml:lang="fr">fr-session1MethodPermission1-desc</description>
+         <description xml:lang="de">de-session1MethodPermission1-desc</description>
+         <unchecked id="session1MethodPermission1Unchecked-id"/>
+         <method id="session1MethodPermission1Method1-id">
+            <description>en-session1MethodPermission1Method1-desc</description>
+            <description xml:lang="fr">fr-session1MethodPermission1Method1-desc</description>
+            <description xml:lang="de">de-session1MethodPermission1Method1-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session1MethodPermission1Method1MethodName</method-name>
+            <method-params>
+               <method-param>session1MethodPermission1Method1Param1</method-param>
+               <method-param>session1MethodPermission1Method1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="session1MethodPermission1Method2-id">
+            <description>en-session1MethodPermission1Method2-desc</description>
+            <description xml:lang="fr">fr-session1MethodPermission1Method2-desc</description>
+            <description xml:lang="de">de-session1MethodPermission1Method2-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>session1MethodPermission1Method2MethodName</method-name>
+         </method>
+         <method id="session1MethodPermission1Method3-id">
+            <description>en-session1MethodPermission1Method3-desc</description>
+            <description xml:lang="fr">fr-session1MethodPermission1Method3-desc</description>
+            <description xml:lang="de">de-session1MethodPermission1Method3-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>session1MethodPermission1Method3MethodName</method-name>
+         </method>
+         <method id="session1MethodPermission1Method4-id">
+            <description>en-session1MethodPermission1Method4-desc</description>
+            <description xml:lang="fr">fr-session1MethodPermission1Method4-desc</description>
+            <description xml:lang="de">de-session1MethodPermission1Method4-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>session1MethodPermission1Method4MethodName</method-name>
+         </method>
+         <method id="session1MethodPermission1Method5-id">
+            <description>en-session1MethodPermission1Method5-desc</description>
+            <description xml:lang="fr">fr-session1MethodPermission1Method5-desc</description>
+            <description xml:lang="de">de-session1MethodPermission1Method5-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>session1MethodPermission1Method5MethodName</method-name>
+         </method>
+      </method-permission>
+      <method-permission id="session1MethodPermission2-id">
+         <description>en-session1MethodPermission2-desc</description>
+         <description xml:lang="fr">fr-session1MethodPermission2-desc</description>
+         <description xml:lang="de">de-session1MethodPermission2-desc</description>
+         <role-name>session1MethodPermission2RoleName1</role-name>
+         <role-name>session1MethodPermission2RoleName2</role-name>
+         <method id="session1MethodPermission2Method1-id">
+            <description>en-session1MethodPermission2Method1-desc</description>
+            <description xml:lang="fr">fr-session1MethodPermission2Method1-desc</description>
+            <description xml:lang="de">de-session1MethodPermission2Method1-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session1MethodPermission2Method1MethodName</method-name>
+            <method-params>
+               <method-param>session1MethodPermission2Method1Param1</method-param>
+               <method-param>session1MethodPermission2Method1Param2</method-param>
+            </method-params>
+         </method>
+      </method-permission>
+      <method-permission id="session1MethodPermission3-id">
+         <description>en-session1MethodPermission3-desc</description>
+         <description xml:lang="fr">fr-session1MethodPermission3-desc</description>
+         <description xml:lang="de">de-session1MethodPermission3-desc</description>
+         <role-name>session1MethodPermission3RoleName1</role-name>
+         <role-name>session1MethodPermission3RoleName2</role-name>
+         <method id="session1MethodPermission3Method1-id">
+            <description>en-session1MethodPermission3Method1-desc</description>
+            <description xml:lang="fr">fr-session1MethodPermission3Method1-desc</description>
+            <description xml:lang="de">de-session1MethodPermission3Method1-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session1MethodPermission3Method1MethodName</method-name>
+            <method-params>
+               <method-param>session1MethodPermission3Method1Param1</method-param>
+               <method-param>session1MethodPermission3Method1Param2</method-param>
+            </method-params>
+         </method>
+      </method-permission>
+      
+      <method-permission id="session2MethodPermission1-id">
+         <description>en-session2MethodPermission1-desc</description>
+         <description xml:lang="fr">fr-session2MethodPermission1-desc</description>
+         <description xml:lang="de">de-session2MethodPermission1-desc</description>
+         <unchecked id="session2MethodPermission1Unchecked-id"/>
+         <method id="session2MethodPermission1Method1-id">
+            <description>en-session2MethodPermission1Method1-desc</description>
+            <description xml:lang="fr">fr-session2MethodPermission1Method1-desc</description>
+            <description xml:lang="de">de-session2MethodPermission1Method1-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session2MethodPermission1Method1MethodName</method-name>
+            <method-params>
+               <method-param>session2MethodPermission1Method1Param1</method-param>
+               <method-param>session2MethodPermission1Method1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="session2MethodPermission1Method2-id">
+            <description>en-session2MethodPermission1Method2-desc</description>
+            <description xml:lang="fr">fr-session2MethodPermission1Method2-desc</description>
+            <description xml:lang="de">de-session2MethodPermission1Method2-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>session2MethodPermission1Method2MethodName</method-name>
+         </method>
+         <method id="session2MethodPermission1Method3-id">
+            <description>en-session2MethodPermission1Method3-desc</description>
+            <description xml:lang="fr">fr-session2MethodPermission1Method3-desc</description>
+            <description xml:lang="de">de-session2MethodPermission1Method3-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>session2MethodPermission1Method3MethodName</method-name>
+         </method>
+         <method id="session2MethodPermission1Method4-id">
+            <description>en-session2MethodPermission1Method4-desc</description>
+            <description xml:lang="fr">fr-session2MethodPermission1Method4-desc</description>
+            <description xml:lang="de">de-session2MethodPermission1Method4-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>session2MethodPermission1Method4MethodName</method-name>
+         </method>
+         <method id="session2MethodPermission1Method5-id">
+            <description>en-session2MethodPermission1Method5-desc</description>
+            <description xml:lang="fr">fr-session2MethodPermission1Method5-desc</description>
+            <description xml:lang="de">de-session2MethodPermission1Method5-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>session2MethodPermission1Method5MethodName</method-name>
+         </method>
+      </method-permission>
+      <method-permission id="session2MethodPermission2-id">
+         <description>en-session2MethodPermission2-desc</description>
+         <description xml:lang="fr">fr-session2MethodPermission2-desc</description>
+         <description xml:lang="de">de-session2MethodPermission2-desc</description>
+         <role-name>session2MethodPermission2RoleName1</role-name>
+         <role-name>session2MethodPermission2RoleName2</role-name>
+         <method id="session2MethodPermission2Method1-id">
+            <description>en-session2MethodPermission2Method1-desc</description>
+            <description xml:lang="fr">fr-session2MethodPermission2Method1-desc</description>
+            <description xml:lang="de">de-session2MethodPermission2Method1-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session2MethodPermission2Method1MethodName</method-name>
+            <method-params>
+               <method-param>session2MethodPermission2Method1Param1</method-param>
+               <method-param>session2MethodPermission2Method1Param2</method-param>
+            </method-params>
+         </method>
+      </method-permission>
+      <method-permission id="session2MethodPermission3-id">
+         <description>en-session2MethodPermission3-desc</description>
+         <description xml:lang="fr">fr-session2MethodPermission3-desc</description>
+         <description xml:lang="de">de-session2MethodPermission3-desc</description>
+         <role-name>session2MethodPermission3RoleName1</role-name>
+         <role-name>session2MethodPermission3RoleName2</role-name>
+         <method id="session2MethodPermission3Method1-id">
+            <description>en-session2MethodPermission3Method1-desc</description>
+            <description xml:lang="fr">fr-session2MethodPermission3Method1-desc</description>
+            <description xml:lang="de">de-session2MethodPermission3Method1-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session2MethodPermission3Method1MethodName</method-name>
+            <method-params>
+               <method-param>session2MethodPermission3Method1Param1</method-param>
+               <method-param>session2MethodPermission3Method1Param2</method-param>
+            </method-params>
+         </method>
+      </method-permission>
+      
+      <method-permission id="entity1MethodPermission1-id">
+         <description>en-entity1MethodPermission1-desc</description>
+         <description xml:lang="fr">fr-entity1MethodPermission1-desc</description>
+         <description xml:lang="de">de-entity1MethodPermission1-desc</description>
+         <unchecked id="entity1MethodPermission1Unchecked-id"/>
+         <method id="entity1MethodPermission1Method1-id">
+            <description>en-entity1MethodPermission1Method1-desc</description>
+            <description xml:lang="fr">fr-entity1MethodPermission1Method1-desc</description>
+            <description xml:lang="de">de-entity1MethodPermission1Method1-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity1MethodPermission1Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity1MethodPermission1Method1Param1</method-param>
+               <method-param>entity1MethodPermission1Method1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="entity1MethodPermission1Method2-id">
+            <description>en-entity1MethodPermission1Method2-desc</description>
+            <description xml:lang="fr">fr-entity1MethodPermission1Method2-desc</description>
+            <description xml:lang="de">de-entity1MethodPermission1Method2-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>entity1MethodPermission1Method2MethodName</method-name>
+         </method>
+         <method id="entity1MethodPermission1Method3-id">
+            <description>en-entity1MethodPermission1Method3-desc</description>
+            <description xml:lang="fr">fr-entity1MethodPermission1Method3-desc</description>
+            <description xml:lang="de">de-entity1MethodPermission1Method3-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>entity1MethodPermission1Method3MethodName</method-name>
+         </method>
+         <method id="entity1MethodPermission1Method4-id">
+            <description>en-entity1MethodPermission1Method4-desc</description>
+            <description xml:lang="fr">fr-entity1MethodPermission1Method4-desc</description>
+            <description xml:lang="de">de-entity1MethodPermission1Method4-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>entity1MethodPermission1Method4MethodName</method-name>
+         </method>
+         <method id="entity1MethodPermission1Method5-id">
+            <description>en-entity1MethodPermission1Method5-desc</description>
+            <description xml:lang="fr">fr-entity1MethodPermission1Method5-desc</description>
+            <description xml:lang="de">de-entity1MethodPermission1Method5-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>entity1MethodPermission1Method5MethodName</method-name>
+         </method>
+      </method-permission>
+      <method-permission id="entity1MethodPermission2-id">
+         <description>en-entity1MethodPermission2-desc</description>
+         <description xml:lang="fr">fr-entity1MethodPermission2-desc</description>
+         <description xml:lang="de">de-entity1MethodPermission2-desc</description>
+         <role-name>entity1MethodPermission2RoleName1</role-name>
+         <role-name>entity1MethodPermission2RoleName2</role-name>
+         <method id="entity1MethodPermission2Method1-id">
+            <description>en-entity1MethodPermission2Method1-desc</description>
+            <description xml:lang="fr">fr-entity1MethodPermission2Method1-desc</description>
+            <description xml:lang="de">de-entity1MethodPermission2Method1-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity1MethodPermission2Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity1MethodPermission2Method1Param1</method-param>
+               <method-param>entity1MethodPermission2Method1Param2</method-param>
+            </method-params>
+         </method>
+      </method-permission>
+      <method-permission id="entity1MethodPermission3-id">
+         <description>en-entity1MethodPermission3-desc</description>
+         <description xml:lang="fr">fr-entity1MethodPermission3-desc</description>
+         <description xml:lang="de">de-entity1MethodPermission3-desc</description>
+         <role-name>entity1MethodPermission3RoleName1</role-name>
+         <role-name>entity1MethodPermission3RoleName2</role-name>
+         <method id="entity1MethodPermission3Method1-id">
+            <description>en-entity1MethodPermission3Method1-desc</description>
+            <description xml:lang="fr">fr-entity1MethodPermission3Method1-desc</description>
+            <description xml:lang="de">de-entity1MethodPermission3Method1-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity1MethodPermission3Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity1MethodPermission3Method1Param1</method-param>
+               <method-param>entity1MethodPermission3Method1Param2</method-param>
+            </method-params>
+         </method>
+      </method-permission>
+      
+      <method-permission id="entity2MethodPermission1-id">
+         <description>en-entity2MethodPermission1-desc</description>
+         <description xml:lang="fr">fr-entity2MethodPermission1-desc</description>
+         <description xml:lang="de">de-entity2MethodPermission1-desc</description>
+         <unchecked id="entity2MethodPermission1Unchecked-id"/>
+         <method id="entity2MethodPermission1Method1-id">
+            <description>en-entity2MethodPermission1Method1-desc</description>
+            <description xml:lang="fr">fr-entity2MethodPermission1Method1-desc</description>
+            <description xml:lang="de">de-entity2MethodPermission1Method1-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity2MethodPermission1Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity2MethodPermission1Method1Param1</method-param>
+               <method-param>entity2MethodPermission1Method1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="entity2MethodPermission1Method2-id">
+            <description>en-entity2MethodPermission1Method2-desc</description>
+            <description xml:lang="fr">fr-entity2MethodPermission1Method2-desc</description>
+            <description xml:lang="de">de-entity2MethodPermission1Method2-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>entity2MethodPermission1Method2MethodName</method-name>
+         </method>
+         <method id="entity2MethodPermission1Method3-id">
+            <description>en-entity2MethodPermission1Method3-desc</description>
+            <description xml:lang="fr">fr-entity2MethodPermission1Method3-desc</description>
+            <description xml:lang="de">de-entity2MethodPermission1Method3-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>entity2MethodPermission1Method3MethodName</method-name>
+         </method>
+         <method id="entity2MethodPermission1Method4-id">
+            <description>en-entity2MethodPermission1Method4-desc</description>
+            <description xml:lang="fr">fr-entity2MethodPermission1Method4-desc</description>
+            <description xml:lang="de">de-entity2MethodPermission1Method4-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>entity2MethodPermission1Method4MethodName</method-name>
+         </method>
+         <method id="entity2MethodPermission1Method5-id">
+            <description>en-entity2MethodPermission1Method5-desc</description>
+            <description xml:lang="fr">fr-entity2MethodPermission1Method5-desc</description>
+            <description xml:lang="de">de-entity2MethodPermission1Method5-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>entity2MethodPermission1Method5MethodName</method-name>
+         </method>
+      </method-permission>
+      <method-permission id="entity2MethodPermission2-id">
+         <description>en-entity2MethodPermission2-desc</description>
+         <description xml:lang="fr">fr-entity2MethodPermission2-desc</description>
+         <description xml:lang="de">de-entity2MethodPermission2-desc</description>
+         <role-name>entity2MethodPermission2RoleName1</role-name>
+         <role-name>entity2MethodPermission2RoleName2</role-name>
+         <method id="entity2MethodPermission2Method1-id">
+            <description>en-entity2MethodPermission2Method1-desc</description>
+            <description xml:lang="fr">fr-entity2MethodPermission2Method1-desc</description>
+            <description xml:lang="de">de-entity2MethodPermission2Method1-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity2MethodPermission2Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity2MethodPermission2Method1Param1</method-param>
+               <method-param>entity2MethodPermission2Method1Param2</method-param>
+            </method-params>
+         </method>
+      </method-permission>
+      <method-permission id="entity2MethodPermission3-id">
+         <description>en-entity2MethodPermission3-desc</description>
+         <description xml:lang="fr">fr-entity2MethodPermission3-desc</description>
+         <description xml:lang="de">de-entity2MethodPermission3-desc</description>
+         <role-name>entity2MethodPermission3RoleName1</role-name>
+         <role-name>entity2MethodPermission3RoleName2</role-name>
+         <method id="entity2MethodPermission3Method1-id">
+            <description>en-entity2MethodPermission3Method1-desc</description>
+            <description xml:lang="fr">fr-entity2MethodPermission3Method1-desc</description>
+            <description xml:lang="de">de-entity2MethodPermission3Method1-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity2MethodPermission3Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity2MethodPermission3Method1Param1</method-param>
+               <method-param>entity2MethodPermission3Method1Param2</method-param>
+            </method-params>
+         </method>
+      </method-permission>
+      
+      <method-permission id="mdb1MethodPermission1-id">
+         <description>en-mdb1MethodPermission1-desc</description>
+         <description xml:lang="fr">fr-mdb1MethodPermission1-desc</description>
+         <description xml:lang="de">de-mdb1MethodPermission1-desc</description>
+         <unchecked id="mdb1MethodPermission1Unchecked-id"/>
+         <method id="mdb1MethodPermission1Method1-id">
+            <description>en-mdb1MethodPermission1Method1-desc</description>
+            <description xml:lang="fr">fr-mdb1MethodPermission1Method1-desc</description>
+            <description xml:lang="de">de-mdb1MethodPermission1Method1-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb1MethodPermission1Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb1MethodPermission1Method1Param1</method-param>
+               <method-param>mdb1MethodPermission1Method1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="mdb1MethodPermission1Method2-id">
+            <description>en-mdb1MethodPermission1Method2-desc</description>
+            <description xml:lang="fr">fr-mdb1MethodPermission1Method2-desc</description>
+            <description xml:lang="de">de-mdb1MethodPermission1Method2-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>mdb1MethodPermission1Method2MethodName</method-name>
+         </method>
+         <method id="mdb1MethodPermission1Method3-id">
+            <description>en-mdb1MethodPermission1Method3-desc</description>
+            <description xml:lang="fr">fr-mdb1MethodPermission1Method3-desc</description>
+            <description xml:lang="de">de-mdb1MethodPermission1Method3-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>mdb1MethodPermission1Method3MethodName</method-name>
+         </method>
+         <method id="mdb1MethodPermission1Method4-id">
+            <description>en-mdb1MethodPermission1Method4-desc</description>
+            <description xml:lang="fr">fr-mdb1MethodPermission1Method4-desc</description>
+            <description xml:lang="de">de-mdb1MethodPermission1Method4-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>mdb1MethodPermission1Method4MethodName</method-name>
+         </method>
+         <method id="mdb1MethodPermission1Method5-id">
+            <description>en-mdb1MethodPermission1Method5-desc</description>
+            <description xml:lang="fr">fr-mdb1MethodPermission1Method5-desc</description>
+            <description xml:lang="de">de-mdb1MethodPermission1Method5-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>mdb1MethodPermission1Method5MethodName</method-name>
+         </method>
+      </method-permission>
+      <method-permission id="mdb1MethodPermission2-id">
+         <description>en-mdb1MethodPermission2-desc</description>
+         <description xml:lang="fr">fr-mdb1MethodPermission2-desc</description>
+         <description xml:lang="de">de-mdb1MethodPermission2-desc</description>
+         <role-name>mdb1MethodPermission2RoleName1</role-name>
+         <role-name>mdb1MethodPermission2RoleName2</role-name>
+         <method id="mdb1MethodPermission2Method1-id">
+            <description>en-mdb1MethodPermission2Method1-desc</description>
+            <description xml:lang="fr">fr-mdb1MethodPermission2Method1-desc</description>
+            <description xml:lang="de">de-mdb1MethodPermission2Method1-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb1MethodPermission2Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb1MethodPermission2Method1Param1</method-param>
+               <method-param>mdb1MethodPermission2Method1Param2</method-param>
+            </method-params>
+         </method>
+      </method-permission>
+      <method-permission id="mdb1MethodPermission3-id">
+         <description>en-mdb1MethodPermission3-desc</description>
+         <description xml:lang="fr">fr-mdb1MethodPermission3-desc</description>
+         <description xml:lang="de">de-mdb1MethodPermission3-desc</description>
+         <role-name>mdb1MethodPermission3RoleName1</role-name>
+         <role-name>mdb1MethodPermission3RoleName2</role-name>
+         <method id="mdb1MethodPermission3Method1-id">
+            <description>en-mdb1MethodPermission3Method1-desc</description>
+            <description xml:lang="fr">fr-mdb1MethodPermission3Method1-desc</description>
+            <description xml:lang="de">de-mdb1MethodPermission3Method1-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb1MethodPermission3Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb1MethodPermission3Method1Param1</method-param>
+               <method-param>mdb1MethodPermission3Method1Param2</method-param>
+            </method-params>
+         </method>
+      </method-permission>
+      
+      <method-permission id="mdb2MethodPermission1-id">
+         <description>en-mdb2MethodPermission1-desc</description>
+         <description xml:lang="fr">fr-mdb2MethodPermission1-desc</description>
+         <description xml:lang="de">de-mdb2MethodPermission1-desc</description>
+         <unchecked id="mdb2MethodPermission1Unchecked-id"/>
+         <method id="mdb2MethodPermission1Method1-id">
+            <description>en-mdb2MethodPermission1Method1-desc</description>
+            <description xml:lang="fr">fr-mdb2MethodPermission1Method1-desc</description>
+            <description xml:lang="de">de-mdb2MethodPermission1Method1-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb2MethodPermission1Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb2MethodPermission1Method1Param1</method-param>
+               <method-param>mdb2MethodPermission1Method1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="mdb2MethodPermission1Method2-id">
+            <description>en-mdb2MethodPermission1Method2-desc</description>
+            <description xml:lang="fr">fr-mdb2MethodPermission1Method2-desc</description>
+            <description xml:lang="de">de-mdb2MethodPermission1Method2-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>mdb2MethodPermission1Method2MethodName</method-name>
+         </method>
+         <method id="mdb2MethodPermission1Method3-id">
+            <description>en-mdb2MethodPermission1Method3-desc</description>
+            <description xml:lang="fr">fr-mdb2MethodPermission1Method3-desc</description>
+            <description xml:lang="de">de-mdb2MethodPermission1Method3-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>mdb2MethodPermission1Method3MethodName</method-name>
+         </method>
+         <method id="mdb2MethodPermission1Method4-id">
+            <description>en-mdb2MethodPermission1Method4-desc</description>
+            <description xml:lang="fr">fr-mdb2MethodPermission1Method4-desc</description>
+            <description xml:lang="de">de-mdb2MethodPermission1Method4-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>mdb2MethodPermission1Method4MethodName</method-name>
+         </method>
+         <method id="mdb2MethodPermission1Method5-id">
+            <description>en-mdb2MethodPermission1Method5-desc</description>
+            <description xml:lang="fr">fr-mdb2MethodPermission1Method5-desc</description>
+            <description xml:lang="de">de-mdb2MethodPermission1Method5-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>mdb2MethodPermission1Method5MethodName</method-name>
+         </method>
+      </method-permission>
+      <method-permission id="mdb2MethodPermission2-id">
+         <description>en-mdb2MethodPermission2-desc</description>
+         <description xml:lang="fr">fr-mdb2MethodPermission2-desc</description>
+         <description xml:lang="de">de-mdb2MethodPermission2-desc</description>
+         <role-name>mdb2MethodPermission2RoleName1</role-name>
+         <role-name>mdb2MethodPermission2RoleName2</role-name>
+         <method id="mdb2MethodPermission2Method1-id">
+            <description>en-mdb2MethodPermission2Method1-desc</description>
+            <description xml:lang="fr">fr-mdb2MethodPermission2Method1-desc</description>
+            <description xml:lang="de">de-mdb2MethodPermission2Method1-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb2MethodPermission2Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb2MethodPermission2Method1Param1</method-param>
+               <method-param>mdb2MethodPermission2Method1Param2</method-param>
+            </method-params>
+         </method>
+      </method-permission>
+      <method-permission id="mdb2MethodPermission3-id">
+         <description>en-mdb2MethodPermission3-desc</description>
+         <description xml:lang="fr">fr-mdb2MethodPermission3-desc</description>
+         <description xml:lang="de">de-mdb2MethodPermission3-desc</description>
+         <role-name>mdb2MethodPermission3RoleName1</role-name>
+         <role-name>mdb2MethodPermission3RoleName2</role-name>
+         <method id="mdb2MethodPermission3Method1-id">
+            <description>en-mdb2MethodPermission3Method1-desc</description>
+            <description xml:lang="fr">fr-mdb2MethodPermission3Method1-desc</description>
+            <description xml:lang="de">de-mdb2MethodPermission3Method1-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb2MethodPermission3Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb2MethodPermission3Method1Param1</method-param>
+               <method-param>mdb2MethodPermission3Method1Param2</method-param>
+            </method-params>
+         </method>
+      </method-permission>
+
+      <container-transaction id="containerTransaction1-id">
+         <description>en-containerTransaction1-desc</description>
+         <description xml:lang="fr">fr-containerTransaction1-desc</description>
+         <description xml:lang="de">de-containerTransaction1-desc</description>
+         <method id="containerTransaction1Method1-id">
+            <description>en-containerTransaction1Method1-desc</description>
+            <description xml:lang="fr">fr-containerTransaction1Method1-desc</description>
+            <description xml:lang="de">de-containerTransaction1Method1-desc</description>
+            <ejb-name>containerTransaction1Method1EjbName</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>containerTransaction1Method1MethodName</method-name>
+            <method-params>
+               <method-param>containerTransaction1Method1Param1</method-param>
+               <method-param>containerTransaction1Method1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="containerTransaction1Method2-id">
+            <description>en-containerTransaction1Method2-desc</description>
+            <description xml:lang="fr">fr-containerTransaction1Method2-desc</description>
+            <description xml:lang="de">de-containerTransaction1Method2-desc</description>
+            <ejb-name>containerTransaction1Method2EjbName</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>containerTransaction1Method2MethodName</method-name>
+         </method>
+         <method id="containerTransaction1Method3-id">
+            <description>en-containerTransaction1Method3-desc</description>
+            <description xml:lang="fr">fr-containerTransaction1Method3-desc</description>
+            <description xml:lang="de">de-containerTransaction1Method3-desc</description>
+            <ejb-name>containerTransaction1Method3EjbName</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>containerTransaction1Method3MethodName</method-name>
+         </method>
+         <method id="containerTransaction1Method4-id">
+            <description>en-containerTransaction1Method4-desc</description>
+            <description xml:lang="fr">fr-containerTransaction1Method4-desc</description>
+            <description xml:lang="de">de-containerTransaction1Method4-desc</description>
+            <ejb-name>containerTransaction1Method4EjbName</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>containerTransaction1Method4MethodName</method-name>
+         </method>
+         <method id="containerTransaction1Method5-id">
+            <description>en-containerTransaction1Method5-desc</description>
+            <description xml:lang="fr">fr-containerTransaction1Method5-desc</description>
+            <description xml:lang="de">de-containerTransaction1Method5-desc</description>
+            <ejb-name>containerTransaction1Method5EjbName</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>containerTransaction1Method5MethodName</method-name>
+         </method>
+         <trans-attribute>NotSupported</trans-attribute>
+      </container-transaction>
+      <container-transaction id="containerTransaction2-id">
+         <description>en-containerTransaction2-desc</description>
+         <description xml:lang="fr">fr-containerTransaction2-desc</description>
+         <description xml:lang="de">de-containerTransaction2-desc</description>
+         <method id="containerTransaction2Method1-id">
+            <description>en-containerTransaction2Method1-desc</description>
+            <description xml:lang="fr">fr-containerTransaction2Method1-desc</description>
+            <description xml:lang="de">de-containerTransaction2Method1-desc</description>
+            <ejb-name>containerTransaction2Method1EjbName</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>containerTransaction2Method1MethodName</method-name>
+            <method-params>
+               <method-param>containerTransaction2Method1Param1</method-param>
+               <method-param>containerTransaction2Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Supports</trans-attribute>
+      </container-transaction>
+      <container-transaction id="containerTransaction3-id">
+         <description>en-containerTransaction3-desc</description>
+         <description xml:lang="fr">fr-containerTransaction3-desc</description>
+         <description xml:lang="de">de-containerTransaction3-desc</description>
+         <method id="containerTransaction3Method1-id">
+            <description>en-containerTransaction3Method1-desc</description>
+            <description xml:lang="fr">fr-containerTransaction3Method1-desc</description>
+            <description xml:lang="de">de-containerTransaction3Method1-desc</description>
+            <ejb-name>containerTransaction3Method1EjbName</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>containerTransaction3Method1MethodName</method-name>
+            <method-params>
+               <method-param>containerTransaction3Method1Param1</method-param>
+               <method-param>containerTransaction3Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Required</trans-attribute>
+      </container-transaction>
+      <container-transaction id="containerTransaction4-id">
+         <description>en-containerTransaction4-desc</description>
+         <description xml:lang="fr">fr-containerTransaction4-desc</description>
+         <description xml:lang="de">de-containerTransaction4-desc</description>
+         <method id="containerTransaction4Method1-id">
+            <description>en-containerTransaction4Method1-desc</description>
+            <description xml:lang="fr">fr-containerTransaction4Method1-desc</description>
+            <description xml:lang="de">de-containerTransaction4Method1-desc</description>
+            <ejb-name>containerTransaction4Method1EjbName</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>containerTransaction4Method1MethodName</method-name>
+            <method-params>
+               <method-param>containerTransaction4Method1Param1</method-param>
+               <method-param>containerTransaction4Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>RequiresNew</trans-attribute>
+      </container-transaction>
+      <container-transaction id="containerTransaction5-id">
+         <description>en-containerTransaction5-desc</description>
+         <description xml:lang="fr">fr-containerTransaction5-desc</description>
+         <description xml:lang="de">de-containerTransaction5-desc</description>
+         <method id="containerTransaction5Method1-id">
+            <description>en-containerTransaction5Method1-desc</description>
+            <description xml:lang="fr">fr-containerTransaction5Method1-desc</description>
+            <description xml:lang="de">de-containerTransaction5Method1-desc</description>
+            <ejb-name>containerTransaction5Method1EjbName</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>containerTransaction5Method1MethodName</method-name>
+            <method-params>
+               <method-param>containerTransaction5Method1Param1</method-param>
+               <method-param>containerTransaction5Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Mandatory</trans-attribute>
+      </container-transaction>
+      <container-transaction id="containerTransaction6-id">
+         <description>en-containerTransaction6-desc</description>
+         <description xml:lang="fr">fr-containerTransaction6-desc</description>
+         <description xml:lang="de">de-containerTransaction6-desc</description>
+         <method id="containerTransaction6Method1-id">
+            <description>en-containerTransaction6Method1-desc</description>
+            <description xml:lang="fr">fr-containerTransaction6Method1-desc</description>
+            <description xml:lang="de">de-containerTransaction6Method1-desc</description>
+            <ejb-name>containerTransaction6Method1EjbName</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>containerTransaction6Method1MethodName</method-name>
+            <method-params>
+               <method-param>containerTransaction6Method1Param1</method-param>
+               <method-param>containerTransaction6Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Never</trans-attribute>
+      </container-transaction>
+
+      <container-transaction id="session1ContainerTransaction1-id">
+         <description>en-session1ContainerTransaction1-desc</description>
+         <description xml:lang="fr">fr-session1ContainerTransaction1-desc</description>
+         <description xml:lang="de">de-session1ContainerTransaction1-desc</description>
+         <method id="session1ContainerTransaction1Method1-id">
+            <description>en-session1ContainerTransaction1Method1-desc</description>
+            <description xml:lang="fr">fr-session1ContainerTransaction1Method1-desc</description>
+            <description xml:lang="de">de-session1ContainerTransaction1Method1-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session1ContainerTransaction1Method1MethodName</method-name>
+            <method-params>
+               <method-param>session1ContainerTransaction1Method1Param1</method-param>
+               <method-param>session1ContainerTransaction1Method1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="session1ContainerTransaction1Method2-id">
+            <description>en-session1ContainerTransaction1Method2-desc</description>
+            <description xml:lang="fr">fr-session1ContainerTransaction1Method2-desc</description>
+            <description xml:lang="de">de-session1ContainerTransaction1Method2-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>session1ContainerTransaction1Method2MethodName</method-name>
+         </method>
+         <method id="session1ContainerTransaction1Method3-id">
+            <description>en-session1ContainerTransaction1Method3-desc</description>
+            <description xml:lang="fr">fr-session1ContainerTransaction1Method3-desc</description>
+            <description xml:lang="de">de-session1ContainerTransaction1Method3-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>session1ContainerTransaction1Method3MethodName</method-name>
+         </method>
+         <method id="session1ContainerTransaction1Method4-id">
+            <description>en-session1ContainerTransaction1Method4-desc</description>
+            <description xml:lang="fr">fr-session1ContainerTransaction1Method4-desc</description>
+            <description xml:lang="de">de-session1ContainerTransaction1Method4-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>session1ContainerTransaction1Method4MethodName</method-name>
+         </method>
+         <method id="session1ContainerTransaction1Method5-id">
+            <description>en-session1ContainerTransaction1Method5-desc</description>
+            <description xml:lang="fr">fr-session1ContainerTransaction1Method5-desc</description>
+            <description xml:lang="de">de-session1ContainerTransaction1Method5-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>session1ContainerTransaction1Method5MethodName</method-name>
+         </method>
+         <trans-attribute>NotSupported</trans-attribute>
+      </container-transaction>
+      <container-transaction id="session1ContainerTransaction2-id">
+         <description>en-session1ContainerTransaction2-desc</description>
+         <description xml:lang="fr">fr-session1ContainerTransaction2-desc</description>
+         <description xml:lang="de">de-session1ContainerTransaction2-desc</description>
+         <method id="session1ContainerTransaction2Method1-id">
+            <description>en-session1ContainerTransaction2Method1-desc</description>
+            <description xml:lang="fr">fr-session1ContainerTransaction2Method1-desc</description>
+            <description xml:lang="de">de-session1ContainerTransaction2Method1-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session1ContainerTransaction2Method1MethodName</method-name>
+            <method-params>
+               <method-param>session1ContainerTransaction2Method1Param1</method-param>
+               <method-param>session1ContainerTransaction2Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Supports</trans-attribute>
+      </container-transaction>
+      <container-transaction id="session1ContainerTransaction3-id">
+         <description>en-session1ContainerTransaction3-desc</description>
+         <description xml:lang="fr">fr-session1ContainerTransaction3-desc</description>
+         <description xml:lang="de">de-session1ContainerTransaction3-desc</description>
+         <method id="session1ContainerTransaction3Method1-id">
+            <description>en-session1ContainerTransaction3Method1-desc</description>
+            <description xml:lang="fr">fr-session1ContainerTransaction3Method1-desc</description>
+            <description xml:lang="de">de-session1ContainerTransaction3Method1-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session1ContainerTransaction3Method1MethodName</method-name>
+            <method-params>
+               <method-param>session1ContainerTransaction3Method1Param1</method-param>
+               <method-param>session1ContainerTransaction3Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Required</trans-attribute>
+      </container-transaction>
+      <container-transaction id="session1ContainerTransaction4-id">
+         <description>en-session1ContainerTransaction4-desc</description>
+         <description xml:lang="fr">fr-session1ContainerTransaction4-desc</description>
+         <description xml:lang="de">de-session1ContainerTransaction4-desc</description>
+         <method id="session1ContainerTransaction4Method1-id">
+            <description>en-session1ContainerTransaction4Method1-desc</description>
+            <description xml:lang="fr">fr-session1ContainerTransaction4Method1-desc</description>
+            <description xml:lang="de">de-session1ContainerTransaction4Method1-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session1ContainerTransaction4Method1MethodName</method-name>
+            <method-params>
+               <method-param>session1ContainerTransaction4Method1Param1</method-param>
+               <method-param>session1ContainerTransaction4Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>RequiresNew</trans-attribute>
+      </container-transaction>
+      <container-transaction id="session1ContainerTransaction5-id">
+         <description>en-session1ContainerTransaction5-desc</description>
+         <description xml:lang="fr">fr-session1ContainerTransaction5-desc</description>
+         <description xml:lang="de">de-session1ContainerTransaction5-desc</description>
+         <method id="session1ContainerTransaction5Method1-id">
+            <description>en-session1ContainerTransaction5Method1-desc</description>
+            <description xml:lang="fr">fr-session1ContainerTransaction5Method1-desc</description>
+            <description xml:lang="de">de-session1ContainerTransaction5Method1-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session1ContainerTransaction5Method1MethodName</method-name>
+            <method-params>
+               <method-param>session1ContainerTransaction5Method1Param1</method-param>
+               <method-param>session1ContainerTransaction5Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Mandatory</trans-attribute>
+      </container-transaction>
+      <container-transaction id="session1ContainerTransaction6-id">
+         <description>en-session1ContainerTransaction6-desc</description>
+         <description xml:lang="fr">fr-session1ContainerTransaction6-desc</description>
+         <description xml:lang="de">de-session1ContainerTransaction6-desc</description>
+         <method id="session1ContainerTransaction6Method1-id">
+            <description>en-session1ContainerTransaction6Method1-desc</description>
+            <description xml:lang="fr">fr-session1ContainerTransaction6Method1-desc</description>
+            <description xml:lang="de">de-session1ContainerTransaction6Method1-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session1ContainerTransaction6Method1MethodName</method-name>
+            <method-params>
+               <method-param>session1ContainerTransaction6Method1Param1</method-param>
+               <method-param>session1ContainerTransaction6Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Never</trans-attribute>
+      </container-transaction>
+
+      <container-transaction id="session2ContainerTransaction1-id">
+         <description>en-session2ContainerTransaction1-desc</description>
+         <description xml:lang="fr">fr-session2ContainerTransaction1-desc</description>
+         <description xml:lang="de">de-session2ContainerTransaction1-desc</description>
+         <method id="session2ContainerTransaction1Method1-id">
+            <description>en-session2ContainerTransaction1Method1-desc</description>
+            <description xml:lang="fr">fr-session2ContainerTransaction1Method1-desc</description>
+            <description xml:lang="de">de-session2ContainerTransaction1Method1-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session2ContainerTransaction1Method1MethodName</method-name>
+            <method-params>
+               <method-param>session2ContainerTransaction1Method1Param1</method-param>
+               <method-param>session2ContainerTransaction1Method1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="session2ContainerTransaction1Method2-id">
+            <description>en-session2ContainerTransaction1Method2-desc</description>
+            <description xml:lang="fr">fr-session2ContainerTransaction1Method2-desc</description>
+            <description xml:lang="de">de-session2ContainerTransaction1Method2-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>session2ContainerTransaction1Method2MethodName</method-name>
+         </method>
+         <method id="session2ContainerTransaction1Method3-id">
+            <description>en-session2ContainerTransaction1Method3-desc</description>
+            <description xml:lang="fr">fr-session2ContainerTransaction1Method3-desc</description>
+            <description xml:lang="de">de-session2ContainerTransaction1Method3-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>session2ContainerTransaction1Method3MethodName</method-name>
+         </method>
+         <method id="session2ContainerTransaction1Method4-id">
+            <description>en-session2ContainerTransaction1Method4-desc</description>
+            <description xml:lang="fr">fr-session2ContainerTransaction1Method4-desc</description>
+            <description xml:lang="de">de-session2ContainerTransaction1Method4-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>session2ContainerTransaction1Method4MethodName</method-name>
+         </method>
+         <method id="session2ContainerTransaction1Method5-id">
+            <description>en-session2ContainerTransaction1Method5-desc</description>
+            <description xml:lang="fr">fr-session2ContainerTransaction1Method5-desc</description>
+            <description xml:lang="de">de-session2ContainerTransaction1Method5-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>session2ContainerTransaction1Method5MethodName</method-name>
+         </method>
+         <trans-attribute>NotSupported</trans-attribute>
+      </container-transaction>
+      <container-transaction id="session2ContainerTransaction2-id">
+         <description>en-session2ContainerTransaction2-desc</description>
+         <description xml:lang="fr">fr-session2ContainerTransaction2-desc</description>
+         <description xml:lang="de">de-session2ContainerTransaction2-desc</description>
+         <method id="session2ContainerTransaction2Method1-id">
+            <description>en-session2ContainerTransaction2Method1-desc</description>
+            <description xml:lang="fr">fr-session2ContainerTransaction2Method1-desc</description>
+            <description xml:lang="de">de-session2ContainerTransaction2Method1-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session2ContainerTransaction2Method1MethodName</method-name>
+            <method-params>
+               <method-param>session2ContainerTransaction2Method1Param1</method-param>
+               <method-param>session2ContainerTransaction2Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Supports</trans-attribute>
+      </container-transaction>
+      <container-transaction id="session2ContainerTransaction3-id">
+         <description>en-session2ContainerTransaction3-desc</description>
+         <description xml:lang="fr">fr-session2ContainerTransaction3-desc</description>
+         <description xml:lang="de">de-session2ContainerTransaction3-desc</description>
+         <method id="session2ContainerTransaction3Method1-id">
+            <description>en-session2ContainerTransaction3Method1-desc</description>
+            <description xml:lang="fr">fr-session2ContainerTransaction3Method1-desc</description>
+            <description xml:lang="de">de-session2ContainerTransaction3Method1-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session2ContainerTransaction3Method1MethodName</method-name>
+            <method-params>
+               <method-param>session2ContainerTransaction3Method1Param1</method-param>
+               <method-param>session2ContainerTransaction3Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Required</trans-attribute>
+      </container-transaction>
+      <container-transaction id="session2ContainerTransaction4-id">
+         <description>en-session2ContainerTransaction4-desc</description>
+         <description xml:lang="fr">fr-session2ContainerTransaction4-desc</description>
+         <description xml:lang="de">de-session2ContainerTransaction4-desc</description>
+         <method id="session2ContainerTransaction4Method1-id">
+            <description>en-session2ContainerTransaction4Method1-desc</description>
+            <description xml:lang="fr">fr-session2ContainerTransaction4Method1-desc</description>
+            <description xml:lang="de">de-session2ContainerTransaction4Method1-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session2ContainerTransaction4Method1MethodName</method-name>
+            <method-params>
+               <method-param>session2ContainerTransaction4Method1Param1</method-param>
+               <method-param>session2ContainerTransaction4Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>RequiresNew</trans-attribute>
+      </container-transaction>
+      <container-transaction id="session2ContainerTransaction5-id">
+         <description>en-session2ContainerTransaction5-desc</description>
+         <description xml:lang="fr">fr-session2ContainerTransaction5-desc</description>
+         <description xml:lang="de">de-session2ContainerTransaction5-desc</description>
+         <method id="session2ContainerTransaction5Method1-id">
+            <description>en-session2ContainerTransaction5Method1-desc</description>
+            <description xml:lang="fr">fr-session2ContainerTransaction5Method1-desc</description>
+            <description xml:lang="de">de-session2ContainerTransaction5Method1-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session2ContainerTransaction5Method1MethodName</method-name>
+            <method-params>
+               <method-param>session2ContainerTransaction5Method1Param1</method-param>
+               <method-param>session2ContainerTransaction5Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Mandatory</trans-attribute>
+      </container-transaction>
+      <container-transaction id="session2ContainerTransaction6-id">
+         <description>en-session2ContainerTransaction6-desc</description>
+         <description xml:lang="fr">fr-session2ContainerTransaction6-desc</description>
+         <description xml:lang="de">de-session2ContainerTransaction6-desc</description>
+         <method id="session2ContainerTransaction6Method1-id">
+            <description>en-session2ContainerTransaction6Method1-desc</description>
+            <description xml:lang="fr">fr-session2ContainerTransaction6Method1-desc</description>
+            <description xml:lang="de">de-session2ContainerTransaction6Method1-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session2ContainerTransaction6Method1MethodName</method-name>
+            <method-params>
+               <method-param>session2ContainerTransaction6Method1Param1</method-param>
+               <method-param>session2ContainerTransaction6Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Never</trans-attribute>
+      </container-transaction>
+
+      <container-transaction id="entity1ContainerTransaction1-id">
+         <description>en-entity1ContainerTransaction1-desc</description>
+         <description xml:lang="fr">fr-entity1ContainerTransaction1-desc</description>
+         <description xml:lang="de">de-entity1ContainerTransaction1-desc</description>
+         <method id="entity1ContainerTransaction1Method1-id">
+            <description>en-entity1ContainerTransaction1Method1-desc</description>
+            <description xml:lang="fr">fr-entity1ContainerTransaction1Method1-desc</description>
+            <description xml:lang="de">de-entity1ContainerTransaction1Method1-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity1ContainerTransaction1Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity1ContainerTransaction1Method1Param1</method-param>
+               <method-param>entity1ContainerTransaction1Method1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="entity1ContainerTransaction1Method2-id">
+            <description>en-entity1ContainerTransaction1Method2-desc</description>
+            <description xml:lang="fr">fr-entity1ContainerTransaction1Method2-desc</description>
+            <description xml:lang="de">de-entity1ContainerTransaction1Method2-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>entity1ContainerTransaction1Method2MethodName</method-name>
+         </method>
+         <method id="entity1ContainerTransaction1Method3-id">
+            <description>en-entity1ContainerTransaction1Method3-desc</description>
+            <description xml:lang="fr">fr-entity1ContainerTransaction1Method3-desc</description>
+            <description xml:lang="de">de-entity1ContainerTransaction1Method3-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>entity1ContainerTransaction1Method3MethodName</method-name>
+         </method>
+         <method id="entity1ContainerTransaction1Method4-id">
+            <description>en-entity1ContainerTransaction1Method4-desc</description>
+            <description xml:lang="fr">fr-entity1ContainerTransaction1Method4-desc</description>
+            <description xml:lang="de">de-entity1ContainerTransaction1Method4-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>entity1ContainerTransaction1Method4MethodName</method-name>
+         </method>
+         <method id="entity1ContainerTransaction1Method5-id">
+            <description>en-entity1ContainerTransaction1Method5-desc</description>
+            <description xml:lang="fr">fr-entity1ContainerTransaction1Method5-desc</description>
+            <description xml:lang="de">de-entity1ContainerTransaction1Method5-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>entity1ContainerTransaction1Method5MethodName</method-name>
+         </method>
+         <trans-attribute>NotSupported</trans-attribute>
+      </container-transaction>
+      <container-transaction id="entity1ContainerTransaction2-id">
+         <description>en-entity1ContainerTransaction2-desc</description>
+         <description xml:lang="fr">fr-entity1ContainerTransaction2-desc</description>
+         <description xml:lang="de">de-entity1ContainerTransaction2-desc</description>
+         <method id="entity1ContainerTransaction2Method1-id">
+            <description>en-entity1ContainerTransaction2Method1-desc</description>
+            <description xml:lang="fr">fr-entity1ContainerTransaction2Method1-desc</description>
+            <description xml:lang="de">de-entity1ContainerTransaction2Method1-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity1ContainerTransaction2Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity1ContainerTransaction2Method1Param1</method-param>
+               <method-param>entity1ContainerTransaction2Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Supports</trans-attribute>
+      </container-transaction>
+      <container-transaction id="entity1ContainerTransaction3-id">
+         <description>en-entity1ContainerTransaction3-desc</description>
+         <description xml:lang="fr">fr-entity1ContainerTransaction3-desc</description>
+         <description xml:lang="de">de-entity1ContainerTransaction3-desc</description>
+         <method id="entity1ContainerTransaction3Method1-id">
+            <description>en-entity1ContainerTransaction3Method1-desc</description>
+            <description xml:lang="fr">fr-entity1ContainerTransaction3Method1-desc</description>
+            <description xml:lang="de">de-entity1ContainerTransaction3Method1-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity1ContainerTransaction3Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity1ContainerTransaction3Method1Param1</method-param>
+               <method-param>entity1ContainerTransaction3Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Required</trans-attribute>
+      </container-transaction>
+      <container-transaction id="entity1ContainerTransaction4-id">
+         <description>en-entity1ContainerTransaction4-desc</description>
+         <description xml:lang="fr">fr-entity1ContainerTransaction4-desc</description>
+         <description xml:lang="de">de-entity1ContainerTransaction4-desc</description>
+         <method id="entity1ContainerTransaction4Method1-id">
+            <description>en-entity1ContainerTransaction4Method1-desc</description>
+            <description xml:lang="fr">fr-entity1ContainerTransaction4Method1-desc</description>
+            <description xml:lang="de">de-entity1ContainerTransaction4Method1-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity1ContainerTransaction4Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity1ContainerTransaction4Method1Param1</method-param>
+               <method-param>entity1ContainerTransaction4Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>RequiresNew</trans-attribute>
+      </container-transaction>
+      <container-transaction id="entity1ContainerTransaction5-id">
+         <description>en-entity1ContainerTransaction5-desc</description>
+         <description xml:lang="fr">fr-entity1ContainerTransaction5-desc</description>
+         <description xml:lang="de">de-entity1ContainerTransaction5-desc</description>
+         <method id="entity1ContainerTransaction5Method1-id">
+            <description>en-entity1ContainerTransaction5Method1-desc</description>
+            <description xml:lang="fr">fr-entity1ContainerTransaction5Method1-desc</description>
+            <description xml:lang="de">de-entity1ContainerTransaction5Method1-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity1ContainerTransaction5Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity1ContainerTransaction5Method1Param1</method-param>
+               <method-param>entity1ContainerTransaction5Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Mandatory</trans-attribute>
+      </container-transaction>
+      <container-transaction id="entity1ContainerTransaction6-id">
+         <description>en-entity1ContainerTransaction6-desc</description>
+         <description xml:lang="fr">fr-entity1ContainerTransaction6-desc</description>
+         <description xml:lang="de">de-entity1ContainerTransaction6-desc</description>
+         <method id="entity1ContainerTransaction6Method1-id">
+            <description>en-entity1ContainerTransaction6Method1-desc</description>
+            <description xml:lang="fr">fr-entity1ContainerTransaction6Method1-desc</description>
+            <description xml:lang="de">de-entity1ContainerTransaction6Method1-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity1ContainerTransaction6Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity1ContainerTransaction6Method1Param1</method-param>
+               <method-param>entity1ContainerTransaction6Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Never</trans-attribute>
+      </container-transaction>
+
+      <container-transaction id="entity2ContainerTransaction1-id">
+         <description>en-entity2ContainerTransaction1-desc</description>
+         <description xml:lang="fr">fr-entity2ContainerTransaction1-desc</description>
+         <description xml:lang="de">de-entity2ContainerTransaction1-desc</description>
+         <method id="entity2ContainerTransaction1Method1-id">
+            <description>en-entity2ContainerTransaction1Method1-desc</description>
+            <description xml:lang="fr">fr-entity2ContainerTransaction1Method1-desc</description>
+            <description xml:lang="de">de-entity2ContainerTransaction1Method1-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity2ContainerTransaction1Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity2ContainerTransaction1Method1Param1</method-param>
+               <method-param>entity2ContainerTransaction1Method1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="entity2ContainerTransaction1Method2-id">
+            <description>en-entity2ContainerTransaction1Method2-desc</description>
+            <description xml:lang="fr">fr-entity2ContainerTransaction1Method2-desc</description>
+            <description xml:lang="de">de-entity2ContainerTransaction1Method2-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>entity2ContainerTransaction1Method2MethodName</method-name>
+         </method>
+         <method id="entity2ContainerTransaction1Method3-id">
+            <description>en-entity2ContainerTransaction1Method3-desc</description>
+            <description xml:lang="fr">fr-entity2ContainerTransaction1Method3-desc</description>
+            <description xml:lang="de">de-entity2ContainerTransaction1Method3-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>entity2ContainerTransaction1Method3MethodName</method-name>
+         </method>
+         <method id="entity2ContainerTransaction1Method4-id">
+            <description>en-entity2ContainerTransaction1Method4-desc</description>
+            <description xml:lang="fr">fr-entity2ContainerTransaction1Method4-desc</description>
+            <description xml:lang="de">de-entity2ContainerTransaction1Method4-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>entity2ContainerTransaction1Method4MethodName</method-name>
+         </method>
+         <method id="entity2ContainerTransaction1Method5-id">
+            <description>en-entity2ContainerTransaction1Method5-desc</description>
+            <description xml:lang="fr">fr-entity2ContainerTransaction1Method5-desc</description>
+            <description xml:lang="de">de-entity2ContainerTransaction1Method5-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>entity2ContainerTransaction1Method5MethodName</method-name>
+         </method>
+         <trans-attribute>NotSupported</trans-attribute>
+      </container-transaction>
+      <container-transaction id="entity2ContainerTransaction2-id">
+         <description>en-entity2ContainerTransaction2-desc</description>
+         <description xml:lang="fr">fr-entity2ContainerTransaction2-desc</description>
+         <description xml:lang="de">de-entity2ContainerTransaction2-desc</description>
+         <method id="entity2ContainerTransaction2Method1-id">
+            <description>en-entity2ContainerTransaction2Method1-desc</description>
+            <description xml:lang="fr">fr-entity2ContainerTransaction2Method1-desc</description>
+            <description xml:lang="de">de-entity2ContainerTransaction2Method1-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity2ContainerTransaction2Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity2ContainerTransaction2Method1Param1</method-param>
+               <method-param>entity2ContainerTransaction2Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Supports</trans-attribute>
+      </container-transaction>
+      <container-transaction id="entity2ContainerTransaction3-id">
+         <description>en-entity2ContainerTransaction3-desc</description>
+         <description xml:lang="fr">fr-entity2ContainerTransaction3-desc</description>
+         <description xml:lang="de">de-entity2ContainerTransaction3-desc</description>
+         <method id="entity2ContainerTransaction3Method1-id">
+            <description>en-entity2ContainerTransaction3Method1-desc</description>
+            <description xml:lang="fr">fr-entity2ContainerTransaction3Method1-desc</description>
+            <description xml:lang="de">de-entity2ContainerTransaction3Method1-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity2ContainerTransaction3Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity2ContainerTransaction3Method1Param1</method-param>
+               <method-param>entity2ContainerTransaction3Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Required</trans-attribute>
+      </container-transaction>
+      <container-transaction id="entity2ContainerTransaction4-id">
+         <description>en-entity2ContainerTransaction4-desc</description>
+         <description xml:lang="fr">fr-entity2ContainerTransaction4-desc</description>
+         <description xml:lang="de">de-entity2ContainerTransaction4-desc</description>
+         <method id="entity2ContainerTransaction4Method1-id">
+            <description>en-entity2ContainerTransaction4Method1-desc</description>
+            <description xml:lang="fr">fr-entity2ContainerTransaction4Method1-desc</description>
+            <description xml:lang="de">de-entity2ContainerTransaction4Method1-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity2ContainerTransaction4Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity2ContainerTransaction4Method1Param1</method-param>
+               <method-param>entity2ContainerTransaction4Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>RequiresNew</trans-attribute>
+      </container-transaction>
+      <container-transaction id="entity2ContainerTransaction5-id">
+         <description>en-entity2ContainerTransaction5-desc</description>
+         <description xml:lang="fr">fr-entity2ContainerTransaction5-desc</description>
+         <description xml:lang="de">de-entity2ContainerTransaction5-desc</description>
+         <method id="entity2ContainerTransaction5Method1-id">
+            <description>en-entity2ContainerTransaction5Method1-desc</description>
+            <description xml:lang="fr">fr-entity2ContainerTransaction5Method1-desc</description>
+            <description xml:lang="de">de-entity2ContainerTransaction5Method1-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity2ContainerTransaction5Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity2ContainerTransaction5Method1Param1</method-param>
+               <method-param>entity2ContainerTransaction5Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Mandatory</trans-attribute>
+      </container-transaction>
+      <container-transaction id="entity2ContainerTransaction6-id">
+         <description>en-entity2ContainerTransaction6-desc</description>
+         <description xml:lang="fr">fr-entity2ContainerTransaction6-desc</description>
+         <description xml:lang="de">de-entity2ContainerTransaction6-desc</description>
+         <method id="entity2ContainerTransaction6Method1-id">
+            <description>en-entity2ContainerTransaction6Method1-desc</description>
+            <description xml:lang="fr">fr-entity2ContainerTransaction6Method1-desc</description>
+            <description xml:lang="de">de-entity2ContainerTransaction6Method1-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity2ContainerTransaction6Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity2ContainerTransaction6Method1Param1</method-param>
+               <method-param>entity2ContainerTransaction6Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Never</trans-attribute>
+      </container-transaction>
+
+      <container-transaction id="mdb1ContainerTransaction1-id">
+         <description>en-mdb1ContainerTransaction1-desc</description>
+         <description xml:lang="fr">fr-mdb1ContainerTransaction1-desc</description>
+         <description xml:lang="de">de-mdb1ContainerTransaction1-desc</description>
+         <method id="mdb1ContainerTransaction1Method1-id">
+            <description>en-mdb1ContainerTransaction1Method1-desc</description>
+            <description xml:lang="fr">fr-mdb1ContainerTransaction1Method1-desc</description>
+            <description xml:lang="de">de-mdb1ContainerTransaction1Method1-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb1ContainerTransaction1Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb1ContainerTransaction1Method1Param1</method-param>
+               <method-param>mdb1ContainerTransaction1Method1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="mdb1ContainerTransaction1Method2-id">
+            <description>en-mdb1ContainerTransaction1Method2-desc</description>
+            <description xml:lang="fr">fr-mdb1ContainerTransaction1Method2-desc</description>
+            <description xml:lang="de">de-mdb1ContainerTransaction1Method2-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>mdb1ContainerTransaction1Method2MethodName</method-name>
+         </method>
+         <method id="mdb1ContainerTransaction1Method3-id">
+            <description>en-mdb1ContainerTransaction1Method3-desc</description>
+            <description xml:lang="fr">fr-mdb1ContainerTransaction1Method3-desc</description>
+            <description xml:lang="de">de-mdb1ContainerTransaction1Method3-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>mdb1ContainerTransaction1Method3MethodName</method-name>
+         </method>
+         <method id="mdb1ContainerTransaction1Method4-id">
+            <description>en-mdb1ContainerTransaction1Method4-desc</description>
+            <description xml:lang="fr">fr-mdb1ContainerTransaction1Method4-desc</description>
+            <description xml:lang="de">de-mdb1ContainerTransaction1Method4-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>mdb1ContainerTransaction1Method4MethodName</method-name>
+         </method>
+         <method id="mdb1ContainerTransaction1Method5-id">
+            <description>en-mdb1ContainerTransaction1Method5-desc</description>
+            <description xml:lang="fr">fr-mdb1ContainerTransaction1Method5-desc</description>
+            <description xml:lang="de">de-mdb1ContainerTransaction1Method5-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>mdb1ContainerTransaction1Method5MethodName</method-name>
+         </method>
+         <trans-attribute>NotSupported</trans-attribute>
+      </container-transaction>
+      <container-transaction id="mdb1ContainerTransaction2-id">
+         <description>en-mdb1ContainerTransaction2-desc</description>
+         <description xml:lang="fr">fr-mdb1ContainerTransaction2-desc</description>
+         <description xml:lang="de">de-mdb1ContainerTransaction2-desc</description>
+         <method id="mdb1ContainerTransaction2Method1-id">
+            <description>en-mdb1ContainerTransaction2Method1-desc</description>
+            <description xml:lang="fr">fr-mdb1ContainerTransaction2Method1-desc</description>
+            <description xml:lang="de">de-mdb1ContainerTransaction2Method1-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb1ContainerTransaction2Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb1ContainerTransaction2Method1Param1</method-param>
+               <method-param>mdb1ContainerTransaction2Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Supports</trans-attribute>
+      </container-transaction>
+      <container-transaction id="mdb1ContainerTransaction3-id">
+         <description>en-mdb1ContainerTransaction3-desc</description>
+         <description xml:lang="fr">fr-mdb1ContainerTransaction3-desc</description>
+         <description xml:lang="de">de-mdb1ContainerTransaction3-desc</description>
+         <method id="mdb1ContainerTransaction3Method1-id">
+            <description>en-mdb1ContainerTransaction3Method1-desc</description>
+            <description xml:lang="fr">fr-mdb1ContainerTransaction3Method1-desc</description>
+            <description xml:lang="de">de-mdb1ContainerTransaction3Method1-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb1ContainerTransaction3Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb1ContainerTransaction3Method1Param1</method-param>
+               <method-param>mdb1ContainerTransaction3Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Required</trans-attribute>
+      </container-transaction>
+      <container-transaction id="mdb1ContainerTransaction4-id">
+         <description>en-mdb1ContainerTransaction4-desc</description>
+         <description xml:lang="fr">fr-mdb1ContainerTransaction4-desc</description>
+         <description xml:lang="de">de-mdb1ContainerTransaction4-desc</description>
+         <method id="mdb1ContainerTransaction4Method1-id">
+            <description>en-mdb1ContainerTransaction4Method1-desc</description>
+            <description xml:lang="fr">fr-mdb1ContainerTransaction4Method1-desc</description>
+            <description xml:lang="de">de-mdb1ContainerTransaction4Method1-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb1ContainerTransaction4Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb1ContainerTransaction4Method1Param1</method-param>
+               <method-param>mdb1ContainerTransaction4Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>RequiresNew</trans-attribute>
+      </container-transaction>
+      <container-transaction id="mdb1ContainerTransaction5-id">
+         <description>en-mdb1ContainerTransaction5-desc</description>
+         <description xml:lang="fr">fr-mdb1ContainerTransaction5-desc</description>
+         <description xml:lang="de">de-mdb1ContainerTransaction5-desc</description>
+         <method id="mdb1ContainerTransaction5Method1-id">
+            <description>en-mdb1ContainerTransaction5Method1-desc</description>
+            <description xml:lang="fr">fr-mdb1ContainerTransaction5Method1-desc</description>
+            <description xml:lang="de">de-mdb1ContainerTransaction5Method1-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb1ContainerTransaction5Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb1ContainerTransaction5Method1Param1</method-param>
+               <method-param>mdb1ContainerTransaction5Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Mandatory</trans-attribute>
+      </container-transaction>
+      <container-transaction id="mdb1ContainerTransaction6-id">
+         <description>en-mdb1ContainerTransaction6-desc</description>
+         <description xml:lang="fr">fr-mdb1ContainerTransaction6-desc</description>
+         <description xml:lang="de">de-mdb1ContainerTransaction6-desc</description>
+         <method id="mdb1ContainerTransaction6Method1-id">
+            <description>en-mdb1ContainerTransaction6Method1-desc</description>
+            <description xml:lang="fr">fr-mdb1ContainerTransaction6Method1-desc</description>
+            <description xml:lang="de">de-mdb1ContainerTransaction6Method1-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb1ContainerTransaction6Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb1ContainerTransaction6Method1Param1</method-param>
+               <method-param>mdb1ContainerTransaction6Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Never</trans-attribute>
+      </container-transaction>
+
+      <container-transaction id="mdb2ContainerTransaction1-id">
+         <description>en-mdb2ContainerTransaction1-desc</description>
+         <description xml:lang="fr">fr-mdb2ContainerTransaction1-desc</description>
+         <description xml:lang="de">de-mdb2ContainerTransaction1-desc</description>
+         <method id="mdb2ContainerTransaction1Method1-id">
+            <description>en-mdb2ContainerTransaction1Method1-desc</description>
+            <description xml:lang="fr">fr-mdb2ContainerTransaction1Method1-desc</description>
+            <description xml:lang="de">de-mdb2ContainerTransaction1Method1-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb2ContainerTransaction1Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb2ContainerTransaction1Method1Param1</method-param>
+               <method-param>mdb2ContainerTransaction1Method1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="mdb2ContainerTransaction1Method2-id">
+            <description>en-mdb2ContainerTransaction1Method2-desc</description>
+            <description xml:lang="fr">fr-mdb2ContainerTransaction1Method2-desc</description>
+            <description xml:lang="de">de-mdb2ContainerTransaction1Method2-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>mdb2ContainerTransaction1Method2MethodName</method-name>
+         </method>
+         <method id="mdb2ContainerTransaction1Method3-id">
+            <description>en-mdb2ContainerTransaction1Method3-desc</description>
+            <description xml:lang="fr">fr-mdb2ContainerTransaction1Method3-desc</description>
+            <description xml:lang="de">de-mdb2ContainerTransaction1Method3-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>mdb2ContainerTransaction1Method3MethodName</method-name>
+         </method>
+         <method id="mdb2ContainerTransaction1Method4-id">
+            <description>en-mdb2ContainerTransaction1Method4-desc</description>
+            <description xml:lang="fr">fr-mdb2ContainerTransaction1Method4-desc</description>
+            <description xml:lang="de">de-mdb2ContainerTransaction1Method4-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>mdb2ContainerTransaction1Method4MethodName</method-name>
+         </method>
+         <method id="mdb2ContainerTransaction1Method5-id">
+            <description>en-mdb2ContainerTransaction1Method5-desc</description>
+            <description xml:lang="fr">fr-mdb2ContainerTransaction1Method5-desc</description>
+            <description xml:lang="de">de-mdb2ContainerTransaction1Method5-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>mdb2ContainerTransaction1Method5MethodName</method-name>
+         </method>
+         <trans-attribute>NotSupported</trans-attribute>
+      </container-transaction>
+      <container-transaction id="mdb2ContainerTransaction2-id">
+         <description>en-mdb2ContainerTransaction2-desc</description>
+         <description xml:lang="fr">fr-mdb2ContainerTransaction2-desc</description>
+         <description xml:lang="de">de-mdb2ContainerTransaction2-desc</description>
+         <method id="mdb2ContainerTransaction2Method1-id">
+            <description>en-mdb2ContainerTransaction2Method1-desc</description>
+            <description xml:lang="fr">fr-mdb2ContainerTransaction2Method1-desc</description>
+            <description xml:lang="de">de-mdb2ContainerTransaction2Method1-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb2ContainerTransaction2Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb2ContainerTransaction2Method1Param1</method-param>
+               <method-param>mdb2ContainerTransaction2Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Supports</trans-attribute>
+      </container-transaction>
+      <container-transaction id="mdb2ContainerTransaction3-id">
+         <description>en-mdb2ContainerTransaction3-desc</description>
+         <description xml:lang="fr">fr-mdb2ContainerTransaction3-desc</description>
+         <description xml:lang="de">de-mdb2ContainerTransaction3-desc</description>
+         <method id="mdb2ContainerTransaction3Method1-id">
+            <description>en-mdb2ContainerTransaction3Method1-desc</description>
+            <description xml:lang="fr">fr-mdb2ContainerTransaction3Method1-desc</description>
+            <description xml:lang="de">de-mdb2ContainerTransaction3Method1-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb2ContainerTransaction3Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb2ContainerTransaction3Method1Param1</method-param>
+               <method-param>mdb2ContainerTransaction3Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Required</trans-attribute>
+      </container-transaction>
+      <container-transaction id="mdb2ContainerTransaction4-id">
+         <description>en-mdb2ContainerTransaction4-desc</description>
+         <description xml:lang="fr">fr-mdb2ContainerTransaction4-desc</description>
+         <description xml:lang="de">de-mdb2ContainerTransaction4-desc</description>
+         <method id="mdb2ContainerTransaction4Method1-id">
+            <description>en-mdb2ContainerTransaction4Method1-desc</description>
+            <description xml:lang="fr">fr-mdb2ContainerTransaction4Method1-desc</description>
+            <description xml:lang="de">de-mdb2ContainerTransaction4Method1-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb2ContainerTransaction4Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb2ContainerTransaction4Method1Param1</method-param>
+               <method-param>mdb2ContainerTransaction4Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>RequiresNew</trans-attribute>
+      </container-transaction>
+      <container-transaction id="mdb2ContainerTransaction5-id">
+         <description>en-mdb2ContainerTransaction5-desc</description>
+         <description xml:lang="fr">fr-mdb2ContainerTransaction5-desc</description>
+         <description xml:lang="de">de-mdb2ContainerTransaction5-desc</description>
+         <method id="mdb2ContainerTransaction5Method1-id">
+            <description>en-mdb2ContainerTransaction5Method1-desc</description>
+            <description xml:lang="fr">fr-mdb2ContainerTransaction5Method1-desc</description>
+            <description xml:lang="de">de-mdb2ContainerTransaction5Method1-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb2ContainerTransaction5Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb2ContainerTransaction5Method1Param1</method-param>
+               <method-param>mdb2ContainerTransaction5Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Mandatory</trans-attribute>
+      </container-transaction>
+      <container-transaction id="mdb2ContainerTransaction6-id">
+         <description>en-mdb2ContainerTransaction6-desc</description>
+         <description xml:lang="fr">fr-mdb2ContainerTransaction6-desc</description>
+         <description xml:lang="de">de-mdb2ContainerTransaction6-desc</description>
+         <method id="mdb2ContainerTransaction6Method1-id">
+            <description>en-mdb2ContainerTransaction6Method1-desc</description>
+            <description xml:lang="fr">fr-mdb2ContainerTransaction6Method1-desc</description>
+            <description xml:lang="de">de-mdb2ContainerTransaction6Method1-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb2ContainerTransaction6Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb2ContainerTransaction6Method1Param1</method-param>
+               <method-param>mdb2ContainerTransaction6Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Never</trans-attribute>
+      </container-transaction>
+
+      <message-destination id="messageDestination1-id">
+         <description>en-messageDestination1-desc</description>
+         <description xml:lang="fr">fr-messageDestination1-desc</description>
+         <description xml:lang="de">de-messageDestination1-desc</description>
+         <display-name>en-messageDestination1-disp</display-name>
+         <display-name xml:lang="fr">fr-messageDestination1-disp</display-name>
+         <display-name xml:lang="de">de-messageDestination1-disp</display-name>
+         <icon id="en-messageDestination1-icon-id">
+            <small-icon>en-messageDestination1-small-icon</small-icon>
+            <large-icon>en-messageDestination1-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="fr" id="fr-messageDestination1-icon-id">
+            <small-icon>fr-messageDestination1-small-icon</small-icon>
+            <large-icon>fr-messageDestination1-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="de" id="de-messageDestination1-icon-id">
+            <small-icon>de-messageDestination1-small-icon</small-icon>
+            <large-icon>de-messageDestination1-large-icon</large-icon>
+         </icon>
+         <message-destination-name>messageDestination1Name</message-destination-name>
+      </message-destination>
+      <message-destination id="messageDestination2-id">
+         <description>en-messageDestination2-desc</description>
+         <description xml:lang="fr">fr-messageDestination2-desc</description>
+         <description xml:lang="de">de-messageDestination2-desc</description>
+         <display-name>en-messageDestination2-disp</display-name>
+         <display-name xml:lang="fr">fr-messageDestination2-disp</display-name>
+         <display-name xml:lang="de">de-messageDestination2-disp</display-name>
+         <icon id="en-messageDestination2-icon-id">
+            <small-icon>en-messageDestination2-small-icon</small-icon>
+            <large-icon>en-messageDestination2-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="fr" id="fr-messageDestination2-icon-id">
+            <small-icon>fr-messageDestination2-small-icon</small-icon>
+            <large-icon>fr-messageDestination2-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="de" id="de-messageDestination2-icon-id">
+            <small-icon>de-messageDestination2-small-icon</small-icon>
+            <large-icon>de-messageDestination2-large-icon</large-icon>
+         </icon>
+         <message-destination-name>messageDestination2Name</message-destination-name>
+      </message-destination>
+
+      <exclude-list id="excludeList-id">
+         <description>en-excludeList-desc</description>
+         <description xml:lang="fr">fr-excludeList-desc</description>
+         <description xml:lang="de">de-excludeList-desc</description>
+         <method id="excludeListMethod1-id">
+            <description>en-excludeListMethod1-desc</description>
+            <description xml:lang="fr">fr-excludeListMethod1-desc</description>
+            <description xml:lang="de">de-excludeListMethod1-desc</description>
+            <ejb-name>excludeListMethod1EjbName</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>excludeListMethod1MethodName</method-name>
+            <method-params>
+               <method-param>excludeListMethod1Param1</method-param>
+               <method-param>excludeListMethod1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="excludeListMethod2-id">
+            <description>en-excludeListMethod2-desc</description>
+            <description xml:lang="fr">fr-excludeListMethod2-desc</description>
+            <description xml:lang="de">de-excludeListMethod2-desc</description>
+            <ejb-name>excludeListMethod2EjbName</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>excludeListMethod2MethodName</method-name>
+         </method>
+         <method id="excludeListMethod3-id">
+            <description>en-excludeListMethod3-desc</description>
+            <description xml:lang="fr">fr-excludeListMethod3-desc</description>
+            <description xml:lang="de">de-excludeListMethod3-desc</description>
+            <ejb-name>excludeListMethod3EjbName</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>excludeListMethod3MethodName</method-name>
+         </method>
+         <method id="excludeListMethod4-id">
+            <description>en-excludeListMethod4-desc</description>
+            <description xml:lang="fr">fr-excludeListMethod4-desc</description>
+            <description xml:lang="de">de-excludeListMethod4-desc</description>
+            <ejb-name>excludeListMethod4EjbName</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>excludeListMethod4MethodName</method-name>
+         </method>
+         <method id="excludeListMethod5-id">
+            <description>en-excludeListMethod5-desc</description>
+            <description xml:lang="fr">fr-excludeListMethod5-desc</description>
+            <description xml:lang="de">de-excludeListMethod5-desc</description>
+            <ejb-name>excludeListMethod5EjbName</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>excludeListMethod5MethodName</method-name>
+         </method>
+
+         <method id="session1ExcludeListMethod1-id">
+            <description>en-session1ExcludeListMethod1-desc</description>
+            <description xml:lang="fr">fr-session1ExcludeListMethod1-desc</description>
+            <description xml:lang="de">de-session1ExcludeListMethod1-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session1ExcludeListMethod1MethodName</method-name>
+            <method-params>
+               <method-param>session1ExcludeListMethod1Param1</method-param>
+               <method-param>session1ExcludeListMethod1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="session1ExcludeListMethod2-id">
+            <description>en-session1ExcludeListMethod2-desc</description>
+            <description xml:lang="fr">fr-session1ExcludeListMethod2-desc</description>
+            <description xml:lang="de">de-session1ExcludeListMethod2-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>session1ExcludeListMethod2MethodName</method-name>
+         </method>
+         <method id="session1ExcludeListMethod3-id">
+            <description>en-session1ExcludeListMethod3-desc</description>
+            <description xml:lang="fr">fr-session1ExcludeListMethod3-desc</description>
+            <description xml:lang="de">de-session1ExcludeListMethod3-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>session1ExcludeListMethod3MethodName</method-name>
+         </method>
+         <method id="session1ExcludeListMethod4-id">
+            <description>en-session1ExcludeListMethod4-desc</description>
+            <description xml:lang="fr">fr-session1ExcludeListMethod4-desc</description>
+            <description xml:lang="de">de-session1ExcludeListMethod4-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>session1ExcludeListMethod4MethodName</method-name>
+         </method>
+         <method id="session1ExcludeListMethod5-id">
+            <description>en-session1ExcludeListMethod5-desc</description>
+            <description xml:lang="fr">fr-session1ExcludeListMethod5-desc</description>
+            <description xml:lang="de">de-session1ExcludeListMethod5-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>session1ExcludeListMethod5MethodName</method-name>
+         </method>
+
+         <method id="session2ExcludeListMethod1-id">
+            <description>en-session2ExcludeListMethod1-desc</description>
+            <description xml:lang="fr">fr-session2ExcludeListMethod1-desc</description>
+            <description xml:lang="de">de-session2ExcludeListMethod1-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session2ExcludeListMethod1MethodName</method-name>
+            <method-params>
+               <method-param>session2ExcludeListMethod1Param1</method-param>
+               <method-param>session2ExcludeListMethod1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="session2ExcludeListMethod2-id">
+            <description>en-session2ExcludeListMethod2-desc</description>
+            <description xml:lang="fr">fr-session2ExcludeListMethod2-desc</description>
+            <description xml:lang="de">de-session2ExcludeListMethod2-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>session2ExcludeListMethod2MethodName</method-name>
+         </method>
+         <method id="session2ExcludeListMethod3-id">
+            <description>en-session2ExcludeListMethod3-desc</description>
+            <description xml:lang="fr">fr-session2ExcludeListMethod3-desc</description>
+            <description xml:lang="de">de-session2ExcludeListMethod3-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>session2ExcludeListMethod3MethodName</method-name>
+         </method>
+         <method id="session2ExcludeListMethod4-id">
+            <description>en-session2ExcludeListMethod4-desc</description>
+            <description xml:lang="fr">fr-session2ExcludeListMethod4-desc</description>
+            <description xml:lang="de">de-session2ExcludeListMethod4-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>session2ExcludeListMethod4MethodName</method-name>
+         </method>
+         <method id="session2ExcludeListMethod5-id">
+            <description>en-session2ExcludeListMethod5-desc</description>
+            <description xml:lang="fr">fr-session2ExcludeListMethod5-desc</description>
+            <description xml:lang="de">de-session2ExcludeListMethod5-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>session2ExcludeListMethod5MethodName</method-name>
+         </method>
+
+         <method id="entity1ExcludeListMethod1-id">
+            <description>en-entity1ExcludeListMethod1-desc</description>
+            <description xml:lang="fr">fr-entity1ExcludeListMethod1-desc</description>
+            <description xml:lang="de">de-entity1ExcludeListMethod1-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity1ExcludeListMethod1MethodName</method-name>
+            <method-params>
+               <method-param>entity1ExcludeListMethod1Param1</method-param>
+               <method-param>entity1ExcludeListMethod1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="entity1ExcludeListMethod2-id">
+            <description>en-entity1ExcludeListMethod2-desc</description>
+            <description xml:lang="fr">fr-entity1ExcludeListMethod2-desc</description>
+            <description xml:lang="de">de-entity1ExcludeListMethod2-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>entity1ExcludeListMethod2MethodName</method-name>
+         </method>
+         <method id="entity1ExcludeListMethod3-id">
+            <description>en-entity1ExcludeListMethod3-desc</description>
+            <description xml:lang="fr">fr-entity1ExcludeListMethod3-desc</description>
+            <description xml:lang="de">de-entity1ExcludeListMethod3-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>entity1ExcludeListMethod3MethodName</method-name>
+         </method>
+         <method id="entity1ExcludeListMethod4-id">
+            <description>en-entity1ExcludeListMethod4-desc</description>
+            <description xml:lang="fr">fr-entity1ExcludeListMethod4-desc</description>
+            <description xml:lang="de">de-entity1ExcludeListMethod4-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>entity1ExcludeListMethod4MethodName</method-name>
+         </method>
+         <method id="entity1ExcludeListMethod5-id">
+            <description>en-entity1ExcludeListMethod5-desc</description>
+            <description xml:lang="fr">fr-entity1ExcludeListMethod5-desc</description>
+            <description xml:lang="de">de-entity1ExcludeListMethod5-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>entity1ExcludeListMethod5MethodName</method-name>
+         </method>
+
+         <method id="entity2ExcludeListMethod1-id">
+            <description>en-entity2ExcludeListMethod1-desc</description>
+            <description xml:lang="fr">fr-entity2ExcludeListMethod1-desc</description>
+            <description xml:lang="de">de-entity2ExcludeListMethod1-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity2ExcludeListMethod1MethodName</method-name>
+            <method-params>
+               <method-param>entity2ExcludeListMethod1Param1</method-param>
+               <method-param>entity2ExcludeListMethod1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="entity2ExcludeListMethod2-id">
+            <description>en-entity2ExcludeListMethod2-desc</description>
+            <description xml:lang="fr">fr-entity2ExcludeListMethod2-desc</description>
+            <description xml:lang="de">de-entity2ExcludeListMethod2-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>entity2ExcludeListMethod2MethodName</method-name>
+         </method>
+         <method id="entity2ExcludeListMethod3-id">
+            <description>en-entity2ExcludeListMethod3-desc</description>
+            <description xml:lang="fr">fr-entity2ExcludeListMethod3-desc</description>
+            <description xml:lang="de">de-entity2ExcludeListMethod3-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>entity2ExcludeListMethod3MethodName</method-name>
+         </method>
+         <method id="entity2ExcludeListMethod4-id">
+            <description>en-entity2ExcludeListMethod4-desc</description>
+            <description xml:lang="fr">fr-entity2ExcludeListMethod4-desc</description>
+            <description xml:lang="de">de-entity2ExcludeListMethod4-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>entity2ExcludeListMethod4MethodName</method-name>
+         </method>
+         <method id="entity2ExcludeListMethod5-id">
+            <description>en-entity2ExcludeListMethod5-desc</description>
+            <description xml:lang="fr">fr-entity2ExcludeListMethod5-desc</description>
+            <description xml:lang="de">de-entity2ExcludeListMethod5-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>entity2ExcludeListMethod5MethodName</method-name>
+         </method>
+
+         <method id="mdb1ExcludeListMethod1-id">
+            <description>en-mdb1ExcludeListMethod1-desc</description>
+            <description xml:lang="fr">fr-mdb1ExcludeListMethod1-desc</description>
+            <description xml:lang="de">de-mdb1ExcludeListMethod1-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb1ExcludeListMethod1MethodName</method-name>
+            <method-params>
+               <method-param>mdb1ExcludeListMethod1Param1</method-param>
+               <method-param>mdb1ExcludeListMethod1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="mdb1ExcludeListMethod2-id">
+            <description>en-mdb1ExcludeListMethod2-desc</description>
+            <description xml:lang="fr">fr-mdb1ExcludeListMethod2-desc</description>
+            <description xml:lang="de">de-mdb1ExcludeListMethod2-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>mdb1ExcludeListMethod2MethodName</method-name>
+         </method>
+         <method id="mdb1ExcludeListMethod3-id">
+            <description>en-mdb1ExcludeListMethod3-desc</description>
+            <description xml:lang="fr">fr-mdb1ExcludeListMethod3-desc</description>
+            <description xml:lang="de">de-mdb1ExcludeListMethod3-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>mdb1ExcludeListMethod3MethodName</method-name>
+         </method>
+         <method id="mdb1ExcludeListMethod4-id">
+            <description>en-mdb1ExcludeListMethod4-desc</description>
+            <description xml:lang="fr">fr-mdb1ExcludeListMethod4-desc</description>
+            <description xml:lang="de">de-mdb1ExcludeListMethod4-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>mdb1ExcludeListMethod4MethodName</method-name>
+         </method>
+         <method id="mdb1ExcludeListMethod5-id">
+            <description>en-mdb1ExcludeListMethod5-desc</description>
+            <description xml:lang="fr">fr-mdb1ExcludeListMethod5-desc</description>
+            <description xml:lang="de">de-mdb1ExcludeListMethod5-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>mdb1ExcludeListMethod5MethodName</method-name>
+         </method>
+
+         <method id="mdb2ExcludeListMethod1-id">
+            <description>en-mdb2ExcludeListMethod1-desc</description>
+            <description xml:lang="fr">fr-mdb2ExcludeListMethod1-desc</description>
+            <description xml:lang="de">de-mdb2ExcludeListMethod1-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb2ExcludeListMethod1MethodName</method-name>
+            <method-params>
+               <method-param>mdb2ExcludeListMethod1Param1</method-param>
+               <method-param>mdb2ExcludeListMethod1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="mdb2ExcludeListMethod2-id">
+            <description>en-mdb2ExcludeListMethod2-desc</description>
+            <description xml:lang="fr">fr-mdb2ExcludeListMethod2-desc</description>
+            <description xml:lang="de">de-mdb2ExcludeListMethod2-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>mdb2ExcludeListMethod2MethodName</method-name>
+         </method>
+         <method id="mdb2ExcludeListMethod3-id">
+            <description>en-mdb2ExcludeListMethod3-desc</description>
+            <description xml:lang="fr">fr-mdb2ExcludeListMethod3-desc</description>
+            <description xml:lang="de">de-mdb2ExcludeListMethod3-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>mdb2ExcludeListMethod3MethodName</method-name>
+         </method>
+         <method id="mdb2ExcludeListMethod4-id">
+            <description>en-mdb2ExcludeListMethod4-desc</description>
+            <description xml:lang="fr">fr-mdb2ExcludeListMethod4-desc</description>
+            <description xml:lang="de">de-mdb2ExcludeListMethod4-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>mdb2ExcludeListMethod4MethodName</method-name>
+         </method>
+         <method id="mdb2ExcludeListMethod5-id">
+            <description>en-mdb2ExcludeListMethod5-desc</description>
+            <description xml:lang="fr">fr-mdb2ExcludeListMethod5-desc</description>
+            <description xml:lang="de">de-mdb2ExcludeListMethod5-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>mdb2ExcludeListMethod5MethodName</method-name>
+         </method>
+
+      </exclude-list>
+
+   </assembly-descriptor>
+   
+   <ejb-client-jar>some/path/client.jar</ejb-client-jar>
+   
+</ejb-jar>
\ No newline at end of file

Added: jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar21_testVersion.xml
===================================================================
--- jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar21_testVersion.xml	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar21_testVersion.xml	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<ejb-jar xmlns="http://java.sun.com/xml/ns/j2ee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/javaee/ejb-jar_2_1.xsd"
+         version="2.1">
+</ejb-jar>
\ No newline at end of file

Added: jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar3xEverything_testEverything.xml
===================================================================
--- jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar3xEverything_testEverything.xml	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar3xEverything_testEverything.xml	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,5558 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<ejb-jar 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/ejb-jar_3_0.xsd"
+         version="3.0"
+         metadata-complete="true"
+         id="ejb-jar-id">
+         
+   <description>en-ejb-jar-desc</description>
+   <description xml:lang="fr">fr-ejb-jar-desc</description>
+   <description xml:lang="de">de-ejb-jar-desc</description>
+   <display-name>en-ejb-jar-disp</display-name>
+   <display-name xml:lang="fr">fr-ejb-jar-disp</display-name>
+   <display-name xml:lang="de">de-ejb-jar-disp</display-name>
+   <icon id="en-ejb-jar-icon-id">
+      <small-icon>en-ejb-jar-small-icon</small-icon>
+      <large-icon>en-ejb-jar-large-icon</large-icon>
+   </icon>
+   <icon xml:lang="fr" id="fr-ejb-jar-icon-id">
+      <small-icon>fr-ejb-jar-small-icon</small-icon>
+      <large-icon>fr-ejb-jar-large-icon</large-icon>
+   </icon>
+   <icon xml:lang="de" id="de-ejb-jar-icon-id">
+      <small-icon>de-ejb-jar-small-icon</small-icon>
+      <large-icon>de-ejb-jar-large-icon</large-icon>
+   </icon>
+
+   <enterprise-beans id="enterprise-beans-id">
+
+      <session>
+         <ejb-name>session0</ejb-name>
+      </session>
+
+      <session id="session1-id">
+      
+         <description>en-session1-desc</description>
+         <description xml:lang="fr">fr-session1-desc</description>
+         <description xml:lang="de">de-session1-desc</description>
+         <display-name>en-session1-disp</display-name>
+         <display-name xml:lang="fr">fr-session1-disp</display-name>
+         <display-name xml:lang="de">de-session1-disp</display-name>
+         <icon id="en-session1-icon-id">
+            <small-icon>en-session1-small-icon</small-icon>
+            <large-icon>en-session1-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="fr" id="fr-session1-icon-id">
+            <small-icon>fr-session1-small-icon</small-icon>
+            <large-icon>fr-session1-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="de" id="de-session1-icon-id">
+            <small-icon>de-session1-small-icon</small-icon>
+            <large-icon>de-session1-large-icon</large-icon>
+         </icon>
+
+         <ejb-name>session1</ejb-name>
+
+         <mapped-name>session1-mapped-name</mapped-name>
+         <home>session1Home</home>
+         <remote>session1Remote</remote>
+         <local-home>session1LocalHome</local-home>
+         <local>session1Local</local>
+         <business-local>session1BusinessLocal1</business-local>
+         <business-local>session1BusinessLocal2</business-local>
+         <business-remote>session1BusinessRemote1</business-remote>
+         <business-remote>session1BusinessRemote2</business-remote>
+         <service-endpoint>session1ServiceEndpoint</service-endpoint>
+         <ejb-class>session1EjbClass</ejb-class>
+         <session-type>Stateless</session-type>
+         <timeout-method id="session1TimeoutMethod-id">
+            <method-name>session1TimeoutMethod</method-name>
+            <method-params>
+               <method-param>session1TimeoutMethodParam1</method-param>
+               <method-param>session1TimeoutMethodParam2</method-param>
+            </method-params>
+         </timeout-method>
+         <init-method id="session1InitMethod1-id">
+            <create-method id="session1InitCreateMethod1-id">
+               <method-name>session1InitCreateMethod1</method-name>
+            </create-method>
+            <bean-method id="session1InitBeanMethod1-id">
+               <method-name>session1InitBeanMethod1</method-name>
+            </bean-method>
+         </init-method>
+         <init-method id="session1InitMethod2-id">
+            <create-method id="session1InitCreateMethod2-id">
+               <method-name>session1InitCreateMethod2</method-name>
+            </create-method>
+            <bean-method id="session1InitBeanMethod2-id">
+               <method-name>session1InitBeanMethod2</method-name>
+            </bean-method>
+         </init-method>
+         <remove-method id="session1RemoveMethod1-id">
+            <bean-method id="session1RemoveBeanMethod1-id">
+               <method-name>session1RemoveBeanMethod1</method-name>
+            </bean-method>
+            <retain-if-exception>true</retain-if-exception>
+         </remove-method>
+         <remove-method id="session1RemoveMethod2-id">
+            <bean-method id="session1RemoveBeanMethod2-id">
+               <method-name>session1RemoveBeanMethod2</method-name>
+            </bean-method>
+            <retain-if-exception>false</retain-if-exception>
+         </remove-method>
+         <remove-method id="session1RemoveMethod3-id">
+            <bean-method id="session1RemoveBeanMethod3-id">
+               <method-name>session1RemoveBeanMethod3</method-name>
+            </bean-method>
+         </remove-method>
+         <transaction-type>Container</transaction-type>
+         <around-invoke>
+            <class>session1AroundInvoke1Class</class>
+            <method-name>session1AroundInvoke1Method</method-name>
+         </around-invoke>
+         <around-invoke>
+            <class>session1AroundInvoke2Class</class>
+            <method-name>session1AroundInvoke2Method</method-name>
+         </around-invoke>
+
+         <env-entry id="session1EnvEntry1-id">
+            <description>en-session1EnvEntry1-desc</description>
+            <description xml:lang="fr">fr-session1EnvEntry1-desc</description>
+            <description xml:lang="de">de-session1EnvEntry1-desc</description>
+            <env-entry-name>session1EnvEntry1Name</env-entry-name>
+            <env-entry-type>session1EnvEntry1Type</env-entry-type>
+            <env-entry-value>session1EnvEntry1Value</env-entry-value>
+            <mapped-name>session1EnvEntry1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session1EnvEntry1Injection1Class</injection-target-class>
+               <injection-target-name>session1EnvEntry1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session1EnvEntry1Injection2Class</injection-target-class>
+               <injection-target-name>session1EnvEntry1Injection2Name</injection-target-name>
+            </injection-target>
+         </env-entry>
+         <env-entry id="session1EnvEntry2-id">
+            <description>en-session1EnvEntry2-desc</description>
+            <description xml:lang="fr">fr-session1EnvEntry2-desc</description>
+            <description xml:lang="de">de-session1EnvEntry2-desc</description>
+            <env-entry-name>session1EnvEntry2Name</env-entry-name>
+            <env-entry-type>session1EnvEntry2Type</env-entry-type>
+            <env-entry-value>session1EnvEntry2Value</env-entry-value>
+            <mapped-name>session1EnvEntry2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session1EnvEntry2Injection1Class</injection-target-class>
+               <injection-target-name>session1EnvEntry2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session1EnvEntry2Injection2Class</injection-target-class>
+               <injection-target-name>session1EnvEntry2Injection2Name</injection-target-name>
+            </injection-target>
+         </env-entry>
+         <ejb-ref id="session1EjbRef1-id">
+            <description>en-session1EjbRef1-desc</description>
+            <description xml:lang="fr">fr-session1EjbRef1-desc</description>
+            <description xml:lang="de">de-session1EjbRef1-desc</description>
+            <ejb-ref-name>session1EjbRef1Name</ejb-ref-name>
+            <ejb-ref-type>Session</ejb-ref-type>
+            <home>session1EjbRef1Home</home>
+            <remote>session1EjbRef1Remote</remote>
+            <ejb-link>session1EjbRef1EjbLink</ejb-link>
+            <mapped-name>session1EjbRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session1EjbRef1Injection1Class</injection-target-class>
+               <injection-target-name>session1EjbRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session1EjbRef1Injection2Class</injection-target-class>
+               <injection-target-name>session1EjbRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </ejb-ref>
+         <ejb-ref id="session1EjbRef2-id">
+            <description>en-session1EjbRef2-desc</description>
+            <description xml:lang="fr">fr-session1EjbRef2-desc</description>
+            <description xml:lang="de">de-session1EjbRef2-desc</description>
+            <ejb-ref-name>session1EjbRef2Name</ejb-ref-name>
+            <ejb-ref-type>Entity</ejb-ref-type>
+            <home>session1EjbRef2Home</home>
+            <remote>session1EjbRef2Remote</remote>
+            <ejb-link>session1EjbRef2EjbLink</ejb-link>
+            <mapped-name>session1EjbRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session1EjbRef2Injection1Class</injection-target-class>
+               <injection-target-name>session1EjbRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session1EjbRef2Injection2Class</injection-target-class>
+               <injection-target-name>session1EjbRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </ejb-ref>
+         <ejb-local-ref id="session1EjbLocalRef1-id">
+            <description>en-session1EjbLocalRef1-desc</description>
+            <description xml:lang="fr">fr-session1EjbLocalRef1-desc</description>
+            <description xml:lang="de">de-session1EjbLocalRef1-desc</description>
+            <ejb-ref-name>session1EjbLocalRef1Name</ejb-ref-name>
+            <ejb-ref-type>Session</ejb-ref-type>
+            <local-home>session1EjbLocalRef1LocalHome</local-home>
+            <local>session1EjbLocalRef1Local</local>
+            <ejb-link>session1EjbLocalRef1EjbLink</ejb-link>
+            <mapped-name>session1EjbLocalRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session1EjbLocalRef1Injection1Class</injection-target-class>
+               <injection-target-name>session1EjbLocalRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session1EjbLocalRef1Injection2Class</injection-target-class>
+               <injection-target-name>session1EjbLocalRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </ejb-local-ref>
+         <ejb-local-ref id="session1EjbLocalRef2-id">
+            <description>en-session1EjbLocalRef2-desc</description>
+            <description xml:lang="fr">fr-session1EjbLocalRef2-desc</description>
+            <description xml:lang="de">de-session1EjbLocalRef2-desc</description>
+            <ejb-ref-name>session1EjbLocalRef2Name</ejb-ref-name>
+            <ejb-ref-type>Entity</ejb-ref-type>
+            <local-home>session1EjbLocalRef2LocalHome</local-home>
+            <local>session1EjbLocalRef2Local</local>
+            <ejb-link>session1EjbLocalRef2EjbLink</ejb-link>
+            <mapped-name>session1EjbLocalRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session1EjbLocalRef2Injection1Class</injection-target-class>
+               <injection-target-name>session1EjbLocalRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session1EjbLocalRef2Injection2Class</injection-target-class>
+               <injection-target-name>session1EjbLocalRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </ejb-local-ref>
+         
+         <!-- TODO service-refGroup -->
+
+         <resource-ref id="session1ResourceRef1-id">
+            <description>en-session1ResourceRef1-desc</description>
+            <description xml:lang="fr">fr-session1ResourceRef1-desc</description>
+            <description xml:lang="de">de-session1ResourceRef1-desc</description>
+            <res-ref-name>session1ResourceRef1Name</res-ref-name>
+            <res-type>session1ResourceRef1Type</res-type>
+            <res-auth>Application</res-auth>
+            <res-sharing-scope>Shareable</res-sharing-scope>
+            <mapped-name>session1ResourceRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session1ResourceRef1Injection1Class</injection-target-class>
+               <injection-target-name>session1ResourceRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session1ResourceRef1Injection2Class</injection-target-class>
+               <injection-target-name>session1ResourceRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </resource-ref>
+         <resource-ref id="session1ResourceRef2-id">
+            <description>en-session1ResourceRef2-desc</description>
+            <description xml:lang="fr">fr-session1ResourceRef2-desc</description>
+            <description xml:lang="de">de-session1ResourceRef2-desc</description>
+            <res-ref-name>session1ResourceRef2Name</res-ref-name>
+            <res-type>session1ResourceRef2Type</res-type>
+            <res-auth>Container</res-auth>
+            <res-sharing-scope>Unshareable</res-sharing-scope>
+            <mapped-name>session1ResourceRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session1ResourceRef2Injection1Class</injection-target-class>
+               <injection-target-name>session1ResourceRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session1ResourceRef2Injection2Class</injection-target-class>
+               <injection-target-name>session1ResourceRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </resource-ref>
+         <resource-env-ref id="session1ResourceEnvRef1-id">
+            <description>en-session1ResourceEnvRef1-desc</description>
+            <description xml:lang="fr">fr-session1ResourceEnvRef1-desc</description>
+            <description xml:lang="de">de-session1ResourceEnvRef1-desc</description>
+            <resource-env-ref-name>session1ResourceEnvRef1Name</resource-env-ref-name>
+            <resource-env-ref-type>session1ResourceEnvRef1Type</resource-env-ref-type>
+            <mapped-name>session1ResourceEnvRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session1ResourceEnvRef1Injection1Class</injection-target-class>
+               <injection-target-name>session1ResourceEnvRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session1ResourceEnvRef1Injection2Class</injection-target-class>
+               <injection-target-name>session1ResourceEnvRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </resource-env-ref>
+         <resource-env-ref id="session1ResourceEnvRef2-id">
+            <description>en-session1ResourceEnvRef2-desc</description>
+            <description xml:lang="fr">fr-session1ResourceEnvRef2-desc</description>
+            <description xml:lang="de">de-session1ResourceEnvRef2-desc</description>
+            <resource-env-ref-name>session1ResourceEnvRef2Name</resource-env-ref-name>
+            <resource-env-ref-type>session1ResourceEnvRef2Type</resource-env-ref-type>
+            <mapped-name>session1ResourceEnvRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session1ResourceEnvRef2Injection1Class</injection-target-class>
+               <injection-target-name>session1ResourceEnvRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session1ResourceEnvRef2Injection2Class</injection-target-class>
+               <injection-target-name>session1ResourceEnvRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </resource-env-ref>
+         <message-destination-ref id="session1MessageDestinationRef1-id">
+            <description>en-session1MessageDestinationRef1-desc</description>
+            <description xml:lang="fr">fr-session1MessageDestinationRef1-desc</description>
+            <description xml:lang="de">de-session1MessageDestinationRef1-desc</description>
+            <message-destination-ref-name>session1MessageDestinationRef1Name</message-destination-ref-name>
+            <message-destination-type>session1MessageDestinationRef1Type</message-destination-type>
+            <message-destination-usage>Consumes</message-destination-usage>
+            <message-destination-link>session1MessageDestinationRef1Link</message-destination-link>
+            <mapped-name>session1MessageDestinationRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session1MessageDestinationRef1Injection1Class</injection-target-class>
+               <injection-target-name>session1MessageDestinationRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session1MessageDestinationRef1Injection2Class</injection-target-class>
+               <injection-target-name>session1MessageDestinationRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </message-destination-ref>
+         <message-destination-ref id="session1MessageDestinationRef2-id">
+            <description>en-session1MessageDestinationRef2-desc</description>
+            <description xml:lang="fr">fr-session1MessageDestinationRef2-desc</description>
+            <description xml:lang="de">de-session1MessageDestinationRef2-desc</description>
+            <message-destination-ref-name>session1MessageDestinationRef2Name</message-destination-ref-name>
+            <message-destination-type>session1MessageDestinationRef2Type</message-destination-type>
+            <message-destination-usage>Produces</message-destination-usage>
+            <message-destination-link>session1MessageDestinationRef2Link</message-destination-link>
+            <mapped-name>session1MessageDestinationRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session1MessageDestinationRef2Injection1Class</injection-target-class>
+               <injection-target-name>session1MessageDestinationRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session1MessageDestinationRef2Injection2Class</injection-target-class>
+               <injection-target-name>session1MessageDestinationRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </message-destination-ref>
+         <message-destination-ref id="session1MessageDestinationRef3-id">
+            <description>en-session1MessageDestinationRef3-desc</description>
+            <description xml:lang="fr">fr-session1MessageDestinationRef3-desc</description>
+            <description xml:lang="de">de-session1MessageDestinationRef3-desc</description>
+            <message-destination-ref-name>session1MessageDestinationRef3Name</message-destination-ref-name>
+            <message-destination-type>session1MessageDestinationRef3Type</message-destination-type>
+            <message-destination-usage>ConsumesProduces</message-destination-usage>
+            <message-destination-link>session1MessageDestinationRef3Link</message-destination-link>
+            <mapped-name>session1MessageDestinationRef3MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session1MessageDestinationRef3Injection1Class</injection-target-class>
+               <injection-target-name>session1MessageDestinationRef3Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session1MessageDestinationRef3Injection2Class</injection-target-class>
+               <injection-target-name>session1MessageDestinationRef3Injection2Name</injection-target-name>
+            </injection-target>
+         </message-destination-ref>
+         <persistence-context-ref id="session1PersistenceContextRef1-id">
+            <description>en-session1PersistenceContextRef1-desc</description>
+            <description xml:lang="fr">fr-session1PersistenceContextRef1-desc</description>
+            <description xml:lang="de">de-session1PersistenceContextRef1-desc</description>
+            <persistence-context-ref-name>session1PersistenceContextRef1Name</persistence-context-ref-name>
+            <persistence-unit-name>session1PersistenceContextRef1Unit</persistence-unit-name>
+            <persistence-context-type>Transaction</persistence-context-type>
+            <persistence-property id="session1PersistenceContextRef1Property1-id">
+               <name>session1PersistenceContextRef1Property1Name</name>
+               <value>session1PersistenceContextRef1Property1Value</value>
+            </persistence-property>
+            <persistence-property id="session1PersistenceContextRef1Property2-id">
+               <name>session1PersistenceContextRef1Property2Name</name>
+               <value>session1PersistenceContextRef1Property2Value</value>
+            </persistence-property>
+            <mapped-name>session1PersistenceContextRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session1PersistenceContextRef1Injection1Class</injection-target-class>
+               <injection-target-name>session1PersistenceContextRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session1PersistenceContextRef1Injection2Class</injection-target-class>
+               <injection-target-name>session1PersistenceContextRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </persistence-context-ref>
+         <persistence-context-ref id="session1PersistenceContextRef2-id">
+            <description>en-session1PersistenceContextRef2-desc</description>
+            <description xml:lang="fr">fr-session1PersistenceContextRef2-desc</description>
+            <description xml:lang="de">de-session1PersistenceContextRef2-desc</description>
+            <persistence-context-ref-name>session1PersistenceContextRef2Name</persistence-context-ref-name>
+            <persistence-unit-name>session1PersistenceContextRef2Unit</persistence-unit-name>
+            <persistence-context-type>Extended</persistence-context-type>
+            <persistence-property id="session1PersistenceContextRef2Property1-id">
+               <name>session1PersistenceContextRef2Property1Name</name>
+               <value>session1PersistenceContextRef2Property1Value</value>
+            </persistence-property>
+            <persistence-property id="session1PersistenceContextRef2Property2-id">
+               <name>session1PersistenceContextRef2Property2Name</name>
+               <value>session1PersistenceContextRef2Property2Value</value>
+            </persistence-property>
+            <mapped-name>session1PersistenceContextRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session1PersistenceContextRef2Injection1Class</injection-target-class>
+               <injection-target-name>session1PersistenceContextRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session1PersistenceContextRef2Injection2Class</injection-target-class>
+               <injection-target-name>session1PersistenceContextRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </persistence-context-ref>
+         <persistence-unit-ref id="session1PersistenceUnitRef1-id">
+            <description>en-session1PersistenceUnitRef1-desc</description>
+            <description xml:lang="fr">fr-session1PersistenceUnitRef1-desc</description>
+            <description xml:lang="de">de-session1PersistenceUnitRef1-desc</description>
+            <persistence-unit-ref-name>session1PersistenceUnitRef1Name</persistence-unit-ref-name>
+            <persistence-unit-name>session1PersistenceUnitRef1Unit</persistence-unit-name>
+            <mapped-name>session1PersistenceUnitRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session1PersistenceUnitRef1Injection1Class</injection-target-class>
+               <injection-target-name>session1PersistenceUnitRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session1PersistenceUnitRef1Injection2Class</injection-target-class>
+               <injection-target-name>session1PersistenceUnitRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </persistence-unit-ref>
+         <persistence-unit-ref id="session1PersistenceUnitRef2-id">
+            <description>en-session1PersistenceUnitRef2-desc</description>
+            <description xml:lang="fr">fr-session1PersistenceUnitRef2-desc</description>
+            <description xml:lang="de">de-session1PersistenceUnitRef2-desc</description>
+            <persistence-unit-ref-name>session1PersistenceUnitRef2Name</persistence-unit-ref-name>
+            <persistence-unit-name>session1PersistenceUnitRef2Unit</persistence-unit-name>
+            <mapped-name>session1PersistenceUnitRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session1PersistenceUnitRef2Injection1Class</injection-target-class>
+               <injection-target-name>session1PersistenceUnitRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session1PersistenceUnitRef2Injection2Class</injection-target-class>
+               <injection-target-name>session1PersistenceUnitRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </persistence-unit-ref>
+         <post-construct>
+            <lifecycle-callback-class>session1PostConstruct1Class</lifecycle-callback-class>
+            <lifecycle-callback-method>session1PostConstruct1Method</lifecycle-callback-method>
+         </post-construct>
+         <post-construct>
+            <lifecycle-callback-class>session1PostConstruct2Class</lifecycle-callback-class>
+            <lifecycle-callback-method>session1PostConstruct2Method</lifecycle-callback-method>
+         </post-construct>
+         <pre-destroy>
+            <lifecycle-callback-class>session1PreDestroy1Class</lifecycle-callback-class>
+            <lifecycle-callback-method>session1PreDestroy1Method</lifecycle-callback-method>
+         </pre-destroy>
+         <pre-destroy>
+            <lifecycle-callback-class>session1PreDestroy2Class</lifecycle-callback-class>
+            <lifecycle-callback-method>session1PreDestroy2Method</lifecycle-callback-method>
+         </pre-destroy>
+
+         <post-activate>
+            <lifecycle-callback-class>session1PostActivate1Class</lifecycle-callback-class>
+            <lifecycle-callback-method>session1PostActivate1Method</lifecycle-callback-method>
+         </post-activate>
+         <post-activate>
+            <lifecycle-callback-class>session1PostActivate2Class</lifecycle-callback-class>
+            <lifecycle-callback-method>session1PostActivate2Method</lifecycle-callback-method>
+         </post-activate>
+         <pre-passivate>
+            <lifecycle-callback-class>session1PrePassivate1Class</lifecycle-callback-class>
+            <lifecycle-callback-method>session1PrePassivate1Method</lifecycle-callback-method>
+         </pre-passivate>
+         <pre-passivate>
+            <lifecycle-callback-class>session1PrePassivate2Class</lifecycle-callback-class>
+            <lifecycle-callback-method>session1PrePassivate2Method</lifecycle-callback-method>
+         </pre-passivate>
+         <security-role-ref id="session1SecurityRoleRef1-id">
+            <description>en-session1SecurityRoleRef1-desc</description>
+            <description xml:lang="fr">fr-session1SecurityRoleRef1-desc</description>
+            <description xml:lang="de">de-session1SecurityRoleRef1-desc</description>
+            <role-name>session1SecurityRoleRef1RoleName</role-name>
+            <role-link>session1SecurityRoleRef1RoleLink</role-link>
+         </security-role-ref>
+         <security-role-ref id="session1SecurityRoleRef2-id">
+            <description>en-session1SecurityRoleRef2-desc</description>
+            <description xml:lang="fr">fr-session1SecurityRoleRef2-desc</description>
+            <description xml:lang="de">de-session1SecurityRoleRef2-desc</description>
+            <role-name>session1SecurityRoleRef2RoleName</role-name>
+            <role-link>session1SecurityRoleRef2RoleLink</role-link>
+         </security-role-ref>
+         <security-identity id="session1SecurityIdentity-id">
+            <description>en-session1SecurityIdentity-desc</description>
+            <description xml:lang="fr">fr-session1SecurityIdentity-desc</description>
+            <description xml:lang="de">de-session1SecurityIdentity-desc</description>
+            <use-caller-identity id="session1SecurityIdentityUseCallerIdentity-id"/>
+            <run-as id="session1SecurityIdentityRunAs-id">
+               <description>en-session1SecurityIdentityRunAs-desc</description>
+               <description xml:lang="fr">fr-session1SecurityIdentityRunAs-desc</description>
+               <description xml:lang="de">de-session1SecurityIdentityRunAs-desc</description>
+               <role-name>session1SecurityIdentityRunAsRoleName</role-name>
+            </run-as>
+         </security-identity>
+
+      </session>
+
+      <session id="session2-id">
+      
+         <description>en-session2-desc</description>
+         <description xml:lang="fr">fr-session2-desc</description>
+         <description xml:lang="de">de-session2-desc</description>
+         <display-name>en-session2-disp</display-name>
+         <display-name xml:lang="fr">fr-session2-disp</display-name>
+         <display-name xml:lang="de">de-session2-disp</display-name>
+         <icon id="en-session2-icon-id">
+            <small-icon>en-session2-small-icon</small-icon>
+            <large-icon>en-session2-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="fr" id="fr-session2-icon-id">
+            <small-icon>fr-session2-small-icon</small-icon>
+            <large-icon>fr-session2-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="de" id="de-session2-icon-id">
+            <small-icon>de-session2-small-icon</small-icon>
+            <large-icon>de-session2-large-icon</large-icon>
+         </icon>
+
+         <ejb-name>session2</ejb-name>
+
+         <mapped-name>session2-mapped-name</mapped-name>
+         <home>session2Home</home>
+         <remote>session2Remote</remote>
+         <local-home>session2LocalHome</local-home>
+         <local>session2Local</local>
+         <business-local>session2BusinessLocal1</business-local>
+         <business-local>session2BusinessLocal2</business-local>
+         <business-remote>session2BusinessRemote1</business-remote>
+         <business-remote>session2BusinessRemote2</business-remote>
+         <service-endpoint>session2ServiceEndpoint</service-endpoint>
+         <ejb-class>session2EjbClass</ejb-class>
+         <session-type>Stateless</session-type>
+         <timeout-method id="session2TimeoutMethod-id">
+            <method-name>session2TimeoutMethod</method-name>
+            <method-params>
+               <method-param>session2TimeoutMethodParam1</method-param>
+               <method-param>session2TimeoutMethodParam2</method-param>
+            </method-params>
+         </timeout-method>
+         <init-method id="session2InitMethod1-id">
+            <create-method id="session2InitCreateMethod1-id">
+               <method-name>session2InitCreateMethod1</method-name>
+            </create-method>
+            <bean-method id="session2InitBeanMethod1-id">
+               <method-name>session2InitBeanMethod1</method-name>
+            </bean-method>
+         </init-method>
+         <init-method id="session2InitMethod2-id">
+            <create-method id="session2InitCreateMethod2-id">
+               <method-name>session2InitCreateMethod2</method-name>
+            </create-method>
+            <bean-method id="session2InitBeanMethod2-id">
+               <method-name>session2InitBeanMethod2</method-name>
+            </bean-method>
+         </init-method>
+         <remove-method id="session2RemoveMethod1-id">
+            <bean-method id="session2RemoveBeanMethod1-id">
+               <method-name>session2RemoveBeanMethod1</method-name>
+            </bean-method>
+            <retain-if-exception>true</retain-if-exception>
+         </remove-method>
+         <remove-method id="session2RemoveMethod2-id">
+            <bean-method id="session2RemoveBeanMethod2-id">
+               <method-name>session2RemoveBeanMethod2</method-name>
+            </bean-method>
+            <retain-if-exception>false</retain-if-exception>
+         </remove-method>
+         <remove-method id="session2RemoveMethod3-id">
+            <bean-method id="session2RemoveBeanMethod3-id">
+               <method-name>session2RemoveBeanMethod3</method-name>
+            </bean-method>
+         </remove-method>
+         <transaction-type>Container</transaction-type>
+         <around-invoke>
+            <class>session2AroundInvoke1Class</class>
+            <method-name>session2AroundInvoke1Method</method-name>
+         </around-invoke>
+         <around-invoke>
+            <class>session2AroundInvoke2Class</class>
+            <method-name>session2AroundInvoke2Method</method-name>
+         </around-invoke>
+
+         <env-entry id="session2EnvEntry1-id">
+            <description>en-session2EnvEntry1-desc</description>
+            <description xml:lang="fr">fr-session2EnvEntry1-desc</description>
+            <description xml:lang="de">de-session2EnvEntry1-desc</description>
+            <env-entry-name>session2EnvEntry1Name</env-entry-name>
+            <env-entry-type>session2EnvEntry1Type</env-entry-type>
+            <env-entry-value>session2EnvEntry1Value</env-entry-value>
+            <mapped-name>session2EnvEntry1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session2EnvEntry1Injection1Class</injection-target-class>
+               <injection-target-name>session2EnvEntry1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session2EnvEntry1Injection2Class</injection-target-class>
+               <injection-target-name>session2EnvEntry1Injection2Name</injection-target-name>
+            </injection-target>
+         </env-entry>
+         <env-entry id="session2EnvEntry2-id">
+            <description>en-session2EnvEntry2-desc</description>
+            <description xml:lang="fr">fr-session2EnvEntry2-desc</description>
+            <description xml:lang="de">de-session2EnvEntry2-desc</description>
+            <env-entry-name>session2EnvEntry2Name</env-entry-name>
+            <env-entry-type>session2EnvEntry2Type</env-entry-type>
+            <env-entry-value>session2EnvEntry2Value</env-entry-value>
+            <mapped-name>session2EnvEntry2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session2EnvEntry2Injection1Class</injection-target-class>
+               <injection-target-name>session2EnvEntry2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session2EnvEntry2Injection2Class</injection-target-class>
+               <injection-target-name>session2EnvEntry2Injection2Name</injection-target-name>
+            </injection-target>
+         </env-entry>
+         <ejb-ref id="session2EjbRef1-id">
+            <description>en-session2EjbRef1-desc</description>
+            <description xml:lang="fr">fr-session2EjbRef1-desc</description>
+            <description xml:lang="de">de-session2EjbRef1-desc</description>
+            <ejb-ref-name>session2EjbRef1Name</ejb-ref-name>
+            <ejb-ref-type>Session</ejb-ref-type>
+            <home>session2EjbRef1Home</home>
+            <remote>session2EjbRef1Remote</remote>
+            <ejb-link>session2EjbRef1EjbLink</ejb-link>
+            <mapped-name>session2EjbRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session2EjbRef1Injection1Class</injection-target-class>
+               <injection-target-name>session2EjbRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session2EjbRef1Injection2Class</injection-target-class>
+               <injection-target-name>session2EjbRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </ejb-ref>
+         <ejb-ref id="session2EjbRef2-id">
+            <description>en-session2EjbRef2-desc</description>
+            <description xml:lang="fr">fr-session2EjbRef2-desc</description>
+            <description xml:lang="de">de-session2EjbRef2-desc</description>
+            <ejb-ref-name>session2EjbRef2Name</ejb-ref-name>
+            <ejb-ref-type>Entity</ejb-ref-type>
+            <home>session2EjbRef2Home</home>
+            <remote>session2EjbRef2Remote</remote>
+            <ejb-link>session2EjbRef2EjbLink</ejb-link>
+            <mapped-name>session2EjbRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session2EjbRef2Injection1Class</injection-target-class>
+               <injection-target-name>session2EjbRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session2EjbRef2Injection2Class</injection-target-class>
+               <injection-target-name>session2EjbRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </ejb-ref>
+         <ejb-local-ref id="session2EjbLocalRef1-id">
+            <description>en-session2EjbLocalRef1-desc</description>
+            <description xml:lang="fr">fr-session2EjbLocalRef1-desc</description>
+            <description xml:lang="de">de-session2EjbLocalRef1-desc</description>
+            <ejb-ref-name>session2EjbLocalRef1Name</ejb-ref-name>
+            <ejb-ref-type>Session</ejb-ref-type>
+            <local-home>session2EjbLocalRef1LocalHome</local-home>
+            <local>session2EjbLocalRef1Local</local>
+            <ejb-link>session2EjbLocalRef1EjbLink</ejb-link>
+            <mapped-name>session2EjbLocalRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session2EjbLocalRef1Injection1Class</injection-target-class>
+               <injection-target-name>session2EjbLocalRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session2EjbLocalRef1Injection2Class</injection-target-class>
+               <injection-target-name>session2EjbLocalRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </ejb-local-ref>
+         <ejb-local-ref id="session2EjbLocalRef2-id">
+            <description>en-session2EjbLocalRef2-desc</description>
+            <description xml:lang="fr">fr-session2EjbLocalRef2-desc</description>
+            <description xml:lang="de">de-session2EjbLocalRef2-desc</description>
+            <ejb-ref-name>session2EjbLocalRef2Name</ejb-ref-name>
+            <ejb-ref-type>Entity</ejb-ref-type>
+            <local-home>session2EjbLocalRef2LocalHome</local-home>
+            <local>session2EjbLocalRef2Local</local>
+            <ejb-link>session2EjbLocalRef2EjbLink</ejb-link>
+            <mapped-name>session2EjbLocalRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session2EjbLocalRef2Injection1Class</injection-target-class>
+               <injection-target-name>session2EjbLocalRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session2EjbLocalRef2Injection2Class</injection-target-class>
+               <injection-target-name>session2EjbLocalRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </ejb-local-ref>
+
+         <!-- TODO service-refGroup -->
+
+         <resource-ref id="session2ResourceRef1-id">
+            <description>en-session2ResourceRef1-desc</description>
+            <description xml:lang="fr">fr-session2ResourceRef1-desc</description>
+            <description xml:lang="de">de-session2ResourceRef1-desc</description>
+            <res-ref-name>session2ResourceRef1Name</res-ref-name>
+            <res-type>session2ResourceRef1Type</res-type>
+            <res-auth>Application</res-auth>
+            <res-sharing-scope>Shareable</res-sharing-scope>
+            <mapped-name>session2ResourceRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session2ResourceRef1Injection1Class</injection-target-class>
+               <injection-target-name>session2ResourceRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session2ResourceRef1Injection2Class</injection-target-class>
+               <injection-target-name>session2ResourceRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </resource-ref>
+         <resource-ref id="session2ResourceRef2-id">
+            <description>en-session2ResourceRef2-desc</description>
+            <description xml:lang="fr">fr-session2ResourceRef2-desc</description>
+            <description xml:lang="de">de-session2ResourceRef2-desc</description>
+            <res-ref-name>session2ResourceRef2Name</res-ref-name>
+            <res-type>session2ResourceRef2Type</res-type>
+            <res-auth>Container</res-auth>
+            <res-sharing-scope>Unshareable</res-sharing-scope>
+            <mapped-name>session2ResourceRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session2ResourceRef2Injection1Class</injection-target-class>
+               <injection-target-name>session2ResourceRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session2ResourceRef2Injection2Class</injection-target-class>
+               <injection-target-name>session2ResourceRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </resource-ref>
+         <resource-env-ref id="session2ResourceEnvRef1-id">
+            <description>en-session2ResourceEnvRef1-desc</description>
+            <description xml:lang="fr">fr-session2ResourceEnvRef1-desc</description>
+            <description xml:lang="de">de-session2ResourceEnvRef1-desc</description>
+            <resource-env-ref-name>session2ResourceEnvRef1Name</resource-env-ref-name>
+            <resource-env-ref-type>session2ResourceEnvRef1Type</resource-env-ref-type>
+            <mapped-name>session2ResourceEnvRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session2ResourceEnvRef1Injection1Class</injection-target-class>
+               <injection-target-name>session2ResourceEnvRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session2ResourceEnvRef1Injection2Class</injection-target-class>
+               <injection-target-name>session2ResourceEnvRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </resource-env-ref>
+         <resource-env-ref id="session2ResourceEnvRef2-id">
+            <description>en-session2ResourceEnvRef2-desc</description>
+            <description xml:lang="fr">fr-session2ResourceEnvRef2-desc</description>
+            <description xml:lang="de">de-session2ResourceEnvRef2-desc</description>
+            <resource-env-ref-name>session2ResourceEnvRef2Name</resource-env-ref-name>
+            <resource-env-ref-type>session2ResourceEnvRef2Type</resource-env-ref-type>
+            <mapped-name>session2ResourceEnvRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session2ResourceEnvRef2Injection1Class</injection-target-class>
+               <injection-target-name>session2ResourceEnvRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session2ResourceEnvRef2Injection2Class</injection-target-class>
+               <injection-target-name>session2ResourceEnvRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </resource-env-ref>
+         <message-destination-ref id="session2MessageDestinationRef1-id">
+            <description>en-session2MessageDestinationRef1-desc</description>
+            <description xml:lang="fr">fr-session2MessageDestinationRef1-desc</description>
+            <description xml:lang="de">de-session2MessageDestinationRef1-desc</description>
+            <message-destination-ref-name>session2MessageDestinationRef1Name</message-destination-ref-name>
+            <message-destination-type>session2MessageDestinationRef1Type</message-destination-type>
+            <message-destination-usage>Consumes</message-destination-usage>
+            <message-destination-link>session2MessageDestinationRef1Link</message-destination-link>
+            <mapped-name>session2MessageDestinationRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session2MessageDestinationRef1Injection1Class</injection-target-class>
+               <injection-target-name>session2MessageDestinationRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session2MessageDestinationRef1Injection2Class</injection-target-class>
+               <injection-target-name>session2MessageDestinationRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </message-destination-ref>
+         <message-destination-ref id="session2MessageDestinationRef2-id">
+            <description>en-session2MessageDestinationRef2-desc</description>
+            <description xml:lang="fr">fr-session2MessageDestinationRef2-desc</description>
+            <description xml:lang="de">de-session2MessageDestinationRef2-desc</description>
+            <message-destination-ref-name>session2MessageDestinationRef2Name</message-destination-ref-name>
+            <message-destination-type>session2MessageDestinationRef2Type</message-destination-type>
+            <message-destination-usage>Produces</message-destination-usage>
+            <message-destination-link>session2MessageDestinationRef2Link</message-destination-link>
+            <mapped-name>session2MessageDestinationRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session2MessageDestinationRef2Injection1Class</injection-target-class>
+               <injection-target-name>session2MessageDestinationRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session2MessageDestinationRef2Injection2Class</injection-target-class>
+               <injection-target-name>session2MessageDestinationRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </message-destination-ref>
+         <message-destination-ref id="session2MessageDestinationRef3-id">
+            <description>en-session2MessageDestinationRef3-desc</description>
+            <description xml:lang="fr">fr-session2MessageDestinationRef3-desc</description>
+            <description xml:lang="de">de-session2MessageDestinationRef3-desc</description>
+            <message-destination-ref-name>session2MessageDestinationRef3Name</message-destination-ref-name>
+            <message-destination-type>session2MessageDestinationRef3Type</message-destination-type>
+            <message-destination-usage>ConsumesProduces</message-destination-usage>
+            <message-destination-link>session2MessageDestinationRef3Link</message-destination-link>
+            <mapped-name>session2MessageDestinationRef3MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session2MessageDestinationRef3Injection1Class</injection-target-class>
+               <injection-target-name>session2MessageDestinationRef3Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session2MessageDestinationRef3Injection2Class</injection-target-class>
+               <injection-target-name>session2MessageDestinationRef3Injection2Name</injection-target-name>
+            </injection-target>
+         </message-destination-ref>
+         <persistence-context-ref id="session2PersistenceContextRef1-id">
+            <description>en-session2PersistenceContextRef1-desc</description>
+            <description xml:lang="fr">fr-session2PersistenceContextRef1-desc</description>
+            <description xml:lang="de">de-session2PersistenceContextRef1-desc</description>
+            <persistence-context-ref-name>session2PersistenceContextRef1Name</persistence-context-ref-name>
+            <persistence-unit-name>session2PersistenceContextRef1Unit</persistence-unit-name>
+            <persistence-context-type>Transaction</persistence-context-type>
+            <persistence-property id="session2PersistenceContextRef1Property1-id">
+               <name>session2PersistenceContextRef1Property1Name</name>
+               <value>session2PersistenceContextRef1Property1Value</value>
+            </persistence-property>
+            <persistence-property id="session2PersistenceContextRef1Property2-id">
+               <name>session2PersistenceContextRef1Property2Name</name>
+               <value>session2PersistenceContextRef1Property2Value</value>
+            </persistence-property>
+            <mapped-name>session2PersistenceContextRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session2PersistenceContextRef1Injection1Class</injection-target-class>
+               <injection-target-name>session2PersistenceContextRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session2PersistenceContextRef1Injection2Class</injection-target-class>
+               <injection-target-name>session2PersistenceContextRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </persistence-context-ref>
+         <persistence-context-ref id="session2PersistenceContextRef2-id">
+            <description>en-session2PersistenceContextRef2-desc</description>
+            <description xml:lang="fr">fr-session2PersistenceContextRef2-desc</description>
+            <description xml:lang="de">de-session2PersistenceContextRef2-desc</description>
+            <persistence-context-ref-name>session2PersistenceContextRef2Name</persistence-context-ref-name>
+            <persistence-unit-name>session2PersistenceContextRef2Unit</persistence-unit-name>
+            <persistence-context-type>Extended</persistence-context-type>
+            <persistence-property id="session2PersistenceContextRef2Property1-id">
+               <name>session2PersistenceContextRef2Property1Name</name>
+               <value>session2PersistenceContextRef2Property1Value</value>
+            </persistence-property>
+            <persistence-property id="session2PersistenceContextRef2Property2-id">
+               <name>session2PersistenceContextRef2Property2Name</name>
+               <value>session2PersistenceContextRef2Property2Value</value>
+            </persistence-property>
+            <mapped-name>session2PersistenceContextRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session2PersistenceContextRef2Injection1Class</injection-target-class>
+               <injection-target-name>session2PersistenceContextRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session2PersistenceContextRef2Injection2Class</injection-target-class>
+               <injection-target-name>session2PersistenceContextRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </persistence-context-ref>
+         <persistence-unit-ref id="session2PersistenceUnitRef1-id">
+            <description>en-session2PersistenceUnitRef1-desc</description>
+            <description xml:lang="fr">fr-session2PersistenceUnitRef1-desc</description>
+            <description xml:lang="de">de-session2PersistenceUnitRef1-desc</description>
+            <persistence-unit-ref-name>session2PersistenceUnitRef1Name</persistence-unit-ref-name>
+            <persistence-unit-name>session2PersistenceUnitRef1Unit</persistence-unit-name>
+            <mapped-name>session2PersistenceUnitRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session2PersistenceUnitRef1Injection1Class</injection-target-class>
+               <injection-target-name>session2PersistenceUnitRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session2PersistenceUnitRef1Injection2Class</injection-target-class>
+               <injection-target-name>session2PersistenceUnitRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </persistence-unit-ref>
+         <persistence-unit-ref id="session2PersistenceUnitRef2-id">
+            <description>en-session2PersistenceUnitRef2-desc</description>
+            <description xml:lang="fr">fr-session2PersistenceUnitRef2-desc</description>
+            <description xml:lang="de">de-session2PersistenceUnitRef2-desc</description>
+            <persistence-unit-ref-name>session2PersistenceUnitRef2Name</persistence-unit-ref-name>
+            <persistence-unit-name>session2PersistenceUnitRef2Unit</persistence-unit-name>
+            <mapped-name>session2PersistenceUnitRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session2PersistenceUnitRef2Injection1Class</injection-target-class>
+               <injection-target-name>session2PersistenceUnitRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session2PersistenceUnitRef2Injection2Class</injection-target-class>
+               <injection-target-name>session2PersistenceUnitRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </persistence-unit-ref>
+         <post-construct>
+            <lifecycle-callback-class>session2PostConstruct1Class</lifecycle-callback-class>
+            <lifecycle-callback-method>session2PostConstruct1Method</lifecycle-callback-method>
+         </post-construct>
+         <post-construct>
+            <lifecycle-callback-class>session2PostConstruct2Class</lifecycle-callback-class>
+            <lifecycle-callback-method>session2PostConstruct2Method</lifecycle-callback-method>
+         </post-construct>
+         <pre-destroy>
+            <lifecycle-callback-class>session2PreDestroy1Class</lifecycle-callback-class>
+            <lifecycle-callback-method>session2PreDestroy1Method</lifecycle-callback-method>
+         </pre-destroy>
+         <pre-destroy>
+            <lifecycle-callback-class>session2PreDestroy2Class</lifecycle-callback-class>
+            <lifecycle-callback-method>session2PreDestroy2Method</lifecycle-callback-method>
+         </pre-destroy>
+
+         <post-activate>
+            <lifecycle-callback-class>session2PostActivate1Class</lifecycle-callback-class>
+            <lifecycle-callback-method>session2PostActivate1Method</lifecycle-callback-method>
+         </post-activate>
+         <post-activate>
+            <lifecycle-callback-class>session2PostActivate2Class</lifecycle-callback-class>
+            <lifecycle-callback-method>session2PostActivate2Method</lifecycle-callback-method>
+         </post-activate>
+         <pre-passivate>
+            <lifecycle-callback-class>session2PrePassivate1Class</lifecycle-callback-class>
+            <lifecycle-callback-method>session2PrePassivate1Method</lifecycle-callback-method>
+         </pre-passivate>
+         <pre-passivate>
+            <lifecycle-callback-class>session2PrePassivate2Class</lifecycle-callback-class>
+            <lifecycle-callback-method>session2PrePassivate2Method</lifecycle-callback-method>
+         </pre-passivate>
+         <security-role-ref id="session2SecurityRoleRef1-id">
+            <description>en-session2SecurityRoleRef1-desc</description>
+            <description xml:lang="fr">fr-session2SecurityRoleRef1-desc</description>
+            <description xml:lang="de">de-session2SecurityRoleRef1-desc</description>
+            <role-name>session2SecurityRoleRef1RoleName</role-name>
+            <role-link>session2SecurityRoleRef1RoleLink</role-link>
+         </security-role-ref>
+         <security-role-ref id="session2SecurityRoleRef2-id">
+            <description>en-session2SecurityRoleRef2-desc</description>
+            <description xml:lang="fr">fr-session2SecurityRoleRef2-desc</description>
+            <description xml:lang="de">de-session2SecurityRoleRef2-desc</description>
+            <role-name>session2SecurityRoleRef2RoleName</role-name>
+            <role-link>session2SecurityRoleRef2RoleLink</role-link>
+         </security-role-ref>
+         <security-identity id="session2SecurityIdentity-id">
+            <description>en-session2SecurityIdentity-desc</description>
+            <description xml:lang="fr">fr-session2SecurityIdentity-desc</description>
+            <description xml:lang="de">de-session2SecurityIdentity-desc</description>
+            <use-caller-identity id="session2SecurityIdentityUseCallerIdentity-id"/>
+            <run-as id="session2SecurityIdentityRunAs-id">
+               <description>en-session2SecurityIdentityRunAs-desc</description>
+               <description xml:lang="fr">fr-session2SecurityIdentityRunAs-desc</description>
+               <description xml:lang="de">de-session2SecurityIdentityRunAs-desc</description>
+               <role-name>session2SecurityIdentityRunAsRoleName</role-name>
+            </run-as>
+         </security-identity>
+
+      </session>
+
+      <session>
+         <ejb-name>session3</ejb-name>
+         <session-type>Stateful</session-type>
+      </session>
+
+      <session>
+         <ejb-name>session4</ejb-name>
+         <transaction-type>Bean</transaction-type>
+      </session>
+
+      <session>
+         <ejb-name>session5</ejb-name>
+         <security-identity/>
+      </session>
+
+      <entity>
+         <ejb-name>entity0</ejb-name>
+      </entity>
+
+      <entity id="entity1-id">
+      
+         <description>en-entity1-desc</description>
+         <description xml:lang="fr">fr-entity1-desc</description>
+         <description xml:lang="de">de-entity1-desc</description>
+         <display-name>en-entity1-disp</display-name>
+         <display-name xml:lang="fr">fr-entity1-disp</display-name>
+         <display-name xml:lang="de">de-entity1-disp</display-name>
+         <icon id="en-entity1-icon-id">
+            <small-icon>en-entity1-small-icon</small-icon>
+            <large-icon>en-entity1-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="fr" id="fr-entity1-icon-id">
+            <small-icon>fr-entity1-small-icon</small-icon>
+            <large-icon>fr-entity1-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="de" id="de-entity1-icon-id">
+            <small-icon>de-entity1-small-icon</small-icon>
+            <large-icon>de-entity1-large-icon</large-icon>
+         </icon>
+
+         <ejb-name>entity1</ejb-name>
+
+         <mapped-name>entity1-mapped-name</mapped-name>
+         <home>entity1Home</home>
+         <remote>entity1Remote</remote>
+         <local-home>entity1LocalHome</local-home>
+         <local>entity1Local</local>
+         <ejb-class>entity1EjbClass</ejb-class>
+         <persistence-type>Container</persistence-type>
+         <prim-key-class>entity1PrimKeyClass</prim-key-class>
+         <reentrant>true</reentrant>
+         <cmp-version>2.x</cmp-version>
+         <abstract-schema-name>entity1AbstractSchemaName</abstract-schema-name>
+         <cmp-field id="entity1CmpField1-id">
+            <field-name>entity1CmpField1</field-name>
+         </cmp-field>
+         <cmp-field id="entity1CmpField2-id">
+            <field-name>entity1CmpField2</field-name>
+         </cmp-field>
+         <primkey-field>entity1PrimKeyField</primkey-field>
+
+         <env-entry id="entity1EnvEntry1-id">
+            <description>en-entity1EnvEntry1-desc</description>
+            <description xml:lang="fr">fr-entity1EnvEntry1-desc</description>
+            <description xml:lang="de">de-entity1EnvEntry1-desc</description>
+            <env-entry-name>entity1EnvEntry1Name</env-entry-name>
+            <env-entry-type>entity1EnvEntry1Type</env-entry-type>
+            <env-entry-value>entity1EnvEntry1Value</env-entry-value>
+            <mapped-name>entity1EnvEntry1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity1EnvEntry1Injection1Class</injection-target-class>
+               <injection-target-name>entity1EnvEntry1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity1EnvEntry1Injection2Class</injection-target-class>
+               <injection-target-name>entity1EnvEntry1Injection2Name</injection-target-name>
+            </injection-target>
+         </env-entry>
+         <env-entry id="entity1EnvEntry2-id">
+            <description>en-entity1EnvEntry2-desc</description>
+            <description xml:lang="fr">fr-entity1EnvEntry2-desc</description>
+            <description xml:lang="de">de-entity1EnvEntry2-desc</description>
+            <env-entry-name>entity1EnvEntry2Name</env-entry-name>
+            <env-entry-type>entity1EnvEntry2Type</env-entry-type>
+            <env-entry-value>entity1EnvEntry2Value</env-entry-value>
+            <mapped-name>entity1EnvEntry2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity1EnvEntry2Injection1Class</injection-target-class>
+               <injection-target-name>entity1EnvEntry2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity1EnvEntry2Injection2Class</injection-target-class>
+               <injection-target-name>entity1EnvEntry2Injection2Name</injection-target-name>
+            </injection-target>
+         </env-entry>
+         <ejb-ref id="entity1EjbRef1-id">
+            <description>en-entity1EjbRef1-desc</description>
+            <description xml:lang="fr">fr-entity1EjbRef1-desc</description>
+            <description xml:lang="de">de-entity1EjbRef1-desc</description>
+            <ejb-ref-name>entity1EjbRef1Name</ejb-ref-name>
+            <ejb-ref-type>Session</ejb-ref-type>
+            <home>entity1EjbRef1Home</home>
+            <remote>entity1EjbRef1Remote</remote>
+            <ejb-link>entity1EjbRef1EjbLink</ejb-link>
+            <mapped-name>entity1EjbRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity1EjbRef1Injection1Class</injection-target-class>
+               <injection-target-name>entity1EjbRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity1EjbRef1Injection2Class</injection-target-class>
+               <injection-target-name>entity1EjbRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </ejb-ref>
+         <ejb-ref id="entity1EjbRef2-id">
+            <description>en-entity1EjbRef2-desc</description>
+            <description xml:lang="fr">fr-entity1EjbRef2-desc</description>
+            <description xml:lang="de">de-entity1EjbRef2-desc</description>
+            <ejb-ref-name>entity1EjbRef2Name</ejb-ref-name>
+            <ejb-ref-type>Entity</ejb-ref-type>
+            <home>entity1EjbRef2Home</home>
+            <remote>entity1EjbRef2Remote</remote>
+            <ejb-link>entity1EjbRef2EjbLink</ejb-link>
+            <mapped-name>entity1EjbRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity1EjbRef2Injection1Class</injection-target-class>
+               <injection-target-name>entity1EjbRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity1EjbRef2Injection2Class</injection-target-class>
+               <injection-target-name>entity1EjbRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </ejb-ref>
+         <ejb-local-ref id="entity1EjbLocalRef1-id">
+            <description>en-entity1EjbLocalRef1-desc</description>
+            <description xml:lang="fr">fr-entity1EjbLocalRef1-desc</description>
+            <description xml:lang="de">de-entity1EjbLocalRef1-desc</description>
+            <ejb-ref-name>entity1EjbLocalRef1Name</ejb-ref-name>
+            <ejb-ref-type>Session</ejb-ref-type>
+            <local-home>entity1EjbLocalRef1LocalHome</local-home>
+            <local>entity1EjbLocalRef1Local</local>
+            <ejb-link>entity1EjbLocalRef1EjbLink</ejb-link>
+            <mapped-name>entity1EjbLocalRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity1EjbLocalRef1Injection1Class</injection-target-class>
+               <injection-target-name>entity1EjbLocalRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity1EjbLocalRef1Injection2Class</injection-target-class>
+               <injection-target-name>entity1EjbLocalRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </ejb-local-ref>
+         <ejb-local-ref id="entity1EjbLocalRef2-id">
+            <description>en-entity1EjbLocalRef2-desc</description>
+            <description xml:lang="fr">fr-entity1EjbLocalRef2-desc</description>
+            <description xml:lang="de">de-entity1EjbLocalRef2-desc</description>
+            <ejb-ref-name>entity1EjbLocalRef2Name</ejb-ref-name>
+            <ejb-ref-type>Entity</ejb-ref-type>
+            <local-home>entity1EjbLocalRef2LocalHome</local-home>
+            <local>entity1EjbLocalRef2Local</local>
+            <ejb-link>entity1EjbLocalRef2EjbLink</ejb-link>
+            <mapped-name>entity1EjbLocalRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity1EjbLocalRef2Injection1Class</injection-target-class>
+               <injection-target-name>entity1EjbLocalRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity1EjbLocalRef2Injection2Class</injection-target-class>
+               <injection-target-name>entity1EjbLocalRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </ejb-local-ref>
+         
+         <!-- TODO service-refGroup -->
+
+         <resource-ref id="entity1ResourceRef1-id">
+            <description>en-entity1ResourceRef1-desc</description>
+            <description xml:lang="fr">fr-entity1ResourceRef1-desc</description>
+            <description xml:lang="de">de-entity1ResourceRef1-desc</description>
+            <res-ref-name>entity1ResourceRef1Name</res-ref-name>
+            <res-type>entity1ResourceRef1Type</res-type>
+            <res-auth>Application</res-auth>
+            <res-sharing-scope>Shareable</res-sharing-scope>
+            <mapped-name>entity1ResourceRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity1ResourceRef1Injection1Class</injection-target-class>
+               <injection-target-name>entity1ResourceRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity1ResourceRef1Injection2Class</injection-target-class>
+               <injection-target-name>entity1ResourceRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </resource-ref>
+         <resource-ref id="entity1ResourceRef2-id">
+            <description>en-entity1ResourceRef2-desc</description>
+            <description xml:lang="fr">fr-entity1ResourceRef2-desc</description>
+            <description xml:lang="de">de-entity1ResourceRef2-desc</description>
+            <res-ref-name>entity1ResourceRef2Name</res-ref-name>
+            <res-type>entity1ResourceRef2Type</res-type>
+            <res-auth>Container</res-auth>
+            <res-sharing-scope>Unshareable</res-sharing-scope>
+            <mapped-name>entity1ResourceRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity1ResourceRef2Injection1Class</injection-target-class>
+               <injection-target-name>entity1ResourceRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity1ResourceRef2Injection2Class</injection-target-class>
+               <injection-target-name>entity1ResourceRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </resource-ref>
+         <resource-env-ref id="entity1ResourceEnvRef1-id">
+            <description>en-entity1ResourceEnvRef1-desc</description>
+            <description xml:lang="fr">fr-entity1ResourceEnvRef1-desc</description>
+            <description xml:lang="de">de-entity1ResourceEnvRef1-desc</description>
+            <resource-env-ref-name>entity1ResourceEnvRef1Name</resource-env-ref-name>
+            <resource-env-ref-type>entity1ResourceEnvRef1Type</resource-env-ref-type>
+            <mapped-name>entity1ResourceEnvRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity1ResourceEnvRef1Injection1Class</injection-target-class>
+               <injection-target-name>entity1ResourceEnvRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity1ResourceEnvRef1Injection2Class</injection-target-class>
+               <injection-target-name>entity1ResourceEnvRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </resource-env-ref>
+         <resource-env-ref id="entity1ResourceEnvRef2-id">
+            <description>en-entity1ResourceEnvRef2-desc</description>
+            <description xml:lang="fr">fr-entity1ResourceEnvRef2-desc</description>
+            <description xml:lang="de">de-entity1ResourceEnvRef2-desc</description>
+            <resource-env-ref-name>entity1ResourceEnvRef2Name</resource-env-ref-name>
+            <resource-env-ref-type>entity1ResourceEnvRef2Type</resource-env-ref-type>
+            <mapped-name>entity1ResourceEnvRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity1ResourceEnvRef2Injection1Class</injection-target-class>
+               <injection-target-name>entity1ResourceEnvRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity1ResourceEnvRef2Injection2Class</injection-target-class>
+               <injection-target-name>entity1ResourceEnvRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </resource-env-ref>
+         <message-destination-ref id="entity1MessageDestinationRef1-id">
+            <description>en-entity1MessageDestinationRef1-desc</description>
+            <description xml:lang="fr">fr-entity1MessageDestinationRef1-desc</description>
+            <description xml:lang="de">de-entity1MessageDestinationRef1-desc</description>
+            <message-destination-ref-name>entity1MessageDestinationRef1Name</message-destination-ref-name>
+            <message-destination-type>entity1MessageDestinationRef1Type</message-destination-type>
+            <message-destination-usage>Consumes</message-destination-usage>
+            <message-destination-link>entity1MessageDestinationRef1Link</message-destination-link>
+            <mapped-name>entity1MessageDestinationRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity1MessageDestinationRef1Injection1Class</injection-target-class>
+               <injection-target-name>entity1MessageDestinationRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity1MessageDestinationRef1Injection2Class</injection-target-class>
+               <injection-target-name>entity1MessageDestinationRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </message-destination-ref>
+         <message-destination-ref id="entity1MessageDestinationRef2-id">
+            <description>en-entity1MessageDestinationRef2-desc</description>
+            <description xml:lang="fr">fr-entity1MessageDestinationRef2-desc</description>
+            <description xml:lang="de">de-entity1MessageDestinationRef2-desc</description>
+            <message-destination-ref-name>entity1MessageDestinationRef2Name</message-destination-ref-name>
+            <message-destination-type>entity1MessageDestinationRef2Type</message-destination-type>
+            <message-destination-usage>Produces</message-destination-usage>
+            <message-destination-link>entity1MessageDestinationRef2Link</message-destination-link>
+            <mapped-name>entity1MessageDestinationRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity1MessageDestinationRef2Injection1Class</injection-target-class>
+               <injection-target-name>entity1MessageDestinationRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity1MessageDestinationRef2Injection2Class</injection-target-class>
+               <injection-target-name>entity1MessageDestinationRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </message-destination-ref>
+         <message-destination-ref id="entity1MessageDestinationRef3-id">
+            <description>en-entity1MessageDestinationRef3-desc</description>
+            <description xml:lang="fr">fr-entity1MessageDestinationRef3-desc</description>
+            <description xml:lang="de">de-entity1MessageDestinationRef3-desc</description>
+            <message-destination-ref-name>entity1MessageDestinationRef3Name</message-destination-ref-name>
+            <message-destination-type>entity1MessageDestinationRef3Type</message-destination-type>
+            <message-destination-usage>ConsumesProduces</message-destination-usage>
+            <message-destination-link>entity1MessageDestinationRef3Link</message-destination-link>
+            <mapped-name>entity1MessageDestinationRef3MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity1MessageDestinationRef3Injection1Class</injection-target-class>
+               <injection-target-name>entity1MessageDestinationRef3Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity1MessageDestinationRef3Injection2Class</injection-target-class>
+               <injection-target-name>entity1MessageDestinationRef3Injection2Name</injection-target-name>
+            </injection-target>
+         </message-destination-ref>
+         <persistence-context-ref id="entity1PersistenceContextRef1-id">
+            <description>en-entity1PersistenceContextRef1-desc</description>
+            <description xml:lang="fr">fr-entity1PersistenceContextRef1-desc</description>
+            <description xml:lang="de">de-entity1PersistenceContextRef1-desc</description>
+            <persistence-context-ref-name>entity1PersistenceContextRef1Name</persistence-context-ref-name>
+            <persistence-unit-name>entity1PersistenceContextRef1Unit</persistence-unit-name>
+            <persistence-context-type>Transaction</persistence-context-type>
+            <persistence-property id="entity1PersistenceContextRef1Property1-id">
+               <name>entity1PersistenceContextRef1Property1Name</name>
+               <value>entity1PersistenceContextRef1Property1Value</value>
+            </persistence-property>
+            <persistence-property id="entity1PersistenceContextRef1Property2-id">
+               <name>entity1PersistenceContextRef1Property2Name</name>
+               <value>entity1PersistenceContextRef1Property2Value</value>
+            </persistence-property>
+            <mapped-name>entity1PersistenceContextRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity1PersistenceContextRef1Injection1Class</injection-target-class>
+               <injection-target-name>entity1PersistenceContextRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity1PersistenceContextRef1Injection2Class</injection-target-class>
+               <injection-target-name>entity1PersistenceContextRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </persistence-context-ref>
+         <persistence-context-ref id="entity1PersistenceContextRef2-id">
+            <description>en-entity1PersistenceContextRef2-desc</description>
+            <description xml:lang="fr">fr-entity1PersistenceContextRef2-desc</description>
+            <description xml:lang="de">de-entity1PersistenceContextRef2-desc</description>
+            <persistence-context-ref-name>entity1PersistenceContextRef2Name</persistence-context-ref-name>
+            <persistence-unit-name>entity1PersistenceContextRef2Unit</persistence-unit-name>
+            <persistence-context-type>Extended</persistence-context-type>
+            <persistence-property id="entity1PersistenceContextRef2Property1-id">
+               <name>entity1PersistenceContextRef2Property1Name</name>
+               <value>entity1PersistenceContextRef2Property1Value</value>
+            </persistence-property>
+            <persistence-property id="entity1PersistenceContextRef2Property2-id">
+               <name>entity1PersistenceContextRef2Property2Name</name>
+               <value>entity1PersistenceContextRef2Property2Value</value>
+            </persistence-property>
+            <mapped-name>entity1PersistenceContextRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity1PersistenceContextRef2Injection1Class</injection-target-class>
+               <injection-target-name>entity1PersistenceContextRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity1PersistenceContextRef2Injection2Class</injection-target-class>
+               <injection-target-name>entity1PersistenceContextRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </persistence-context-ref>
+         <persistence-unit-ref id="entity1PersistenceUnitRef1-id">
+            <description>en-entity1PersistenceUnitRef1-desc</description>
+            <description xml:lang="fr">fr-entity1PersistenceUnitRef1-desc</description>
+            <description xml:lang="de">de-entity1PersistenceUnitRef1-desc</description>
+            <persistence-unit-ref-name>entity1PersistenceUnitRef1Name</persistence-unit-ref-name>
+            <persistence-unit-name>entity1PersistenceUnitRef1Unit</persistence-unit-name>
+            <mapped-name>entity1PersistenceUnitRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity1PersistenceUnitRef1Injection1Class</injection-target-class>
+               <injection-target-name>entity1PersistenceUnitRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity1PersistenceUnitRef1Injection2Class</injection-target-class>
+               <injection-target-name>entity1PersistenceUnitRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </persistence-unit-ref>
+         <persistence-unit-ref id="entity1PersistenceUnitRef2-id">
+            <description>en-entity1PersistenceUnitRef2-desc</description>
+            <description xml:lang="fr">fr-entity1PersistenceUnitRef2-desc</description>
+            <description xml:lang="de">de-entity1PersistenceUnitRef2-desc</description>
+            <persistence-unit-ref-name>entity1PersistenceUnitRef2Name</persistence-unit-ref-name>
+            <persistence-unit-name>entity1PersistenceUnitRef2Unit</persistence-unit-name>
+            <mapped-name>entity1PersistenceUnitRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity1PersistenceUnitRef2Injection1Class</injection-target-class>
+               <injection-target-name>entity1PersistenceUnitRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity1PersistenceUnitRef2Injection2Class</injection-target-class>
+               <injection-target-name>entity1PersistenceUnitRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </persistence-unit-ref>
+         <post-construct>
+            <lifecycle-callback-class>entity1PostConstruct1Class</lifecycle-callback-class>
+            <lifecycle-callback-method>entity1PostConstruct1Method</lifecycle-callback-method>
+         </post-construct>
+         <post-construct>
+            <lifecycle-callback-class>entity1PostConstruct2Class</lifecycle-callback-class>
+            <lifecycle-callback-method>entity1PostConstruct2Method</lifecycle-callback-method>
+         </post-construct>
+         <pre-destroy>
+            <lifecycle-callback-class>entity1PreDestroy1Class</lifecycle-callback-class>
+            <lifecycle-callback-method>entity1PreDestroy1Method</lifecycle-callback-method>
+         </pre-destroy>
+         <pre-destroy>
+            <lifecycle-callback-class>entity1PreDestroy2Class</lifecycle-callback-class>
+            <lifecycle-callback-method>entity1PreDestroy2Method</lifecycle-callback-method>
+         </pre-destroy>
+         
+         <security-role-ref id="entity1SecurityRoleRef1-id">
+            <description>en-entity1SecurityRoleRef1-desc</description>
+            <description xml:lang="fr">fr-entity1SecurityRoleRef1-desc</description>
+            <description xml:lang="de">de-entity1SecurityRoleRef1-desc</description>
+            <role-name>entity1SecurityRoleRef1RoleName</role-name>
+            <role-link>entity1SecurityRoleRef1RoleLink</role-link>
+         </security-role-ref>
+         <security-role-ref id="entity1SecurityRoleRef2-id">
+            <description>en-entity1SecurityRoleRef2-desc</description>
+            <description xml:lang="fr">fr-entity1SecurityRoleRef2-desc</description>
+            <description xml:lang="de">de-entity1SecurityRoleRef2-desc</description>
+            <role-name>entity1SecurityRoleRef2RoleName</role-name>
+            <role-link>entity1SecurityRoleRef2RoleLink</role-link>
+         </security-role-ref>
+         <security-identity id="entity1SecurityIdentity-id">
+            <description>en-entity1SecurityIdentity-desc</description>
+            <description xml:lang="fr">fr-entity1SecurityIdentity-desc</description>
+            <description xml:lang="de">de-entity1SecurityIdentity-desc</description>
+            <use-caller-identity id="entity1SecurityIdentityUseCallerIdentity-id"/>
+            <run-as id="entity1SecurityIdentityRunAs-id">
+               <description>en-entity1SecurityIdentityRunAs-desc</description>
+               <description xml:lang="fr">fr-entity1SecurityIdentityRunAs-desc</description>
+               <description xml:lang="de">de-entity1SecurityIdentityRunAs-desc</description>
+               <role-name>entity1SecurityIdentityRunAsRoleName</role-name>
+            </run-as>
+         </security-identity>
+         <query id="entity1Query1-id">
+            <!-- TODO description>en-entity1Query1-desc</description -->
+            <query-method id="entity1Query1QueryMethod-id">
+               <method-name>entity1Query1QueryMethod</method-name>
+               <method-params>
+                  <method-param>entity1Query1QueryMethodParam1</method-param>
+                  <method-param>entity1Query1QueryMethodParam2</method-param>
+               </method-params>
+            </query-method>
+            <result-type-mapping>Local</result-type-mapping>
+            <ejb-ql>entity1Query1EjbQL</ejb-ql>    
+         </query>
+         <query id="entity1Query2-id">
+            <!-- TODO description>en-entity1Query2-desc</description -->
+            <query-method id="entity1Query2QueryMethod-id">
+               <method-name>entity1Query2QueryMethod</method-name>
+               <method-params>
+                  <method-param>entity1Query2QueryMethodParam1</method-param>
+                  <method-param>entity1Query2QueryMethodParam2</method-param>
+               </method-params>
+            </query-method>
+            <result-type-mapping>Remote</result-type-mapping>
+            <ejb-ql>entity1Query2EjbQL</ejb-ql>    
+         </query>
+         
+      </entity>
+
+      <entity id="entity2-id">
+      
+         <description>en-entity2-desc</description>
+         <description xml:lang="fr">fr-entity2-desc</description>
+         <description xml:lang="de">de-entity2-desc</description>
+         <display-name>en-entity2-disp</display-name>
+         <display-name xml:lang="fr">fr-entity2-disp</display-name>
+         <display-name xml:lang="de">de-entity2-disp</display-name>
+         <icon id="en-entity2-icon-id">
+            <small-icon>en-entity2-small-icon</small-icon>
+            <large-icon>en-entity2-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="fr" id="fr-entity2-icon-id">
+            <small-icon>fr-entity2-small-icon</small-icon>
+            <large-icon>fr-entity2-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="de" id="de-entity2-icon-id">
+            <small-icon>de-entity2-small-icon</small-icon>
+            <large-icon>de-entity2-large-icon</large-icon>
+         </icon>
+
+         <ejb-name>entity2</ejb-name>
+
+         <mapped-name>entity2-mapped-name</mapped-name>
+         <home>entity2Home</home>
+         <remote>entity2Remote</remote>
+         <local-home>entity2LocalHome</local-home>
+         <local>entity2Local</local>
+         <ejb-class>entity2EjbClass</ejb-class>
+         <persistence-type>Container</persistence-type>
+         <prim-key-class>entity2PrimKeyClass</prim-key-class>
+         <reentrant>true</reentrant>
+         <cmp-version>2.x</cmp-version>
+         <abstract-schema-name>entity2AbstractSchemaName</abstract-schema-name>
+         <cmp-field id="entity2CmpField1-id">
+            <field-name>entity2CmpField1</field-name>
+         </cmp-field>
+         <cmp-field id="entity2CmpField2-id">
+            <field-name>entity2CmpField2</field-name>
+         </cmp-field>
+         <primkey-field>entity2PrimKeyField</primkey-field>
+
+         <env-entry id="entity2EnvEntry1-id">
+            <description>en-entity2EnvEntry1-desc</description>
+            <description xml:lang="fr">fr-entity2EnvEntry1-desc</description>
+            <description xml:lang="de">de-entity2EnvEntry1-desc</description>
+            <env-entry-name>entity2EnvEntry1Name</env-entry-name>
+            <env-entry-type>entity2EnvEntry1Type</env-entry-type>
+            <env-entry-value>entity2EnvEntry1Value</env-entry-value>
+            <mapped-name>entity2EnvEntry1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity2EnvEntry1Injection1Class</injection-target-class>
+               <injection-target-name>entity2EnvEntry1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity2EnvEntry1Injection2Class</injection-target-class>
+               <injection-target-name>entity2EnvEntry1Injection2Name</injection-target-name>
+            </injection-target>
+         </env-entry>
+         <env-entry id="entity2EnvEntry2-id">
+            <description>en-entity2EnvEntry2-desc</description>
+            <description xml:lang="fr">fr-entity2EnvEntry2-desc</description>
+            <description xml:lang="de">de-entity2EnvEntry2-desc</description>
+            <env-entry-name>entity2EnvEntry2Name</env-entry-name>
+            <env-entry-type>entity2EnvEntry2Type</env-entry-type>
+            <env-entry-value>entity2EnvEntry2Value</env-entry-value>
+            <mapped-name>entity2EnvEntry2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity2EnvEntry2Injection1Class</injection-target-class>
+               <injection-target-name>entity2EnvEntry2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity2EnvEntry2Injection2Class</injection-target-class>
+               <injection-target-name>entity2EnvEntry2Injection2Name</injection-target-name>
+            </injection-target>
+         </env-entry>
+         <ejb-ref id="entity2EjbRef1-id">
+            <description>en-entity2EjbRef1-desc</description>
+            <description xml:lang="fr">fr-entity2EjbRef1-desc</description>
+            <description xml:lang="de">de-entity2EjbRef1-desc</description>
+            <ejb-ref-name>entity2EjbRef1Name</ejb-ref-name>
+            <ejb-ref-type>Session</ejb-ref-type>
+            <home>entity2EjbRef1Home</home>
+            <remote>entity2EjbRef1Remote</remote>
+            <ejb-link>entity2EjbRef1EjbLink</ejb-link>
+            <mapped-name>entity2EjbRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity2EjbRef1Injection1Class</injection-target-class>
+               <injection-target-name>entity2EjbRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity2EjbRef1Injection2Class</injection-target-class>
+               <injection-target-name>entity2EjbRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </ejb-ref>
+         <ejb-ref id="entity2EjbRef2-id">
+            <description>en-entity2EjbRef2-desc</description>
+            <description xml:lang="fr">fr-entity2EjbRef2-desc</description>
+            <description xml:lang="de">de-entity2EjbRef2-desc</description>
+            <ejb-ref-name>entity2EjbRef2Name</ejb-ref-name>
+            <ejb-ref-type>Entity</ejb-ref-type>
+            <home>entity2EjbRef2Home</home>
+            <remote>entity2EjbRef2Remote</remote>
+            <ejb-link>entity2EjbRef2EjbLink</ejb-link>
+            <mapped-name>entity2EjbRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity2EjbRef2Injection1Class</injection-target-class>
+               <injection-target-name>entity2EjbRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity2EjbRef2Injection2Class</injection-target-class>
+               <injection-target-name>entity2EjbRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </ejb-ref>
+         <ejb-local-ref id="entity2EjbLocalRef1-id">
+            <description>en-entity2EjbLocalRef1-desc</description>
+            <description xml:lang="fr">fr-entity2EjbLocalRef1-desc</description>
+            <description xml:lang="de">de-entity2EjbLocalRef1-desc</description>
+            <ejb-ref-name>entity2EjbLocalRef1Name</ejb-ref-name>
+            <ejb-ref-type>Session</ejb-ref-type>
+            <local-home>entity2EjbLocalRef1LocalHome</local-home>
+            <local>entity2EjbLocalRef1Local</local>
+            <ejb-link>entity2EjbLocalRef1EjbLink</ejb-link>
+            <mapped-name>entity2EjbLocalRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity2EjbLocalRef1Injection1Class</injection-target-class>
+               <injection-target-name>entity2EjbLocalRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity2EjbLocalRef1Injection2Class</injection-target-class>
+               <injection-target-name>entity2EjbLocalRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </ejb-local-ref>
+         <ejb-local-ref id="entity2EjbLocalRef2-id">
+            <description>en-entity2EjbLocalRef2-desc</description>
+            <description xml:lang="fr">fr-entity2EjbLocalRef2-desc</description>
+            <description xml:lang="de">de-entity2EjbLocalRef2-desc</description>
+            <ejb-ref-name>entity2EjbLocalRef2Name</ejb-ref-name>
+            <ejb-ref-type>Entity</ejb-ref-type>
+            <local-home>entity2EjbLocalRef2LocalHome</local-home>
+            <local>entity2EjbLocalRef2Local</local>
+            <ejb-link>entity2EjbLocalRef2EjbLink</ejb-link>
+            <mapped-name>entity2EjbLocalRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity2EjbLocalRef2Injection1Class</injection-target-class>
+               <injection-target-name>entity2EjbLocalRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity2EjbLocalRef2Injection2Class</injection-target-class>
+               <injection-target-name>entity2EjbLocalRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </ejb-local-ref>
+         
+         <!-- TODO service-refGroup -->
+
+         <resource-ref id="entity2ResourceRef1-id">
+            <description>en-entity2ResourceRef1-desc</description>
+            <description xml:lang="fr">fr-entity2ResourceRef1-desc</description>
+            <description xml:lang="de">de-entity2ResourceRef1-desc</description>
+            <res-ref-name>entity2ResourceRef1Name</res-ref-name>
+            <res-type>entity2ResourceRef1Type</res-type>
+            <res-auth>Application</res-auth>
+            <res-sharing-scope>Shareable</res-sharing-scope>
+            <mapped-name>entity2ResourceRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity2ResourceRef1Injection1Class</injection-target-class>
+               <injection-target-name>entity2ResourceRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity2ResourceRef1Injection2Class</injection-target-class>
+               <injection-target-name>entity2ResourceRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </resource-ref>
+         <resource-ref id="entity2ResourceRef2-id">
+            <description>en-entity2ResourceRef2-desc</description>
+            <description xml:lang="fr">fr-entity2ResourceRef2-desc</description>
+            <description xml:lang="de">de-entity2ResourceRef2-desc</description>
+            <res-ref-name>entity2ResourceRef2Name</res-ref-name>
+            <res-type>entity2ResourceRef2Type</res-type>
+            <res-auth>Container</res-auth>
+            <res-sharing-scope>Unshareable</res-sharing-scope>
+            <mapped-name>entity2ResourceRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity2ResourceRef2Injection1Class</injection-target-class>
+               <injection-target-name>entity2ResourceRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity2ResourceRef2Injection2Class</injection-target-class>
+               <injection-target-name>entity2ResourceRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </resource-ref>
+         <resource-env-ref id="entity2ResourceEnvRef1-id">
+            <description>en-entity2ResourceEnvRef1-desc</description>
+            <description xml:lang="fr">fr-entity2ResourceEnvRef1-desc</description>
+            <description xml:lang="de">de-entity2ResourceEnvRef1-desc</description>
+            <resource-env-ref-name>entity2ResourceEnvRef1Name</resource-env-ref-name>
+            <resource-env-ref-type>entity2ResourceEnvRef1Type</resource-env-ref-type>
+            <mapped-name>entity2ResourceEnvRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity2ResourceEnvRef1Injection1Class</injection-target-class>
+               <injection-target-name>entity2ResourceEnvRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity2ResourceEnvRef1Injection2Class</injection-target-class>
+               <injection-target-name>entity2ResourceEnvRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </resource-env-ref>
+         <resource-env-ref id="entity2ResourceEnvRef2-id">
+            <description>en-entity2ResourceEnvRef2-desc</description>
+            <description xml:lang="fr">fr-entity2ResourceEnvRef2-desc</description>
+            <description xml:lang="de">de-entity2ResourceEnvRef2-desc</description>
+            <resource-env-ref-name>entity2ResourceEnvRef2Name</resource-env-ref-name>
+            <resource-env-ref-type>entity2ResourceEnvRef2Type</resource-env-ref-type>
+            <mapped-name>entity2ResourceEnvRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity2ResourceEnvRef2Injection1Class</injection-target-class>
+               <injection-target-name>entity2ResourceEnvRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity2ResourceEnvRef2Injection2Class</injection-target-class>
+               <injection-target-name>entity2ResourceEnvRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </resource-env-ref>
+         <message-destination-ref id="entity2MessageDestinationRef1-id">
+            <description>en-entity2MessageDestinationRef1-desc</description>
+            <description xml:lang="fr">fr-entity2MessageDestinationRef1-desc</description>
+            <description xml:lang="de">de-entity2MessageDestinationRef1-desc</description>
+            <message-destination-ref-name>entity2MessageDestinationRef1Name</message-destination-ref-name>
+            <message-destination-type>entity2MessageDestinationRef1Type</message-destination-type>
+            <message-destination-usage>Consumes</message-destination-usage>
+            <message-destination-link>entity2MessageDestinationRef1Link</message-destination-link>
+            <mapped-name>entity2MessageDestinationRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity2MessageDestinationRef1Injection1Class</injection-target-class>
+               <injection-target-name>entity2MessageDestinationRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity2MessageDestinationRef1Injection2Class</injection-target-class>
+               <injection-target-name>entity2MessageDestinationRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </message-destination-ref>
+         <message-destination-ref id="entity2MessageDestinationRef2-id">
+            <description>en-entity2MessageDestinationRef2-desc</description>
+            <description xml:lang="fr">fr-entity2MessageDestinationRef2-desc</description>
+            <description xml:lang="de">de-entity2MessageDestinationRef2-desc</description>
+            <message-destination-ref-name>entity2MessageDestinationRef2Name</message-destination-ref-name>
+            <message-destination-type>entity2MessageDestinationRef2Type</message-destination-type>
+            <message-destination-usage>Produces</message-destination-usage>
+            <message-destination-link>entity2MessageDestinationRef2Link</message-destination-link>
+            <mapped-name>entity2MessageDestinationRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity2MessageDestinationRef2Injection1Class</injection-target-class>
+               <injection-target-name>entity2MessageDestinationRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity2MessageDestinationRef2Injection2Class</injection-target-class>
+               <injection-target-name>entity2MessageDestinationRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </message-destination-ref>
+         <message-destination-ref id="entity2MessageDestinationRef3-id">
+            <description>en-entity2MessageDestinationRef3-desc</description>
+            <description xml:lang="fr">fr-entity2MessageDestinationRef3-desc</description>
+            <description xml:lang="de">de-entity2MessageDestinationRef3-desc</description>
+            <message-destination-ref-name>entity2MessageDestinationRef3Name</message-destination-ref-name>
+            <message-destination-type>entity2MessageDestinationRef3Type</message-destination-type>
+            <message-destination-usage>ConsumesProduces</message-destination-usage>
+            <message-destination-link>entity2MessageDestinationRef3Link</message-destination-link>
+            <mapped-name>entity2MessageDestinationRef3MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity2MessageDestinationRef3Injection1Class</injection-target-class>
+               <injection-target-name>entity2MessageDestinationRef3Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity2MessageDestinationRef3Injection2Class</injection-target-class>
+               <injection-target-name>entity2MessageDestinationRef3Injection2Name</injection-target-name>
+            </injection-target>
+         </message-destination-ref>
+         <persistence-context-ref id="entity2PersistenceContextRef1-id">
+            <description>en-entity2PersistenceContextRef1-desc</description>
+            <description xml:lang="fr">fr-entity2PersistenceContextRef1-desc</description>
+            <description xml:lang="de">de-entity2PersistenceContextRef1-desc</description>
+            <persistence-context-ref-name>entity2PersistenceContextRef1Name</persistence-context-ref-name>
+            <persistence-unit-name>entity2PersistenceContextRef1Unit</persistence-unit-name>
+            <persistence-context-type>Transaction</persistence-context-type>
+            <persistence-property id="entity2PersistenceContextRef1Property1-id">
+               <name>entity2PersistenceContextRef1Property1Name</name>
+               <value>entity2PersistenceContextRef1Property1Value</value>
+            </persistence-property>
+            <persistence-property id="entity2PersistenceContextRef1Property2-id">
+               <name>entity2PersistenceContextRef1Property2Name</name>
+               <value>entity2PersistenceContextRef1Property2Value</value>
+            </persistence-property>
+            <mapped-name>entity2PersistenceContextRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity2PersistenceContextRef1Injection1Class</injection-target-class>
+               <injection-target-name>entity2PersistenceContextRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity2PersistenceContextRef1Injection2Class</injection-target-class>
+               <injection-target-name>entity2PersistenceContextRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </persistence-context-ref>
+         <persistence-context-ref id="entity2PersistenceContextRef2-id">
+            <description>en-entity2PersistenceContextRef2-desc</description>
+            <description xml:lang="fr">fr-entity2PersistenceContextRef2-desc</description>
+            <description xml:lang="de">de-entity2PersistenceContextRef2-desc</description>
+            <persistence-context-ref-name>entity2PersistenceContextRef2Name</persistence-context-ref-name>
+            <persistence-unit-name>entity2PersistenceContextRef2Unit</persistence-unit-name>
+            <persistence-context-type>Extended</persistence-context-type>
+            <persistence-property id="entity2PersistenceContextRef2Property1-id">
+               <name>entity2PersistenceContextRef2Property1Name</name>
+               <value>entity2PersistenceContextRef2Property1Value</value>
+            </persistence-property>
+            <persistence-property id="entity2PersistenceContextRef2Property2-id">
+               <name>entity2PersistenceContextRef2Property2Name</name>
+               <value>entity2PersistenceContextRef2Property2Value</value>
+            </persistence-property>
+            <mapped-name>entity2PersistenceContextRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity2PersistenceContextRef2Injection1Class</injection-target-class>
+               <injection-target-name>entity2PersistenceContextRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity2PersistenceContextRef2Injection2Class</injection-target-class>
+               <injection-target-name>entity2PersistenceContextRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </persistence-context-ref>
+         <persistence-unit-ref id="entity2PersistenceUnitRef1-id">
+            <description>en-entity2PersistenceUnitRef1-desc</description>
+            <description xml:lang="fr">fr-entity2PersistenceUnitRef1-desc</description>
+            <description xml:lang="de">de-entity2PersistenceUnitRef1-desc</description>
+            <persistence-unit-ref-name>entity2PersistenceUnitRef1Name</persistence-unit-ref-name>
+            <persistence-unit-name>entity2PersistenceUnitRef1Unit</persistence-unit-name>
+            <mapped-name>entity2PersistenceUnitRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity2PersistenceUnitRef1Injection1Class</injection-target-class>
+               <injection-target-name>entity2PersistenceUnitRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity2PersistenceUnitRef1Injection2Class</injection-target-class>
+               <injection-target-name>entity2PersistenceUnitRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </persistence-unit-ref>
+         <persistence-unit-ref id="entity2PersistenceUnitRef2-id">
+            <description>en-entity2PersistenceUnitRef2-desc</description>
+            <description xml:lang="fr">fr-entity2PersistenceUnitRef2-desc</description>
+            <description xml:lang="de">de-entity2PersistenceUnitRef2-desc</description>
+            <persistence-unit-ref-name>entity2PersistenceUnitRef2Name</persistence-unit-ref-name>
+            <persistence-unit-name>entity2PersistenceUnitRef2Unit</persistence-unit-name>
+            <mapped-name>entity2PersistenceUnitRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity2PersistenceUnitRef2Injection1Class</injection-target-class>
+               <injection-target-name>entity2PersistenceUnitRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity2PersistenceUnitRef2Injection2Class</injection-target-class>
+               <injection-target-name>entity2PersistenceUnitRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </persistence-unit-ref>
+         <post-construct>
+            <lifecycle-callback-class>entity2PostConstruct1Class</lifecycle-callback-class>
+            <lifecycle-callback-method>entity2PostConstruct1Method</lifecycle-callback-method>
+         </post-construct>
+         <post-construct>
+            <lifecycle-callback-class>entity2PostConstruct2Class</lifecycle-callback-class>
+            <lifecycle-callback-method>entity2PostConstruct2Method</lifecycle-callback-method>
+         </post-construct>
+         <pre-destroy>
+            <lifecycle-callback-class>entity2PreDestroy1Class</lifecycle-callback-class>
+            <lifecycle-callback-method>entity2PreDestroy1Method</lifecycle-callback-method>
+         </pre-destroy>
+         <pre-destroy>
+            <lifecycle-callback-class>entity2PreDestroy2Class</lifecycle-callback-class>
+            <lifecycle-callback-method>entity2PreDestroy2Method</lifecycle-callback-method>
+         </pre-destroy>
+         
+         <security-role-ref id="entity2SecurityRoleRef1-id">
+            <description>en-entity2SecurityRoleRef1-desc</description>
+            <description xml:lang="fr">fr-entity2SecurityRoleRef1-desc</description>
+            <description xml:lang="de">de-entity2SecurityRoleRef1-desc</description>
+            <role-name>entity2SecurityRoleRef1RoleName</role-name>
+            <role-link>entity2SecurityRoleRef1RoleLink</role-link>
+         </security-role-ref>
+         <security-role-ref id="entity2SecurityRoleRef2-id">
+            <description>en-entity2SecurityRoleRef2-desc</description>
+            <description xml:lang="fr">fr-entity2SecurityRoleRef2-desc</description>
+            <description xml:lang="de">de-entity2SecurityRoleRef2-desc</description>
+            <role-name>entity2SecurityRoleRef2RoleName</role-name>
+            <role-link>entity2SecurityRoleRef2RoleLink</role-link>
+         </security-role-ref>
+         <security-identity id="entity2SecurityIdentity-id">
+            <description>en-entity2SecurityIdentity-desc</description>
+            <description xml:lang="fr">fr-entity2SecurityIdentity-desc</description>
+            <description xml:lang="de">de-entity2SecurityIdentity-desc</description>
+            <use-caller-identity id="entity2SecurityIdentityUseCallerIdentity-id"/>
+            <run-as id="entity2SecurityIdentityRunAs-id">
+               <description>en-entity2SecurityIdentityRunAs-desc</description>
+               <description xml:lang="fr">fr-entity2SecurityIdentityRunAs-desc</description>
+               <description xml:lang="de">de-entity2SecurityIdentityRunAs-desc</description>
+               <role-name>entity2SecurityIdentityRunAsRoleName</role-name>
+            </run-as>
+         </security-identity>
+         <query id="entity2Query1-id">
+            <!-- TODO description>en-entity2Query1-desc</description -->
+            <query-method id="entity2Query1QueryMethod-id">
+               <method-name>entity2Query1QueryMethod</method-name>
+               <method-params>
+                  <method-param>entity2Query1QueryMethodParam1</method-param>
+                  <method-param>entity2Query1QueryMethodParam2</method-param>
+               </method-params>
+            </query-method>
+            <result-type-mapping>Local</result-type-mapping>
+            <ejb-ql>entity2Query1EjbQL</ejb-ql>    
+         </query>
+         <query id="entity2Query2-id">
+            <!-- TODO description>en-entity2Query2-desc</description -->
+            <query-method id="entity2Query2QueryMethod-id">
+               <method-name>entity2Query2QueryMethod</method-name>
+               <method-params>
+                  <method-param>entity2Query2QueryMethodParam1</method-param>
+                  <method-param>entity2Query2QueryMethodParam2</method-param>
+               </method-params>
+            </query-method>
+            <result-type-mapping>Remote</result-type-mapping>
+            <ejb-ql>entity2Query2EjbQL</ejb-ql>    
+         </query>
+         
+      </entity>
+
+      <entity>
+         <ejb-name>entity3</ejb-name>
+         <ejb-class>entity3Class</ejb-class>
+         <persistence-type>Bean</persistence-type>
+      </entity>
+
+      <entity>
+         <ejb-name>entity4</ejb-name>
+         <ejb-class>entity4Class</ejb-class>
+         <persistence-type>Container</persistence-type>
+         <prim-key-class>java.lang.Object</prim-key-class>
+         <reentrant>false</reentrant>
+      </entity>
+
+      <entity>
+         <ejb-name>entity5</ejb-name>
+         <ejb-class>entity5Class</ejb-class>
+         <persistence-type>Container</persistence-type>
+         <prim-key-class>java.lang.Object</prim-key-class>
+         <reentrant>false</reentrant>
+         <cmp-version>1.x</cmp-version>
+      </entity>
+
+      <message-driven>
+         <ejb-name>mdb0</ejb-name>
+      </message-driven>
+
+      <message-driven id="mdb1-id">
+      
+         <description>en-mdb1-desc</description>
+         <description xml:lang="fr">fr-mdb1-desc</description>
+         <description xml:lang="de">de-mdb1-desc</description>
+         <display-name>en-mdb1-disp</display-name>
+         <display-name xml:lang="fr">fr-mdb1-disp</display-name>
+         <display-name xml:lang="de">de-mdb1-disp</display-name>
+         <icon id="en-mdb1-icon-id">
+            <small-icon>en-mdb1-small-icon</small-icon>
+            <large-icon>en-mdb1-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="fr" id="fr-mdb1-icon-id">
+            <small-icon>fr-mdb1-small-icon</small-icon>
+            <large-icon>fr-mdb1-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="de" id="de-mdb1-icon-id">
+            <small-icon>de-mdb1-small-icon</small-icon>
+            <large-icon>de-mdb1-large-icon</large-icon>
+         </icon>
+
+         <ejb-name>mdb1</ejb-name>
+
+         <mapped-name>mdb1-mapped-name</mapped-name>
+         <ejb-class>mdb1EjbClass</ejb-class>
+         <messaging-type>mdb1MessagingType</messaging-type>
+         <timeout-method id="mdb1TimeoutMethod-id">
+            <method-name>mdb1TimeoutMethod</method-name>
+            <method-params>
+               <method-param>mdb1TimeoutMethodParam1</method-param>
+               <method-param>mdb1TimeoutMethodParam2</method-param>
+            </method-params>
+         </timeout-method>
+         <transaction-type>Container</transaction-type>
+         <message-destination-type>mdb1MessageDestinationType</message-destination-type>
+         <message-destination-link>mdb1MessageDestinationLink</message-destination-link>
+         <activation-config id="mdb1ActivationConfig-id">
+            <activation-config-property id="mdb1ActivationConfigProperty1-id">
+               <activation-config-property-name>mdb1ActivationConfigProperty1Name</activation-config-property-name>
+               <activation-config-property-value>mdb1ActivationConfigProperty1Value</activation-config-property-value>
+            </activation-config-property>
+            <activation-config-property id="mdb1ActivationConfigProperty2-id">
+               <activation-config-property-name>mdb1ActivationConfigProperty2Name</activation-config-property-name>
+               <activation-config-property-value>mdb1ActivationConfigProperty2Value</activation-config-property-value>
+            </activation-config-property>
+         </activation-config>
+
+         <around-invoke>
+            <class>mdb1AroundInvoke1Class</class>
+            <method-name>mdb1AroundInvoke1Method</method-name>
+         </around-invoke>
+         <around-invoke>
+            <class>mdb1AroundInvoke2Class</class>
+            <method-name>mdb1AroundInvoke2Method</method-name>
+         </around-invoke>
+
+         <env-entry id="mdb1EnvEntry1-id">
+            <description>en-mdb1EnvEntry1-desc</description>
+            <description xml:lang="fr">fr-mdb1EnvEntry1-desc</description>
+            <description xml:lang="de">de-mdb1EnvEntry1-desc</description>
+            <env-entry-name>mdb1EnvEntry1Name</env-entry-name>
+            <env-entry-type>mdb1EnvEntry1Type</env-entry-type>
+            <env-entry-value>mdb1EnvEntry1Value</env-entry-value>
+            <mapped-name>mdb1EnvEntry1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb1EnvEntry1Injection1Class</injection-target-class>
+               <injection-target-name>mdb1EnvEntry1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb1EnvEntry1Injection2Class</injection-target-class>
+               <injection-target-name>mdb1EnvEntry1Injection2Name</injection-target-name>
+            </injection-target>
+         </env-entry>
+         <env-entry id="mdb1EnvEntry2-id">
+            <description>en-mdb1EnvEntry2-desc</description>
+            <description xml:lang="fr">fr-mdb1EnvEntry2-desc</description>
+            <description xml:lang="de">de-mdb1EnvEntry2-desc</description>
+            <env-entry-name>mdb1EnvEntry2Name</env-entry-name>
+            <env-entry-type>mdb1EnvEntry2Type</env-entry-type>
+            <env-entry-value>mdb1EnvEntry2Value</env-entry-value>
+            <mapped-name>mdb1EnvEntry2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb1EnvEntry2Injection1Class</injection-target-class>
+               <injection-target-name>mdb1EnvEntry2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb1EnvEntry2Injection2Class</injection-target-class>
+               <injection-target-name>mdb1EnvEntry2Injection2Name</injection-target-name>
+            </injection-target>
+         </env-entry>
+         <ejb-ref id="mdb1EjbRef1-id">
+            <description>en-mdb1EjbRef1-desc</description>
+            <description xml:lang="fr">fr-mdb1EjbRef1-desc</description>
+            <description xml:lang="de">de-mdb1EjbRef1-desc</description>
+            <ejb-ref-name>mdb1EjbRef1Name</ejb-ref-name>
+            <ejb-ref-type>Session</ejb-ref-type>
+            <home>mdb1EjbRef1Home</home>
+            <remote>mdb1EjbRef1Remote</remote>
+            <ejb-link>mdb1EjbRef1EjbLink</ejb-link>
+            <mapped-name>mdb1EjbRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb1EjbRef1Injection1Class</injection-target-class>
+               <injection-target-name>mdb1EjbRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb1EjbRef1Injection2Class</injection-target-class>
+               <injection-target-name>mdb1EjbRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </ejb-ref>
+         <ejb-ref id="mdb1EjbRef2-id">
+            <description>en-mdb1EjbRef2-desc</description>
+            <description xml:lang="fr">fr-mdb1EjbRef2-desc</description>
+            <description xml:lang="de">de-mdb1EjbRef2-desc</description>
+            <ejb-ref-name>mdb1EjbRef2Name</ejb-ref-name>
+            <ejb-ref-type>Entity</ejb-ref-type>
+            <home>mdb1EjbRef2Home</home>
+            <remote>mdb1EjbRef2Remote</remote>
+            <ejb-link>mdb1EjbRef2EjbLink</ejb-link>
+            <mapped-name>mdb1EjbRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb1EjbRef2Injection1Class</injection-target-class>
+               <injection-target-name>mdb1EjbRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb1EjbRef2Injection2Class</injection-target-class>
+               <injection-target-name>mdb1EjbRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </ejb-ref>
+         <ejb-local-ref id="mdb1EjbLocalRef1-id">
+            <description>en-mdb1EjbLocalRef1-desc</description>
+            <description xml:lang="fr">fr-mdb1EjbLocalRef1-desc</description>
+            <description xml:lang="de">de-mdb1EjbLocalRef1-desc</description>
+            <ejb-ref-name>mdb1EjbLocalRef1Name</ejb-ref-name>
+            <ejb-ref-type>Session</ejb-ref-type>
+            <local-home>mdb1EjbLocalRef1LocalHome</local-home>
+            <local>mdb1EjbLocalRef1Local</local>
+            <ejb-link>mdb1EjbLocalRef1EjbLink</ejb-link>
+            <mapped-name>mdb1EjbLocalRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb1EjbLocalRef1Injection1Class</injection-target-class>
+               <injection-target-name>mdb1EjbLocalRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb1EjbLocalRef1Injection2Class</injection-target-class>
+               <injection-target-name>mdb1EjbLocalRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </ejb-local-ref>
+         <ejb-local-ref id="mdb1EjbLocalRef2-id">
+            <description>en-mdb1EjbLocalRef2-desc</description>
+            <description xml:lang="fr">fr-mdb1EjbLocalRef2-desc</description>
+            <description xml:lang="de">de-mdb1EjbLocalRef2-desc</description>
+            <ejb-ref-name>mdb1EjbLocalRef2Name</ejb-ref-name>
+            <ejb-ref-type>Entity</ejb-ref-type>
+            <local-home>mdb1EjbLocalRef2LocalHome</local-home>
+            <local>mdb1EjbLocalRef2Local</local>
+            <ejb-link>mdb1EjbLocalRef2EjbLink</ejb-link>
+            <mapped-name>mdb1EjbLocalRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb1EjbLocalRef2Injection1Class</injection-target-class>
+               <injection-target-name>mdb1EjbLocalRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb1EjbLocalRef2Injection2Class</injection-target-class>
+               <injection-target-name>mdb1EjbLocalRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </ejb-local-ref>
+         
+         <!-- TODO service-refGroup -->
+
+         <resource-ref id="mdb1ResourceRef1-id">
+            <description>en-mdb1ResourceRef1-desc</description>
+            <description xml:lang="fr">fr-mdb1ResourceRef1-desc</description>
+            <description xml:lang="de">de-mdb1ResourceRef1-desc</description>
+            <res-ref-name>mdb1ResourceRef1Name</res-ref-name>
+            <res-type>mdb1ResourceRef1Type</res-type>
+            <res-auth>Application</res-auth>
+            <res-sharing-scope>Shareable</res-sharing-scope>
+            <mapped-name>mdb1ResourceRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb1ResourceRef1Injection1Class</injection-target-class>
+               <injection-target-name>mdb1ResourceRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb1ResourceRef1Injection2Class</injection-target-class>
+               <injection-target-name>mdb1ResourceRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </resource-ref>
+         <resource-ref id="mdb1ResourceRef2-id">
+            <description>en-mdb1ResourceRef2-desc</description>
+            <description xml:lang="fr">fr-mdb1ResourceRef2-desc</description>
+            <description xml:lang="de">de-mdb1ResourceRef2-desc</description>
+            <res-ref-name>mdb1ResourceRef2Name</res-ref-name>
+            <res-type>mdb1ResourceRef2Type</res-type>
+            <res-auth>Container</res-auth>
+            <res-sharing-scope>Unshareable</res-sharing-scope>
+            <mapped-name>mdb1ResourceRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb1ResourceRef2Injection1Class</injection-target-class>
+               <injection-target-name>mdb1ResourceRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb1ResourceRef2Injection2Class</injection-target-class>
+               <injection-target-name>mdb1ResourceRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </resource-ref>
+         <resource-env-ref id="mdb1ResourceEnvRef1-id">
+            <description>en-mdb1ResourceEnvRef1-desc</description>
+            <description xml:lang="fr">fr-mdb1ResourceEnvRef1-desc</description>
+            <description xml:lang="de">de-mdb1ResourceEnvRef1-desc</description>
+            <resource-env-ref-name>mdb1ResourceEnvRef1Name</resource-env-ref-name>
+            <resource-env-ref-type>mdb1ResourceEnvRef1Type</resource-env-ref-type>
+            <mapped-name>mdb1ResourceEnvRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb1ResourceEnvRef1Injection1Class</injection-target-class>
+               <injection-target-name>mdb1ResourceEnvRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb1ResourceEnvRef1Injection2Class</injection-target-class>
+               <injection-target-name>mdb1ResourceEnvRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </resource-env-ref>
+         <resource-env-ref id="mdb1ResourceEnvRef2-id">
+            <description>en-mdb1ResourceEnvRef2-desc</description>
+            <description xml:lang="fr">fr-mdb1ResourceEnvRef2-desc</description>
+            <description xml:lang="de">de-mdb1ResourceEnvRef2-desc</description>
+            <resource-env-ref-name>mdb1ResourceEnvRef2Name</resource-env-ref-name>
+            <resource-env-ref-type>mdb1ResourceEnvRef2Type</resource-env-ref-type>
+            <mapped-name>mdb1ResourceEnvRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb1ResourceEnvRef2Injection1Class</injection-target-class>
+               <injection-target-name>mdb1ResourceEnvRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb1ResourceEnvRef2Injection2Class</injection-target-class>
+               <injection-target-name>mdb1ResourceEnvRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </resource-env-ref>
+         <message-destination-ref id="mdb1MessageDestinationRef1-id">
+            <description>en-mdb1MessageDestinationRef1-desc</description>
+            <description xml:lang="fr">fr-mdb1MessageDestinationRef1-desc</description>
+            <description xml:lang="de">de-mdb1MessageDestinationRef1-desc</description>
+            <message-destination-ref-name>mdb1MessageDestinationRef1Name</message-destination-ref-name>
+            <message-destination-type>mdb1MessageDestinationRef1Type</message-destination-type>
+            <message-destination-usage>Consumes</message-destination-usage>
+            <message-destination-link>mdb1MessageDestinationRef1Link</message-destination-link>
+            <mapped-name>mdb1MessageDestinationRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb1MessageDestinationRef1Injection1Class</injection-target-class>
+               <injection-target-name>mdb1MessageDestinationRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb1MessageDestinationRef1Injection2Class</injection-target-class>
+               <injection-target-name>mdb1MessageDestinationRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </message-destination-ref>
+         <message-destination-ref id="mdb1MessageDestinationRef2-id">
+            <description>en-mdb1MessageDestinationRef2-desc</description>
+            <description xml:lang="fr">fr-mdb1MessageDestinationRef2-desc</description>
+            <description xml:lang="de">de-mdb1MessageDestinationRef2-desc</description>
+            <message-destination-ref-name>mdb1MessageDestinationRef2Name</message-destination-ref-name>
+            <message-destination-type>mdb1MessageDestinationRef2Type</message-destination-type>
+            <message-destination-usage>Produces</message-destination-usage>
+            <message-destination-link>mdb1MessageDestinationRef2Link</message-destination-link>
+            <mapped-name>mdb1MessageDestinationRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb1MessageDestinationRef2Injection1Class</injection-target-class>
+               <injection-target-name>mdb1MessageDestinationRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb1MessageDestinationRef2Injection2Class</injection-target-class>
+               <injection-target-name>mdb1MessageDestinationRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </message-destination-ref>
+         <message-destination-ref id="mdb1MessageDestinationRef3-id">
+            <description>en-mdb1MessageDestinationRef3-desc</description>
+            <description xml:lang="fr">fr-mdb1MessageDestinationRef3-desc</description>
+            <description xml:lang="de">de-mdb1MessageDestinationRef3-desc</description>
+            <message-destination-ref-name>mdb1MessageDestinationRef3Name</message-destination-ref-name>
+            <message-destination-type>mdb1MessageDestinationRef3Type</message-destination-type>
+            <message-destination-usage>ConsumesProduces</message-destination-usage>
+            <message-destination-link>mdb1MessageDestinationRef3Link</message-destination-link>
+            <mapped-name>mdb1MessageDestinationRef3MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb1MessageDestinationRef3Injection1Class</injection-target-class>
+               <injection-target-name>mdb1MessageDestinationRef3Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb1MessageDestinationRef3Injection2Class</injection-target-class>
+               <injection-target-name>mdb1MessageDestinationRef3Injection2Name</injection-target-name>
+            </injection-target>
+         </message-destination-ref>
+         <persistence-context-ref id="mdb1PersistenceContextRef1-id">
+            <description>en-mdb1PersistenceContextRef1-desc</description>
+            <description xml:lang="fr">fr-mdb1PersistenceContextRef1-desc</description>
+            <description xml:lang="de">de-mdb1PersistenceContextRef1-desc</description>
+            <persistence-context-ref-name>mdb1PersistenceContextRef1Name</persistence-context-ref-name>
+            <persistence-unit-name>mdb1PersistenceContextRef1Unit</persistence-unit-name>
+            <persistence-context-type>Transaction</persistence-context-type>
+            <persistence-property id="mdb1PersistenceContextRef1Property1-id">
+               <name>mdb1PersistenceContextRef1Property1Name</name>
+               <value>mdb1PersistenceContextRef1Property1Value</value>
+            </persistence-property>
+            <persistence-property id="mdb1PersistenceContextRef1Property2-id">
+               <name>mdb1PersistenceContextRef1Property2Name</name>
+               <value>mdb1PersistenceContextRef1Property2Value</value>
+            </persistence-property>
+            <mapped-name>mdb1PersistenceContextRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb1PersistenceContextRef1Injection1Class</injection-target-class>
+               <injection-target-name>mdb1PersistenceContextRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb1PersistenceContextRef1Injection2Class</injection-target-class>
+               <injection-target-name>mdb1PersistenceContextRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </persistence-context-ref>
+         <persistence-context-ref id="mdb1PersistenceContextRef2-id">
+            <description>en-mdb1PersistenceContextRef2-desc</description>
+            <description xml:lang="fr">fr-mdb1PersistenceContextRef2-desc</description>
+            <description xml:lang="de">de-mdb1PersistenceContextRef2-desc</description>
+            <persistence-context-ref-name>mdb1PersistenceContextRef2Name</persistence-context-ref-name>
+            <persistence-unit-name>mdb1PersistenceContextRef2Unit</persistence-unit-name>
+            <persistence-context-type>Extended</persistence-context-type>
+            <persistence-property id="mdb1PersistenceContextRef2Property1-id">
+               <name>mdb1PersistenceContextRef2Property1Name</name>
+               <value>mdb1PersistenceContextRef2Property1Value</value>
+            </persistence-property>
+            <persistence-property id="mdb1PersistenceContextRef2Property2-id">
+               <name>mdb1PersistenceContextRef2Property2Name</name>
+               <value>mdb1PersistenceContextRef2Property2Value</value>
+            </persistence-property>
+            <mapped-name>mdb1PersistenceContextRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb1PersistenceContextRef2Injection1Class</injection-target-class>
+               <injection-target-name>mdb1PersistenceContextRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb1PersistenceContextRef2Injection2Class</injection-target-class>
+               <injection-target-name>mdb1PersistenceContextRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </persistence-context-ref>
+         <persistence-unit-ref id="mdb1PersistenceUnitRef1-id">
+            <description>en-mdb1PersistenceUnitRef1-desc</description>
+            <description xml:lang="fr">fr-mdb1PersistenceUnitRef1-desc</description>
+            <description xml:lang="de">de-mdb1PersistenceUnitRef1-desc</description>
+            <persistence-unit-ref-name>mdb1PersistenceUnitRef1Name</persistence-unit-ref-name>
+            <persistence-unit-name>mdb1PersistenceUnitRef1Unit</persistence-unit-name>
+            <mapped-name>mdb1PersistenceUnitRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb1PersistenceUnitRef1Injection1Class</injection-target-class>
+               <injection-target-name>mdb1PersistenceUnitRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb1PersistenceUnitRef1Injection2Class</injection-target-class>
+               <injection-target-name>mdb1PersistenceUnitRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </persistence-unit-ref>
+         <persistence-unit-ref id="mdb1PersistenceUnitRef2-id">
+            <description>en-mdb1PersistenceUnitRef2-desc</description>
+            <description xml:lang="fr">fr-mdb1PersistenceUnitRef2-desc</description>
+            <description xml:lang="de">de-mdb1PersistenceUnitRef2-desc</description>
+            <persistence-unit-ref-name>mdb1PersistenceUnitRef2Name</persistence-unit-ref-name>
+            <persistence-unit-name>mdb1PersistenceUnitRef2Unit</persistence-unit-name>
+            <mapped-name>mdb1PersistenceUnitRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb1PersistenceUnitRef2Injection1Class</injection-target-class>
+               <injection-target-name>mdb1PersistenceUnitRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb1PersistenceUnitRef2Injection2Class</injection-target-class>
+               <injection-target-name>mdb1PersistenceUnitRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </persistence-unit-ref>
+         <post-construct>
+            <lifecycle-callback-class>mdb1PostConstruct1Class</lifecycle-callback-class>
+            <lifecycle-callback-method>mdb1PostConstruct1Method</lifecycle-callback-method>
+         </post-construct>
+         <post-construct>
+            <lifecycle-callback-class>mdb1PostConstruct2Class</lifecycle-callback-class>
+            <lifecycle-callback-method>mdb1PostConstruct2Method</lifecycle-callback-method>
+         </post-construct>
+         <pre-destroy>
+            <lifecycle-callback-class>mdb1PreDestroy1Class</lifecycle-callback-class>
+            <lifecycle-callback-method>mdb1PreDestroy1Method</lifecycle-callback-method>
+         </pre-destroy>
+         <pre-destroy>
+            <lifecycle-callback-class>mdb1PreDestroy2Class</lifecycle-callback-class>
+            <lifecycle-callback-method>mdb1PreDestroy2Method</lifecycle-callback-method>
+         </pre-destroy>
+
+         <security-identity id="mdb1SecurityIdentity-id">
+            <description>en-mdb1SecurityIdentity-desc</description>
+            <description xml:lang="fr">fr-mdb1SecurityIdentity-desc</description>
+            <description xml:lang="de">de-mdb1SecurityIdentity-desc</description>
+            <use-caller-identity id="mdb1SecurityIdentityUseCallerIdentity-id"/>
+            <run-as id="mdb1SecurityIdentityRunAs-id">
+               <description>en-mdb1SecurityIdentityRunAs-desc</description>
+               <description xml:lang="fr">fr-mdb1SecurityIdentityRunAs-desc</description>
+               <description xml:lang="de">de-mdb1SecurityIdentityRunAs-desc</description>
+               <role-name>mdb1SecurityIdentityRunAsRoleName</role-name>
+            </run-as>
+         </security-identity>
+
+      </message-driven>
+
+      <message-driven id="mdb2-id">
+      
+         <description>en-mdb2-desc</description>
+         <description xml:lang="fr">fr-mdb2-desc</description>
+         <description xml:lang="de">de-mdb2-desc</description>
+         <display-name>en-mdb2-disp</display-name>
+         <display-name xml:lang="fr">fr-mdb2-disp</display-name>
+         <display-name xml:lang="de">de-mdb2-disp</display-name>
+         <icon id="en-mdb2-icon-id">
+            <small-icon>en-mdb2-small-icon</small-icon>
+            <large-icon>en-mdb2-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="fr" id="fr-mdb2-icon-id">
+            <small-icon>fr-mdb2-small-icon</small-icon>
+            <large-icon>fr-mdb2-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="de" id="de-mdb2-icon-id">
+            <small-icon>de-mdb2-small-icon</small-icon>
+            <large-icon>de-mdb2-large-icon</large-icon>
+         </icon>
+
+         <ejb-name>mdb2</ejb-name>
+
+         <mapped-name>mdb2-mapped-name</mapped-name>
+         <ejb-class>mdb2EjbClass</ejb-class>
+         <messaging-type>mdb2MessagingType</messaging-type>
+         <timeout-method id="mdb2TimeoutMethod-id">
+            <method-name>mdb2TimeoutMethod</method-name>
+            <method-params>
+               <method-param>mdb2TimeoutMethodParam1</method-param>
+               <method-param>mdb2TimeoutMethodParam2</method-param>
+            </method-params>
+         </timeout-method>
+         <transaction-type>Container</transaction-type>
+         <message-destination-type>mdb2MessageDestinationType</message-destination-type>
+         <message-destination-link>mdb2MessageDestinationLink</message-destination-link>
+         <activation-config id="mdb2ActivationConfig-id">
+            <activation-config-property id="mdb2ActivationConfigProperty1-id">
+               <activation-config-property-name>mdb2ActivationConfigProperty1Name</activation-config-property-name>
+               <activation-config-property-value>mdb2ActivationConfigProperty1Value</activation-config-property-value>
+            </activation-config-property>
+            <activation-config-property id="mdb2ActivationConfigProperty2-id">
+               <activation-config-property-name>mdb2ActivationConfigProperty2Name</activation-config-property-name>
+               <activation-config-property-value>mdb2ActivationConfigProperty2Value</activation-config-property-value>
+            </activation-config-property>
+         </activation-config>
+
+         <around-invoke>
+            <class>mdb2AroundInvoke1Class</class>
+            <method-name>mdb2AroundInvoke1Method</method-name>
+         </around-invoke>
+         <around-invoke>
+            <class>mdb2AroundInvoke2Class</class>
+            <method-name>mdb2AroundInvoke2Method</method-name>
+         </around-invoke>
+
+         <env-entry id="mdb2EnvEntry1-id">
+            <description>en-mdb2EnvEntry1-desc</description>
+            <description xml:lang="fr">fr-mdb2EnvEntry1-desc</description>
+            <description xml:lang="de">de-mdb2EnvEntry1-desc</description>
+            <env-entry-name>mdb2EnvEntry1Name</env-entry-name>
+            <env-entry-type>mdb2EnvEntry1Type</env-entry-type>
+            <env-entry-value>mdb2EnvEntry1Value</env-entry-value>
+            <mapped-name>mdb2EnvEntry1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb2EnvEntry1Injection1Class</injection-target-class>
+               <injection-target-name>mdb2EnvEntry1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb2EnvEntry1Injection2Class</injection-target-class>
+               <injection-target-name>mdb2EnvEntry1Injection2Name</injection-target-name>
+            </injection-target>
+         </env-entry>
+         <env-entry id="mdb2EnvEntry2-id">
+            <description>en-mdb2EnvEntry2-desc</description>
+            <description xml:lang="fr">fr-mdb2EnvEntry2-desc</description>
+            <description xml:lang="de">de-mdb2EnvEntry2-desc</description>
+            <env-entry-name>mdb2EnvEntry2Name</env-entry-name>
+            <env-entry-type>mdb2EnvEntry2Type</env-entry-type>
+            <env-entry-value>mdb2EnvEntry2Value</env-entry-value>
+            <mapped-name>mdb2EnvEntry2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb2EnvEntry2Injection1Class</injection-target-class>
+               <injection-target-name>mdb2EnvEntry2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb2EnvEntry2Injection2Class</injection-target-class>
+               <injection-target-name>mdb2EnvEntry2Injection2Name</injection-target-name>
+            </injection-target>
+         </env-entry>
+         <ejb-ref id="mdb2EjbRef1-id">
+            <description>en-mdb2EjbRef1-desc</description>
+            <description xml:lang="fr">fr-mdb2EjbRef1-desc</description>
+            <description xml:lang="de">de-mdb2EjbRef1-desc</description>
+            <ejb-ref-name>mdb2EjbRef1Name</ejb-ref-name>
+            <ejb-ref-type>Session</ejb-ref-type>
+            <home>mdb2EjbRef1Home</home>
+            <remote>mdb2EjbRef1Remote</remote>
+            <ejb-link>mdb2EjbRef1EjbLink</ejb-link>
+            <mapped-name>mdb2EjbRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb2EjbRef1Injection1Class</injection-target-class>
+               <injection-target-name>mdb2EjbRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb2EjbRef1Injection2Class</injection-target-class>
+               <injection-target-name>mdb2EjbRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </ejb-ref>
+         <ejb-ref id="mdb2EjbRef2-id">
+            <description>en-mdb2EjbRef2-desc</description>
+            <description xml:lang="fr">fr-mdb2EjbRef2-desc</description>
+            <description xml:lang="de">de-mdb2EjbRef2-desc</description>
+            <ejb-ref-name>mdb2EjbRef2Name</ejb-ref-name>
+            <ejb-ref-type>Entity</ejb-ref-type>
+            <home>mdb2EjbRef2Home</home>
+            <remote>mdb2EjbRef2Remote</remote>
+            <ejb-link>mdb2EjbRef2EjbLink</ejb-link>
+            <mapped-name>mdb2EjbRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb2EjbRef2Injection1Class</injection-target-class>
+               <injection-target-name>mdb2EjbRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb2EjbRef2Injection2Class</injection-target-class>
+               <injection-target-name>mdb2EjbRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </ejb-ref>
+         <ejb-local-ref id="mdb2EjbLocalRef1-id">
+            <description>en-mdb2EjbLocalRef1-desc</description>
+            <description xml:lang="fr">fr-mdb2EjbLocalRef1-desc</description>
+            <description xml:lang="de">de-mdb2EjbLocalRef1-desc</description>
+            <ejb-ref-name>mdb2EjbLocalRef1Name</ejb-ref-name>
+            <ejb-ref-type>Session</ejb-ref-type>
+            <local-home>mdb2EjbLocalRef1LocalHome</local-home>
+            <local>mdb2EjbLocalRef1Local</local>
+            <ejb-link>mdb2EjbLocalRef1EjbLink</ejb-link>
+            <mapped-name>mdb2EjbLocalRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb2EjbLocalRef1Injection1Class</injection-target-class>
+               <injection-target-name>mdb2EjbLocalRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb2EjbLocalRef1Injection2Class</injection-target-class>
+               <injection-target-name>mdb2EjbLocalRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </ejb-local-ref>
+         <ejb-local-ref id="mdb2EjbLocalRef2-id">
+            <description>en-mdb2EjbLocalRef2-desc</description>
+            <description xml:lang="fr">fr-mdb2EjbLocalRef2-desc</description>
+            <description xml:lang="de">de-mdb2EjbLocalRef2-desc</description>
+            <ejb-ref-name>mdb2EjbLocalRef2Name</ejb-ref-name>
+            <ejb-ref-type>Entity</ejb-ref-type>
+            <local-home>mdb2EjbLocalRef2LocalHome</local-home>
+            <local>mdb2EjbLocalRef2Local</local>
+            <ejb-link>mdb2EjbLocalRef2EjbLink</ejb-link>
+            <mapped-name>mdb2EjbLocalRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb2EjbLocalRef2Injection1Class</injection-target-class>
+               <injection-target-name>mdb2EjbLocalRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb2EjbLocalRef2Injection2Class</injection-target-class>
+               <injection-target-name>mdb2EjbLocalRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </ejb-local-ref>
+         
+         <!-- TODO service-refGroup -->
+
+         <resource-ref id="mdb2ResourceRef1-id">
+            <description>en-mdb2ResourceRef1-desc</description>
+            <description xml:lang="fr">fr-mdb2ResourceRef1-desc</description>
+            <description xml:lang="de">de-mdb2ResourceRef1-desc</description>
+            <res-ref-name>mdb2ResourceRef1Name</res-ref-name>
+            <res-type>mdb2ResourceRef1Type</res-type>
+            <res-auth>Application</res-auth>
+            <res-sharing-scope>Shareable</res-sharing-scope>
+            <mapped-name>mdb2ResourceRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb2ResourceRef1Injection1Class</injection-target-class>
+               <injection-target-name>mdb2ResourceRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb2ResourceRef1Injection2Class</injection-target-class>
+               <injection-target-name>mdb2ResourceRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </resource-ref>
+         <resource-ref id="mdb2ResourceRef2-id">
+            <description>en-mdb2ResourceRef2-desc</description>
+            <description xml:lang="fr">fr-mdb2ResourceRef2-desc</description>
+            <description xml:lang="de">de-mdb2ResourceRef2-desc</description>
+            <res-ref-name>mdb2ResourceRef2Name</res-ref-name>
+            <res-type>mdb2ResourceRef2Type</res-type>
+            <res-auth>Container</res-auth>
+            <res-sharing-scope>Unshareable</res-sharing-scope>
+            <mapped-name>mdb2ResourceRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb2ResourceRef2Injection1Class</injection-target-class>
+               <injection-target-name>mdb2ResourceRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb2ResourceRef2Injection2Class</injection-target-class>
+               <injection-target-name>mdb2ResourceRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </resource-ref>
+         <resource-env-ref id="mdb2ResourceEnvRef1-id">
+            <description>en-mdb2ResourceEnvRef1-desc</description>
+            <description xml:lang="fr">fr-mdb2ResourceEnvRef1-desc</description>
+            <description xml:lang="de">de-mdb2ResourceEnvRef1-desc</description>
+            <resource-env-ref-name>mdb2ResourceEnvRef1Name</resource-env-ref-name>
+            <resource-env-ref-type>mdb2ResourceEnvRef1Type</resource-env-ref-type>
+            <mapped-name>mdb2ResourceEnvRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb2ResourceEnvRef1Injection1Class</injection-target-class>
+               <injection-target-name>mdb2ResourceEnvRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb2ResourceEnvRef1Injection2Class</injection-target-class>
+               <injection-target-name>mdb2ResourceEnvRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </resource-env-ref>
+         <resource-env-ref id="mdb2ResourceEnvRef2-id">
+            <description>en-mdb2ResourceEnvRef2-desc</description>
+            <description xml:lang="fr">fr-mdb2ResourceEnvRef2-desc</description>
+            <description xml:lang="de">de-mdb2ResourceEnvRef2-desc</description>
+            <resource-env-ref-name>mdb2ResourceEnvRef2Name</resource-env-ref-name>
+            <resource-env-ref-type>mdb2ResourceEnvRef2Type</resource-env-ref-type>
+            <mapped-name>mdb2ResourceEnvRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb2ResourceEnvRef2Injection1Class</injection-target-class>
+               <injection-target-name>mdb2ResourceEnvRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb2ResourceEnvRef2Injection2Class</injection-target-class>
+               <injection-target-name>mdb2ResourceEnvRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </resource-env-ref>
+         <message-destination-ref id="mdb2MessageDestinationRef1-id">
+            <description>en-mdb2MessageDestinationRef1-desc</description>
+            <description xml:lang="fr">fr-mdb2MessageDestinationRef1-desc</description>
+            <description xml:lang="de">de-mdb2MessageDestinationRef1-desc</description>
+            <message-destination-ref-name>mdb2MessageDestinationRef1Name</message-destination-ref-name>
+            <message-destination-type>mdb2MessageDestinationRef1Type</message-destination-type>
+            <message-destination-usage>Consumes</message-destination-usage>
+            <message-destination-link>mdb2MessageDestinationRef1Link</message-destination-link>
+            <mapped-name>mdb2MessageDestinationRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb2MessageDestinationRef1Injection1Class</injection-target-class>
+               <injection-target-name>mdb2MessageDestinationRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb2MessageDestinationRef1Injection2Class</injection-target-class>
+               <injection-target-name>mdb2MessageDestinationRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </message-destination-ref>
+         <message-destination-ref id="mdb2MessageDestinationRef2-id">
+            <description>en-mdb2MessageDestinationRef2-desc</description>
+            <description xml:lang="fr">fr-mdb2MessageDestinationRef2-desc</description>
+            <description xml:lang="de">de-mdb2MessageDestinationRef2-desc</description>
+            <message-destination-ref-name>mdb2MessageDestinationRef2Name</message-destination-ref-name>
+            <message-destination-type>mdb2MessageDestinationRef2Type</message-destination-type>
+            <message-destination-usage>Produces</message-destination-usage>
+            <message-destination-link>mdb2MessageDestinationRef2Link</message-destination-link>
+            <mapped-name>mdb2MessageDestinationRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb2MessageDestinationRef2Injection1Class</injection-target-class>
+               <injection-target-name>mdb2MessageDestinationRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb2MessageDestinationRef2Injection2Class</injection-target-class>
+               <injection-target-name>mdb2MessageDestinationRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </message-destination-ref>
+         <message-destination-ref id="mdb2MessageDestinationRef3-id">
+            <description>en-mdb2MessageDestinationRef3-desc</description>
+            <description xml:lang="fr">fr-mdb2MessageDestinationRef3-desc</description>
+            <description xml:lang="de">de-mdb2MessageDestinationRef3-desc</description>
+            <message-destination-ref-name>mdb2MessageDestinationRef3Name</message-destination-ref-name>
+            <message-destination-type>mdb2MessageDestinationRef3Type</message-destination-type>
+            <message-destination-usage>ConsumesProduces</message-destination-usage>
+            <message-destination-link>mdb2MessageDestinationRef3Link</message-destination-link>
+            <mapped-name>mdb2MessageDestinationRef3MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb2MessageDestinationRef3Injection1Class</injection-target-class>
+               <injection-target-name>mdb2MessageDestinationRef3Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb2MessageDestinationRef3Injection2Class</injection-target-class>
+               <injection-target-name>mdb2MessageDestinationRef3Injection2Name</injection-target-name>
+            </injection-target>
+         </message-destination-ref>
+         <persistence-context-ref id="mdb2PersistenceContextRef1-id">
+            <description>en-mdb2PersistenceContextRef1-desc</description>
+            <description xml:lang="fr">fr-mdb2PersistenceContextRef1-desc</description>
+            <description xml:lang="de">de-mdb2PersistenceContextRef1-desc</description>
+            <persistence-context-ref-name>mdb2PersistenceContextRef1Name</persistence-context-ref-name>
+            <persistence-unit-name>mdb2PersistenceContextRef1Unit</persistence-unit-name>
+            <persistence-context-type>Transaction</persistence-context-type>
+            <persistence-property id="mdb2PersistenceContextRef1Property1-id">
+               <name>mdb2PersistenceContextRef1Property1Name</name>
+               <value>mdb2PersistenceContextRef1Property1Value</value>
+            </persistence-property>
+            <persistence-property id="mdb2PersistenceContextRef1Property2-id">
+               <name>mdb2PersistenceContextRef1Property2Name</name>
+               <value>mdb2PersistenceContextRef1Property2Value</value>
+            </persistence-property>
+            <mapped-name>mdb2PersistenceContextRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb2PersistenceContextRef1Injection1Class</injection-target-class>
+               <injection-target-name>mdb2PersistenceContextRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb2PersistenceContextRef1Injection2Class</injection-target-class>
+               <injection-target-name>mdb2PersistenceContextRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </persistence-context-ref>
+         <persistence-context-ref id="mdb2PersistenceContextRef2-id">
+            <description>en-mdb2PersistenceContextRef2-desc</description>
+            <description xml:lang="fr">fr-mdb2PersistenceContextRef2-desc</description>
+            <description xml:lang="de">de-mdb2PersistenceContextRef2-desc</description>
+            <persistence-context-ref-name>mdb2PersistenceContextRef2Name</persistence-context-ref-name>
+            <persistence-unit-name>mdb2PersistenceContextRef2Unit</persistence-unit-name>
+            <persistence-context-type>Extended</persistence-context-type>
+            <persistence-property id="mdb2PersistenceContextRef2Property1-id">
+               <name>mdb2PersistenceContextRef2Property1Name</name>
+               <value>mdb2PersistenceContextRef2Property1Value</value>
+            </persistence-property>
+            <persistence-property id="mdb2PersistenceContextRef2Property2-id">
+               <name>mdb2PersistenceContextRef2Property2Name</name>
+               <value>mdb2PersistenceContextRef2Property2Value</value>
+            </persistence-property>
+            <mapped-name>mdb2PersistenceContextRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb2PersistenceContextRef2Injection1Class</injection-target-class>
+               <injection-target-name>mdb2PersistenceContextRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb2PersistenceContextRef2Injection2Class</injection-target-class>
+               <injection-target-name>mdb2PersistenceContextRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </persistence-context-ref>
+         <persistence-unit-ref id="mdb2PersistenceUnitRef1-id">
+            <description>en-mdb2PersistenceUnitRef1-desc</description>
+            <description xml:lang="fr">fr-mdb2PersistenceUnitRef1-desc</description>
+            <description xml:lang="de">de-mdb2PersistenceUnitRef1-desc</description>
+            <persistence-unit-ref-name>mdb2PersistenceUnitRef1Name</persistence-unit-ref-name>
+            <persistence-unit-name>mdb2PersistenceUnitRef1Unit</persistence-unit-name>
+            <mapped-name>mdb2PersistenceUnitRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb2PersistenceUnitRef1Injection1Class</injection-target-class>
+               <injection-target-name>mdb2PersistenceUnitRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb2PersistenceUnitRef1Injection2Class</injection-target-class>
+               <injection-target-name>mdb2PersistenceUnitRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </persistence-unit-ref>
+         <persistence-unit-ref id="mdb2PersistenceUnitRef2-id">
+            <description>en-mdb2PersistenceUnitRef2-desc</description>
+            <description xml:lang="fr">fr-mdb2PersistenceUnitRef2-desc</description>
+            <description xml:lang="de">de-mdb2PersistenceUnitRef2-desc</description>
+            <persistence-unit-ref-name>mdb2PersistenceUnitRef2Name</persistence-unit-ref-name>
+            <persistence-unit-name>mdb2PersistenceUnitRef2Unit</persistence-unit-name>
+            <mapped-name>mdb2PersistenceUnitRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb2PersistenceUnitRef2Injection1Class</injection-target-class>
+               <injection-target-name>mdb2PersistenceUnitRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb2PersistenceUnitRef2Injection2Class</injection-target-class>
+               <injection-target-name>mdb2PersistenceUnitRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </persistence-unit-ref>
+         <post-construct>
+            <lifecycle-callback-class>mdb2PostConstruct1Class</lifecycle-callback-class>
+            <lifecycle-callback-method>mdb2PostConstruct1Method</lifecycle-callback-method>
+         </post-construct>
+         <post-construct>
+            <lifecycle-callback-class>mdb2PostConstruct2Class</lifecycle-callback-class>
+            <lifecycle-callback-method>mdb2PostConstruct2Method</lifecycle-callback-method>
+         </post-construct>
+         <pre-destroy>
+            <lifecycle-callback-class>mdb2PreDestroy1Class</lifecycle-callback-class>
+            <lifecycle-callback-method>mdb2PreDestroy1Method</lifecycle-callback-method>
+         </pre-destroy>
+         <pre-destroy>
+            <lifecycle-callback-class>mdb2PreDestroy2Class</lifecycle-callback-class>
+            <lifecycle-callback-method>mdb2PreDestroy2Method</lifecycle-callback-method>
+         </pre-destroy>
+
+         <security-identity id="mdb2SecurityIdentity-id">
+            <description>en-mdb2SecurityIdentity-desc</description>
+            <description xml:lang="fr">fr-mdb2SecurityIdentity-desc</description>
+            <description xml:lang="de">de-mdb2SecurityIdentity-desc</description>
+            <use-caller-identity id="mdb2SecurityIdentityUseCallerIdentity-id"/>
+            <run-as id="mdb2SecurityIdentityRunAs-id">
+               <description>en-mdb2SecurityIdentityRunAs-desc</description>
+               <description xml:lang="fr">fr-mdb2SecurityIdentityRunAs-desc</description>
+               <description xml:lang="de">de-mdb2SecurityIdentityRunAs-desc</description>
+               <role-name>mdb2SecurityIdentityRunAsRoleName</role-name>
+            </run-as>
+         </security-identity>
+
+      </message-driven>
+            
+   </enterprise-beans>   
+
+   <interceptors id="interceptors-id">
+      <description>en-interceptors-desc</description>
+      <description xml:lang="fr">fr-interceptors-desc</description>
+      <description xml:lang="de">de-interceptors-desc</description>
+      <interceptor id="interceptor1-id">
+         <description>en-interceptor1-desc</description>
+         <description xml:lang="fr">fr-interceptor1-desc</description>
+         <description xml:lang="de">de-interceptor1-desc</description>
+         <interceptor-class>interceptor1Class</interceptor-class>
+         <around-invoke>
+            <class>interceptor1AroundInvoke1Class</class>
+            <method-name>interceptor1AroundInvoke1Method</method-name>
+         </around-invoke>
+         <around-invoke>
+            <class>interceptor1AroundInvoke2Class</class>
+            <method-name>interceptor1AroundInvoke2Method</method-name>
+         </around-invoke>
+
+         <env-entry id="interceptor1EnvEntry1-id">
+            <description>en-interceptor1EnvEntry1-desc</description>
+            <description xml:lang="fr">fr-interceptor1EnvEntry1-desc</description>
+            <description xml:lang="de">de-interceptor1EnvEntry1-desc</description>
+            <env-entry-name>interceptor1EnvEntry1Name</env-entry-name>
+            <env-entry-type>interceptor1EnvEntry1Type</env-entry-type>
+            <env-entry-value>interceptor1EnvEntry1Value</env-entry-value>
+            <mapped-name>interceptor1EnvEntry1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor1EnvEntry1Injection1Class</injection-target-class>
+               <injection-target-name>interceptor1EnvEntry1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor1EnvEntry1Injection2Class</injection-target-class>
+               <injection-target-name>interceptor1EnvEntry1Injection2Name</injection-target-name>
+            </injection-target>
+         </env-entry>
+         <env-entry id="interceptor1EnvEntry2-id">
+            <description>en-interceptor1EnvEntry2-desc</description>
+            <description xml:lang="fr">fr-interceptor1EnvEntry2-desc</description>
+            <description xml:lang="de">de-interceptor1EnvEntry2-desc</description>
+            <env-entry-name>interceptor1EnvEntry2Name</env-entry-name>
+            <env-entry-type>interceptor1EnvEntry2Type</env-entry-type>
+            <env-entry-value>interceptor1EnvEntry2Value</env-entry-value>
+            <mapped-name>interceptor1EnvEntry2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor1EnvEntry2Injection1Class</injection-target-class>
+               <injection-target-name>interceptor1EnvEntry2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor1EnvEntry2Injection2Class</injection-target-class>
+               <injection-target-name>interceptor1EnvEntry2Injection2Name</injection-target-name>
+            </injection-target>
+         </env-entry>
+         <ejb-ref id="interceptor1EjbRef1-id">
+            <description>en-interceptor1EjbRef1-desc</description>
+            <description xml:lang="fr">fr-interceptor1EjbRef1-desc</description>
+            <description xml:lang="de">de-interceptor1EjbRef1-desc</description>
+            <ejb-ref-name>interceptor1EjbRef1Name</ejb-ref-name>
+            <ejb-ref-type>Session</ejb-ref-type>
+            <home>interceptor1EjbRef1Home</home>
+            <remote>interceptor1EjbRef1Remote</remote>
+            <ejb-link>interceptor1EjbRef1EjbLink</ejb-link>
+            <mapped-name>interceptor1EjbRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor1EjbRef1Injection1Class</injection-target-class>
+               <injection-target-name>interceptor1EjbRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor1EjbRef1Injection2Class</injection-target-class>
+               <injection-target-name>interceptor1EjbRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </ejb-ref>
+         <ejb-ref id="interceptor1EjbRef2-id">
+            <description>en-interceptor1EjbRef2-desc</description>
+            <description xml:lang="fr">fr-interceptor1EjbRef2-desc</description>
+            <description xml:lang="de">de-interceptor1EjbRef2-desc</description>
+            <ejb-ref-name>interceptor1EjbRef2Name</ejb-ref-name>
+            <ejb-ref-type>Entity</ejb-ref-type>
+            <home>interceptor1EjbRef2Home</home>
+            <remote>interceptor1EjbRef2Remote</remote>
+            <ejb-link>interceptor1EjbRef2EjbLink</ejb-link>
+            <mapped-name>interceptor1EjbRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor1EjbRef2Injection1Class</injection-target-class>
+               <injection-target-name>interceptor1EjbRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor1EjbRef2Injection2Class</injection-target-class>
+               <injection-target-name>interceptor1EjbRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </ejb-ref>
+         <ejb-local-ref id="interceptor1EjbLocalRef1-id">
+            <description>en-interceptor1EjbLocalRef1-desc</description>
+            <description xml:lang="fr">fr-interceptor1EjbLocalRef1-desc</description>
+            <description xml:lang="de">de-interceptor1EjbLocalRef1-desc</description>
+            <ejb-ref-name>interceptor1EjbLocalRef1Name</ejb-ref-name>
+            <ejb-ref-type>Session</ejb-ref-type>
+            <local-home>interceptor1EjbLocalRef1LocalHome</local-home>
+            <local>interceptor1EjbLocalRef1Local</local>
+            <ejb-link>interceptor1EjbLocalRef1EjbLink</ejb-link>
+            <mapped-name>interceptor1EjbLocalRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor1EjbLocalRef1Injection1Class</injection-target-class>
+               <injection-target-name>interceptor1EjbLocalRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor1EjbLocalRef1Injection2Class</injection-target-class>
+               <injection-target-name>interceptor1EjbLocalRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </ejb-local-ref>
+         <ejb-local-ref id="interceptor1EjbLocalRef2-id">
+            <description>en-interceptor1EjbLocalRef2-desc</description>
+            <description xml:lang="fr">fr-interceptor1EjbLocalRef2-desc</description>
+            <description xml:lang="de">de-interceptor1EjbLocalRef2-desc</description>
+            <ejb-ref-name>interceptor1EjbLocalRef2Name</ejb-ref-name>
+            <ejb-ref-type>Entity</ejb-ref-type>
+            <local-home>interceptor1EjbLocalRef2LocalHome</local-home>
+            <local>interceptor1EjbLocalRef2Local</local>
+            <ejb-link>interceptor1EjbLocalRef2EjbLink</ejb-link>
+            <mapped-name>interceptor1EjbLocalRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor1EjbLocalRef2Injection1Class</injection-target-class>
+               <injection-target-name>interceptor1EjbLocalRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor1EjbLocalRef2Injection2Class</injection-target-class>
+               <injection-target-name>interceptor1EjbLocalRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </ejb-local-ref>
+         
+         <!-- TODO service-refGroup -->
+
+         <resource-ref id="interceptor1ResourceRef1-id">
+            <description>en-interceptor1ResourceRef1-desc</description>
+            <description xml:lang="fr">fr-interceptor1ResourceRef1-desc</description>
+            <description xml:lang="de">de-interceptor1ResourceRef1-desc</description>
+            <res-ref-name>interceptor1ResourceRef1Name</res-ref-name>
+            <res-type>interceptor1ResourceRef1Type</res-type>
+            <res-auth>Application</res-auth>
+            <res-sharing-scope>Shareable</res-sharing-scope>
+            <mapped-name>interceptor1ResourceRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor1ResourceRef1Injection1Class</injection-target-class>
+               <injection-target-name>interceptor1ResourceRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor1ResourceRef1Injection2Class</injection-target-class>
+               <injection-target-name>interceptor1ResourceRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </resource-ref>
+         <resource-ref id="interceptor1ResourceRef2-id">
+            <description>en-interceptor1ResourceRef2-desc</description>
+            <description xml:lang="fr">fr-interceptor1ResourceRef2-desc</description>
+            <description xml:lang="de">de-interceptor1ResourceRef2-desc</description>
+            <res-ref-name>interceptor1ResourceRef2Name</res-ref-name>
+            <res-type>interceptor1ResourceRef2Type</res-type>
+            <res-auth>Container</res-auth>
+            <res-sharing-scope>Unshareable</res-sharing-scope>
+            <mapped-name>interceptor1ResourceRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor1ResourceRef2Injection1Class</injection-target-class>
+               <injection-target-name>interceptor1ResourceRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor1ResourceRef2Injection2Class</injection-target-class>
+               <injection-target-name>interceptor1ResourceRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </resource-ref>
+         <resource-env-ref id="interceptor1ResourceEnvRef1-id">
+            <description>en-interceptor1ResourceEnvRef1-desc</description>
+            <description xml:lang="fr">fr-interceptor1ResourceEnvRef1-desc</description>
+            <description xml:lang="de">de-interceptor1ResourceEnvRef1-desc</description>
+            <resource-env-ref-name>interceptor1ResourceEnvRef1Name</resource-env-ref-name>
+            <resource-env-ref-type>interceptor1ResourceEnvRef1Type</resource-env-ref-type>
+            <mapped-name>interceptor1ResourceEnvRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor1ResourceEnvRef1Injection1Class</injection-target-class>
+               <injection-target-name>interceptor1ResourceEnvRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor1ResourceEnvRef1Injection2Class</injection-target-class>
+               <injection-target-name>interceptor1ResourceEnvRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </resource-env-ref>
+         <resource-env-ref id="interceptor1ResourceEnvRef2-id">
+            <description>en-interceptor1ResourceEnvRef2-desc</description>
+            <description xml:lang="fr">fr-interceptor1ResourceEnvRef2-desc</description>
+            <description xml:lang="de">de-interceptor1ResourceEnvRef2-desc</description>
+            <resource-env-ref-name>interceptor1ResourceEnvRef2Name</resource-env-ref-name>
+            <resource-env-ref-type>interceptor1ResourceEnvRef2Type</resource-env-ref-type>
+            <mapped-name>interceptor1ResourceEnvRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor1ResourceEnvRef2Injection1Class</injection-target-class>
+               <injection-target-name>interceptor1ResourceEnvRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor1ResourceEnvRef2Injection2Class</injection-target-class>
+               <injection-target-name>interceptor1ResourceEnvRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </resource-env-ref>
+         <message-destination-ref id="interceptor1MessageDestinationRef1-id">
+            <description>en-interceptor1MessageDestinationRef1-desc</description>
+            <description xml:lang="fr">fr-interceptor1MessageDestinationRef1-desc</description>
+            <description xml:lang="de">de-interceptor1MessageDestinationRef1-desc</description>
+            <message-destination-ref-name>interceptor1MessageDestinationRef1Name</message-destination-ref-name>
+            <message-destination-type>interceptor1MessageDestinationRef1Type</message-destination-type>
+            <message-destination-usage>Consumes</message-destination-usage>
+            <message-destination-link>interceptor1MessageDestinationRef1Link</message-destination-link>
+            <mapped-name>interceptor1MessageDestinationRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor1MessageDestinationRef1Injection1Class</injection-target-class>
+               <injection-target-name>interceptor1MessageDestinationRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor1MessageDestinationRef1Injection2Class</injection-target-class>
+               <injection-target-name>interceptor1MessageDestinationRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </message-destination-ref>
+         <message-destination-ref id="interceptor1MessageDestinationRef2-id">
+            <description>en-interceptor1MessageDestinationRef2-desc</description>
+            <description xml:lang="fr">fr-interceptor1MessageDestinationRef2-desc</description>
+            <description xml:lang="de">de-interceptor1MessageDestinationRef2-desc</description>
+            <message-destination-ref-name>interceptor1MessageDestinationRef2Name</message-destination-ref-name>
+            <message-destination-type>interceptor1MessageDestinationRef2Type</message-destination-type>
+            <message-destination-usage>Produces</message-destination-usage>
+            <message-destination-link>interceptor1MessageDestinationRef2Link</message-destination-link>
+            <mapped-name>interceptor1MessageDestinationRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor1MessageDestinationRef2Injection1Class</injection-target-class>
+               <injection-target-name>interceptor1MessageDestinationRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor1MessageDestinationRef2Injection2Class</injection-target-class>
+               <injection-target-name>interceptor1MessageDestinationRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </message-destination-ref>
+         <message-destination-ref id="interceptor1MessageDestinationRef3-id">
+            <description>en-interceptor1MessageDestinationRef3-desc</description>
+            <description xml:lang="fr">fr-interceptor1MessageDestinationRef3-desc</description>
+            <description xml:lang="de">de-interceptor1MessageDestinationRef3-desc</description>
+            <message-destination-ref-name>interceptor1MessageDestinationRef3Name</message-destination-ref-name>
+            <message-destination-type>interceptor1MessageDestinationRef3Type</message-destination-type>
+            <message-destination-usage>ConsumesProduces</message-destination-usage>
+            <message-destination-link>interceptor1MessageDestinationRef3Link</message-destination-link>
+            <mapped-name>interceptor1MessageDestinationRef3MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor1MessageDestinationRef3Injection1Class</injection-target-class>
+               <injection-target-name>interceptor1MessageDestinationRef3Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor1MessageDestinationRef3Injection2Class</injection-target-class>
+               <injection-target-name>interceptor1MessageDestinationRef3Injection2Name</injection-target-name>
+            </injection-target>
+         </message-destination-ref>
+         <persistence-context-ref id="interceptor1PersistenceContextRef1-id">
+            <description>en-interceptor1PersistenceContextRef1-desc</description>
+            <description xml:lang="fr">fr-interceptor1PersistenceContextRef1-desc</description>
+            <description xml:lang="de">de-interceptor1PersistenceContextRef1-desc</description>
+            <persistence-context-ref-name>interceptor1PersistenceContextRef1Name</persistence-context-ref-name>
+            <persistence-unit-name>interceptor1PersistenceContextRef1Unit</persistence-unit-name>
+            <persistence-context-type>Transaction</persistence-context-type>
+            <persistence-property id="interceptor1PersistenceContextRef1Property1-id">
+               <name>interceptor1PersistenceContextRef1Property1Name</name>
+               <value>interceptor1PersistenceContextRef1Property1Value</value>
+            </persistence-property>
+            <persistence-property id="interceptor1PersistenceContextRef1Property2-id">
+               <name>interceptor1PersistenceContextRef1Property2Name</name>
+               <value>interceptor1PersistenceContextRef1Property2Value</value>
+            </persistence-property>
+            <mapped-name>interceptor1PersistenceContextRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor1PersistenceContextRef1Injection1Class</injection-target-class>
+               <injection-target-name>interceptor1PersistenceContextRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor1PersistenceContextRef1Injection2Class</injection-target-class>
+               <injection-target-name>interceptor1PersistenceContextRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </persistence-context-ref>
+         <persistence-context-ref id="interceptor1PersistenceContextRef2-id">
+            <description>en-interceptor1PersistenceContextRef2-desc</description>
+            <description xml:lang="fr">fr-interceptor1PersistenceContextRef2-desc</description>
+            <description xml:lang="de">de-interceptor1PersistenceContextRef2-desc</description>
+            <persistence-context-ref-name>interceptor1PersistenceContextRef2Name</persistence-context-ref-name>
+            <persistence-unit-name>interceptor1PersistenceContextRef2Unit</persistence-unit-name>
+            <persistence-context-type>Extended</persistence-context-type>
+            <persistence-property id="interceptor1PersistenceContextRef2Property1-id">
+               <name>interceptor1PersistenceContextRef2Property1Name</name>
+               <value>interceptor1PersistenceContextRef2Property1Value</value>
+            </persistence-property>
+            <persistence-property id="interceptor1PersistenceContextRef2Property2-id">
+               <name>interceptor1PersistenceContextRef2Property2Name</name>
+               <value>interceptor1PersistenceContextRef2Property2Value</value>
+            </persistence-property>
+            <mapped-name>interceptor1PersistenceContextRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor1PersistenceContextRef2Injection1Class</injection-target-class>
+               <injection-target-name>interceptor1PersistenceContextRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor1PersistenceContextRef2Injection2Class</injection-target-class>
+               <injection-target-name>interceptor1PersistenceContextRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </persistence-context-ref>
+         <persistence-unit-ref id="interceptor1PersistenceUnitRef1-id">
+            <description>en-interceptor1PersistenceUnitRef1-desc</description>
+            <description xml:lang="fr">fr-interceptor1PersistenceUnitRef1-desc</description>
+            <description xml:lang="de">de-interceptor1PersistenceUnitRef1-desc</description>
+            <persistence-unit-ref-name>interceptor1PersistenceUnitRef1Name</persistence-unit-ref-name>
+            <persistence-unit-name>interceptor1PersistenceUnitRef1Unit</persistence-unit-name>
+            <mapped-name>interceptor1PersistenceUnitRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor1PersistenceUnitRef1Injection1Class</injection-target-class>
+               <injection-target-name>interceptor1PersistenceUnitRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor1PersistenceUnitRef1Injection2Class</injection-target-class>
+               <injection-target-name>interceptor1PersistenceUnitRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </persistence-unit-ref>
+         <persistence-unit-ref id="interceptor1PersistenceUnitRef2-id">
+            <description>en-interceptor1PersistenceUnitRef2-desc</description>
+            <description xml:lang="fr">fr-interceptor1PersistenceUnitRef2-desc</description>
+            <description xml:lang="de">de-interceptor1PersistenceUnitRef2-desc</description>
+            <persistence-unit-ref-name>interceptor1PersistenceUnitRef2Name</persistence-unit-ref-name>
+            <persistence-unit-name>interceptor1PersistenceUnitRef2Unit</persistence-unit-name>
+            <mapped-name>interceptor1PersistenceUnitRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor1PersistenceUnitRef2Injection1Class</injection-target-class>
+               <injection-target-name>interceptor1PersistenceUnitRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor1PersistenceUnitRef2Injection2Class</injection-target-class>
+               <injection-target-name>interceptor1PersistenceUnitRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </persistence-unit-ref>
+         <post-construct>
+            <lifecycle-callback-class>interceptor1PostConstruct1Class</lifecycle-callback-class>
+            <lifecycle-callback-method>interceptor1PostConstruct1Method</lifecycle-callback-method>
+         </post-construct>
+         <post-construct>
+            <lifecycle-callback-class>interceptor1PostConstruct2Class</lifecycle-callback-class>
+            <lifecycle-callback-method>interceptor1PostConstruct2Method</lifecycle-callback-method>
+         </post-construct>
+         <pre-destroy>
+            <lifecycle-callback-class>interceptor1PreDestroy1Class</lifecycle-callback-class>
+            <lifecycle-callback-method>interceptor1PreDestroy1Method</lifecycle-callback-method>
+         </pre-destroy>
+         <pre-destroy>
+            <lifecycle-callback-class>interceptor1PreDestroy2Class</lifecycle-callback-class>
+            <lifecycle-callback-method>interceptor1PreDestroy2Method</lifecycle-callback-method>
+         </pre-destroy>
+
+         <post-activate>
+            <lifecycle-callback-class>interceptor1PostActivate1Class</lifecycle-callback-class>
+            <lifecycle-callback-method>interceptor1PostActivate1Method</lifecycle-callback-method>
+         </post-activate>
+         <post-activate>
+            <lifecycle-callback-class>interceptor1PostActivate2Class</lifecycle-callback-class>
+            <lifecycle-callback-method>interceptor1PostActivate2Method</lifecycle-callback-method>
+         </post-activate>
+         <pre-passivate>
+            <lifecycle-callback-class>interceptor1PrePassivate1Class</lifecycle-callback-class>
+            <lifecycle-callback-method>interceptor1PrePassivate1Method</lifecycle-callback-method>
+         </pre-passivate>
+         <pre-passivate>
+            <lifecycle-callback-class>interceptor1PrePassivate2Class</lifecycle-callback-class>
+            <lifecycle-callback-method>interceptor1PrePassivate2Method</lifecycle-callback-method>
+         </pre-passivate>
+      </interceptor>
+      <interceptor id="interceptor2-id">
+         <description>en-interceptor2-desc</description>
+         <description xml:lang="fr">fr-interceptor2-desc</description>
+         <description xml:lang="de">de-interceptor2-desc</description>
+         <interceptor-class>interceptor2Class</interceptor-class>
+         <around-invoke>
+            <class>interceptor2AroundInvoke1Class</class>
+            <method-name>interceptor2AroundInvoke1Method</method-name>
+         </around-invoke>
+         <around-invoke>
+            <class>interceptor2AroundInvoke2Class</class>
+            <method-name>interceptor2AroundInvoke2Method</method-name>
+         </around-invoke>
+
+         <env-entry id="interceptor2EnvEntry1-id">
+            <description>en-interceptor2EnvEntry1-desc</description>
+            <description xml:lang="fr">fr-interceptor2EnvEntry1-desc</description>
+            <description xml:lang="de">de-interceptor2EnvEntry1-desc</description>
+            <env-entry-name>interceptor2EnvEntry1Name</env-entry-name>
+            <env-entry-type>interceptor2EnvEntry1Type</env-entry-type>
+            <env-entry-value>interceptor2EnvEntry1Value</env-entry-value>
+            <mapped-name>interceptor2EnvEntry1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor2EnvEntry1Injection1Class</injection-target-class>
+               <injection-target-name>interceptor2EnvEntry1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor2EnvEntry1Injection2Class</injection-target-class>
+               <injection-target-name>interceptor2EnvEntry1Injection2Name</injection-target-name>
+            </injection-target>
+         </env-entry>
+         <env-entry id="interceptor2EnvEntry2-id">
+            <description>en-interceptor2EnvEntry2-desc</description>
+            <description xml:lang="fr">fr-interceptor2EnvEntry2-desc</description>
+            <description xml:lang="de">de-interceptor2EnvEntry2-desc</description>
+            <env-entry-name>interceptor2EnvEntry2Name</env-entry-name>
+            <env-entry-type>interceptor2EnvEntry2Type</env-entry-type>
+            <env-entry-value>interceptor2EnvEntry2Value</env-entry-value>
+            <mapped-name>interceptor2EnvEntry2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor2EnvEntry2Injection1Class</injection-target-class>
+               <injection-target-name>interceptor2EnvEntry2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor2EnvEntry2Injection2Class</injection-target-class>
+               <injection-target-name>interceptor2EnvEntry2Injection2Name</injection-target-name>
+            </injection-target>
+         </env-entry>
+         <ejb-ref id="interceptor2EjbRef1-id">
+            <description>en-interceptor2EjbRef1-desc</description>
+            <description xml:lang="fr">fr-interceptor2EjbRef1-desc</description>
+            <description xml:lang="de">de-interceptor2EjbRef1-desc</description>
+            <ejb-ref-name>interceptor2EjbRef1Name</ejb-ref-name>
+            <ejb-ref-type>Session</ejb-ref-type>
+            <home>interceptor2EjbRef1Home</home>
+            <remote>interceptor2EjbRef1Remote</remote>
+            <ejb-link>interceptor2EjbRef1EjbLink</ejb-link>
+            <mapped-name>interceptor2EjbRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor2EjbRef1Injection1Class</injection-target-class>
+               <injection-target-name>interceptor2EjbRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor2EjbRef1Injection2Class</injection-target-class>
+               <injection-target-name>interceptor2EjbRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </ejb-ref>
+         <ejb-ref id="interceptor2EjbRef2-id">
+            <description>en-interceptor2EjbRef2-desc</description>
+            <description xml:lang="fr">fr-interceptor2EjbRef2-desc</description>
+            <description xml:lang="de">de-interceptor2EjbRef2-desc</description>
+            <ejb-ref-name>interceptor2EjbRef2Name</ejb-ref-name>
+            <ejb-ref-type>Entity</ejb-ref-type>
+            <home>interceptor2EjbRef2Home</home>
+            <remote>interceptor2EjbRef2Remote</remote>
+            <ejb-link>interceptor2EjbRef2EjbLink</ejb-link>
+            <mapped-name>interceptor2EjbRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor2EjbRef2Injection1Class</injection-target-class>
+               <injection-target-name>interceptor2EjbRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor2EjbRef2Injection2Class</injection-target-class>
+               <injection-target-name>interceptor2EjbRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </ejb-ref>
+         <ejb-local-ref id="interceptor2EjbLocalRef1-id">
+            <description>en-interceptor2EjbLocalRef1-desc</description>
+            <description xml:lang="fr">fr-interceptor2EjbLocalRef1-desc</description>
+            <description xml:lang="de">de-interceptor2EjbLocalRef1-desc</description>
+            <ejb-ref-name>interceptor2EjbLocalRef1Name</ejb-ref-name>
+            <ejb-ref-type>Session</ejb-ref-type>
+            <local-home>interceptor2EjbLocalRef1LocalHome</local-home>
+            <local>interceptor2EjbLocalRef1Local</local>
+            <ejb-link>interceptor2EjbLocalRef1EjbLink</ejb-link>
+            <mapped-name>interceptor2EjbLocalRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor2EjbLocalRef1Injection1Class</injection-target-class>
+               <injection-target-name>interceptor2EjbLocalRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor2EjbLocalRef1Injection2Class</injection-target-class>
+               <injection-target-name>interceptor2EjbLocalRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </ejb-local-ref>
+         <ejb-local-ref id="interceptor2EjbLocalRef2-id">
+            <description>en-interceptor2EjbLocalRef2-desc</description>
+            <description xml:lang="fr">fr-interceptor2EjbLocalRef2-desc</description>
+            <description xml:lang="de">de-interceptor2EjbLocalRef2-desc</description>
+            <ejb-ref-name>interceptor2EjbLocalRef2Name</ejb-ref-name>
+            <ejb-ref-type>Entity</ejb-ref-type>
+            <local-home>interceptor2EjbLocalRef2LocalHome</local-home>
+            <local>interceptor2EjbLocalRef2Local</local>
+            <ejb-link>interceptor2EjbLocalRef2EjbLink</ejb-link>
+            <mapped-name>interceptor2EjbLocalRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor2EjbLocalRef2Injection1Class</injection-target-class>
+               <injection-target-name>interceptor2EjbLocalRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor2EjbLocalRef2Injection2Class</injection-target-class>
+               <injection-target-name>interceptor2EjbLocalRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </ejb-local-ref>
+         
+         <!-- TODO service-refGroup -->
+
+         <resource-ref id="interceptor2ResourceRef1-id">
+            <description>en-interceptor2ResourceRef1-desc</description>
+            <description xml:lang="fr">fr-interceptor2ResourceRef1-desc</description>
+            <description xml:lang="de">de-interceptor2ResourceRef1-desc</description>
+            <res-ref-name>interceptor2ResourceRef1Name</res-ref-name>
+            <res-type>interceptor2ResourceRef1Type</res-type>
+            <res-auth>Application</res-auth>
+            <res-sharing-scope>Shareable</res-sharing-scope>
+            <mapped-name>interceptor2ResourceRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor2ResourceRef1Injection1Class</injection-target-class>
+               <injection-target-name>interceptor2ResourceRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor2ResourceRef1Injection2Class</injection-target-class>
+               <injection-target-name>interceptor2ResourceRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </resource-ref>
+         <resource-ref id="interceptor2ResourceRef2-id">
+            <description>en-interceptor2ResourceRef2-desc</description>
+            <description xml:lang="fr">fr-interceptor2ResourceRef2-desc</description>
+            <description xml:lang="de">de-interceptor2ResourceRef2-desc</description>
+            <res-ref-name>interceptor2ResourceRef2Name</res-ref-name>
+            <res-type>interceptor2ResourceRef2Type</res-type>
+            <res-auth>Container</res-auth>
+            <res-sharing-scope>Unshareable</res-sharing-scope>
+            <mapped-name>interceptor2ResourceRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor2ResourceRef2Injection1Class</injection-target-class>
+               <injection-target-name>interceptor2ResourceRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor2ResourceRef2Injection2Class</injection-target-class>
+               <injection-target-name>interceptor2ResourceRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </resource-ref>
+         <resource-env-ref id="interceptor2ResourceEnvRef1-id">
+            <description>en-interceptor2ResourceEnvRef1-desc</description>
+            <description xml:lang="fr">fr-interceptor2ResourceEnvRef1-desc</description>
+            <description xml:lang="de">de-interceptor2ResourceEnvRef1-desc</description>
+            <resource-env-ref-name>interceptor2ResourceEnvRef1Name</resource-env-ref-name>
+            <resource-env-ref-type>interceptor2ResourceEnvRef1Type</resource-env-ref-type>
+            <mapped-name>interceptor2ResourceEnvRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor2ResourceEnvRef1Injection1Class</injection-target-class>
+               <injection-target-name>interceptor2ResourceEnvRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor2ResourceEnvRef1Injection2Class</injection-target-class>
+               <injection-target-name>interceptor2ResourceEnvRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </resource-env-ref>
+         <resource-env-ref id="interceptor2ResourceEnvRef2-id">
+            <description>en-interceptor2ResourceEnvRef2-desc</description>
+            <description xml:lang="fr">fr-interceptor2ResourceEnvRef2-desc</description>
+            <description xml:lang="de">de-interceptor2ResourceEnvRef2-desc</description>
+            <resource-env-ref-name>interceptor2ResourceEnvRef2Name</resource-env-ref-name>
+            <resource-env-ref-type>interceptor2ResourceEnvRef2Type</resource-env-ref-type>
+            <mapped-name>interceptor2ResourceEnvRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor2ResourceEnvRef2Injection1Class</injection-target-class>
+               <injection-target-name>interceptor2ResourceEnvRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor2ResourceEnvRef2Injection2Class</injection-target-class>
+               <injection-target-name>interceptor2ResourceEnvRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </resource-env-ref>
+         <message-destination-ref id="interceptor2MessageDestinationRef1-id">
+            <description>en-interceptor2MessageDestinationRef1-desc</description>
+            <description xml:lang="fr">fr-interceptor2MessageDestinationRef1-desc</description>
+            <description xml:lang="de">de-interceptor2MessageDestinationRef1-desc</description>
+            <message-destination-ref-name>interceptor2MessageDestinationRef1Name</message-destination-ref-name>
+            <message-destination-type>interceptor2MessageDestinationRef1Type</message-destination-type>
+            <message-destination-usage>Consumes</message-destination-usage>
+            <message-destination-link>interceptor2MessageDestinationRef1Link</message-destination-link>
+            <mapped-name>interceptor2MessageDestinationRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor2MessageDestinationRef1Injection1Class</injection-target-class>
+               <injection-target-name>interceptor2MessageDestinationRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor2MessageDestinationRef1Injection2Class</injection-target-class>
+               <injection-target-name>interceptor2MessageDestinationRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </message-destination-ref>
+         <message-destination-ref id="interceptor2MessageDestinationRef2-id">
+            <description>en-interceptor2MessageDestinationRef2-desc</description>
+            <description xml:lang="fr">fr-interceptor2MessageDestinationRef2-desc</description>
+            <description xml:lang="de">de-interceptor2MessageDestinationRef2-desc</description>
+            <message-destination-ref-name>interceptor2MessageDestinationRef2Name</message-destination-ref-name>
+            <message-destination-type>interceptor2MessageDestinationRef2Type</message-destination-type>
+            <message-destination-usage>Produces</message-destination-usage>
+            <message-destination-link>interceptor2MessageDestinationRef2Link</message-destination-link>
+            <mapped-name>interceptor2MessageDestinationRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor2MessageDestinationRef2Injection1Class</injection-target-class>
+               <injection-target-name>interceptor2MessageDestinationRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor2MessageDestinationRef2Injection2Class</injection-target-class>
+               <injection-target-name>interceptor2MessageDestinationRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </message-destination-ref>
+         <message-destination-ref id="interceptor2MessageDestinationRef3-id">
+            <description>en-interceptor2MessageDestinationRef3-desc</description>
+            <description xml:lang="fr">fr-interceptor2MessageDestinationRef3-desc</description>
+            <description xml:lang="de">de-interceptor2MessageDestinationRef3-desc</description>
+            <message-destination-ref-name>interceptor2MessageDestinationRef3Name</message-destination-ref-name>
+            <message-destination-type>interceptor2MessageDestinationRef3Type</message-destination-type>
+            <message-destination-usage>ConsumesProduces</message-destination-usage>
+            <message-destination-link>interceptor2MessageDestinationRef3Link</message-destination-link>
+            <mapped-name>interceptor2MessageDestinationRef3MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor2MessageDestinationRef3Injection1Class</injection-target-class>
+               <injection-target-name>interceptor2MessageDestinationRef3Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor2MessageDestinationRef3Injection2Class</injection-target-class>
+               <injection-target-name>interceptor2MessageDestinationRef3Injection2Name</injection-target-name>
+            </injection-target>
+         </message-destination-ref>
+         <persistence-context-ref id="interceptor2PersistenceContextRef1-id">
+            <description>en-interceptor2PersistenceContextRef1-desc</description>
+            <description xml:lang="fr">fr-interceptor2PersistenceContextRef1-desc</description>
+            <description xml:lang="de">de-interceptor2PersistenceContextRef1-desc</description>
+            <persistence-context-ref-name>interceptor2PersistenceContextRef1Name</persistence-context-ref-name>
+            <persistence-unit-name>interceptor2PersistenceContextRef1Unit</persistence-unit-name>
+            <persistence-context-type>Transaction</persistence-context-type>
+            <persistence-property id="interceptor2PersistenceContextRef1Property1-id">
+               <name>interceptor2PersistenceContextRef1Property1Name</name>
+               <value>interceptor2PersistenceContextRef1Property1Value</value>
+            </persistence-property>
+            <persistence-property id="interceptor2PersistenceContextRef1Property2-id">
+               <name>interceptor2PersistenceContextRef1Property2Name</name>
+               <value>interceptor2PersistenceContextRef1Property2Value</value>
+            </persistence-property>
+            <mapped-name>interceptor2PersistenceContextRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor2PersistenceContextRef1Injection1Class</injection-target-class>
+               <injection-target-name>interceptor2PersistenceContextRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor2PersistenceContextRef1Injection2Class</injection-target-class>
+               <injection-target-name>interceptor2PersistenceContextRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </persistence-context-ref>
+         <persistence-context-ref id="interceptor2PersistenceContextRef2-id">
+            <description>en-interceptor2PersistenceContextRef2-desc</description>
+            <description xml:lang="fr">fr-interceptor2PersistenceContextRef2-desc</description>
+            <description xml:lang="de">de-interceptor2PersistenceContextRef2-desc</description>
+            <persistence-context-ref-name>interceptor2PersistenceContextRef2Name</persistence-context-ref-name>
+            <persistence-unit-name>interceptor2PersistenceContextRef2Unit</persistence-unit-name>
+            <persistence-context-type>Extended</persistence-context-type>
+            <persistence-property id="interceptor2PersistenceContextRef2Property1-id">
+               <name>interceptor2PersistenceContextRef2Property1Name</name>
+               <value>interceptor2PersistenceContextRef2Property1Value</value>
+            </persistence-property>
+            <persistence-property id="interceptor2PersistenceContextRef2Property2-id">
+               <name>interceptor2PersistenceContextRef2Property2Name</name>
+               <value>interceptor2PersistenceContextRef2Property2Value</value>
+            </persistence-property>
+            <mapped-name>interceptor2PersistenceContextRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor2PersistenceContextRef2Injection1Class</injection-target-class>
+               <injection-target-name>interceptor2PersistenceContextRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor2PersistenceContextRef2Injection2Class</injection-target-class>
+               <injection-target-name>interceptor2PersistenceContextRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </persistence-context-ref>
+         <persistence-unit-ref id="interceptor2PersistenceUnitRef1-id">
+            <description>en-interceptor2PersistenceUnitRef1-desc</description>
+            <description xml:lang="fr">fr-interceptor2PersistenceUnitRef1-desc</description>
+            <description xml:lang="de">de-interceptor2PersistenceUnitRef1-desc</description>
+            <persistence-unit-ref-name>interceptor2PersistenceUnitRef1Name</persistence-unit-ref-name>
+            <persistence-unit-name>interceptor2PersistenceUnitRef1Unit</persistence-unit-name>
+            <mapped-name>interceptor2PersistenceUnitRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor2PersistenceUnitRef1Injection1Class</injection-target-class>
+               <injection-target-name>interceptor2PersistenceUnitRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor2PersistenceUnitRef1Injection2Class</injection-target-class>
+               <injection-target-name>interceptor2PersistenceUnitRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </persistence-unit-ref>
+         <persistence-unit-ref id="interceptor2PersistenceUnitRef2-id">
+            <description>en-interceptor2PersistenceUnitRef2-desc</description>
+            <description xml:lang="fr">fr-interceptor2PersistenceUnitRef2-desc</description>
+            <description xml:lang="de">de-interceptor2PersistenceUnitRef2-desc</description>
+            <persistence-unit-ref-name>interceptor2PersistenceUnitRef2Name</persistence-unit-ref-name>
+            <persistence-unit-name>interceptor2PersistenceUnitRef2Unit</persistence-unit-name>
+            <mapped-name>interceptor2PersistenceUnitRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>interceptor2PersistenceUnitRef2Injection1Class</injection-target-class>
+               <injection-target-name>interceptor2PersistenceUnitRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>interceptor2PersistenceUnitRef2Injection2Class</injection-target-class>
+               <injection-target-name>interceptor2PersistenceUnitRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </persistence-unit-ref>
+         <post-construct>
+            <lifecycle-callback-class>interceptor2PostConstruct1Class</lifecycle-callback-class>
+            <lifecycle-callback-method>interceptor2PostConstruct1Method</lifecycle-callback-method>
+         </post-construct>
+         <post-construct>
+            <lifecycle-callback-class>interceptor2PostConstruct2Class</lifecycle-callback-class>
+            <lifecycle-callback-method>interceptor2PostConstruct2Method</lifecycle-callback-method>
+         </post-construct>
+         <pre-destroy>
+            <lifecycle-callback-class>interceptor2PreDestroy1Class</lifecycle-callback-class>
+            <lifecycle-callback-method>interceptor2PreDestroy1Method</lifecycle-callback-method>
+         </pre-destroy>
+         <pre-destroy>
+            <lifecycle-callback-class>interceptor2PreDestroy2Class</lifecycle-callback-class>
+            <lifecycle-callback-method>interceptor2PreDestroy2Method</lifecycle-callback-method>
+         </pre-destroy>
+
+         <post-activate>
+            <lifecycle-callback-class>interceptor2PostActivate1Class</lifecycle-callback-class>
+            <lifecycle-callback-method>interceptor2PostActivate1Method</lifecycle-callback-method>
+         </post-activate>
+         <post-activate>
+            <lifecycle-callback-class>interceptor2PostActivate2Class</lifecycle-callback-class>
+            <lifecycle-callback-method>interceptor2PostActivate2Method</lifecycle-callback-method>
+         </post-activate>
+         <pre-passivate>
+            <lifecycle-callback-class>interceptor2PrePassivate1Class</lifecycle-callback-class>
+            <lifecycle-callback-method>interceptor2PrePassivate1Method</lifecycle-callback-method>
+         </pre-passivate>
+         <pre-passivate>
+            <lifecycle-callback-class>interceptor2PrePassivate2Class</lifecycle-callback-class>
+            <lifecycle-callback-method>interceptor2PrePassivate2Method</lifecycle-callback-method>
+         </pre-passivate>
+      </interceptor>
+   </interceptors>
+
+   <relationships id="relationships-id">
+      <description>en-relationships-desc</description>
+      <description xml:lang="fr">fr-relationships-desc</description>
+      <description xml:lang="de">de-relationships-desc</description>
+      <ejb-relation id="relation1-id">
+         <description>en-relation1-desc</description>
+         <description xml:lang="fr">fr-relation1-desc</description>
+         <description xml:lang="de">de-relation1-desc</description>
+         <ejb-relation-name>relation1Name</ejb-relation-name>
+         <ejb-relationship-role id="relation1Role1-id">
+            <description>en-relation1Role1-desc</description>
+            <description xml:lang="fr">fr-relation1Role1-desc</description>
+            <description xml:lang="de">de-relation1Role1-desc</description>
+            <ejb-relationship-role-name>relation1Role1Name</ejb-relationship-role-name>
+            <multiplicity>One</multiplicity>
+            <cascade-delete id="relation1Role1CascadeDelete-id"/>
+            <relationship-role-source id="relation1Role1RoleSource-id">
+               <description>en-relation1Role1RoleSource-desc</description>
+               <description xml:lang="fr">fr-relation1Role1RoleSource-desc</description>
+               <description xml:lang="de">de-relation1Role1RoleSource-desc</description>
+               <ejb-name>relation1Role1RoleSourceName</ejb-name>
+            </relationship-role-source>
+            <cmr-field id="relation1Role1CmrField-id">
+               <description>en-relation1Role1CmrField-desc</description>
+               <description xml:lang="fr">fr-relation1Role1CmrField-desc</description>
+               <description xml:lang="de">de-relation1Role1CmrField-desc</description>
+               <cmr-field-name>relation1Role1CmrFieldName</cmr-field-name>
+               <cmr-field-type>relation1Role1CmrFieldType</cmr-field-type>
+            </cmr-field>
+         </ejb-relationship-role>
+         <ejb-relationship-role id="relation1Role2-id">
+            <description>en-relation1Role2-desc</description>
+            <description xml:lang="fr">fr-relation1Role2-desc</description>
+            <description xml:lang="de">de-relation1Role2-desc</description>
+            <ejb-relationship-role-name>relation1Role2Name</ejb-relationship-role-name>
+            <multiplicity>Many</multiplicity>
+            <cascade-delete id="relation1Role2CascadeDelete-id"/>
+            <relationship-role-source id="relation1Role2RoleSource-id">
+               <description>en-relation1Role2RoleSource-desc</description>
+               <description xml:lang="fr">fr-relation1Role2RoleSource-desc</description>
+               <description xml:lang="de">de-relation1Role2RoleSource-desc</description>
+               <ejb-name>relation1Role2RoleSourceName</ejb-name>
+            </relationship-role-source>
+            <cmr-field id="relation1Role2CmrField-id">
+               <description>en-relation1Role2CmrField-desc</description>
+               <description xml:lang="fr">fr-relation1Role2CmrField-desc</description>
+               <description xml:lang="de">de-relation1Role2CmrField-desc</description>
+               <cmr-field-name>relation1Role2CmrFieldName</cmr-field-name>
+               <cmr-field-type>relation1Role2CmrFieldType</cmr-field-type>
+            </cmr-field>
+         </ejb-relationship-role>
+      </ejb-relation>
+      <ejb-relation id="relation2-id">
+         <description>en-relation2-desc</description>
+         <description xml:lang="fr">fr-relation2-desc</description>
+         <description xml:lang="de">de-relation2-desc</description>
+         <ejb-relation-name>relation2Name</ejb-relation-name>
+         <ejb-relationship-role id="relation2Role1-id">
+            <description>en-relation2Role1-desc</description>
+            <description xml:lang="fr">fr-relation2Role1-desc</description>
+            <description xml:lang="de">de-relation2Role1-desc</description>
+            <ejb-relationship-role-name>relation2Role1Name</ejb-relationship-role-name>
+            <multiplicity>One</multiplicity>
+            <cascade-delete id="relation2Role1CascadeDelete-id"/>
+            <relationship-role-source id="relation2Role1RoleSource-id">
+               <description>en-relation2Role1RoleSource-desc</description>
+               <description xml:lang="fr">fr-relation2Role1RoleSource-desc</description>
+               <description xml:lang="de">de-relation2Role1RoleSource-desc</description>
+               <ejb-name>relation2Role1RoleSourceName</ejb-name>
+            </relationship-role-source>
+            <cmr-field id="relation2Role1CmrField-id">
+               <description>en-relation2Role1CmrField-desc</description>
+               <description xml:lang="fr">fr-relation2Role1CmrField-desc</description>
+               <description xml:lang="de">de-relation2Role1CmrField-desc</description>
+               <cmr-field-name>relation2Role1CmrFieldName</cmr-field-name>
+               <cmr-field-type>relation2Role1CmrFieldType</cmr-field-type>
+            </cmr-field>
+         </ejb-relationship-role>
+         <ejb-relationship-role id="relation2Role2-id">
+            <description>en-relation2Role2-desc</description>
+            <description xml:lang="fr">fr-relation2Role2-desc</description>
+            <description xml:lang="de">de-relation2Role2-desc</description>
+            <ejb-relationship-role-name>relation2Role2Name</ejb-relationship-role-name>
+            <multiplicity>Many</multiplicity>
+            <cascade-delete id="relation2Role2CascadeDelete-id"/>
+            <relationship-role-source id="relation2Role2RoleSource-id">
+               <description>en-relation2Role2RoleSource-desc</description>
+               <description xml:lang="fr">fr-relation2Role2RoleSource-desc</description>
+               <description xml:lang="de">de-relation2Role2RoleSource-desc</description>
+               <ejb-name>relation2Role2RoleSourceName</ejb-name>
+            </relationship-role-source>
+            <cmr-field id="relation2Role2CmrField-id">
+               <description>en-relation2Role2CmrField-desc</description>
+               <description xml:lang="fr">fr-relation2Role2CmrField-desc</description>
+               <description xml:lang="de">de-relation2Role2CmrField-desc</description>
+               <cmr-field-name>relation2Role2CmrFieldName</cmr-field-name>
+               <cmr-field-type>relation2Role2CmrFieldType</cmr-field-type>
+            </cmr-field>
+         </ejb-relationship-role>
+      </ejb-relation>
+   </relationships>
+
+   <assembly-descriptor id="assembly-descriptor-id">
+
+      <security-role id="securityRole1-id">
+         <description>en-securityRole1-desc</description>
+         <description xml:lang="fr">fr-securityRole1-desc</description>
+         <description xml:lang="de">de-securityRole1-desc</description>
+         <role-name>securityRole1RoleName</role-name>
+      </security-role>
+      <security-role id="securityRole2-id">
+         <description>en-securityRole2-desc</description>
+         <description xml:lang="fr">fr-securityRole2-desc</description>
+         <description xml:lang="de">de-securityRole2-desc</description>
+         <role-name>securityRole2RoleName</role-name>
+      </security-role>
+      
+      <method-permission id="methodPermission1-id">
+         <description>en-methodPermission1-desc</description>
+         <description xml:lang="fr">fr-methodPermission1-desc</description>
+         <description xml:lang="de">de-methodPermission1-desc</description>
+         <unchecked id="methodPermission1Unchecked-id"/>
+         <method id="methodPermission1Method1-id">
+            <description>en-methodPermission1Method1-desc</description>
+            <description xml:lang="fr">fr-methodPermission1Method1-desc</description>
+            <description xml:lang="de">de-methodPermission1Method1-desc</description>
+            <ejb-name>methodPermission1Method1EjbName</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>methodPermission1Method1MethodName</method-name>
+            <method-params>
+               <method-param>methodPermission1Method1Param1</method-param>
+               <method-param>methodPermission1Method1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="methodPermission1Method2-id">
+            <description>en-methodPermission1Method2-desc</description>
+            <description xml:lang="fr">fr-methodPermission1Method2-desc</description>
+            <description xml:lang="de">de-methodPermission1Method2-desc</description>
+            <ejb-name>methodPermission1Method2EjbName</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>methodPermission1Method2MethodName</method-name>
+         </method>
+         <method id="methodPermission1Method3-id">
+            <description>en-methodPermission1Method3-desc</description>
+            <description xml:lang="fr">fr-methodPermission1Method3-desc</description>
+            <description xml:lang="de">de-methodPermission1Method3-desc</description>
+            <ejb-name>methodPermission1Method3EjbName</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>methodPermission1Method3MethodName</method-name>
+         </method>
+         <method id="methodPermission1Method4-id">
+            <description>en-methodPermission1Method4-desc</description>
+            <description xml:lang="fr">fr-methodPermission1Method4-desc</description>
+            <description xml:lang="de">de-methodPermission1Method4-desc</description>
+            <ejb-name>methodPermission1Method4EjbName</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>methodPermission1Method4MethodName</method-name>
+         </method>
+         <method id="methodPermission1Method5-id">
+            <description>en-methodPermission1Method5-desc</description>
+            <description xml:lang="fr">fr-methodPermission1Method5-desc</description>
+            <description xml:lang="de">de-methodPermission1Method5-desc</description>
+            <ejb-name>methodPermission1Method5EjbName</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>methodPermission1Method5MethodName</method-name>
+         </method>
+      </method-permission>
+      <method-permission id="methodPermission2-id">
+         <description>en-methodPermission2-desc</description>
+         <description xml:lang="fr">fr-methodPermission2-desc</description>
+         <description xml:lang="de">de-methodPermission2-desc</description>
+         <role-name>methodPermission2RoleName1</role-name>
+         <role-name>methodPermission2RoleName2</role-name>
+         <method id="methodPermission2Method1-id">
+            <description>en-methodPermission2Method1-desc</description>
+            <description xml:lang="fr">fr-methodPermission2Method1-desc</description>
+            <description xml:lang="de">de-methodPermission2Method1-desc</description>
+            <ejb-name>methodPermission2Method1EjbName</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>methodPermission2Method1MethodName</method-name>
+            <method-params>
+               <method-param>methodPermission2Method1Param1</method-param>
+               <method-param>methodPermission2Method1Param2</method-param>
+            </method-params>
+         </method>
+      </method-permission>
+      <method-permission id="methodPermission3-id">
+         <description>en-methodPermission3-desc</description>
+         <description xml:lang="fr">fr-methodPermission3-desc</description>
+         <description xml:lang="de">de-methodPermission3-desc</description>
+         <role-name>methodPermission3RoleName1</role-name>
+         <role-name>methodPermission3RoleName2</role-name>
+         <method id="methodPermission3Method1-id">
+            <description>en-methodPermission3Method1-desc</description>
+            <description xml:lang="fr">fr-methodPermission3Method1-desc</description>
+            <description xml:lang="de">de-methodPermission3Method1-desc</description>
+            <ejb-name>methodPermission3Method1EjbName</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>methodPermission3Method1MethodName</method-name>
+            <method-params>
+               <method-param>methodPermission3Method1Param1</method-param>
+               <method-param>methodPermission3Method1Param2</method-param>
+            </method-params>
+         </method>
+      </method-permission>
+      
+      <method-permission id="session1MethodPermission1-id">
+         <description>en-session1MethodPermission1-desc</description>
+         <description xml:lang="fr">fr-session1MethodPermission1-desc</description>
+         <description xml:lang="de">de-session1MethodPermission1-desc</description>
+         <unchecked id="session1MethodPermission1Unchecked-id"/>
+         <method id="session1MethodPermission1Method1-id">
+            <description>en-session1MethodPermission1Method1-desc</description>
+            <description xml:lang="fr">fr-session1MethodPermission1Method1-desc</description>
+            <description xml:lang="de">de-session1MethodPermission1Method1-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session1MethodPermission1Method1MethodName</method-name>
+            <method-params>
+               <method-param>session1MethodPermission1Method1Param1</method-param>
+               <method-param>session1MethodPermission1Method1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="session1MethodPermission1Method2-id">
+            <description>en-session1MethodPermission1Method2-desc</description>
+            <description xml:lang="fr">fr-session1MethodPermission1Method2-desc</description>
+            <description xml:lang="de">de-session1MethodPermission1Method2-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>session1MethodPermission1Method2MethodName</method-name>
+         </method>
+         <method id="session1MethodPermission1Method3-id">
+            <description>en-session1MethodPermission1Method3-desc</description>
+            <description xml:lang="fr">fr-session1MethodPermission1Method3-desc</description>
+            <description xml:lang="de">de-session1MethodPermission1Method3-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>session1MethodPermission1Method3MethodName</method-name>
+         </method>
+         <method id="session1MethodPermission1Method4-id">
+            <description>en-session1MethodPermission1Method4-desc</description>
+            <description xml:lang="fr">fr-session1MethodPermission1Method4-desc</description>
+            <description xml:lang="de">de-session1MethodPermission1Method4-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>session1MethodPermission1Method4MethodName</method-name>
+         </method>
+         <method id="session1MethodPermission1Method5-id">
+            <description>en-session1MethodPermission1Method5-desc</description>
+            <description xml:lang="fr">fr-session1MethodPermission1Method5-desc</description>
+            <description xml:lang="de">de-session1MethodPermission1Method5-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>session1MethodPermission1Method5MethodName</method-name>
+         </method>
+      </method-permission>
+      <method-permission id="session1MethodPermission2-id">
+         <description>en-session1MethodPermission2-desc</description>
+         <description xml:lang="fr">fr-session1MethodPermission2-desc</description>
+         <description xml:lang="de">de-session1MethodPermission2-desc</description>
+         <role-name>session1MethodPermission2RoleName1</role-name>
+         <role-name>session1MethodPermission2RoleName2</role-name>
+         <method id="session1MethodPermission2Method1-id">
+            <description>en-session1MethodPermission2Method1-desc</description>
+            <description xml:lang="fr">fr-session1MethodPermission2Method1-desc</description>
+            <description xml:lang="de">de-session1MethodPermission2Method1-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session1MethodPermission2Method1MethodName</method-name>
+            <method-params>
+               <method-param>session1MethodPermission2Method1Param1</method-param>
+               <method-param>session1MethodPermission2Method1Param2</method-param>
+            </method-params>
+         </method>
+      </method-permission>
+      <method-permission id="session1MethodPermission3-id">
+         <description>en-session1MethodPermission3-desc</description>
+         <description xml:lang="fr">fr-session1MethodPermission3-desc</description>
+         <description xml:lang="de">de-session1MethodPermission3-desc</description>
+         <role-name>session1MethodPermission3RoleName1</role-name>
+         <role-name>session1MethodPermission3RoleName2</role-name>
+         <method id="session1MethodPermission3Method1-id">
+            <description>en-session1MethodPermission3Method1-desc</description>
+            <description xml:lang="fr">fr-session1MethodPermission3Method1-desc</description>
+            <description xml:lang="de">de-session1MethodPermission3Method1-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session1MethodPermission3Method1MethodName</method-name>
+            <method-params>
+               <method-param>session1MethodPermission3Method1Param1</method-param>
+               <method-param>session1MethodPermission3Method1Param2</method-param>
+            </method-params>
+         </method>
+      </method-permission>
+      
+      <method-permission id="session2MethodPermission1-id">
+         <description>en-session2MethodPermission1-desc</description>
+         <description xml:lang="fr">fr-session2MethodPermission1-desc</description>
+         <description xml:lang="de">de-session2MethodPermission1-desc</description>
+         <unchecked id="session2MethodPermission1Unchecked-id"/>
+         <method id="session2MethodPermission1Method1-id">
+            <description>en-session2MethodPermission1Method1-desc</description>
+            <description xml:lang="fr">fr-session2MethodPermission1Method1-desc</description>
+            <description xml:lang="de">de-session2MethodPermission1Method1-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session2MethodPermission1Method1MethodName</method-name>
+            <method-params>
+               <method-param>session2MethodPermission1Method1Param1</method-param>
+               <method-param>session2MethodPermission1Method1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="session2MethodPermission1Method2-id">
+            <description>en-session2MethodPermission1Method2-desc</description>
+            <description xml:lang="fr">fr-session2MethodPermission1Method2-desc</description>
+            <description xml:lang="de">de-session2MethodPermission1Method2-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>session2MethodPermission1Method2MethodName</method-name>
+         </method>
+         <method id="session2MethodPermission1Method3-id">
+            <description>en-session2MethodPermission1Method3-desc</description>
+            <description xml:lang="fr">fr-session2MethodPermission1Method3-desc</description>
+            <description xml:lang="de">de-session2MethodPermission1Method3-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>session2MethodPermission1Method3MethodName</method-name>
+         </method>
+         <method id="session2MethodPermission1Method4-id">
+            <description>en-session2MethodPermission1Method4-desc</description>
+            <description xml:lang="fr">fr-session2MethodPermission1Method4-desc</description>
+            <description xml:lang="de">de-session2MethodPermission1Method4-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>session2MethodPermission1Method4MethodName</method-name>
+         </method>
+         <method id="session2MethodPermission1Method5-id">
+            <description>en-session2MethodPermission1Method5-desc</description>
+            <description xml:lang="fr">fr-session2MethodPermission1Method5-desc</description>
+            <description xml:lang="de">de-session2MethodPermission1Method5-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>session2MethodPermission1Method5MethodName</method-name>
+         </method>
+      </method-permission>
+      <method-permission id="session2MethodPermission2-id">
+         <description>en-session2MethodPermission2-desc</description>
+         <description xml:lang="fr">fr-session2MethodPermission2-desc</description>
+         <description xml:lang="de">de-session2MethodPermission2-desc</description>
+         <role-name>session2MethodPermission2RoleName1</role-name>
+         <role-name>session2MethodPermission2RoleName2</role-name>
+         <method id="session2MethodPermission2Method1-id">
+            <description>en-session2MethodPermission2Method1-desc</description>
+            <description xml:lang="fr">fr-session2MethodPermission2Method1-desc</description>
+            <description xml:lang="de">de-session2MethodPermission2Method1-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session2MethodPermission2Method1MethodName</method-name>
+            <method-params>
+               <method-param>session2MethodPermission2Method1Param1</method-param>
+               <method-param>session2MethodPermission2Method1Param2</method-param>
+            </method-params>
+         </method>
+      </method-permission>
+      <method-permission id="session2MethodPermission3-id">
+         <description>en-session2MethodPermission3-desc</description>
+         <description xml:lang="fr">fr-session2MethodPermission3-desc</description>
+         <description xml:lang="de">de-session2MethodPermission3-desc</description>
+         <role-name>session2MethodPermission3RoleName1</role-name>
+         <role-name>session2MethodPermission3RoleName2</role-name>
+         <method id="session2MethodPermission3Method1-id">
+            <description>en-session2MethodPermission3Method1-desc</description>
+            <description xml:lang="fr">fr-session2MethodPermission3Method1-desc</description>
+            <description xml:lang="de">de-session2MethodPermission3Method1-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session2MethodPermission3Method1MethodName</method-name>
+            <method-params>
+               <method-param>session2MethodPermission3Method1Param1</method-param>
+               <method-param>session2MethodPermission3Method1Param2</method-param>
+            </method-params>
+         </method>
+      </method-permission>
+      
+      <method-permission id="entity1MethodPermission1-id">
+         <description>en-entity1MethodPermission1-desc</description>
+         <description xml:lang="fr">fr-entity1MethodPermission1-desc</description>
+         <description xml:lang="de">de-entity1MethodPermission1-desc</description>
+         <unchecked id="entity1MethodPermission1Unchecked-id"/>
+         <method id="entity1MethodPermission1Method1-id">
+            <description>en-entity1MethodPermission1Method1-desc</description>
+            <description xml:lang="fr">fr-entity1MethodPermission1Method1-desc</description>
+            <description xml:lang="de">de-entity1MethodPermission1Method1-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity1MethodPermission1Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity1MethodPermission1Method1Param1</method-param>
+               <method-param>entity1MethodPermission1Method1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="entity1MethodPermission1Method2-id">
+            <description>en-entity1MethodPermission1Method2-desc</description>
+            <description xml:lang="fr">fr-entity1MethodPermission1Method2-desc</description>
+            <description xml:lang="de">de-entity1MethodPermission1Method2-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>entity1MethodPermission1Method2MethodName</method-name>
+         </method>
+         <method id="entity1MethodPermission1Method3-id">
+            <description>en-entity1MethodPermission1Method3-desc</description>
+            <description xml:lang="fr">fr-entity1MethodPermission1Method3-desc</description>
+            <description xml:lang="de">de-entity1MethodPermission1Method3-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>entity1MethodPermission1Method3MethodName</method-name>
+         </method>
+         <method id="entity1MethodPermission1Method4-id">
+            <description>en-entity1MethodPermission1Method4-desc</description>
+            <description xml:lang="fr">fr-entity1MethodPermission1Method4-desc</description>
+            <description xml:lang="de">de-entity1MethodPermission1Method4-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>entity1MethodPermission1Method4MethodName</method-name>
+         </method>
+         <method id="entity1MethodPermission1Method5-id">
+            <description>en-entity1MethodPermission1Method5-desc</description>
+            <description xml:lang="fr">fr-entity1MethodPermission1Method5-desc</description>
+            <description xml:lang="de">de-entity1MethodPermission1Method5-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>entity1MethodPermission1Method5MethodName</method-name>
+         </method>
+      </method-permission>
+      <method-permission id="entity1MethodPermission2-id">
+         <description>en-entity1MethodPermission2-desc</description>
+         <description xml:lang="fr">fr-entity1MethodPermission2-desc</description>
+         <description xml:lang="de">de-entity1MethodPermission2-desc</description>
+         <role-name>entity1MethodPermission2RoleName1</role-name>
+         <role-name>entity1MethodPermission2RoleName2</role-name>
+         <method id="entity1MethodPermission2Method1-id">
+            <description>en-entity1MethodPermission2Method1-desc</description>
+            <description xml:lang="fr">fr-entity1MethodPermission2Method1-desc</description>
+            <description xml:lang="de">de-entity1MethodPermission2Method1-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity1MethodPermission2Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity1MethodPermission2Method1Param1</method-param>
+               <method-param>entity1MethodPermission2Method1Param2</method-param>
+            </method-params>
+         </method>
+      </method-permission>
+      <method-permission id="entity1MethodPermission3-id">
+         <description>en-entity1MethodPermission3-desc</description>
+         <description xml:lang="fr">fr-entity1MethodPermission3-desc</description>
+         <description xml:lang="de">de-entity1MethodPermission3-desc</description>
+         <role-name>entity1MethodPermission3RoleName1</role-name>
+         <role-name>entity1MethodPermission3RoleName2</role-name>
+         <method id="entity1MethodPermission3Method1-id">
+            <description>en-entity1MethodPermission3Method1-desc</description>
+            <description xml:lang="fr">fr-entity1MethodPermission3Method1-desc</description>
+            <description xml:lang="de">de-entity1MethodPermission3Method1-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity1MethodPermission3Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity1MethodPermission3Method1Param1</method-param>
+               <method-param>entity1MethodPermission3Method1Param2</method-param>
+            </method-params>
+         </method>
+      </method-permission>
+      
+      <method-permission id="entity2MethodPermission1-id">
+         <description>en-entity2MethodPermission1-desc</description>
+         <description xml:lang="fr">fr-entity2MethodPermission1-desc</description>
+         <description xml:lang="de">de-entity2MethodPermission1-desc</description>
+         <unchecked id="entity2MethodPermission1Unchecked-id"/>
+         <method id="entity2MethodPermission1Method1-id">
+            <description>en-entity2MethodPermission1Method1-desc</description>
+            <description xml:lang="fr">fr-entity2MethodPermission1Method1-desc</description>
+            <description xml:lang="de">de-entity2MethodPermission1Method1-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity2MethodPermission1Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity2MethodPermission1Method1Param1</method-param>
+               <method-param>entity2MethodPermission1Method1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="entity2MethodPermission1Method2-id">
+            <description>en-entity2MethodPermission1Method2-desc</description>
+            <description xml:lang="fr">fr-entity2MethodPermission1Method2-desc</description>
+            <description xml:lang="de">de-entity2MethodPermission1Method2-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>entity2MethodPermission1Method2MethodName</method-name>
+         </method>
+         <method id="entity2MethodPermission1Method3-id">
+            <description>en-entity2MethodPermission1Method3-desc</description>
+            <description xml:lang="fr">fr-entity2MethodPermission1Method3-desc</description>
+            <description xml:lang="de">de-entity2MethodPermission1Method3-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>entity2MethodPermission1Method3MethodName</method-name>
+         </method>
+         <method id="entity2MethodPermission1Method4-id">
+            <description>en-entity2MethodPermission1Method4-desc</description>
+            <description xml:lang="fr">fr-entity2MethodPermission1Method4-desc</description>
+            <description xml:lang="de">de-entity2MethodPermission1Method4-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>entity2MethodPermission1Method4MethodName</method-name>
+         </method>
+         <method id="entity2MethodPermission1Method5-id">
+            <description>en-entity2MethodPermission1Method5-desc</description>
+            <description xml:lang="fr">fr-entity2MethodPermission1Method5-desc</description>
+            <description xml:lang="de">de-entity2MethodPermission1Method5-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>entity2MethodPermission1Method5MethodName</method-name>
+         </method>
+      </method-permission>
+      <method-permission id="entity2MethodPermission2-id">
+         <description>en-entity2MethodPermission2-desc</description>
+         <description xml:lang="fr">fr-entity2MethodPermission2-desc</description>
+         <description xml:lang="de">de-entity2MethodPermission2-desc</description>
+         <role-name>entity2MethodPermission2RoleName1</role-name>
+         <role-name>entity2MethodPermission2RoleName2</role-name>
+         <method id="entity2MethodPermission2Method1-id">
+            <description>en-entity2MethodPermission2Method1-desc</description>
+            <description xml:lang="fr">fr-entity2MethodPermission2Method1-desc</description>
+            <description xml:lang="de">de-entity2MethodPermission2Method1-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity2MethodPermission2Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity2MethodPermission2Method1Param1</method-param>
+               <method-param>entity2MethodPermission2Method1Param2</method-param>
+            </method-params>
+         </method>
+      </method-permission>
+      <method-permission id="entity2MethodPermission3-id">
+         <description>en-entity2MethodPermission3-desc</description>
+         <description xml:lang="fr">fr-entity2MethodPermission3-desc</description>
+         <description xml:lang="de">de-entity2MethodPermission3-desc</description>
+         <role-name>entity2MethodPermission3RoleName1</role-name>
+         <role-name>entity2MethodPermission3RoleName2</role-name>
+         <method id="entity2MethodPermission3Method1-id">
+            <description>en-entity2MethodPermission3Method1-desc</description>
+            <description xml:lang="fr">fr-entity2MethodPermission3Method1-desc</description>
+            <description xml:lang="de">de-entity2MethodPermission3Method1-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity2MethodPermission3Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity2MethodPermission3Method1Param1</method-param>
+               <method-param>entity2MethodPermission3Method1Param2</method-param>
+            </method-params>
+         </method>
+      </method-permission>
+      
+      <method-permission id="mdb1MethodPermission1-id">
+         <description>en-mdb1MethodPermission1-desc</description>
+         <description xml:lang="fr">fr-mdb1MethodPermission1-desc</description>
+         <description xml:lang="de">de-mdb1MethodPermission1-desc</description>
+         <unchecked id="mdb1MethodPermission1Unchecked-id"/>
+         <method id="mdb1MethodPermission1Method1-id">
+            <description>en-mdb1MethodPermission1Method1-desc</description>
+            <description xml:lang="fr">fr-mdb1MethodPermission1Method1-desc</description>
+            <description xml:lang="de">de-mdb1MethodPermission1Method1-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb1MethodPermission1Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb1MethodPermission1Method1Param1</method-param>
+               <method-param>mdb1MethodPermission1Method1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="mdb1MethodPermission1Method2-id">
+            <description>en-mdb1MethodPermission1Method2-desc</description>
+            <description xml:lang="fr">fr-mdb1MethodPermission1Method2-desc</description>
+            <description xml:lang="de">de-mdb1MethodPermission1Method2-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>mdb1MethodPermission1Method2MethodName</method-name>
+         </method>
+         <method id="mdb1MethodPermission1Method3-id">
+            <description>en-mdb1MethodPermission1Method3-desc</description>
+            <description xml:lang="fr">fr-mdb1MethodPermission1Method3-desc</description>
+            <description xml:lang="de">de-mdb1MethodPermission1Method3-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>mdb1MethodPermission1Method3MethodName</method-name>
+         </method>
+         <method id="mdb1MethodPermission1Method4-id">
+            <description>en-mdb1MethodPermission1Method4-desc</description>
+            <description xml:lang="fr">fr-mdb1MethodPermission1Method4-desc</description>
+            <description xml:lang="de">de-mdb1MethodPermission1Method4-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>mdb1MethodPermission1Method4MethodName</method-name>
+         </method>
+         <method id="mdb1MethodPermission1Method5-id">
+            <description>en-mdb1MethodPermission1Method5-desc</description>
+            <description xml:lang="fr">fr-mdb1MethodPermission1Method5-desc</description>
+            <description xml:lang="de">de-mdb1MethodPermission1Method5-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>mdb1MethodPermission1Method5MethodName</method-name>
+         </method>
+      </method-permission>
+      <method-permission id="mdb1MethodPermission2-id">
+         <description>en-mdb1MethodPermission2-desc</description>
+         <description xml:lang="fr">fr-mdb1MethodPermission2-desc</description>
+         <description xml:lang="de">de-mdb1MethodPermission2-desc</description>
+         <role-name>mdb1MethodPermission2RoleName1</role-name>
+         <role-name>mdb1MethodPermission2RoleName2</role-name>
+         <method id="mdb1MethodPermission2Method1-id">
+            <description>en-mdb1MethodPermission2Method1-desc</description>
+            <description xml:lang="fr">fr-mdb1MethodPermission2Method1-desc</description>
+            <description xml:lang="de">de-mdb1MethodPermission2Method1-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb1MethodPermission2Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb1MethodPermission2Method1Param1</method-param>
+               <method-param>mdb1MethodPermission2Method1Param2</method-param>
+            </method-params>
+         </method>
+      </method-permission>
+      <method-permission id="mdb1MethodPermission3-id">
+         <description>en-mdb1MethodPermission3-desc</description>
+         <description xml:lang="fr">fr-mdb1MethodPermission3-desc</description>
+         <description xml:lang="de">de-mdb1MethodPermission3-desc</description>
+         <role-name>mdb1MethodPermission3RoleName1</role-name>
+         <role-name>mdb1MethodPermission3RoleName2</role-name>
+         <method id="mdb1MethodPermission3Method1-id">
+            <description>en-mdb1MethodPermission3Method1-desc</description>
+            <description xml:lang="fr">fr-mdb1MethodPermission3Method1-desc</description>
+            <description xml:lang="de">de-mdb1MethodPermission3Method1-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb1MethodPermission3Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb1MethodPermission3Method1Param1</method-param>
+               <method-param>mdb1MethodPermission3Method1Param2</method-param>
+            </method-params>
+         </method>
+      </method-permission>
+      
+      <method-permission id="mdb2MethodPermission1-id">
+         <description>en-mdb2MethodPermission1-desc</description>
+         <description xml:lang="fr">fr-mdb2MethodPermission1-desc</description>
+         <description xml:lang="de">de-mdb2MethodPermission1-desc</description>
+         <unchecked id="mdb2MethodPermission1Unchecked-id"/>
+         <method id="mdb2MethodPermission1Method1-id">
+            <description>en-mdb2MethodPermission1Method1-desc</description>
+            <description xml:lang="fr">fr-mdb2MethodPermission1Method1-desc</description>
+            <description xml:lang="de">de-mdb2MethodPermission1Method1-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb2MethodPermission1Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb2MethodPermission1Method1Param1</method-param>
+               <method-param>mdb2MethodPermission1Method1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="mdb2MethodPermission1Method2-id">
+            <description>en-mdb2MethodPermission1Method2-desc</description>
+            <description xml:lang="fr">fr-mdb2MethodPermission1Method2-desc</description>
+            <description xml:lang="de">de-mdb2MethodPermission1Method2-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>mdb2MethodPermission1Method2MethodName</method-name>
+         </method>
+         <method id="mdb2MethodPermission1Method3-id">
+            <description>en-mdb2MethodPermission1Method3-desc</description>
+            <description xml:lang="fr">fr-mdb2MethodPermission1Method3-desc</description>
+            <description xml:lang="de">de-mdb2MethodPermission1Method3-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>mdb2MethodPermission1Method3MethodName</method-name>
+         </method>
+         <method id="mdb2MethodPermission1Method4-id">
+            <description>en-mdb2MethodPermission1Method4-desc</description>
+            <description xml:lang="fr">fr-mdb2MethodPermission1Method4-desc</description>
+            <description xml:lang="de">de-mdb2MethodPermission1Method4-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>mdb2MethodPermission1Method4MethodName</method-name>
+         </method>
+         <method id="mdb2MethodPermission1Method5-id">
+            <description>en-mdb2MethodPermission1Method5-desc</description>
+            <description xml:lang="fr">fr-mdb2MethodPermission1Method5-desc</description>
+            <description xml:lang="de">de-mdb2MethodPermission1Method5-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>mdb2MethodPermission1Method5MethodName</method-name>
+         </method>
+      </method-permission>
+      <method-permission id="mdb2MethodPermission2-id">
+         <description>en-mdb2MethodPermission2-desc</description>
+         <description xml:lang="fr">fr-mdb2MethodPermission2-desc</description>
+         <description xml:lang="de">de-mdb2MethodPermission2-desc</description>
+         <role-name>mdb2MethodPermission2RoleName1</role-name>
+         <role-name>mdb2MethodPermission2RoleName2</role-name>
+         <method id="mdb2MethodPermission2Method1-id">
+            <description>en-mdb2MethodPermission2Method1-desc</description>
+            <description xml:lang="fr">fr-mdb2MethodPermission2Method1-desc</description>
+            <description xml:lang="de">de-mdb2MethodPermission2Method1-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb2MethodPermission2Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb2MethodPermission2Method1Param1</method-param>
+               <method-param>mdb2MethodPermission2Method1Param2</method-param>
+            </method-params>
+         </method>
+      </method-permission>
+      <method-permission id="mdb2MethodPermission3-id">
+         <description>en-mdb2MethodPermission3-desc</description>
+         <description xml:lang="fr">fr-mdb2MethodPermission3-desc</description>
+         <description xml:lang="de">de-mdb2MethodPermission3-desc</description>
+         <role-name>mdb2MethodPermission3RoleName1</role-name>
+         <role-name>mdb2MethodPermission3RoleName2</role-name>
+         <method id="mdb2MethodPermission3Method1-id">
+            <description>en-mdb2MethodPermission3Method1-desc</description>
+            <description xml:lang="fr">fr-mdb2MethodPermission3Method1-desc</description>
+            <description xml:lang="de">de-mdb2MethodPermission3Method1-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb2MethodPermission3Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb2MethodPermission3Method1Param1</method-param>
+               <method-param>mdb2MethodPermission3Method1Param2</method-param>
+            </method-params>
+         </method>
+      </method-permission>
+
+      <container-transaction id="containerTransaction1-id">
+         <description>en-containerTransaction1-desc</description>
+         <description xml:lang="fr">fr-containerTransaction1-desc</description>
+         <description xml:lang="de">de-containerTransaction1-desc</description>
+         <method id="containerTransaction1Method1-id">
+            <description>en-containerTransaction1Method1-desc</description>
+            <description xml:lang="fr">fr-containerTransaction1Method1-desc</description>
+            <description xml:lang="de">de-containerTransaction1Method1-desc</description>
+            <ejb-name>containerTransaction1Method1EjbName</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>containerTransaction1Method1MethodName</method-name>
+            <method-params>
+               <method-param>containerTransaction1Method1Param1</method-param>
+               <method-param>containerTransaction1Method1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="containerTransaction1Method2-id">
+            <description>en-containerTransaction1Method2-desc</description>
+            <description xml:lang="fr">fr-containerTransaction1Method2-desc</description>
+            <description xml:lang="de">de-containerTransaction1Method2-desc</description>
+            <ejb-name>containerTransaction1Method2EjbName</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>containerTransaction1Method2MethodName</method-name>
+         </method>
+         <method id="containerTransaction1Method3-id">
+            <description>en-containerTransaction1Method3-desc</description>
+            <description xml:lang="fr">fr-containerTransaction1Method3-desc</description>
+            <description xml:lang="de">de-containerTransaction1Method3-desc</description>
+            <ejb-name>containerTransaction1Method3EjbName</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>containerTransaction1Method3MethodName</method-name>
+         </method>
+         <method id="containerTransaction1Method4-id">
+            <description>en-containerTransaction1Method4-desc</description>
+            <description xml:lang="fr">fr-containerTransaction1Method4-desc</description>
+            <description xml:lang="de">de-containerTransaction1Method4-desc</description>
+            <ejb-name>containerTransaction1Method4EjbName</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>containerTransaction1Method4MethodName</method-name>
+         </method>
+         <method id="containerTransaction1Method5-id">
+            <description>en-containerTransaction1Method5-desc</description>
+            <description xml:lang="fr">fr-containerTransaction1Method5-desc</description>
+            <description xml:lang="de">de-containerTransaction1Method5-desc</description>
+            <ejb-name>containerTransaction1Method5EjbName</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>containerTransaction1Method5MethodName</method-name>
+         </method>
+         <trans-attribute>NotSupported</trans-attribute>
+      </container-transaction>
+      <container-transaction id="containerTransaction2-id">
+         <description>en-containerTransaction2-desc</description>
+         <description xml:lang="fr">fr-containerTransaction2-desc</description>
+         <description xml:lang="de">de-containerTransaction2-desc</description>
+         <method id="containerTransaction2Method1-id">
+            <description>en-containerTransaction2Method1-desc</description>
+            <description xml:lang="fr">fr-containerTransaction2Method1-desc</description>
+            <description xml:lang="de">de-containerTransaction2Method1-desc</description>
+            <ejb-name>containerTransaction2Method1EjbName</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>containerTransaction2Method1MethodName</method-name>
+            <method-params>
+               <method-param>containerTransaction2Method1Param1</method-param>
+               <method-param>containerTransaction2Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Supports</trans-attribute>
+      </container-transaction>
+      <container-transaction id="containerTransaction3-id">
+         <description>en-containerTransaction3-desc</description>
+         <description xml:lang="fr">fr-containerTransaction3-desc</description>
+         <description xml:lang="de">de-containerTransaction3-desc</description>
+         <method id="containerTransaction3Method1-id">
+            <description>en-containerTransaction3Method1-desc</description>
+            <description xml:lang="fr">fr-containerTransaction3Method1-desc</description>
+            <description xml:lang="de">de-containerTransaction3Method1-desc</description>
+            <ejb-name>containerTransaction3Method1EjbName</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>containerTransaction3Method1MethodName</method-name>
+            <method-params>
+               <method-param>containerTransaction3Method1Param1</method-param>
+               <method-param>containerTransaction3Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Required</trans-attribute>
+      </container-transaction>
+      <container-transaction id="containerTransaction4-id">
+         <description>en-containerTransaction4-desc</description>
+         <description xml:lang="fr">fr-containerTransaction4-desc</description>
+         <description xml:lang="de">de-containerTransaction4-desc</description>
+         <method id="containerTransaction4Method1-id">
+            <description>en-containerTransaction4Method1-desc</description>
+            <description xml:lang="fr">fr-containerTransaction4Method1-desc</description>
+            <description xml:lang="de">de-containerTransaction4Method1-desc</description>
+            <ejb-name>containerTransaction4Method1EjbName</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>containerTransaction4Method1MethodName</method-name>
+            <method-params>
+               <method-param>containerTransaction4Method1Param1</method-param>
+               <method-param>containerTransaction4Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>RequiresNew</trans-attribute>
+      </container-transaction>
+      <container-transaction id="containerTransaction5-id">
+         <description>en-containerTransaction5-desc</description>
+         <description xml:lang="fr">fr-containerTransaction5-desc</description>
+         <description xml:lang="de">de-containerTransaction5-desc</description>
+         <method id="containerTransaction5Method1-id">
+            <description>en-containerTransaction5Method1-desc</description>
+            <description xml:lang="fr">fr-containerTransaction5Method1-desc</description>
+            <description xml:lang="de">de-containerTransaction5Method1-desc</description>
+            <ejb-name>containerTransaction5Method1EjbName</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>containerTransaction5Method1MethodName</method-name>
+            <method-params>
+               <method-param>containerTransaction5Method1Param1</method-param>
+               <method-param>containerTransaction5Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Mandatory</trans-attribute>
+      </container-transaction>
+      <container-transaction id="containerTransaction6-id">
+         <description>en-containerTransaction6-desc</description>
+         <description xml:lang="fr">fr-containerTransaction6-desc</description>
+         <description xml:lang="de">de-containerTransaction6-desc</description>
+         <method id="containerTransaction6Method1-id">
+            <description>en-containerTransaction6Method1-desc</description>
+            <description xml:lang="fr">fr-containerTransaction6Method1-desc</description>
+            <description xml:lang="de">de-containerTransaction6Method1-desc</description>
+            <ejb-name>containerTransaction6Method1EjbName</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>containerTransaction6Method1MethodName</method-name>
+            <method-params>
+               <method-param>containerTransaction6Method1Param1</method-param>
+               <method-param>containerTransaction6Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Never</trans-attribute>
+      </container-transaction>
+
+      <container-transaction id="session1ContainerTransaction1-id">
+         <description>en-session1ContainerTransaction1-desc</description>
+         <description xml:lang="fr">fr-session1ContainerTransaction1-desc</description>
+         <description xml:lang="de">de-session1ContainerTransaction1-desc</description>
+         <method id="session1ContainerTransaction1Method1-id">
+            <description>en-session1ContainerTransaction1Method1-desc</description>
+            <description xml:lang="fr">fr-session1ContainerTransaction1Method1-desc</description>
+            <description xml:lang="de">de-session1ContainerTransaction1Method1-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session1ContainerTransaction1Method1MethodName</method-name>
+            <method-params>
+               <method-param>session1ContainerTransaction1Method1Param1</method-param>
+               <method-param>session1ContainerTransaction1Method1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="session1ContainerTransaction1Method2-id">
+            <description>en-session1ContainerTransaction1Method2-desc</description>
+            <description xml:lang="fr">fr-session1ContainerTransaction1Method2-desc</description>
+            <description xml:lang="de">de-session1ContainerTransaction1Method2-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>session1ContainerTransaction1Method2MethodName</method-name>
+         </method>
+         <method id="session1ContainerTransaction1Method3-id">
+            <description>en-session1ContainerTransaction1Method3-desc</description>
+            <description xml:lang="fr">fr-session1ContainerTransaction1Method3-desc</description>
+            <description xml:lang="de">de-session1ContainerTransaction1Method3-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>session1ContainerTransaction1Method3MethodName</method-name>
+         </method>
+         <method id="session1ContainerTransaction1Method4-id">
+            <description>en-session1ContainerTransaction1Method4-desc</description>
+            <description xml:lang="fr">fr-session1ContainerTransaction1Method4-desc</description>
+            <description xml:lang="de">de-session1ContainerTransaction1Method4-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>session1ContainerTransaction1Method4MethodName</method-name>
+         </method>
+         <method id="session1ContainerTransaction1Method5-id">
+            <description>en-session1ContainerTransaction1Method5-desc</description>
+            <description xml:lang="fr">fr-session1ContainerTransaction1Method5-desc</description>
+            <description xml:lang="de">de-session1ContainerTransaction1Method5-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>session1ContainerTransaction1Method5MethodName</method-name>
+         </method>
+         <trans-attribute>NotSupported</trans-attribute>
+      </container-transaction>
+      <container-transaction id="session1ContainerTransaction2-id">
+         <description>en-session1ContainerTransaction2-desc</description>
+         <description xml:lang="fr">fr-session1ContainerTransaction2-desc</description>
+         <description xml:lang="de">de-session1ContainerTransaction2-desc</description>
+         <method id="session1ContainerTransaction2Method1-id">
+            <description>en-session1ContainerTransaction2Method1-desc</description>
+            <description xml:lang="fr">fr-session1ContainerTransaction2Method1-desc</description>
+            <description xml:lang="de">de-session1ContainerTransaction2Method1-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session1ContainerTransaction2Method1MethodName</method-name>
+            <method-params>
+               <method-param>session1ContainerTransaction2Method1Param1</method-param>
+               <method-param>session1ContainerTransaction2Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Supports</trans-attribute>
+      </container-transaction>
+      <container-transaction id="session1ContainerTransaction3-id">
+         <description>en-session1ContainerTransaction3-desc</description>
+         <description xml:lang="fr">fr-session1ContainerTransaction3-desc</description>
+         <description xml:lang="de">de-session1ContainerTransaction3-desc</description>
+         <method id="session1ContainerTransaction3Method1-id">
+            <description>en-session1ContainerTransaction3Method1-desc</description>
+            <description xml:lang="fr">fr-session1ContainerTransaction3Method1-desc</description>
+            <description xml:lang="de">de-session1ContainerTransaction3Method1-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session1ContainerTransaction3Method1MethodName</method-name>
+            <method-params>
+               <method-param>session1ContainerTransaction3Method1Param1</method-param>
+               <method-param>session1ContainerTransaction3Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Required</trans-attribute>
+      </container-transaction>
+      <container-transaction id="session1ContainerTransaction4-id">
+         <description>en-session1ContainerTransaction4-desc</description>
+         <description xml:lang="fr">fr-session1ContainerTransaction4-desc</description>
+         <description xml:lang="de">de-session1ContainerTransaction4-desc</description>
+         <method id="session1ContainerTransaction4Method1-id">
+            <description>en-session1ContainerTransaction4Method1-desc</description>
+            <description xml:lang="fr">fr-session1ContainerTransaction4Method1-desc</description>
+            <description xml:lang="de">de-session1ContainerTransaction4Method1-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session1ContainerTransaction4Method1MethodName</method-name>
+            <method-params>
+               <method-param>session1ContainerTransaction4Method1Param1</method-param>
+               <method-param>session1ContainerTransaction4Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>RequiresNew</trans-attribute>
+      </container-transaction>
+      <container-transaction id="session1ContainerTransaction5-id">
+         <description>en-session1ContainerTransaction5-desc</description>
+         <description xml:lang="fr">fr-session1ContainerTransaction5-desc</description>
+         <description xml:lang="de">de-session1ContainerTransaction5-desc</description>
+         <method id="session1ContainerTransaction5Method1-id">
+            <description>en-session1ContainerTransaction5Method1-desc</description>
+            <description xml:lang="fr">fr-session1ContainerTransaction5Method1-desc</description>
+            <description xml:lang="de">de-session1ContainerTransaction5Method1-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session1ContainerTransaction5Method1MethodName</method-name>
+            <method-params>
+               <method-param>session1ContainerTransaction5Method1Param1</method-param>
+               <method-param>session1ContainerTransaction5Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Mandatory</trans-attribute>
+      </container-transaction>
+      <container-transaction id="session1ContainerTransaction6-id">
+         <description>en-session1ContainerTransaction6-desc</description>
+         <description xml:lang="fr">fr-session1ContainerTransaction6-desc</description>
+         <description xml:lang="de">de-session1ContainerTransaction6-desc</description>
+         <method id="session1ContainerTransaction6Method1-id">
+            <description>en-session1ContainerTransaction6Method1-desc</description>
+            <description xml:lang="fr">fr-session1ContainerTransaction6Method1-desc</description>
+            <description xml:lang="de">de-session1ContainerTransaction6Method1-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session1ContainerTransaction6Method1MethodName</method-name>
+            <method-params>
+               <method-param>session1ContainerTransaction6Method1Param1</method-param>
+               <method-param>session1ContainerTransaction6Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Never</trans-attribute>
+      </container-transaction>
+
+      <container-transaction id="session2ContainerTransaction1-id">
+         <description>en-session2ContainerTransaction1-desc</description>
+         <description xml:lang="fr">fr-session2ContainerTransaction1-desc</description>
+         <description xml:lang="de">de-session2ContainerTransaction1-desc</description>
+         <method id="session2ContainerTransaction1Method1-id">
+            <description>en-session2ContainerTransaction1Method1-desc</description>
+            <description xml:lang="fr">fr-session2ContainerTransaction1Method1-desc</description>
+            <description xml:lang="de">de-session2ContainerTransaction1Method1-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session2ContainerTransaction1Method1MethodName</method-name>
+            <method-params>
+               <method-param>session2ContainerTransaction1Method1Param1</method-param>
+               <method-param>session2ContainerTransaction1Method1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="session2ContainerTransaction1Method2-id">
+            <description>en-session2ContainerTransaction1Method2-desc</description>
+            <description xml:lang="fr">fr-session2ContainerTransaction1Method2-desc</description>
+            <description xml:lang="de">de-session2ContainerTransaction1Method2-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>session2ContainerTransaction1Method2MethodName</method-name>
+         </method>
+         <method id="session2ContainerTransaction1Method3-id">
+            <description>en-session2ContainerTransaction1Method3-desc</description>
+            <description xml:lang="fr">fr-session2ContainerTransaction1Method3-desc</description>
+            <description xml:lang="de">de-session2ContainerTransaction1Method3-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>session2ContainerTransaction1Method3MethodName</method-name>
+         </method>
+         <method id="session2ContainerTransaction1Method4-id">
+            <description>en-session2ContainerTransaction1Method4-desc</description>
+            <description xml:lang="fr">fr-session2ContainerTransaction1Method4-desc</description>
+            <description xml:lang="de">de-session2ContainerTransaction1Method4-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>session2ContainerTransaction1Method4MethodName</method-name>
+         </method>
+         <method id="session2ContainerTransaction1Method5-id">
+            <description>en-session2ContainerTransaction1Method5-desc</description>
+            <description xml:lang="fr">fr-session2ContainerTransaction1Method5-desc</description>
+            <description xml:lang="de">de-session2ContainerTransaction1Method5-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>session2ContainerTransaction1Method5MethodName</method-name>
+         </method>
+         <trans-attribute>NotSupported</trans-attribute>
+      </container-transaction>
+      <container-transaction id="session2ContainerTransaction2-id">
+         <description>en-session2ContainerTransaction2-desc</description>
+         <description xml:lang="fr">fr-session2ContainerTransaction2-desc</description>
+         <description xml:lang="de">de-session2ContainerTransaction2-desc</description>
+         <method id="session2ContainerTransaction2Method1-id">
+            <description>en-session2ContainerTransaction2Method1-desc</description>
+            <description xml:lang="fr">fr-session2ContainerTransaction2Method1-desc</description>
+            <description xml:lang="de">de-session2ContainerTransaction2Method1-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session2ContainerTransaction2Method1MethodName</method-name>
+            <method-params>
+               <method-param>session2ContainerTransaction2Method1Param1</method-param>
+               <method-param>session2ContainerTransaction2Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Supports</trans-attribute>
+      </container-transaction>
+      <container-transaction id="session2ContainerTransaction3-id">
+         <description>en-session2ContainerTransaction3-desc</description>
+         <description xml:lang="fr">fr-session2ContainerTransaction3-desc</description>
+         <description xml:lang="de">de-session2ContainerTransaction3-desc</description>
+         <method id="session2ContainerTransaction3Method1-id">
+            <description>en-session2ContainerTransaction3Method1-desc</description>
+            <description xml:lang="fr">fr-session2ContainerTransaction3Method1-desc</description>
+            <description xml:lang="de">de-session2ContainerTransaction3Method1-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session2ContainerTransaction3Method1MethodName</method-name>
+            <method-params>
+               <method-param>session2ContainerTransaction3Method1Param1</method-param>
+               <method-param>session2ContainerTransaction3Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Required</trans-attribute>
+      </container-transaction>
+      <container-transaction id="session2ContainerTransaction4-id">
+         <description>en-session2ContainerTransaction4-desc</description>
+         <description xml:lang="fr">fr-session2ContainerTransaction4-desc</description>
+         <description xml:lang="de">de-session2ContainerTransaction4-desc</description>
+         <method id="session2ContainerTransaction4Method1-id">
+            <description>en-session2ContainerTransaction4Method1-desc</description>
+            <description xml:lang="fr">fr-session2ContainerTransaction4Method1-desc</description>
+            <description xml:lang="de">de-session2ContainerTransaction4Method1-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session2ContainerTransaction4Method1MethodName</method-name>
+            <method-params>
+               <method-param>session2ContainerTransaction4Method1Param1</method-param>
+               <method-param>session2ContainerTransaction4Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>RequiresNew</trans-attribute>
+      </container-transaction>
+      <container-transaction id="session2ContainerTransaction5-id">
+         <description>en-session2ContainerTransaction5-desc</description>
+         <description xml:lang="fr">fr-session2ContainerTransaction5-desc</description>
+         <description xml:lang="de">de-session2ContainerTransaction5-desc</description>
+         <method id="session2ContainerTransaction5Method1-id">
+            <description>en-session2ContainerTransaction5Method1-desc</description>
+            <description xml:lang="fr">fr-session2ContainerTransaction5Method1-desc</description>
+            <description xml:lang="de">de-session2ContainerTransaction5Method1-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session2ContainerTransaction5Method1MethodName</method-name>
+            <method-params>
+               <method-param>session2ContainerTransaction5Method1Param1</method-param>
+               <method-param>session2ContainerTransaction5Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Mandatory</trans-attribute>
+      </container-transaction>
+      <container-transaction id="session2ContainerTransaction6-id">
+         <description>en-session2ContainerTransaction6-desc</description>
+         <description xml:lang="fr">fr-session2ContainerTransaction6-desc</description>
+         <description xml:lang="de">de-session2ContainerTransaction6-desc</description>
+         <method id="session2ContainerTransaction6Method1-id">
+            <description>en-session2ContainerTransaction6Method1-desc</description>
+            <description xml:lang="fr">fr-session2ContainerTransaction6Method1-desc</description>
+            <description xml:lang="de">de-session2ContainerTransaction6Method1-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session2ContainerTransaction6Method1MethodName</method-name>
+            <method-params>
+               <method-param>session2ContainerTransaction6Method1Param1</method-param>
+               <method-param>session2ContainerTransaction6Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Never</trans-attribute>
+      </container-transaction>
+
+      <container-transaction id="entity1ContainerTransaction1-id">
+         <description>en-entity1ContainerTransaction1-desc</description>
+         <description xml:lang="fr">fr-entity1ContainerTransaction1-desc</description>
+         <description xml:lang="de">de-entity1ContainerTransaction1-desc</description>
+         <method id="entity1ContainerTransaction1Method1-id">
+            <description>en-entity1ContainerTransaction1Method1-desc</description>
+            <description xml:lang="fr">fr-entity1ContainerTransaction1Method1-desc</description>
+            <description xml:lang="de">de-entity1ContainerTransaction1Method1-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity1ContainerTransaction1Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity1ContainerTransaction1Method1Param1</method-param>
+               <method-param>entity1ContainerTransaction1Method1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="entity1ContainerTransaction1Method2-id">
+            <description>en-entity1ContainerTransaction1Method2-desc</description>
+            <description xml:lang="fr">fr-entity1ContainerTransaction1Method2-desc</description>
+            <description xml:lang="de">de-entity1ContainerTransaction1Method2-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>entity1ContainerTransaction1Method2MethodName</method-name>
+         </method>
+         <method id="entity1ContainerTransaction1Method3-id">
+            <description>en-entity1ContainerTransaction1Method3-desc</description>
+            <description xml:lang="fr">fr-entity1ContainerTransaction1Method3-desc</description>
+            <description xml:lang="de">de-entity1ContainerTransaction1Method3-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>entity1ContainerTransaction1Method3MethodName</method-name>
+         </method>
+         <method id="entity1ContainerTransaction1Method4-id">
+            <description>en-entity1ContainerTransaction1Method4-desc</description>
+            <description xml:lang="fr">fr-entity1ContainerTransaction1Method4-desc</description>
+            <description xml:lang="de">de-entity1ContainerTransaction1Method4-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>entity1ContainerTransaction1Method4MethodName</method-name>
+         </method>
+         <method id="entity1ContainerTransaction1Method5-id">
+            <description>en-entity1ContainerTransaction1Method5-desc</description>
+            <description xml:lang="fr">fr-entity1ContainerTransaction1Method5-desc</description>
+            <description xml:lang="de">de-entity1ContainerTransaction1Method5-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>entity1ContainerTransaction1Method5MethodName</method-name>
+         </method>
+         <trans-attribute>NotSupported</trans-attribute>
+      </container-transaction>
+      <container-transaction id="entity1ContainerTransaction2-id">
+         <description>en-entity1ContainerTransaction2-desc</description>
+         <description xml:lang="fr">fr-entity1ContainerTransaction2-desc</description>
+         <description xml:lang="de">de-entity1ContainerTransaction2-desc</description>
+         <method id="entity1ContainerTransaction2Method1-id">
+            <description>en-entity1ContainerTransaction2Method1-desc</description>
+            <description xml:lang="fr">fr-entity1ContainerTransaction2Method1-desc</description>
+            <description xml:lang="de">de-entity1ContainerTransaction2Method1-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity1ContainerTransaction2Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity1ContainerTransaction2Method1Param1</method-param>
+               <method-param>entity1ContainerTransaction2Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Supports</trans-attribute>
+      </container-transaction>
+      <container-transaction id="entity1ContainerTransaction3-id">
+         <description>en-entity1ContainerTransaction3-desc</description>
+         <description xml:lang="fr">fr-entity1ContainerTransaction3-desc</description>
+         <description xml:lang="de">de-entity1ContainerTransaction3-desc</description>
+         <method id="entity1ContainerTransaction3Method1-id">
+            <description>en-entity1ContainerTransaction3Method1-desc</description>
+            <description xml:lang="fr">fr-entity1ContainerTransaction3Method1-desc</description>
+            <description xml:lang="de">de-entity1ContainerTransaction3Method1-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity1ContainerTransaction3Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity1ContainerTransaction3Method1Param1</method-param>
+               <method-param>entity1ContainerTransaction3Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Required</trans-attribute>
+      </container-transaction>
+      <container-transaction id="entity1ContainerTransaction4-id">
+         <description>en-entity1ContainerTransaction4-desc</description>
+         <description xml:lang="fr">fr-entity1ContainerTransaction4-desc</description>
+         <description xml:lang="de">de-entity1ContainerTransaction4-desc</description>
+         <method id="entity1ContainerTransaction4Method1-id">
+            <description>en-entity1ContainerTransaction4Method1-desc</description>
+            <description xml:lang="fr">fr-entity1ContainerTransaction4Method1-desc</description>
+            <description xml:lang="de">de-entity1ContainerTransaction4Method1-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity1ContainerTransaction4Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity1ContainerTransaction4Method1Param1</method-param>
+               <method-param>entity1ContainerTransaction4Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>RequiresNew</trans-attribute>
+      </container-transaction>
+      <container-transaction id="entity1ContainerTransaction5-id">
+         <description>en-entity1ContainerTransaction5-desc</description>
+         <description xml:lang="fr">fr-entity1ContainerTransaction5-desc</description>
+         <description xml:lang="de">de-entity1ContainerTransaction5-desc</description>
+         <method id="entity1ContainerTransaction5Method1-id">
+            <description>en-entity1ContainerTransaction5Method1-desc</description>
+            <description xml:lang="fr">fr-entity1ContainerTransaction5Method1-desc</description>
+            <description xml:lang="de">de-entity1ContainerTransaction5Method1-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity1ContainerTransaction5Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity1ContainerTransaction5Method1Param1</method-param>
+               <method-param>entity1ContainerTransaction5Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Mandatory</trans-attribute>
+      </container-transaction>
+      <container-transaction id="entity1ContainerTransaction6-id">
+         <description>en-entity1ContainerTransaction6-desc</description>
+         <description xml:lang="fr">fr-entity1ContainerTransaction6-desc</description>
+         <description xml:lang="de">de-entity1ContainerTransaction6-desc</description>
+         <method id="entity1ContainerTransaction6Method1-id">
+            <description>en-entity1ContainerTransaction6Method1-desc</description>
+            <description xml:lang="fr">fr-entity1ContainerTransaction6Method1-desc</description>
+            <description xml:lang="de">de-entity1ContainerTransaction6Method1-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity1ContainerTransaction6Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity1ContainerTransaction6Method1Param1</method-param>
+               <method-param>entity1ContainerTransaction6Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Never</trans-attribute>
+      </container-transaction>
+
+      <container-transaction id="entity2ContainerTransaction1-id">
+         <description>en-entity2ContainerTransaction1-desc</description>
+         <description xml:lang="fr">fr-entity2ContainerTransaction1-desc</description>
+         <description xml:lang="de">de-entity2ContainerTransaction1-desc</description>
+         <method id="entity2ContainerTransaction1Method1-id">
+            <description>en-entity2ContainerTransaction1Method1-desc</description>
+            <description xml:lang="fr">fr-entity2ContainerTransaction1Method1-desc</description>
+            <description xml:lang="de">de-entity2ContainerTransaction1Method1-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity2ContainerTransaction1Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity2ContainerTransaction1Method1Param1</method-param>
+               <method-param>entity2ContainerTransaction1Method1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="entity2ContainerTransaction1Method2-id">
+            <description>en-entity2ContainerTransaction1Method2-desc</description>
+            <description xml:lang="fr">fr-entity2ContainerTransaction1Method2-desc</description>
+            <description xml:lang="de">de-entity2ContainerTransaction1Method2-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>entity2ContainerTransaction1Method2MethodName</method-name>
+         </method>
+         <method id="entity2ContainerTransaction1Method3-id">
+            <description>en-entity2ContainerTransaction1Method3-desc</description>
+            <description xml:lang="fr">fr-entity2ContainerTransaction1Method3-desc</description>
+            <description xml:lang="de">de-entity2ContainerTransaction1Method3-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>entity2ContainerTransaction1Method3MethodName</method-name>
+         </method>
+         <method id="entity2ContainerTransaction1Method4-id">
+            <description>en-entity2ContainerTransaction1Method4-desc</description>
+            <description xml:lang="fr">fr-entity2ContainerTransaction1Method4-desc</description>
+            <description xml:lang="de">de-entity2ContainerTransaction1Method4-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>entity2ContainerTransaction1Method4MethodName</method-name>
+         </method>
+         <method id="entity2ContainerTransaction1Method5-id">
+            <description>en-entity2ContainerTransaction1Method5-desc</description>
+            <description xml:lang="fr">fr-entity2ContainerTransaction1Method5-desc</description>
+            <description xml:lang="de">de-entity2ContainerTransaction1Method5-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>entity2ContainerTransaction1Method5MethodName</method-name>
+         </method>
+         <trans-attribute>NotSupported</trans-attribute>
+      </container-transaction>
+      <container-transaction id="entity2ContainerTransaction2-id">
+         <description>en-entity2ContainerTransaction2-desc</description>
+         <description xml:lang="fr">fr-entity2ContainerTransaction2-desc</description>
+         <description xml:lang="de">de-entity2ContainerTransaction2-desc</description>
+         <method id="entity2ContainerTransaction2Method1-id">
+            <description>en-entity2ContainerTransaction2Method1-desc</description>
+            <description xml:lang="fr">fr-entity2ContainerTransaction2Method1-desc</description>
+            <description xml:lang="de">de-entity2ContainerTransaction2Method1-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity2ContainerTransaction2Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity2ContainerTransaction2Method1Param1</method-param>
+               <method-param>entity2ContainerTransaction2Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Supports</trans-attribute>
+      </container-transaction>
+      <container-transaction id="entity2ContainerTransaction3-id">
+         <description>en-entity2ContainerTransaction3-desc</description>
+         <description xml:lang="fr">fr-entity2ContainerTransaction3-desc</description>
+         <description xml:lang="de">de-entity2ContainerTransaction3-desc</description>
+         <method id="entity2ContainerTransaction3Method1-id">
+            <description>en-entity2ContainerTransaction3Method1-desc</description>
+            <description xml:lang="fr">fr-entity2ContainerTransaction3Method1-desc</description>
+            <description xml:lang="de">de-entity2ContainerTransaction3Method1-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity2ContainerTransaction3Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity2ContainerTransaction3Method1Param1</method-param>
+               <method-param>entity2ContainerTransaction3Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Required</trans-attribute>
+      </container-transaction>
+      <container-transaction id="entity2ContainerTransaction4-id">
+         <description>en-entity2ContainerTransaction4-desc</description>
+         <description xml:lang="fr">fr-entity2ContainerTransaction4-desc</description>
+         <description xml:lang="de">de-entity2ContainerTransaction4-desc</description>
+         <method id="entity2ContainerTransaction4Method1-id">
+            <description>en-entity2ContainerTransaction4Method1-desc</description>
+            <description xml:lang="fr">fr-entity2ContainerTransaction4Method1-desc</description>
+            <description xml:lang="de">de-entity2ContainerTransaction4Method1-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity2ContainerTransaction4Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity2ContainerTransaction4Method1Param1</method-param>
+               <method-param>entity2ContainerTransaction4Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>RequiresNew</trans-attribute>
+      </container-transaction>
+      <container-transaction id="entity2ContainerTransaction5-id">
+         <description>en-entity2ContainerTransaction5-desc</description>
+         <description xml:lang="fr">fr-entity2ContainerTransaction5-desc</description>
+         <description xml:lang="de">de-entity2ContainerTransaction5-desc</description>
+         <method id="entity2ContainerTransaction5Method1-id">
+            <description>en-entity2ContainerTransaction5Method1-desc</description>
+            <description xml:lang="fr">fr-entity2ContainerTransaction5Method1-desc</description>
+            <description xml:lang="de">de-entity2ContainerTransaction5Method1-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity2ContainerTransaction5Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity2ContainerTransaction5Method1Param1</method-param>
+               <method-param>entity2ContainerTransaction5Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Mandatory</trans-attribute>
+      </container-transaction>
+      <container-transaction id="entity2ContainerTransaction6-id">
+         <description>en-entity2ContainerTransaction6-desc</description>
+         <description xml:lang="fr">fr-entity2ContainerTransaction6-desc</description>
+         <description xml:lang="de">de-entity2ContainerTransaction6-desc</description>
+         <method id="entity2ContainerTransaction6Method1-id">
+            <description>en-entity2ContainerTransaction6Method1-desc</description>
+            <description xml:lang="fr">fr-entity2ContainerTransaction6Method1-desc</description>
+            <description xml:lang="de">de-entity2ContainerTransaction6Method1-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity2ContainerTransaction6Method1MethodName</method-name>
+            <method-params>
+               <method-param>entity2ContainerTransaction6Method1Param1</method-param>
+               <method-param>entity2ContainerTransaction6Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Never</trans-attribute>
+      </container-transaction>
+
+      <container-transaction id="mdb1ContainerTransaction1-id">
+         <description>en-mdb1ContainerTransaction1-desc</description>
+         <description xml:lang="fr">fr-mdb1ContainerTransaction1-desc</description>
+         <description xml:lang="de">de-mdb1ContainerTransaction1-desc</description>
+         <method id="mdb1ContainerTransaction1Method1-id">
+            <description>en-mdb1ContainerTransaction1Method1-desc</description>
+            <description xml:lang="fr">fr-mdb1ContainerTransaction1Method1-desc</description>
+            <description xml:lang="de">de-mdb1ContainerTransaction1Method1-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb1ContainerTransaction1Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb1ContainerTransaction1Method1Param1</method-param>
+               <method-param>mdb1ContainerTransaction1Method1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="mdb1ContainerTransaction1Method2-id">
+            <description>en-mdb1ContainerTransaction1Method2-desc</description>
+            <description xml:lang="fr">fr-mdb1ContainerTransaction1Method2-desc</description>
+            <description xml:lang="de">de-mdb1ContainerTransaction1Method2-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>mdb1ContainerTransaction1Method2MethodName</method-name>
+         </method>
+         <method id="mdb1ContainerTransaction1Method3-id">
+            <description>en-mdb1ContainerTransaction1Method3-desc</description>
+            <description xml:lang="fr">fr-mdb1ContainerTransaction1Method3-desc</description>
+            <description xml:lang="de">de-mdb1ContainerTransaction1Method3-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>mdb1ContainerTransaction1Method3MethodName</method-name>
+         </method>
+         <method id="mdb1ContainerTransaction1Method4-id">
+            <description>en-mdb1ContainerTransaction1Method4-desc</description>
+            <description xml:lang="fr">fr-mdb1ContainerTransaction1Method4-desc</description>
+            <description xml:lang="de">de-mdb1ContainerTransaction1Method4-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>mdb1ContainerTransaction1Method4MethodName</method-name>
+         </method>
+         <method id="mdb1ContainerTransaction1Method5-id">
+            <description>en-mdb1ContainerTransaction1Method5-desc</description>
+            <description xml:lang="fr">fr-mdb1ContainerTransaction1Method5-desc</description>
+            <description xml:lang="de">de-mdb1ContainerTransaction1Method5-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>mdb1ContainerTransaction1Method5MethodName</method-name>
+         </method>
+         <trans-attribute>NotSupported</trans-attribute>
+      </container-transaction>
+      <container-transaction id="mdb1ContainerTransaction2-id">
+         <description>en-mdb1ContainerTransaction2-desc</description>
+         <description xml:lang="fr">fr-mdb1ContainerTransaction2-desc</description>
+         <description xml:lang="de">de-mdb1ContainerTransaction2-desc</description>
+         <method id="mdb1ContainerTransaction2Method1-id">
+            <description>en-mdb1ContainerTransaction2Method1-desc</description>
+            <description xml:lang="fr">fr-mdb1ContainerTransaction2Method1-desc</description>
+            <description xml:lang="de">de-mdb1ContainerTransaction2Method1-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb1ContainerTransaction2Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb1ContainerTransaction2Method1Param1</method-param>
+               <method-param>mdb1ContainerTransaction2Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Supports</trans-attribute>
+      </container-transaction>
+      <container-transaction id="mdb1ContainerTransaction3-id">
+         <description>en-mdb1ContainerTransaction3-desc</description>
+         <description xml:lang="fr">fr-mdb1ContainerTransaction3-desc</description>
+         <description xml:lang="de">de-mdb1ContainerTransaction3-desc</description>
+         <method id="mdb1ContainerTransaction3Method1-id">
+            <description>en-mdb1ContainerTransaction3Method1-desc</description>
+            <description xml:lang="fr">fr-mdb1ContainerTransaction3Method1-desc</description>
+            <description xml:lang="de">de-mdb1ContainerTransaction3Method1-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb1ContainerTransaction3Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb1ContainerTransaction3Method1Param1</method-param>
+               <method-param>mdb1ContainerTransaction3Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Required</trans-attribute>
+      </container-transaction>
+      <container-transaction id="mdb1ContainerTransaction4-id">
+         <description>en-mdb1ContainerTransaction4-desc</description>
+         <description xml:lang="fr">fr-mdb1ContainerTransaction4-desc</description>
+         <description xml:lang="de">de-mdb1ContainerTransaction4-desc</description>
+         <method id="mdb1ContainerTransaction4Method1-id">
+            <description>en-mdb1ContainerTransaction4Method1-desc</description>
+            <description xml:lang="fr">fr-mdb1ContainerTransaction4Method1-desc</description>
+            <description xml:lang="de">de-mdb1ContainerTransaction4Method1-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb1ContainerTransaction4Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb1ContainerTransaction4Method1Param1</method-param>
+               <method-param>mdb1ContainerTransaction4Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>RequiresNew</trans-attribute>
+      </container-transaction>
+      <container-transaction id="mdb1ContainerTransaction5-id">
+         <description>en-mdb1ContainerTransaction5-desc</description>
+         <description xml:lang="fr">fr-mdb1ContainerTransaction5-desc</description>
+         <description xml:lang="de">de-mdb1ContainerTransaction5-desc</description>
+         <method id="mdb1ContainerTransaction5Method1-id">
+            <description>en-mdb1ContainerTransaction5Method1-desc</description>
+            <description xml:lang="fr">fr-mdb1ContainerTransaction5Method1-desc</description>
+            <description xml:lang="de">de-mdb1ContainerTransaction5Method1-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb1ContainerTransaction5Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb1ContainerTransaction5Method1Param1</method-param>
+               <method-param>mdb1ContainerTransaction5Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Mandatory</trans-attribute>
+      </container-transaction>
+      <container-transaction id="mdb1ContainerTransaction6-id">
+         <description>en-mdb1ContainerTransaction6-desc</description>
+         <description xml:lang="fr">fr-mdb1ContainerTransaction6-desc</description>
+         <description xml:lang="de">de-mdb1ContainerTransaction6-desc</description>
+         <method id="mdb1ContainerTransaction6Method1-id">
+            <description>en-mdb1ContainerTransaction6Method1-desc</description>
+            <description xml:lang="fr">fr-mdb1ContainerTransaction6Method1-desc</description>
+            <description xml:lang="de">de-mdb1ContainerTransaction6Method1-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb1ContainerTransaction6Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb1ContainerTransaction6Method1Param1</method-param>
+               <method-param>mdb1ContainerTransaction6Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Never</trans-attribute>
+      </container-transaction>
+
+      <container-transaction id="mdb2ContainerTransaction1-id">
+         <description>en-mdb2ContainerTransaction1-desc</description>
+         <description xml:lang="fr">fr-mdb2ContainerTransaction1-desc</description>
+         <description xml:lang="de">de-mdb2ContainerTransaction1-desc</description>
+         <method id="mdb2ContainerTransaction1Method1-id">
+            <description>en-mdb2ContainerTransaction1Method1-desc</description>
+            <description xml:lang="fr">fr-mdb2ContainerTransaction1Method1-desc</description>
+            <description xml:lang="de">de-mdb2ContainerTransaction1Method1-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb2ContainerTransaction1Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb2ContainerTransaction1Method1Param1</method-param>
+               <method-param>mdb2ContainerTransaction1Method1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="mdb2ContainerTransaction1Method2-id">
+            <description>en-mdb2ContainerTransaction1Method2-desc</description>
+            <description xml:lang="fr">fr-mdb2ContainerTransaction1Method2-desc</description>
+            <description xml:lang="de">de-mdb2ContainerTransaction1Method2-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>mdb2ContainerTransaction1Method2MethodName</method-name>
+         </method>
+         <method id="mdb2ContainerTransaction1Method3-id">
+            <description>en-mdb2ContainerTransaction1Method3-desc</description>
+            <description xml:lang="fr">fr-mdb2ContainerTransaction1Method3-desc</description>
+            <description xml:lang="de">de-mdb2ContainerTransaction1Method3-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>mdb2ContainerTransaction1Method3MethodName</method-name>
+         </method>
+         <method id="mdb2ContainerTransaction1Method4-id">
+            <description>en-mdb2ContainerTransaction1Method4-desc</description>
+            <description xml:lang="fr">fr-mdb2ContainerTransaction1Method4-desc</description>
+            <description xml:lang="de">de-mdb2ContainerTransaction1Method4-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>mdb2ContainerTransaction1Method4MethodName</method-name>
+         </method>
+         <method id="mdb2ContainerTransaction1Method5-id">
+            <description>en-mdb2ContainerTransaction1Method5-desc</description>
+            <description xml:lang="fr">fr-mdb2ContainerTransaction1Method5-desc</description>
+            <description xml:lang="de">de-mdb2ContainerTransaction1Method5-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>mdb2ContainerTransaction1Method5MethodName</method-name>
+         </method>
+         <trans-attribute>NotSupported</trans-attribute>
+      </container-transaction>
+      <container-transaction id="mdb2ContainerTransaction2-id">
+         <description>en-mdb2ContainerTransaction2-desc</description>
+         <description xml:lang="fr">fr-mdb2ContainerTransaction2-desc</description>
+         <description xml:lang="de">de-mdb2ContainerTransaction2-desc</description>
+         <method id="mdb2ContainerTransaction2Method1-id">
+            <description>en-mdb2ContainerTransaction2Method1-desc</description>
+            <description xml:lang="fr">fr-mdb2ContainerTransaction2Method1-desc</description>
+            <description xml:lang="de">de-mdb2ContainerTransaction2Method1-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb2ContainerTransaction2Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb2ContainerTransaction2Method1Param1</method-param>
+               <method-param>mdb2ContainerTransaction2Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Supports</trans-attribute>
+      </container-transaction>
+      <container-transaction id="mdb2ContainerTransaction3-id">
+         <description>en-mdb2ContainerTransaction3-desc</description>
+         <description xml:lang="fr">fr-mdb2ContainerTransaction3-desc</description>
+         <description xml:lang="de">de-mdb2ContainerTransaction3-desc</description>
+         <method id="mdb2ContainerTransaction3Method1-id">
+            <description>en-mdb2ContainerTransaction3Method1-desc</description>
+            <description xml:lang="fr">fr-mdb2ContainerTransaction3Method1-desc</description>
+            <description xml:lang="de">de-mdb2ContainerTransaction3Method1-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb2ContainerTransaction3Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb2ContainerTransaction3Method1Param1</method-param>
+               <method-param>mdb2ContainerTransaction3Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Required</trans-attribute>
+      </container-transaction>
+      <container-transaction id="mdb2ContainerTransaction4-id">
+         <description>en-mdb2ContainerTransaction4-desc</description>
+         <description xml:lang="fr">fr-mdb2ContainerTransaction4-desc</description>
+         <description xml:lang="de">de-mdb2ContainerTransaction4-desc</description>
+         <method id="mdb2ContainerTransaction4Method1-id">
+            <description>en-mdb2ContainerTransaction4Method1-desc</description>
+            <description xml:lang="fr">fr-mdb2ContainerTransaction4Method1-desc</description>
+            <description xml:lang="de">de-mdb2ContainerTransaction4Method1-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb2ContainerTransaction4Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb2ContainerTransaction4Method1Param1</method-param>
+               <method-param>mdb2ContainerTransaction4Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>RequiresNew</trans-attribute>
+      </container-transaction>
+      <container-transaction id="mdb2ContainerTransaction5-id">
+         <description>en-mdb2ContainerTransaction5-desc</description>
+         <description xml:lang="fr">fr-mdb2ContainerTransaction5-desc</description>
+         <description xml:lang="de">de-mdb2ContainerTransaction5-desc</description>
+         <method id="mdb2ContainerTransaction5Method1-id">
+            <description>en-mdb2ContainerTransaction5Method1-desc</description>
+            <description xml:lang="fr">fr-mdb2ContainerTransaction5Method1-desc</description>
+            <description xml:lang="de">de-mdb2ContainerTransaction5Method1-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb2ContainerTransaction5Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb2ContainerTransaction5Method1Param1</method-param>
+               <method-param>mdb2ContainerTransaction5Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Mandatory</trans-attribute>
+      </container-transaction>
+      <container-transaction id="mdb2ContainerTransaction6-id">
+         <description>en-mdb2ContainerTransaction6-desc</description>
+         <description xml:lang="fr">fr-mdb2ContainerTransaction6-desc</description>
+         <description xml:lang="de">de-mdb2ContainerTransaction6-desc</description>
+         <method id="mdb2ContainerTransaction6Method1-id">
+            <description>en-mdb2ContainerTransaction6Method1-desc</description>
+            <description xml:lang="fr">fr-mdb2ContainerTransaction6Method1-desc</description>
+            <description xml:lang="de">de-mdb2ContainerTransaction6Method1-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb2ContainerTransaction6Method1MethodName</method-name>
+            <method-params>
+               <method-param>mdb2ContainerTransaction6Method1Param1</method-param>
+               <method-param>mdb2ContainerTransaction6Method1Param2</method-param>
+            </method-params>
+         </method>
+         <trans-attribute>Never</trans-attribute>
+      </container-transaction>
+
+      <interceptor-binding id="interceptorBinding1-id">
+         <description>en-interceptorBinding1-desc</description>
+         <description xml:lang="fr">fr-interceptorBinding1-desc</description>
+         <description xml:lang="de">de-interceptorBinding1-desc</description>
+         <ejb-name>interceptorBinding1EjbName</ejb-name>
+         <interceptor-class>interceptorBinding1Class1</interceptor-class>
+         <interceptor-class>interceptorBinding1Class2</interceptor-class>
+         <exclude-default-interceptors>true</exclude-default-interceptors>
+         <exclude-class-interceptors>true</exclude-class-interceptors>
+         <method id="interceptorBinding1Method-id">
+            <method-name>interceptorBinding1Method</method-name>
+            <method-params>
+               <method-param>interceptorBinding1MethodParam1</method-param>
+               <method-param>interceptorBinding1MethodParam2</method-param>
+            </method-params>
+         </method>
+      </interceptor-binding>
+      <interceptor-binding id="interceptorBinding2-id">
+         <description>en-interceptorBinding2-desc</description>
+         <description xml:lang="fr">fr-interceptorBinding2-desc</description>
+         <description xml:lang="de">de-interceptorBinding2-desc</description>
+         <ejb-name>interceptorBinding2EjbName</ejb-name>
+         <interceptor-order id="interceptorBinding2InterceptorOrder-id">
+            <interceptor-class>interceptorBinding2Class1</interceptor-class>
+            <interceptor-class>interceptorBinding2Class2</interceptor-class>
+         </interceptor-order>
+         <exclude-default-interceptors>false</exclude-default-interceptors>
+         <exclude-class-interceptors>false</exclude-class-interceptors>
+         <method id="interceptorBinding2Method-id">
+            <method-name>interceptorBinding2Method</method-name>
+            <method-params>
+               <method-param>interceptorBinding2MethodParam1</method-param>
+               <method-param>interceptorBinding2MethodParam2</method-param>
+            </method-params>
+         </method>
+      </interceptor-binding>
+
+      <message-destination id="messageDestination1-id">
+         <description>en-messageDestination1-desc</description>
+         <description xml:lang="fr">fr-messageDestination1-desc</description>
+         <description xml:lang="de">de-messageDestination1-desc</description>
+         <display-name>en-messageDestination1-disp</display-name>
+         <display-name xml:lang="fr">fr-messageDestination1-disp</display-name>
+         <display-name xml:lang="de">de-messageDestination1-disp</display-name>
+         <icon id="en-messageDestination1-icon-id">
+            <small-icon>en-messageDestination1-small-icon</small-icon>
+            <large-icon>en-messageDestination1-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="fr" id="fr-messageDestination1-icon-id">
+            <small-icon>fr-messageDestination1-small-icon</small-icon>
+            <large-icon>fr-messageDestination1-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="de" id="de-messageDestination1-icon-id">
+            <small-icon>de-messageDestination1-small-icon</small-icon>
+            <large-icon>de-messageDestination1-large-icon</large-icon>
+         </icon>
+         <message-destination-name>messageDestination1Name</message-destination-name>
+         <mapped-name>messageDestination1MappedName</mapped-name>
+      </message-destination>
+      <message-destination id="messageDestination2-id">
+         <description>en-messageDestination2-desc</description>
+         <description xml:lang="fr">fr-messageDestination2-desc</description>
+         <description xml:lang="de">de-messageDestination2-desc</description>
+         <display-name>en-messageDestination2-disp</display-name>
+         <display-name xml:lang="fr">fr-messageDestination2-disp</display-name>
+         <display-name xml:lang="de">de-messageDestination2-disp</display-name>
+         <icon id="en-messageDestination2-icon-id">
+            <small-icon>en-messageDestination2-small-icon</small-icon>
+            <large-icon>en-messageDestination2-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="fr" id="fr-messageDestination2-icon-id">
+            <small-icon>fr-messageDestination2-small-icon</small-icon>
+            <large-icon>fr-messageDestination2-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="de" id="de-messageDestination2-icon-id">
+            <small-icon>de-messageDestination2-small-icon</small-icon>
+            <large-icon>de-messageDestination2-large-icon</large-icon>
+         </icon>
+         <message-destination-name>messageDestination2Name</message-destination-name>
+         <mapped-name>messageDestination2MappedName</mapped-name>
+      </message-destination>
+
+      <exclude-list id="excludeList-id">
+         <description>en-excludeList-desc</description>
+         <description xml:lang="fr">fr-excludeList-desc</description>
+         <description xml:lang="de">de-excludeList-desc</description>
+         <method id="excludeListMethod1-id">
+            <description>en-excludeListMethod1-desc</description>
+            <description xml:lang="fr">fr-excludeListMethod1-desc</description>
+            <description xml:lang="de">de-excludeListMethod1-desc</description>
+            <ejb-name>excludeListMethod1EjbName</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>excludeListMethod1MethodName</method-name>
+            <method-params>
+               <method-param>excludeListMethod1Param1</method-param>
+               <method-param>excludeListMethod1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="excludeListMethod2-id">
+            <description>en-excludeListMethod2-desc</description>
+            <description xml:lang="fr">fr-excludeListMethod2-desc</description>
+            <description xml:lang="de">de-excludeListMethod2-desc</description>
+            <ejb-name>excludeListMethod2EjbName</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>excludeListMethod2MethodName</method-name>
+         </method>
+         <method id="excludeListMethod3-id">
+            <description>en-excludeListMethod3-desc</description>
+            <description xml:lang="fr">fr-excludeListMethod3-desc</description>
+            <description xml:lang="de">de-excludeListMethod3-desc</description>
+            <ejb-name>excludeListMethod3EjbName</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>excludeListMethod3MethodName</method-name>
+         </method>
+         <method id="excludeListMethod4-id">
+            <description>en-excludeListMethod4-desc</description>
+            <description xml:lang="fr">fr-excludeListMethod4-desc</description>
+            <description xml:lang="de">de-excludeListMethod4-desc</description>
+            <ejb-name>excludeListMethod4EjbName</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>excludeListMethod4MethodName</method-name>
+         </method>
+         <method id="excludeListMethod5-id">
+            <description>en-excludeListMethod5-desc</description>
+            <description xml:lang="fr">fr-excludeListMethod5-desc</description>
+            <description xml:lang="de">de-excludeListMethod5-desc</description>
+            <ejb-name>excludeListMethod5EjbName</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>excludeListMethod5MethodName</method-name>
+         </method>
+
+         <method id="session1ExcludeListMethod1-id">
+            <description>en-session1ExcludeListMethod1-desc</description>
+            <description xml:lang="fr">fr-session1ExcludeListMethod1-desc</description>
+            <description xml:lang="de">de-session1ExcludeListMethod1-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session1ExcludeListMethod1MethodName</method-name>
+            <method-params>
+               <method-param>session1ExcludeListMethod1Param1</method-param>
+               <method-param>session1ExcludeListMethod1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="session1ExcludeListMethod2-id">
+            <description>en-session1ExcludeListMethod2-desc</description>
+            <description xml:lang="fr">fr-session1ExcludeListMethod2-desc</description>
+            <description xml:lang="de">de-session1ExcludeListMethod2-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>session1ExcludeListMethod2MethodName</method-name>
+         </method>
+         <method id="session1ExcludeListMethod3-id">
+            <description>en-session1ExcludeListMethod3-desc</description>
+            <description xml:lang="fr">fr-session1ExcludeListMethod3-desc</description>
+            <description xml:lang="de">de-session1ExcludeListMethod3-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>session1ExcludeListMethod3MethodName</method-name>
+         </method>
+         <method id="session1ExcludeListMethod4-id">
+            <description>en-session1ExcludeListMethod4-desc</description>
+            <description xml:lang="fr">fr-session1ExcludeListMethod4-desc</description>
+            <description xml:lang="de">de-session1ExcludeListMethod4-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>session1ExcludeListMethod4MethodName</method-name>
+         </method>
+         <method id="session1ExcludeListMethod5-id">
+            <description>en-session1ExcludeListMethod5-desc</description>
+            <description xml:lang="fr">fr-session1ExcludeListMethod5-desc</description>
+            <description xml:lang="de">de-session1ExcludeListMethod5-desc</description>
+            <ejb-name>session1</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>session1ExcludeListMethod5MethodName</method-name>
+         </method>
+
+         <method id="session2ExcludeListMethod1-id">
+            <description>en-session2ExcludeListMethod1-desc</description>
+            <description xml:lang="fr">fr-session2ExcludeListMethod1-desc</description>
+            <description xml:lang="de">de-session2ExcludeListMethod1-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>session2ExcludeListMethod1MethodName</method-name>
+            <method-params>
+               <method-param>session2ExcludeListMethod1Param1</method-param>
+               <method-param>session2ExcludeListMethod1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="session2ExcludeListMethod2-id">
+            <description>en-session2ExcludeListMethod2-desc</description>
+            <description xml:lang="fr">fr-session2ExcludeListMethod2-desc</description>
+            <description xml:lang="de">de-session2ExcludeListMethod2-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>session2ExcludeListMethod2MethodName</method-name>
+         </method>
+         <method id="session2ExcludeListMethod3-id">
+            <description>en-session2ExcludeListMethod3-desc</description>
+            <description xml:lang="fr">fr-session2ExcludeListMethod3-desc</description>
+            <description xml:lang="de">de-session2ExcludeListMethod3-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>session2ExcludeListMethod3MethodName</method-name>
+         </method>
+         <method id="session2ExcludeListMethod4-id">
+            <description>en-session2ExcludeListMethod4-desc</description>
+            <description xml:lang="fr">fr-session2ExcludeListMethod4-desc</description>
+            <description xml:lang="de">de-session2ExcludeListMethod4-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>session2ExcludeListMethod4MethodName</method-name>
+         </method>
+         <method id="session2ExcludeListMethod5-id">
+            <description>en-session2ExcludeListMethod5-desc</description>
+            <description xml:lang="fr">fr-session2ExcludeListMethod5-desc</description>
+            <description xml:lang="de">de-session2ExcludeListMethod5-desc</description>
+            <ejb-name>session2</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>session2ExcludeListMethod5MethodName</method-name>
+         </method>
+
+         <method id="entity1ExcludeListMethod1-id">
+            <description>en-entity1ExcludeListMethod1-desc</description>
+            <description xml:lang="fr">fr-entity1ExcludeListMethod1-desc</description>
+            <description xml:lang="de">de-entity1ExcludeListMethod1-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity1ExcludeListMethod1MethodName</method-name>
+            <method-params>
+               <method-param>entity1ExcludeListMethod1Param1</method-param>
+               <method-param>entity1ExcludeListMethod1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="entity1ExcludeListMethod2-id">
+            <description>en-entity1ExcludeListMethod2-desc</description>
+            <description xml:lang="fr">fr-entity1ExcludeListMethod2-desc</description>
+            <description xml:lang="de">de-entity1ExcludeListMethod2-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>entity1ExcludeListMethod2MethodName</method-name>
+         </method>
+         <method id="entity1ExcludeListMethod3-id">
+            <description>en-entity1ExcludeListMethod3-desc</description>
+            <description xml:lang="fr">fr-entity1ExcludeListMethod3-desc</description>
+            <description xml:lang="de">de-entity1ExcludeListMethod3-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>entity1ExcludeListMethod3MethodName</method-name>
+         </method>
+         <method id="entity1ExcludeListMethod4-id">
+            <description>en-entity1ExcludeListMethod4-desc</description>
+            <description xml:lang="fr">fr-entity1ExcludeListMethod4-desc</description>
+            <description xml:lang="de">de-entity1ExcludeListMethod4-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>entity1ExcludeListMethod4MethodName</method-name>
+         </method>
+         <method id="entity1ExcludeListMethod5-id">
+            <description>en-entity1ExcludeListMethod5-desc</description>
+            <description xml:lang="fr">fr-entity1ExcludeListMethod5-desc</description>
+            <description xml:lang="de">de-entity1ExcludeListMethod5-desc</description>
+            <ejb-name>entity1</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>entity1ExcludeListMethod5MethodName</method-name>
+         </method>
+
+         <method id="entity2ExcludeListMethod1-id">
+            <description>en-entity2ExcludeListMethod1-desc</description>
+            <description xml:lang="fr">fr-entity2ExcludeListMethod1-desc</description>
+            <description xml:lang="de">de-entity2ExcludeListMethod1-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>entity2ExcludeListMethod1MethodName</method-name>
+            <method-params>
+               <method-param>entity2ExcludeListMethod1Param1</method-param>
+               <method-param>entity2ExcludeListMethod1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="entity2ExcludeListMethod2-id">
+            <description>en-entity2ExcludeListMethod2-desc</description>
+            <description xml:lang="fr">fr-entity2ExcludeListMethod2-desc</description>
+            <description xml:lang="de">de-entity2ExcludeListMethod2-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>entity2ExcludeListMethod2MethodName</method-name>
+         </method>
+         <method id="entity2ExcludeListMethod3-id">
+            <description>en-entity2ExcludeListMethod3-desc</description>
+            <description xml:lang="fr">fr-entity2ExcludeListMethod3-desc</description>
+            <description xml:lang="de">de-entity2ExcludeListMethod3-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>entity2ExcludeListMethod3MethodName</method-name>
+         </method>
+         <method id="entity2ExcludeListMethod4-id">
+            <description>en-entity2ExcludeListMethod4-desc</description>
+            <description xml:lang="fr">fr-entity2ExcludeListMethod4-desc</description>
+            <description xml:lang="de">de-entity2ExcludeListMethod4-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>entity2ExcludeListMethod4MethodName</method-name>
+         </method>
+         <method id="entity2ExcludeListMethod5-id">
+            <description>en-entity2ExcludeListMethod5-desc</description>
+            <description xml:lang="fr">fr-entity2ExcludeListMethod5-desc</description>
+            <description xml:lang="de">de-entity2ExcludeListMethod5-desc</description>
+            <ejb-name>entity2</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>entity2ExcludeListMethod5MethodName</method-name>
+         </method>
+
+         <method id="mdb1ExcludeListMethod1-id">
+            <description>en-mdb1ExcludeListMethod1-desc</description>
+            <description xml:lang="fr">fr-mdb1ExcludeListMethod1-desc</description>
+            <description xml:lang="de">de-mdb1ExcludeListMethod1-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb1ExcludeListMethod1MethodName</method-name>
+            <method-params>
+               <method-param>mdb1ExcludeListMethod1Param1</method-param>
+               <method-param>mdb1ExcludeListMethod1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="mdb1ExcludeListMethod2-id">
+            <description>en-mdb1ExcludeListMethod2-desc</description>
+            <description xml:lang="fr">fr-mdb1ExcludeListMethod2-desc</description>
+            <description xml:lang="de">de-mdb1ExcludeListMethod2-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>mdb1ExcludeListMethod2MethodName</method-name>
+         </method>
+         <method id="mdb1ExcludeListMethod3-id">
+            <description>en-mdb1ExcludeListMethod3-desc</description>
+            <description xml:lang="fr">fr-mdb1ExcludeListMethod3-desc</description>
+            <description xml:lang="de">de-mdb1ExcludeListMethod3-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>mdb1ExcludeListMethod3MethodName</method-name>
+         </method>
+         <method id="mdb1ExcludeListMethod4-id">
+            <description>en-mdb1ExcludeListMethod4-desc</description>
+            <description xml:lang="fr">fr-mdb1ExcludeListMethod4-desc</description>
+            <description xml:lang="de">de-mdb1ExcludeListMethod4-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>mdb1ExcludeListMethod4MethodName</method-name>
+         </method>
+         <method id="mdb1ExcludeListMethod5-id">
+            <description>en-mdb1ExcludeListMethod5-desc</description>
+            <description xml:lang="fr">fr-mdb1ExcludeListMethod5-desc</description>
+            <description xml:lang="de">de-mdb1ExcludeListMethod5-desc</description>
+            <ejb-name>mdb1</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>mdb1ExcludeListMethod5MethodName</method-name>
+         </method>
+
+         <method id="mdb2ExcludeListMethod1-id">
+            <description>en-mdb2ExcludeListMethod1-desc</description>
+            <description xml:lang="fr">fr-mdb2ExcludeListMethod1-desc</description>
+            <description xml:lang="de">de-mdb2ExcludeListMethod1-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>Home</method-intf>
+            <method-name>mdb2ExcludeListMethod1MethodName</method-name>
+            <method-params>
+               <method-param>mdb2ExcludeListMethod1Param1</method-param>
+               <method-param>mdb2ExcludeListMethod1Param2</method-param>
+            </method-params>
+         </method>
+         <method id="mdb2ExcludeListMethod2-id">
+            <description>en-mdb2ExcludeListMethod2-desc</description>
+            <description xml:lang="fr">fr-mdb2ExcludeListMethod2-desc</description>
+            <description xml:lang="de">de-mdb2ExcludeListMethod2-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>Remote</method-intf>
+            <method-name>mdb2ExcludeListMethod2MethodName</method-name>
+         </method>
+         <method id="mdb2ExcludeListMethod3-id">
+            <description>en-mdb2ExcludeListMethod3-desc</description>
+            <description xml:lang="fr">fr-mdb2ExcludeListMethod3-desc</description>
+            <description xml:lang="de">de-mdb2ExcludeListMethod3-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>LocalHome</method-intf>
+            <method-name>mdb2ExcludeListMethod3MethodName</method-name>
+         </method>
+         <method id="mdb2ExcludeListMethod4-id">
+            <description>en-mdb2ExcludeListMethod4-desc</description>
+            <description xml:lang="fr">fr-mdb2ExcludeListMethod4-desc</description>
+            <description xml:lang="de">de-mdb2ExcludeListMethod4-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>Local</method-intf>
+            <method-name>mdb2ExcludeListMethod4MethodName</method-name>
+         </method>
+         <method id="mdb2ExcludeListMethod5-id">
+            <description>en-mdb2ExcludeListMethod5-desc</description>
+            <description xml:lang="fr">fr-mdb2ExcludeListMethod5-desc</description>
+            <description xml:lang="de">de-mdb2ExcludeListMethod5-desc</description>
+            <ejb-name>mdb2</ejb-name>
+            <method-intf>ServiceEndpoint</method-intf>
+            <method-name>mdb2ExcludeListMethod5MethodName</method-name>
+         </method>
+
+      </exclude-list>
+
+      <application-exception id="applicationException1-id">
+         <exception-class>applicationException1Class</exception-class>
+         <rollback>true</rollback>
+      </application-exception>
+      <application-exception id="applicationException2-id">
+         <exception-class>applicationException2Class</exception-class>
+         <rollback>false</rollback>
+      </application-exception>
+
+   </assembly-descriptor>
+   
+   <ejb-client-jar>some/path/client.jar</ejb-client-jar>
+   
+</ejb-jar>
\ No newline at end of file

Added: jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar3x_testDescriptionDefaultLanguage.xml
===================================================================
--- jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar3x_testDescriptionDefaultLanguage.xml	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar3x_testDescriptionDefaultLanguage.xml	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<ejb-jar 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/ejb-jar_3_0.xsd"
+         version="3.0">
+   <description>Hello</description>
+</ejb-jar>
\ No newline at end of file

Added: jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar3x_testDisplayNameDefaultLanguage.xml
===================================================================
--- jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar3x_testDisplayNameDefaultLanguage.xml	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar3x_testDisplayNameDefaultLanguage.xml	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<ejb-jar 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/ejb-jar_3_0.xsd"
+         version="3.0">
+   <display-name>Hello</display-name>
+</ejb-jar>
\ No newline at end of file

Added: jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar3x_testEjbClientJar.xml
===================================================================
--- jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar3x_testEjbClientJar.xml	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar3x_testEjbClientJar.xml	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<ejb-jar 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/ejb-jar_3_0.xsd"
+         version="3.0">
+   <ejb-client-jar>some/path/client.jar</ejb-client-jar>
+</ejb-jar>
\ No newline at end of file

Added: jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar3x_testEnterpriseBeans.xml
===================================================================
--- jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar3x_testEnterpriseBeans.xml	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar3x_testEnterpriseBeans.xml	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<ejb-jar 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/ejb-jar_3_0.xsd"
+         version="3.0">
+   <enterprise-beans>
+      <session>
+         <ejb-name>TestBean</ejb-name>
+      </session>
+   </enterprise-beans>
+</ejb-jar>
\ No newline at end of file

Added: jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar3x_testIconDefaultLanguage.xml
===================================================================
--- jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar3x_testIconDefaultLanguage.xml	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar3x_testIconDefaultLanguage.xml	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<ejb-jar 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/ejb-jar_3_0.xsd"
+         version="3.0">
+   <icon>
+      <small-icon>small</small-icon>
+      <large-icon>large</large-icon>
+   </icon>
+</ejb-jar>
\ No newline at end of file

Added: jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar3x_testId.xml
===================================================================
--- jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar3x_testId.xml	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar3x_testId.xml	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<ejb-jar 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/ejb-jar_3_0.xsd"
+         version="3.0"
+         id="ejb-jar-test-id">
+</ejb-jar>
\ No newline at end of file

Added: jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar3x_testVersion.xml
===================================================================
--- jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar3x_testVersion.xml	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/EjbJar3x_testVersion.xml	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<ejb-jar 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/ejb-jar_3_0.xsd"
+         version="3.0">
+</ejb-jar>
\ No newline at end of file

Added: jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/JBoss5xEverything_testEverything.xml
===================================================================
--- jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/JBoss5xEverything_testEverything.xml	                        (rev 0)
+++ jbossxb-builder/trunk/src/test/resources/org/jboss/test/ejb/metadata/test/JBoss5xEverything_testEverything.xml	2007-07-25 11:48:03 UTC (rev 2457)
@@ -0,0 +1,2793 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<jboss 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://www.jboss.org/j2ee/schema/jboss_5_0.xsd"
+       version="5.0"
+       id="jboss-id">
+         
+   <description>en-jboss-desc</description>
+   <description xml:lang="fr">fr-jboss-desc</description>
+   <description xml:lang="de">de-jboss-desc</description>
+   <display-name>en-jboss-disp</display-name>
+   <display-name xml:lang="fr">fr-jboss-disp</display-name>
+   <display-name xml:lang="de">de-jboss-disp</display-name>
+   <icon id="en-jboss-icon-id">
+      <small-icon>en-jboss-small-icon</small-icon>
+      <large-icon>en-jboss-large-icon</large-icon>
+   </icon>
+   <icon xml:lang="fr" id="fr-jboss-icon-id">
+      <small-icon>fr-jboss-small-icon</small-icon>
+      <large-icon>fr-jboss-large-icon</large-icon>
+   </icon>
+   <icon xml:lang="de" id="de-jboss-icon-id">
+      <small-icon>de-jboss-small-icon</small-icon>
+      <large-icon>de-jboss-large-icon</large-icon>
+   </icon>
+   
+   <loader-repository id="loaderRepository-id" loaderRepositoryClass="loaderRepositoryClass">
+      loaderRepositoryName
+      <loader-repository-config id="loaderRepositoryConfig1-id" configParserClass="loaderRepositoryConfigParserClass1">
+         loaderRepositoryConfig1
+      </loader-repository-config>
+      <loader-repository-config id="loaderRepositoryConfig2-id" configParserClass="loaderRepositoryConfigParserClass2">
+         loaderRepositoryConfig2
+      </loader-repository-config>
+   </loader-repository>
+   
+   <jmx-name>jboss-jmx-name</jmx-name>
+   <enforce-ejb-restrictions>NO LONGER USED</enforce-ejb-restrictions>
+   <security-domain>jboss-security-domain</security-domain>
+   <missing-method-permissions-excluded-mode>false</missing-method-permissions-excluded-mode>
+   <unauthenticated-principal>jboss-unauthenticated-principal</unauthenticated-principal>
+   <exception-on-rollback>true</exception-on-rollback>
+   
+   <webservices id="webservices-id">
+      <context-root>webservicesContextRoot</context-root>
+      <webservice-description id="webserviceDescription1-id">
+         <webservice-description-name>webserviceDescription1Name</webservice-description-name>
+         <config-name>webserviceDescription1ConfigName</config-name>
+         <config-file>webserviceDescription1ConfigFile</config-file>
+         <wsdl-publish-location>webserviceDescription1WsdlPublishLocation</wsdl-publish-location>
+      </webservice-description>
+      <webservice-description id="webserviceDescription2-id">
+         <webservice-description-name>webserviceDescription2Name</webservice-description-name>
+         <config-name>webserviceDescription2ConfigName</config-name>
+         <config-file>webserviceDescription2ConfigFile</config-file>
+         <wsdl-publish-location>webserviceDescription2WsdlPublishLocation</wsdl-publish-location>
+      </webservice-description>
+   </webservices>
+   
+   <enterprise-beans id="enterprise-beans-id">
+
+      <session>
+         <ejb-name>session0EjbName</ejb-name>
+      </session>
+
+      <session id="session1-id">
+         <description>en-session1-desc</description>
+         <description xml:lang="fr">fr-session1-desc</description>
+         <description xml:lang="de">de-session1-desc</description>
+         <display-name>en-session1-disp</display-name>
+         <display-name xml:lang="fr">fr-session1-disp</display-name>
+         <display-name xml:lang="de">de-session1-disp</display-name>
+         <icon id="en-session1-icon-id">
+            <small-icon>en-session1-small-icon</small-icon>
+            <large-icon>en-session1-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="fr" id="fr-session1-icon-id">
+            <small-icon>fr-session1-small-icon</small-icon>
+            <large-icon>fr-session1-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="de" id="de-session1-icon-id">
+            <small-icon>de-session1-small-icon</small-icon>
+            <large-icon>de-session1-large-icon</large-icon>
+         </icon>
+
+         <ejb-name>session1EjbName</ejb-name>
+         
+         <remote-binding id="session1RemoteBinding-id">
+            <description>en-session1RemoteBinding-desc</description>
+            <description xml:lang="fr">fr-session1RemoteBinding-desc</description>
+            <description xml:lang="de">de-session1RemoteBinding-desc</description>
+            <jndi-name>session1RemoteBindingJndiName</jndi-name>
+            <client-bind-url>session1RemoteBindingClientBindUrl</client-bind-url>
+            <interceptor-stack>session1RemoteBindingInterceptorStack</interceptor-stack>
+            <proxy-factory>session1RemoteBindingProxyFactory</proxy-factory>
+         </remote-binding>
+
+         <jndi-name>session1JndiName</jndi-name>
+         <local-jndi-name>session1LocalJndiName</local-jndi-name>
+         <call-by-value>true</call-by-value>
+         <exception-on-rollback>true</exception-on-rollback>
+         <timer-persistence>true</timer-persistence>
+         <configuration-name>session1ConfigurationName</configuration-name>
+         
+         <invoker-bindings id="session1InvokerBindings-id">
+            <description>en-session1InvokerBindings-desc</description>
+            <description xml:lang="fr">fr-session1InvokerBindings-desc</description>
+            <description xml:lang="de">de-session1InvokerBindings-desc</description>
+
+            <invoker id="session1Invoker1-id">
+               <description>en-session1Invoker1-desc</description>
+               <description xml:lang="fr">fr-session1Invoker1-desc</description>
+               <description xml:lang="de">de-session1Invoker1-desc</description>
+               
+               <invoker-proxy-binding-name>session1Invoker1Name</invoker-proxy-binding-name>
+               <jndi-name>session1Invoker1JndiName</jndi-name>
+               <!-- TODO ejb-ref -->
+            </invoker>
+            <invoker id="session1Invoker2-id">
+               <description>en-session1Invoker2-desc</description>
+               <description xml:lang="fr">fr-session1Invoker2-desc</description>
+               <description xml:lang="de">de-session1Invoker2-desc</description>
+               
+               <invoker-proxy-binding-name>session1Invoker2Name</invoker-proxy-binding-name>
+               <jndi-name>session1Invoker2JndiName</jndi-name>
+               <!-- TODO ejb-ref -->
+            </invoker>
+         </invoker-bindings>
+         
+         <security-proxy>session1SecurityProxy</security-proxy>
+         
+         <ejb-ref id="session1EjbRef1-id">
+            <description>en-session1EjbRef1-desc</description>
+            <description xml:lang="fr">fr-session1EjbRef1-desc</description>
+            <description xml:lang="de">de-session1EjbRef1-desc</description>
+
+            <ejb-ref-name>session1EjbRef1Name</ejb-ref-name>
+            <injection-target>
+               <injection-target-class>session1EjbRef1Injection1Class</injection-target-class>
+               <injection-target-name>session1EjbRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session1EjbRef1Injection2Class</injection-target-class>
+               <injection-target-name>session1EjbRef1Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>session1EjbRef1JndiName</jndi-name>
+            <ignore-dependency/>
+         </ejb-ref>
+         <ejb-ref id="session1EjbRef2-id">
+            <description>en-session1EjbRef2-desc</description>
+            <description xml:lang="fr">fr-session1EjbRef2-desc</description>
+            <description xml:lang="de">de-session1EjbRef2-desc</description>
+
+            <ejb-ref-name>session1EjbRef2Name</ejb-ref-name>
+            <injection-target>
+               <injection-target-class>session1EjbRef2Injection1Class</injection-target-class>
+               <injection-target-name>session1EjbRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session1EjbRef2Injection2Class</injection-target-class>
+               <injection-target-name>session1EjbRef2Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>session1EjbRef2JndiName</jndi-name>
+         </ejb-ref>
+
+         <ejb-local-ref id="session1EjbLocalRef1-id">
+            <description>en-session1EjbLocalRef1-desc</description>
+            <description xml:lang="fr">fr-session1EjbLocalRef1-desc</description>
+            <description xml:lang="de">de-session1EjbLocalRef1-desc</description>
+
+            <ejb-ref-name>session1EjbLocalRef1Name</ejb-ref-name>
+            <injection-target>
+               <injection-target-class>session1EjbLocalRef1Injection1Class</injection-target-class>
+               <injection-target-name>session1EjbLocalRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session1EjbLocalRef1Injection2Class</injection-target-class>
+               <injection-target-name>session1EjbLocalRef1Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>session1EjbLocalRef1JndiName</jndi-name>
+            <ignore-dependency/>
+         </ejb-local-ref>
+         <ejb-local-ref id="session1EjbLocalRef2-id">
+            <description>en-session1EjbLocalRef2-desc</description>
+            <description xml:lang="fr">fr-session1EjbLocalRef2-desc</description>
+            <description xml:lang="de">de-session1EjbLocalRef2-desc</description>
+
+            <ejb-ref-name>session1EjbLocalRef2Name</ejb-ref-name>
+            <injection-target>
+               <injection-target-class>session1EjbLocalRef2Injection1Class</injection-target-class>
+               <injection-target-name>session1EjbLocalRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session1EjbLocalRef2Injection2Class</injection-target-class>
+               <injection-target-name>session1EjbLocalRef2Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>session1EjbLocalRef2JndiName</jndi-name>
+         </ejb-local-ref>
+
+         <!-- TODO service-ref -->
+
+         <security-identity id="session1SecurityIdentity-id">
+            <description>en-session1SecurityIdentity-desc</description>
+            <description xml:lang="fr">fr-session1SecurityIdentity-desc</description>
+            <description xml:lang="de">de-session1SecurityIdentity-desc</description>
+            <run-as-principal>session1SecurityIdentityRunAsPrincipal</run-as-principal>
+         </security-identity>
+
+         <resource-ref id="session1ResourceRef1-id">
+            <description>en-session1ResourceRef1-desc</description>
+            <description xml:lang="fr">fr-session1ResourceRef1-desc</description>
+            <description xml:lang="de">de-session1ResourceRef1-desc</description>
+            <res-ref-name>session1ResourceRef1Name</res-ref-name>
+            <injection-target>
+               <injection-target-class>session1ResourceRef1Injection1Class</injection-target-class>
+               <injection-target-name>session1ResourceRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session1ResourceRef1Injection2Class</injection-target-class>
+               <injection-target-name>session1ResourceRef1Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>session1ResourceRef1JndiName</jndi-name>
+            <ignore-dependency/>
+         </resource-ref>
+         <resource-ref id="session1ResourceRef2-id">
+            <description>en-session1ResourceRef2-desc</description>
+            <description xml:lang="fr">fr-session1ResourceRef2-desc</description>
+            <description xml:lang="de">de-session1ResourceRef2-desc</description>
+            <res-ref-name>session1ResourceRef2Name</res-ref-name>
+            <injection-target>
+               <injection-target-class>session1ResourceRef2Injection1Class</injection-target-class>
+               <injection-target-name>session1ResourceRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session1ResourceRef2Injection2Class</injection-target-class>
+               <injection-target-name>session1ResourceRef2Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>session1ResourceRef2JndiName</jndi-name>
+         </resource-ref>
+         <resource-env-ref id="session1ResourceEnvRef1-id">
+            <description>en-session1ResourceEnvRef1-desc</description>
+            <description xml:lang="fr">fr-session1ResourceEnvRef1-desc</description>
+            <description xml:lang="de">de-session1ResourceEnvRef1-desc</description>
+            <resource-env-ref-name>session1ResourceEnvRef1Name</resource-env-ref-name>
+            <injection-target>
+               <injection-target-class>session1ResourceEnvRef1Injection1Class</injection-target-class>
+               <injection-target-name>session1ResourceEnvRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session1ResourceEnvRef1Injection2Class</injection-target-class>
+               <injection-target-name>session1ResourceEnvRef1Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>session1ResourceEnvRef1JndiName</jndi-name>
+            <ignore-dependency/>
+         </resource-env-ref>
+         <resource-env-ref id="session1ResourceEnvRef2-id">
+            <description>en-session1ResourceEnvRef2-desc</description>
+            <description xml:lang="fr">fr-session1ResourceEnvRef2-desc</description>
+            <description xml:lang="de">de-session1ResourceEnvRef2-desc</description>
+            <resource-env-ref-name>session1ResourceEnvRef2Name</resource-env-ref-name>
+            <injection-target>
+               <injection-target-class>session1ResourceEnvRef2Injection1Class</injection-target-class>
+               <injection-target-name>session1ResourceEnvRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session1ResourceEnvRef2Injection2Class</injection-target-class>
+               <injection-target-name>session1ResourceEnvRef2Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>session1ResourceEnvRef2JndiName</jndi-name>
+         </resource-env-ref>
+         <message-destination-ref id="session1MessageDestinationRef1-id">
+            <description>en-session1MessageDestinationRef1-desc</description>
+            <description xml:lang="fr">fr-session1MessageDestinationRef1-desc</description>
+            <description xml:lang="de">de-session1MessageDestinationRef1-desc</description>
+            <message-destination-ref-name>session1MessageDestinationRef1Name</message-destination-ref-name>
+            <injection-target>
+               <injection-target-class>session1MessageDestinationRef1Injection1Class</injection-target-class>
+               <injection-target-name>session1MessageDestinationRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session1MessageDestinationRef1Injection2Class</injection-target-class>
+               <injection-target-name>session1MessageDestinationRef1Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>session1MessageDestinationRef1JndiName</jndi-name>
+            <ignore-dependency/>
+         </message-destination-ref>
+         <message-destination-ref id="session1MessageDestinationRef2-id">
+            <description>en-session1MessageDestinationRef2-desc</description>
+            <description xml:lang="fr">fr-session1MessageDestinationRef2-desc</description>
+            <description xml:lang="de">de-session1MessageDestinationRef2-desc</description>
+            <message-destination-ref-name>session1MessageDestinationRef2Name</message-destination-ref-name>
+            <injection-target>
+               <injection-target-class>session1MessageDestinationRef2Injection1Class</injection-target-class>
+               <injection-target-name>session1MessageDestinationRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session1MessageDestinationRef2Injection2Class</injection-target-class>
+               <injection-target-name>session1MessageDestinationRef2Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>session1MessageDestinationRef2JndiName</jndi-name>
+         </message-destination-ref>
+         <message-destination-ref id="session1MessageDestinationRef3-id">
+            <description>en-session1MessageDestinationRef3-desc</description>
+            <description xml:lang="fr">fr-session1MessageDestinationRef3-desc</description>
+            <description xml:lang="de">de-session1MessageDestinationRef3-desc</description>
+            <message-destination-ref-name>session1MessageDestinationRef3Name</message-destination-ref-name>
+            <injection-target>
+               <injection-target-class>session1MessageDestinationRef3Injection1Class</injection-target-class>
+               <injection-target-name>session1MessageDestinationRef3Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session1MessageDestinationRef3Injection2Class</injection-target-class>
+               <injection-target-name>session1MessageDestinationRef3Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>session1MessageDestinationRef3JndiName</jndi-name>
+         </message-destination-ref>
+         
+         <clustered>true</clustered>
+         
+         <cluster-config id="session1ClusterConfig-id">
+            <description>en-session1ClusterConfig-desc</description>
+            <description xml:lang="fr">fr-session1ClusterConfig-desc</description>
+            <description xml:lang="de">de-session1ClusterConfig-desc</description>
+            <partition-name>session1ClusterConfigPartitionName</partition-name>
+            <home-load-balancing-policy>session1ClusterConfigHomeLoadBalancingPolicy</home-load-balancing-policy>
+            <bean-load-balancing-policy>session1ClusterConfigBeanLoadBalancingPolicy</bean-load-balancing-policy>
+            <session-state-manager-jndi-name>session1ClusterConfigSessionStateManagerJndiName</session-state-manager-jndi-name>
+         </cluster-config>
+         
+         <security-domain>session1SecurityDomain</security-domain>
+         
+         <method-attributes id="session1MethodAttributes-id">
+            <method id="session1MethodAttributesMethod1-id">
+               <method-name>get*</method-name>
+               <read-only>true</read-only>
+               <idempotent>true</idempotent>
+               <transaction-timeout>5000</transaction-timeout>
+            </method>
+            <method id="session1MethodAttributesMethod2-id">
+               <method-name>*</method-name>
+            </method>
+         </method-attributes>
+         
+         <depends>session1Depends1</depends>
+         <depends>session1Depends2</depends>
+         
+         <ior-security-config id="session1IorSecurityConfig-id">
+            <description>en-session1IorSecurityConfig-desc</description>
+            <description xml:lang="fr">fr-session1IorSecurityConfig-desc</description>
+            <description xml:lang="de">de-session1IorSecurityConfig-desc</description>
+            <transport-config id="session1TransportConfig-id">
+               <description>en-session1TransportConfig-desc</description>
+               <description xml:lang="fr">fr-session1TransportConfig-desc</description>
+               <description xml:lang="de">de-session1TransportConfig-desc</description>
+               <integrity>NONE</integrity>
+               <confidentiality>NONE</confidentiality>
+               <establish-trust-in-target>NONE</establish-trust-in-target>
+               <establish-trust-in-client>NONE</establish-trust-in-client>
+               <detect-misordering>NONE</detect-misordering>
+               <detect-replay>NONE</detect-replay>
+            </transport-config>
+            <as-context id="session1ASContext-id">
+               <description>en-session1ASContext-desc</description>
+               <description xml:lang="fr">fr-session1ASContext-desc</description>
+               <description xml:lang="de">de-session1ASContext-desc</description>
+               <auth-method>USERNAME_PASSWORD</auth-method>
+               <realm>session1ASContextRealm</realm>
+               <required>false</required>
+            </as-context>
+            <sas-context id="session1SASContext-id">
+               <description>en-session1SASContext-desc</description>
+               <description xml:lang="fr">fr-session1SASContext-desc</description>
+               <description xml:lang="de">de-session1SASContext-desc</description>
+               <caller-propagation>NONE</caller-propagation>
+            </sas-context>
+         </ior-security-config>
+         
+         <!-- TODO port component -->
+
+         <ejb-timeout-identity id="session1EjbTimeoutIdentity-id">
+            <description>en-session1EjbTimeoutIdentity-desc</description>
+            <description xml:lang="fr">fr-session1EjbTimeoutIdentity-desc</description>
+            <description xml:lang="de">de-session1EjbTimeoutIdentity-desc</description>
+            <run-as-principal>session1EjbTimeoutIdentityRunAsPrincipal</run-as-principal>
+         </ejb-timeout-identity>
+         
+         <annotation id="session1Annotation1-id">
+            <description>en-session1Annotation1-desc</description>
+            <description xml:lang="fr">fr-session1Annotation1-desc</description>
+            <description xml:lang="de">de-session1Annotation1-desc</description>
+            
+            <annotation-class>session1Annotation1Class</annotation-class>
+            <annotation-implementation-class>session1Annotation1Impl</annotation-implementation-class>
+            <injection-target>
+               <injection-target-class>session1Annotation1InjectionTargetClass</injection-target-class>
+               <injection-target-name>session1Annotation1InjectionTargetName</injection-target-name>
+            </injection-target>
+            <property id="session1Annotation1Property1-id">
+               <description>en-session1Annotation1Property1-desc</description>
+               <description xml:lang="fr">fr-session1Annotation1Property1-desc</description>
+               <description xml:lang="de">de-session1Annotation1Property1-desc</description>
+               <property-name>session1Annotation1Property1Name</property-name>
+               <property-value>session1Annotation1Property1Value</property-value>
+            </property>
+            <property id="session1Annotation1Property2-id">
+               <description>en-session1Annotation1Property2-desc</description>
+               <description xml:lang="fr">fr-session1Annotation1Property2-desc</description>
+               <description xml:lang="de">de-session1Annotation1Property2-desc</description>
+               <property-name>session1Annotation1Property2Name</property-name>
+               <property-value>session1Annotation1Property2Value</property-value>
+            </property>
+         </annotation>
+         <annotation id="session1Annotation2-id">
+            <description>en-session1Annotation2-desc</description>
+            <description xml:lang="fr">fr-session1Annotation2-desc</description>
+            <description xml:lang="de">de-session1Annotation2-desc</description>
+            
+            <annotation-class>session1Annotation2Class</annotation-class>
+            <annotation-implementation-class>session1Annotation2Impl</annotation-implementation-class>
+            <injection-target>
+               <injection-target-class>session1Annotation2InjectionTargetClass</injection-target-class>
+               <injection-target-name>session1Annotation2InjectionTargetName</injection-target-name>
+            </injection-target>
+            <property id="session1Annotation2Property1-id">
+               <description>en-session1Annotation2Property1-desc</description>
+               <description xml:lang="fr">fr-session1Annotation2Property1-desc</description>
+               <description xml:lang="de">de-session1Annotation2Property1-desc</description>
+               <property-name>session1Annotation2Property1Name</property-name>
+               <property-value>session1Annotation2Property1Value</property-value>
+            </property>
+            <property id="session1Annotation2Property2-id">
+               <description>en-session1Annotation2Property2-desc</description>
+               <description xml:lang="fr">fr-session1Annotation2Property2-desc</description>
+               <description xml:lang="de">de-session1Annotation2Property2-desc</description>
+               <property-name>session1Annotation2Property2Name</property-name>
+               <property-value>session1Annotation2Property2Value</property-value>
+            </property>
+         </annotation>
+
+         <ignore-dependency id="session1IgnoreDependency-id">
+            <description>en-session1IgnoreDependency-desc</description>
+            <description xml:lang="fr">fr-session1IgnoreDependency-desc</description>
+            <description xml:lang="de">de-session1IgnoreDependency-desc</description>
+            <injection-target>
+               <injection-target-class>session1IgnoreDependencyInjection1Class</injection-target-class>
+               <injection-target-name>session1IgnoreDependencyInjection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session1IgnoreDependencyInjection2Class</injection-target-class>
+               <injection-target-name>session1IgnoreDependencyInjection2Name</injection-target-name>
+            </injection-target>
+         </ignore-dependency>
+
+         <aop-domain-name>session1AOPDomain</aop-domain-name>         
+         
+         <!-- TODO cache config -->
+         
+         <!-- TODO pool config -->
+
+         <concurrent>true</concurrent>         
+         
+         <!-- TODO jndi ref -->
+         <jndi-ref id="session1JndiRef1-id">
+            <description>en-session1JndiRef1-desc</description>
+            <description xml:lang="fr">fr-session1JndiRef1-desc</description>
+            <description xml:lang="de">de-session1JndiRef1-desc</description>
+            <jndi-ref-name>session1JndiRef1Name</jndi-ref-name>
+            <mapped-name>session1JndiRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session1JndiRef1Injection1Class</injection-target-class>
+               <injection-target-name>session1JndiRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session1JndiRef1Injection2Class</injection-target-class>
+               <injection-target-name>session1JndiRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </jndi-ref>
+         <jndi-ref id="session1JndiRef2-id">
+            <description>en-session1JndiRef2-desc</description>
+            <description xml:lang="fr">fr-session1JndiRef2-desc</description>
+            <description xml:lang="de">de-session1JndiRef2-desc</description>
+            <jndi-ref-name>session1JndiRef2Name</jndi-ref-name>
+            <mapped-name>session1JndiRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session1JndiRef2Injection1Class</injection-target-class>
+               <injection-target-name>session1JndiRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session1JndiRef2Injection2Class</injection-target-class>
+               <injection-target-name>session1JndiRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </jndi-ref>
+
+      </session>
+
+      <session id="session2-id">
+         <description>en-session2-desc</description>
+         <description xml:lang="fr">fr-session2-desc</description>
+         <description xml:lang="de">de-session2-desc</description>
+         <display-name>en-session2-disp</display-name>
+         <display-name xml:lang="fr">fr-session2-disp</display-name>
+         <display-name xml:lang="de">de-session2-disp</display-name>
+         <icon id="en-session2-icon-id">
+            <small-icon>en-session2-small-icon</small-icon>
+            <large-icon>en-session2-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="fr" id="fr-session2-icon-id">
+            <small-icon>fr-session2-small-icon</small-icon>
+            <large-icon>fr-session2-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="de" id="de-session2-icon-id">
+            <small-icon>de-session2-small-icon</small-icon>
+            <large-icon>de-session2-large-icon</large-icon>
+         </icon>
+
+         <ejb-name>session2EjbName</ejb-name>
+         
+         <remote-binding id="session2RemoteBinding-id">
+            <description>en-session2RemoteBinding-desc</description>
+            <description xml:lang="fr">fr-session2RemoteBinding-desc</description>
+            <description xml:lang="de">de-session2RemoteBinding-desc</description>
+            <jndi-name>session2RemoteBindingJndiName</jndi-name>
+            <client-bind-url>session2RemoteBindingClientBindUrl</client-bind-url>
+            <interceptor-stack>session2RemoteBindingInterceptorStack</interceptor-stack>
+            <proxy-factory>session2RemoteBindingProxyFactory</proxy-factory>
+         </remote-binding>
+
+         <jndi-name>session2JndiName</jndi-name>
+         <local-jndi-name>session2LocalJndiName</local-jndi-name>
+         <call-by-value>false</call-by-value>
+         <exception-on-rollback>false</exception-on-rollback>
+         <timer-persistence>false</timer-persistence>
+         <configuration-name>session2ConfigurationName</configuration-name>
+         
+         <invoker-bindings id="session2InvokerBindings-id">
+            <description>en-session2InvokerBindings-desc</description>
+            <description xml:lang="fr">fr-session2InvokerBindings-desc</description>
+            <description xml:lang="de">de-session2InvokerBindings-desc</description>
+
+            <invoker id="session2Invoker1-id">
+               <description>en-session2Invoker1-desc</description>
+               <description xml:lang="fr">fr-session2Invoker1-desc</description>
+               <description xml:lang="de">de-session2Invoker1-desc</description>
+               
+               <invoker-proxy-binding-name>session2Invoker1Name</invoker-proxy-binding-name>
+               <jndi-name>session2Invoker1JndiName</jndi-name>
+               <!-- TODO ejb-ref -->
+            </invoker>
+            <invoker id="session2Invoker2-id">
+               <description>en-session2Invoker2-desc</description>
+               <description xml:lang="fr">fr-session2Invoker2-desc</description>
+               <description xml:lang="de">de-session2Invoker2-desc</description>
+               
+               <invoker-proxy-binding-name>session2Invoker2Name</invoker-proxy-binding-name>
+               <jndi-name>session2Invoker2JndiName</jndi-name>
+               <!-- TODO ejb-ref -->
+            </invoker>
+         </invoker-bindings>
+         
+         <security-proxy>session2SecurityProxy</security-proxy>
+         
+         <ejb-ref id="session2EjbRef1-id">
+            <description>en-session2EjbRef1-desc</description>
+            <description xml:lang="fr">fr-session2EjbRef1-desc</description>
+            <description xml:lang="de">de-session2EjbRef1-desc</description>
+
+            <ejb-ref-name>session2EjbRef1Name</ejb-ref-name>
+            <injection-target>
+               <injection-target-class>session2EjbRef1Injection1Class</injection-target-class>
+               <injection-target-name>session2EjbRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session2EjbRef1Injection2Class</injection-target-class>
+               <injection-target-name>session2EjbRef1Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>session2EjbRef1JndiName</jndi-name>
+            <ignore-dependency/>
+         </ejb-ref>
+         <ejb-ref id="session2EjbRef2-id">
+            <description>en-session2EjbRef2-desc</description>
+            <description xml:lang="fr">fr-session2EjbRef2-desc</description>
+            <description xml:lang="de">de-session2EjbRef2-desc</description>
+
+            <ejb-ref-name>session2EjbRef2Name</ejb-ref-name>
+            <injection-target>
+               <injection-target-class>session2EjbRef2Injection1Class</injection-target-class>
+               <injection-target-name>session2EjbRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session2EjbRef2Injection2Class</injection-target-class>
+               <injection-target-name>session2EjbRef2Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>session2EjbRef2JndiName</jndi-name>
+         </ejb-ref>
+
+         <ejb-local-ref id="session2EjbLocalRef1-id">
+            <description>en-session2EjbLocalRef1-desc</description>
+            <description xml:lang="fr">fr-session2EjbLocalRef1-desc</description>
+            <description xml:lang="de">de-session2EjbLocalRef1-desc</description>
+
+            <ejb-ref-name>session2EjbLocalRef1Name</ejb-ref-name>
+            <injection-target>
+               <injection-target-class>session2EjbLocalRef1Injection1Class</injection-target-class>
+               <injection-target-name>session2EjbLocalRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session2EjbLocalRef1Injection2Class</injection-target-class>
+               <injection-target-name>session2EjbLocalRef1Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>session2EjbLocalRef1JndiName</jndi-name>
+            <ignore-dependency/>
+         </ejb-local-ref>
+         <ejb-local-ref id="session2EjbLocalRef2-id">
+            <description>en-session2EjbLocalRef2-desc</description>
+            <description xml:lang="fr">fr-session2EjbLocalRef2-desc</description>
+            <description xml:lang="de">de-session2EjbLocalRef2-desc</description>
+
+            <ejb-ref-name>session2EjbLocalRef2Name</ejb-ref-name>
+            <injection-target>
+               <injection-target-class>session2EjbLocalRef2Injection1Class</injection-target-class>
+               <injection-target-name>session2EjbLocalRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session2EjbLocalRef2Injection2Class</injection-target-class>
+               <injection-target-name>session2EjbLocalRef2Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>session2EjbLocalRef2JndiName</jndi-name>
+         </ejb-local-ref>
+
+         <!-- TODO service-ref -->
+
+         <security-identity id="session2SecurityIdentity-id">
+            <description>en-session2SecurityIdentity-desc</description>
+            <description xml:lang="fr">fr-session2SecurityIdentity-desc</description>
+            <description xml:lang="de">de-session2SecurityIdentity-desc</description>
+            <run-as-principal>session2SecurityIdentityRunAsPrincipal</run-as-principal>
+         </security-identity>
+
+         <resource-ref id="session2ResourceRef1-id">
+            <description>en-session2ResourceRef1-desc</description>
+            <description xml:lang="fr">fr-session2ResourceRef1-desc</description>
+            <description xml:lang="de">de-session2ResourceRef1-desc</description>
+            <res-ref-name>session2ResourceRef1Name</res-ref-name>
+            <injection-target>
+               <injection-target-class>session2ResourceRef1Injection1Class</injection-target-class>
+               <injection-target-name>session2ResourceRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session2ResourceRef1Injection2Class</injection-target-class>
+               <injection-target-name>session2ResourceRef1Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>session2ResourceRef1JndiName</jndi-name>
+            <ignore-dependency/>
+         </resource-ref>
+         <resource-ref id="session2ResourceRef2-id">
+            <description>en-session2ResourceRef2-desc</description>
+            <description xml:lang="fr">fr-session2ResourceRef2-desc</description>
+            <description xml:lang="de">de-session2ResourceRef2-desc</description>
+            <res-ref-name>session2ResourceRef2Name</res-ref-name>
+            <injection-target>
+               <injection-target-class>session2ResourceRef2Injection1Class</injection-target-class>
+               <injection-target-name>session2ResourceRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session2ResourceRef2Injection2Class</injection-target-class>
+               <injection-target-name>session2ResourceRef2Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>session2ResourceRef2JndiName</jndi-name>
+         </resource-ref>
+         <resource-env-ref id="session2ResourceEnvRef1-id">
+            <description>en-session2ResourceEnvRef1-desc</description>
+            <description xml:lang="fr">fr-session2ResourceEnvRef1-desc</description>
+            <description xml:lang="de">de-session2ResourceEnvRef1-desc</description>
+            <resource-env-ref-name>session2ResourceEnvRef1Name</resource-env-ref-name>
+            <injection-target>
+               <injection-target-class>session2ResourceEnvRef1Injection1Class</injection-target-class>
+               <injection-target-name>session2ResourceEnvRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session2ResourceEnvRef1Injection2Class</injection-target-class>
+               <injection-target-name>session2ResourceEnvRef1Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>session2ResourceEnvRef1JndiName</jndi-name>
+            <ignore-dependency/>
+         </resource-env-ref>
+         <resource-env-ref id="session2ResourceEnvRef2-id">
+            <description>en-session2ResourceEnvRef2-desc</description>
+            <description xml:lang="fr">fr-session2ResourceEnvRef2-desc</description>
+            <description xml:lang="de">de-session2ResourceEnvRef2-desc</description>
+            <resource-env-ref-name>session2ResourceEnvRef2Name</resource-env-ref-name>
+            <injection-target>
+               <injection-target-class>session2ResourceEnvRef2Injection1Class</injection-target-class>
+               <injection-target-name>session2ResourceEnvRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session2ResourceEnvRef2Injection2Class</injection-target-class>
+               <injection-target-name>session2ResourceEnvRef2Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>session2ResourceEnvRef2JndiName</jndi-name>
+         </resource-env-ref>
+         <message-destination-ref id="session2MessageDestinationRef1-id">
+            <description>en-session2MessageDestinationRef1-desc</description>
+            <description xml:lang="fr">fr-session2MessageDestinationRef1-desc</description>
+            <description xml:lang="de">de-session2MessageDestinationRef1-desc</description>
+            <message-destination-ref-name>session2MessageDestinationRef1Name</message-destination-ref-name>
+            <injection-target>
+               <injection-target-class>session2MessageDestinationRef1Injection1Class</injection-target-class>
+               <injection-target-name>session2MessageDestinationRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session2MessageDestinationRef1Injection2Class</injection-target-class>
+               <injection-target-name>session2MessageDestinationRef1Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>session2MessageDestinationRef1JndiName</jndi-name>
+            <ignore-dependency/>
+         </message-destination-ref>
+         <message-destination-ref id="session2MessageDestinationRef2-id">
+            <description>en-session2MessageDestinationRef2-desc</description>
+            <description xml:lang="fr">fr-session2MessageDestinationRef2-desc</description>
+            <description xml:lang="de">de-session2MessageDestinationRef2-desc</description>
+            <message-destination-ref-name>session2MessageDestinationRef2Name</message-destination-ref-name>
+            <injection-target>
+               <injection-target-class>session2MessageDestinationRef2Injection1Class</injection-target-class>
+               <injection-target-name>session2MessageDestinationRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session2MessageDestinationRef2Injection2Class</injection-target-class>
+               <injection-target-name>session2MessageDestinationRef2Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>session2MessageDestinationRef2JndiName</jndi-name>
+         </message-destination-ref>
+         <message-destination-ref id="session2MessageDestinationRef3-id">
+            <description>en-session2MessageDestinationRef3-desc</description>
+            <description xml:lang="fr">fr-session2MessageDestinationRef3-desc</description>
+            <description xml:lang="de">de-session2MessageDestinationRef3-desc</description>
+            <message-destination-ref-name>session2MessageDestinationRef3Name</message-destination-ref-name>
+            <injection-target>
+               <injection-target-class>session2MessageDestinationRef3Injection1Class</injection-target-class>
+               <injection-target-name>session2MessageDestinationRef3Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session2MessageDestinationRef3Injection2Class</injection-target-class>
+               <injection-target-name>session2MessageDestinationRef3Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>session2MessageDestinationRef3JndiName</jndi-name>
+         </message-destination-ref>
+         
+         <clustered>false</clustered>
+         
+         <cluster-config id="session2ClusterConfig-id">
+            <description>en-session2ClusterConfig-desc</description>
+            <description xml:lang="fr">fr-session2ClusterConfig-desc</description>
+            <description xml:lang="de">de-session2ClusterConfig-desc</description>
+            <partition-name>session2ClusterConfigPartitionName</partition-name>
+            <home-load-balancing-policy>session2ClusterConfigHomeLoadBalancingPolicy</home-load-balancing-policy>
+            <bean-load-balancing-policy>session2ClusterConfigBeanLoadBalancingPolicy</bean-load-balancing-policy>
+            <session-state-manager-jndi-name>session2ClusterConfigSessionStateManagerJndiName</session-state-manager-jndi-name>
+         </cluster-config>
+         
+         <security-domain>session2SecurityDomain</security-domain>
+         
+         <method-attributes id="session2MethodAttributes-id">
+            <method id="session2MethodAttributesMethod1-id">
+               <method-name>get*</method-name>
+               <read-only>true</read-only>
+               <idempotent>true</idempotent>
+               <transaction-timeout>5000</transaction-timeout>
+            </method>
+            <method id="session2MethodAttributesMethod2-id">
+               <method-name>*</method-name>
+            </method>
+         </method-attributes>
+         
+         <depends>session2Depends1</depends>
+         <depends>session2Depends2</depends>
+         
+         <ior-security-config id="session2IorSecurityConfig-id">
+            <description>en-session2IorSecurityConfig-desc</description>
+            <description xml:lang="fr">fr-session2IorSecurityConfig-desc</description>
+            <description xml:lang="de">de-session2IorSecurityConfig-desc</description>
+            <transport-config id="session2TransportConfig-id">
+               <description>en-session2TransportConfig-desc</description>
+               <description xml:lang="fr">fr-session2TransportConfig-desc</description>
+               <description xml:lang="de">de-session2TransportConfig-desc</description>
+               <integrity>NONE</integrity>
+               <confidentiality>NONE</confidentiality>
+               <establish-trust-in-target>NONE</establish-trust-in-target>
+               <establish-trust-in-client>NONE</establish-trust-in-client>
+               <detect-misordering>NONE</detect-misordering>
+               <detect-replay>NONE</detect-replay>
+            </transport-config>
+            <as-context id="session2ASContext-id">
+               <description>en-session2ASContext-desc</description>
+               <description xml:lang="fr">fr-session2ASContext-desc</description>
+               <description xml:lang="de">de-session2ASContext-desc</description>
+               <auth-method>USERNAME_PASSWORD</auth-method>
+               <realm>session2ASContextRealm</realm>
+               <required>false</required>
+            </as-context>
+            <sas-context id="session2SASContext-id">
+               <description>en-session2SASContext-desc</description>
+               <description xml:lang="fr">fr-session2SASContext-desc</description>
+               <description xml:lang="de">de-session2SASContext-desc</description>
+               <caller-propagation>NONE</caller-propagation>
+            </sas-context>
+         </ior-security-config>
+         
+         <!-- TODO port component -->
+         
+         <ejb-timeout-identity id="session2EjbTimeoutIdentity-id">
+            <description>en-session2EjbTimeoutIdentity-desc</description>
+            <description xml:lang="fr">fr-session2EjbTimeoutIdentity-desc</description>
+            <description xml:lang="de">de-session2EjbTimeoutIdentity-desc</description>
+            <run-as-principal>session2EjbTimeoutIdentityRunAsPrincipal</run-as-principal>
+         </ejb-timeout-identity>
+         
+         <annotation id="session2Annotation1-id">
+            <description>en-session2Annotation1-desc</description>
+            <description xml:lang="fr">fr-session2Annotation1-desc</description>
+            <description xml:lang="de">de-session2Annotation1-desc</description>
+            
+            <annotation-class>session2Annotation1Class</annotation-class>
+            <annotation-implementation-class>session2Annotation1Impl</annotation-implementation-class>
+            <injection-target>
+               <injection-target-class>session2Annotation1InjectionTargetClass</injection-target-class>
+               <injection-target-name>session2Annotation1InjectionTargetName</injection-target-name>
+            </injection-target>
+            <property id="session2Annotation1Property1-id">
+               <description>en-session2Annotation1Property1-desc</description>
+               <description xml:lang="fr">fr-session2Annotation1Property1-desc</description>
+               <description xml:lang="de">de-session2Annotation1Property1-desc</description>
+               <property-name>session2Annotation1Property1Name</property-name>
+               <property-value>session2Annotation1Property1Value</property-value>
+            </property>
+            <property id="session2Annotation1Property2-id">
+               <description>en-session2Annotation1Property2-desc</description>
+               <description xml:lang="fr">fr-session2Annotation1Property2-desc</description>
+               <description xml:lang="de">de-session2Annotation1Property2-desc</description>
+               <property-name>session2Annotation1Property2Name</property-name>
+               <property-value>session2Annotation1Property2Value</property-value>
+            </property>
+         </annotation>
+         <annotation id="session2Annotation2-id">
+            <description>en-session2Annotation2-desc</description>
+            <description xml:lang="fr">fr-session2Annotation2-desc</description>
+            <description xml:lang="de">de-session2Annotation2-desc</description>
+            
+            <annotation-class>session2Annotation2Class</annotation-class>
+            <annotation-implementation-class>session2Annotation2Impl</annotation-implementation-class>
+            <injection-target>
+               <injection-target-class>session2Annotation2InjectionTargetClass</injection-target-class>
+               <injection-target-name>session2Annotation2InjectionTargetName</injection-target-name>
+            </injection-target>
+            <property id="session2Annotation2Property1-id">
+               <description>en-session2Annotation2Property1-desc</description>
+               <description xml:lang="fr">fr-session2Annotation2Property1-desc</description>
+               <description xml:lang="de">de-session2Annotation2Property1-desc</description>
+               <property-name>session2Annotation2Property1Name</property-name>
+               <property-value>session2Annotation2Property1Value</property-value>
+            </property>
+            <property id="session2Annotation2Property2-id">
+               <description>en-session2Annotation2Property2-desc</description>
+               <description xml:lang="fr">fr-session2Annotation2Property2-desc</description>
+               <description xml:lang="de">de-session2Annotation2Property2-desc</description>
+               <property-name>session2Annotation2Property2Name</property-name>
+               <property-value>session2Annotation2Property2Value</property-value>
+            </property>
+         </annotation>
+
+         <ignore-dependency id="session2IgnoreDependency-id">
+            <description>en-session2IgnoreDependency-desc</description>
+            <description xml:lang="fr">fr-session2IgnoreDependency-desc</description>
+            <description xml:lang="de">de-session2IgnoreDependency-desc</description>
+            <injection-target>
+               <injection-target-class>session2IgnoreDependencyInjection1Class</injection-target-class>
+               <injection-target-name>session2IgnoreDependencyInjection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session2IgnoreDependencyInjection2Class</injection-target-class>
+               <injection-target-name>session2IgnoreDependencyInjection2Name</injection-target-name>
+            </injection-target>
+         </ignore-dependency>
+
+         <aop-domain-name>session2AOPDomain</aop-domain-name>         
+         
+         <!-- TODO cache config -->
+         
+         <!-- TODO pool config -->
+
+         <concurrent>false</concurrent>         
+         
+         <jndi-ref id="session2JndiRef1-id">
+            <description>en-session2JndiRef1-desc</description>
+            <description xml:lang="fr">fr-session2JndiRef1-desc</description>
+            <description xml:lang="de">de-session2JndiRef1-desc</description>
+            <jndi-ref-name>session2JndiRef1Name</jndi-ref-name>
+            <mapped-name>session2JndiRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session2JndiRef1Injection1Class</injection-target-class>
+               <injection-target-name>session2JndiRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session2JndiRef1Injection2Class</injection-target-class>
+               <injection-target-name>session2JndiRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </jndi-ref>
+         <jndi-ref id="session2JndiRef2-id">
+            <description>en-session2JndiRef2-desc</description>
+            <description xml:lang="fr">fr-session2JndiRef2-desc</description>
+            <description xml:lang="de">de-session2JndiRef2-desc</description>
+            <jndi-ref-name>session2JndiRef2Name</jndi-ref-name>
+            <mapped-name>session2JndiRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>session2JndiRef2Injection1Class</injection-target-class>
+               <injection-target-name>session2JndiRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>session2JndiRef2Injection2Class</injection-target-class>
+               <injection-target-name>session2JndiRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </jndi-ref>
+
+      </session>
+
+      <entity>
+         <ejb-name>entity0EjbName</ejb-name>
+      </entity>
+
+      <entity id="entity1-id">
+         <description>en-entity1-desc</description>
+         <description xml:lang="fr">fr-entity1-desc</description>
+         <description xml:lang="de">de-entity1-desc</description>
+         <display-name>en-entity1-disp</display-name>
+         <display-name xml:lang="fr">fr-entity1-disp</display-name>
+         <display-name xml:lang="de">de-entity1-disp</display-name>
+         <icon id="en-entity1-icon-id">
+            <small-icon>en-entity1-small-icon</small-icon>
+            <large-icon>en-entity1-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="fr" id="fr-entity1-icon-id">
+            <small-icon>fr-entity1-small-icon</small-icon>
+            <large-icon>fr-entity1-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="de" id="de-entity1-icon-id">
+            <small-icon>de-entity1-small-icon</small-icon>
+            <large-icon>de-entity1-large-icon</large-icon>
+         </icon>
+
+         <ejb-name>entity1EjbName</ejb-name>
+
+         <jndi-name>entity1JndiName</jndi-name>
+         <local-jndi-name>entity1LocalJndiName</local-jndi-name>
+         <call-by-value>true</call-by-value>
+         <read-only>true</read-only>
+         <exception-on-rollback>true</exception-on-rollback>
+         <timer-persistence>true</timer-persistence>
+         <configuration-name>entity1ConfigurationName</configuration-name>
+         
+         <invoker-bindings id="entity1InvokerBindings-id">
+            <description>en-entity1InvokerBindings-desc</description>
+            <description xml:lang="fr">fr-entity1InvokerBindings-desc</description>
+            <description xml:lang="de">de-entity1InvokerBindings-desc</description>
+
+            <invoker id="entity1Invoker1-id">
+               <description>en-entity1Invoker1-desc</description>
+               <description xml:lang="fr">fr-entity1Invoker1-desc</description>
+               <description xml:lang="de">de-entity1Invoker1-desc</description>
+               
+               <invoker-proxy-binding-name>entity1Invoker1Name</invoker-proxy-binding-name>
+               <jndi-name>entity1Invoker1JndiName</jndi-name>
+               <!-- TODO ejb-ref -->
+            </invoker>
+            <invoker id="entity1Invoker2-id">
+               <description>en-entity1Invoker2-desc</description>
+               <description xml:lang="fr">fr-entity1Invoker2-desc</description>
+               <description xml:lang="de">de-entity1Invoker2-desc</description>
+               
+               <invoker-proxy-binding-name>entity1Invoker2Name</invoker-proxy-binding-name>
+               <jndi-name>entity1Invoker2JndiName</jndi-name>
+               <!-- TODO ejb-ref -->
+            </invoker>
+         </invoker-bindings>
+         
+         <security-proxy>entity1SecurityProxy</security-proxy>
+         
+         <ejb-ref id="entity1EjbRef1-id">
+            <description>en-entity1EjbRef1-desc</description>
+            <description xml:lang="fr">fr-entity1EjbRef1-desc</description>
+            <description xml:lang="de">de-entity1EjbRef1-desc</description>
+
+            <ejb-ref-name>entity1EjbRef1Name</ejb-ref-name>
+            <injection-target>
+               <injection-target-class>entity1EjbRef1Injection1Class</injection-target-class>
+               <injection-target-name>entity1EjbRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity1EjbRef1Injection2Class</injection-target-class>
+               <injection-target-name>entity1EjbRef1Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>entity1EjbRef1JndiName</jndi-name>
+            <ignore-dependency/>
+         </ejb-ref>
+         <ejb-ref id="entity1EjbRef2-id">
+            <description>en-entity1EjbRef2-desc</description>
+            <description xml:lang="fr">fr-entity1EjbRef2-desc</description>
+            <description xml:lang="de">de-entity1EjbRef2-desc</description>
+
+            <ejb-ref-name>entity1EjbRef2Name</ejb-ref-name>
+            <injection-target>
+               <injection-target-class>entity1EjbRef2Injection1Class</injection-target-class>
+               <injection-target-name>entity1EjbRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity1EjbRef2Injection2Class</injection-target-class>
+               <injection-target-name>entity1EjbRef2Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>entity1EjbRef2JndiName</jndi-name>
+         </ejb-ref>
+
+         <ejb-local-ref id="entity1EjbLocalRef1-id">
+            <description>en-entity1EjbLocalRef1-desc</description>
+            <description xml:lang="fr">fr-entity1EjbLocalRef1-desc</description>
+            <description xml:lang="de">de-entity1EjbLocalRef1-desc</description>
+
+            <ejb-ref-name>entity1EjbLocalRef1Name</ejb-ref-name>
+            <injection-target>
+               <injection-target-class>entity1EjbLocalRef1Injection1Class</injection-target-class>
+               <injection-target-name>entity1EjbLocalRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity1EjbLocalRef1Injection2Class</injection-target-class>
+               <injection-target-name>entity1EjbLocalRef1Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>entity1EjbLocalRef1JndiName</jndi-name>
+            <ignore-dependency/>
+         </ejb-local-ref>
+         <ejb-local-ref id="entity1EjbLocalRef2-id">
+            <description>en-entity1EjbLocalRef2-desc</description>
+            <description xml:lang="fr">fr-entity1EjbLocalRef2-desc</description>
+            <description xml:lang="de">de-entity1EjbLocalRef2-desc</description>
+
+            <ejb-ref-name>entity1EjbLocalRef2Name</ejb-ref-name>
+            <injection-target>
+               <injection-target-class>entity1EjbLocalRef2Injection1Class</injection-target-class>
+               <injection-target-name>entity1EjbLocalRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity1EjbLocalRef2Injection2Class</injection-target-class>
+               <injection-target-name>entity1EjbLocalRef2Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>entity1EjbLocalRef2JndiName</jndi-name>
+         </ejb-local-ref>
+
+         <!-- TODO service-ref -->
+
+         <security-identity id="entity1SecurityIdentity-id">
+            <description>en-entity1SecurityIdentity-desc</description>
+            <description xml:lang="fr">fr-entity1SecurityIdentity-desc</description>
+            <description xml:lang="de">de-entity1SecurityIdentity-desc</description>
+            <run-as-principal>entity1SecurityIdentityRunAsPrincipal</run-as-principal>
+         </security-identity>
+
+         <resource-ref id="entity1ResourceRef1-id">
+            <description>en-entity1ResourceRef1-desc</description>
+            <description xml:lang="fr">fr-entity1ResourceRef1-desc</description>
+            <description xml:lang="de">de-entity1ResourceRef1-desc</description>
+            <res-ref-name>entity1ResourceRef1Name</res-ref-name>
+            <injection-target>
+               <injection-target-class>entity1ResourceRef1Injection1Class</injection-target-class>
+               <injection-target-name>entity1ResourceRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity1ResourceRef1Injection2Class</injection-target-class>
+               <injection-target-name>entity1ResourceRef1Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>entity1ResourceRef1JndiName</jndi-name>
+            <ignore-dependency/>
+         </resource-ref>
+         <resource-ref id="entity1ResourceRef2-id">
+            <description>en-entity1ResourceRef2-desc</description>
+            <description xml:lang="fr">fr-entity1ResourceRef2-desc</description>
+            <description xml:lang="de">de-entity1ResourceRef2-desc</description>
+            <res-ref-name>entity1ResourceRef2Name</res-ref-name>
+            <injection-target>
+               <injection-target-class>entity1ResourceRef2Injection1Class</injection-target-class>
+               <injection-target-name>entity1ResourceRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity1ResourceRef2Injection2Class</injection-target-class>
+               <injection-target-name>entity1ResourceRef2Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>entity1ResourceRef2JndiName</jndi-name>
+         </resource-ref>
+         <resource-env-ref id="entity1ResourceEnvRef1-id">
+            <description>en-entity1ResourceEnvRef1-desc</description>
+            <description xml:lang="fr">fr-entity1ResourceEnvRef1-desc</description>
+            <description xml:lang="de">de-entity1ResourceEnvRef1-desc</description>
+            <resource-env-ref-name>entity1ResourceEnvRef1Name</resource-env-ref-name>
+            <injection-target>
+               <injection-target-class>entity1ResourceEnvRef1Injection1Class</injection-target-class>
+               <injection-target-name>entity1ResourceEnvRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity1ResourceEnvRef1Injection2Class</injection-target-class>
+               <injection-target-name>entity1ResourceEnvRef1Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>entity1ResourceEnvRef1JndiName</jndi-name>
+            <ignore-dependency/>
+         </resource-env-ref>
+         <resource-env-ref id="entity1ResourceEnvRef2-id">
+            <description>en-entity1ResourceEnvRef2-desc</description>
+            <description xml:lang="fr">fr-entity1ResourceEnvRef2-desc</description>
+            <description xml:lang="de">de-entity1ResourceEnvRef2-desc</description>
+            <resource-env-ref-name>entity1ResourceEnvRef2Name</resource-env-ref-name>
+            <injection-target>
+               <injection-target-class>entity1ResourceEnvRef2Injection1Class</injection-target-class>
+               <injection-target-name>entity1ResourceEnvRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity1ResourceEnvRef2Injection2Class</injection-target-class>
+               <injection-target-name>entity1ResourceEnvRef2Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>entity1ResourceEnvRef2JndiName</jndi-name>
+         </resource-env-ref>
+         <message-destination-ref id="entity1MessageDestinationRef1-id">
+            <description>en-entity1MessageDestinationRef1-desc</description>
+            <description xml:lang="fr">fr-entity1MessageDestinationRef1-desc</description>
+            <description xml:lang="de">de-entity1MessageDestinationRef1-desc</description>
+            <message-destination-ref-name>entity1MessageDestinationRef1Name</message-destination-ref-name>
+            <injection-target>
+               <injection-target-class>entity1MessageDestinationRef1Injection1Class</injection-target-class>
+               <injection-target-name>entity1MessageDestinationRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity1MessageDestinationRef1Injection2Class</injection-target-class>
+               <injection-target-name>entity1MessageDestinationRef1Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>entity1MessageDestinationRef1JndiName</jndi-name>
+            <ignore-dependency/>
+         </message-destination-ref>
+         <message-destination-ref id="entity1MessageDestinationRef2-id">
+            <description>en-entity1MessageDestinationRef2-desc</description>
+            <description xml:lang="fr">fr-entity1MessageDestinationRef2-desc</description>
+            <description xml:lang="de">de-entity1MessageDestinationRef2-desc</description>
+            <message-destination-ref-name>entity1MessageDestinationRef2Name</message-destination-ref-name>
+            <injection-target>
+               <injection-target-class>entity1MessageDestinationRef2Injection1Class</injection-target-class>
+               <injection-target-name>entity1MessageDestinationRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity1MessageDestinationRef2Injection2Class</injection-target-class>
+               <injection-target-name>entity1MessageDestinationRef2Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>entity1MessageDestinationRef2JndiName</jndi-name>
+         </message-destination-ref>
+         <message-destination-ref id="entity1MessageDestinationRef3-id">
+            <description>en-entity1MessageDestinationRef3-desc</description>
+            <description xml:lang="fr">fr-entity1MessageDestinationRef3-desc</description>
+            <description xml:lang="de">de-entity1MessageDestinationRef3-desc</description>
+            <message-destination-ref-name>entity1MessageDestinationRef3Name</message-destination-ref-name>
+            <injection-target>
+               <injection-target-class>entity1MessageDestinationRef3Injection1Class</injection-target-class>
+               <injection-target-name>entity1MessageDestinationRef3Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity1MessageDestinationRef3Injection2Class</injection-target-class>
+               <injection-target-name>entity1MessageDestinationRef3Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>entity1MessageDestinationRef3JndiName</jndi-name>
+         </message-destination-ref>
+         
+         <method-attributes id="entity1MethodAttributes-id">
+            <method id="entity1MethodAttributesMethod1-id">
+               <method-name>get*</method-name>
+               <read-only>true</read-only>
+               <idempotent>true</idempotent>
+               <transaction-timeout>5000</transaction-timeout>
+            </method>
+            <method id="entity1MethodAttributesMethod2-id">
+               <method-name>*</method-name>
+            </method>
+         </method-attributes>
+         
+         <clustered>true</clustered>
+         
+         <cluster-config id="entity1ClusterConfig-id">
+            <description>en-entity1ClusterConfig-desc</description>
+            <description xml:lang="fr">fr-entity1ClusterConfig-desc</description>
+            <description xml:lang="de">de-entity1ClusterConfig-desc</description>
+            <partition-name>entity1ClusterConfigPartitionName</partition-name>
+            <home-load-balancing-policy>entity1ClusterConfigHomeLoadBalancingPolicy</home-load-balancing-policy>
+            <bean-load-balancing-policy>entity1ClusterConfigBeanLoadBalancingPolicy</bean-load-balancing-policy>
+         </cluster-config>
+         
+         <security-domain>entity1SecurityDomain</security-domain>
+         
+         <cache-invalidation>true</cache-invalidation>
+         <cache-invalidation-config id="entity1CacheInvalidationConfig-id">
+            <description>en-entity1CacheInvalidationConfig-desc</description>
+            <description xml:lang="fr">fr-entity1CacheInvalidationConfig-desc</description>
+            <description xml:lang="de">de-entity1CacheInvalidationConfig-desc</description>
+            <invalidation-group-name>entity1CacheInvalidationConfigInvalidationGroupName</invalidation-group-name>
+            <invalidation-manager-name>entity1CacheInvalidationConfigInvalidationManagerName</invalidation-manager-name>
+         </cache-invalidation-config>
+         
+         <depends>entity1Depends1</depends>
+         <depends>entity1Depends2</depends>
+         
+         <ior-security-config id="entity1IorSecurityConfig-id">
+            <description>en-entity1IorSecurityConfig-desc</description>
+            <description xml:lang="fr">fr-entity1IorSecurityConfig-desc</description>
+            <description xml:lang="de">de-entity1IorSecurityConfig-desc</description>
+            <transport-config id="entity1TransportConfig-id">
+               <description>en-entity1TransportConfig-desc</description>
+               <description xml:lang="fr">fr-entity1TransportConfig-desc</description>
+               <description xml:lang="de">de-entity1TransportConfig-desc</description>
+               <integrity>NONE</integrity>
+               <confidentiality>NONE</confidentiality>
+               <establish-trust-in-target>NONE</establish-trust-in-target>
+               <establish-trust-in-client>NONE</establish-trust-in-client>
+               <detect-misordering>NONE</detect-misordering>
+               <detect-replay>NONE</detect-replay>
+            </transport-config>
+            <as-context id="entity1ASContext-id">
+               <description>en-entity1ASContext-desc</description>
+               <description xml:lang="fr">fr-entity1ASContext-desc</description>
+               <description xml:lang="de">de-entity1ASContext-desc</description>
+               <auth-method>USERNAME_PASSWORD</auth-method>
+               <realm>entity1ASContextRealm</realm>
+               <required>false</required>
+            </as-context>
+            <sas-context id="entity1SASContext-id">
+               <description>en-entity1SASContext-desc</description>
+               <description xml:lang="fr">fr-entity1SASContext-desc</description>
+               <description xml:lang="de">de-entity1SASContext-desc</description>
+               <caller-propagation>NONE</caller-propagation>
+            </sas-context>
+         </ior-security-config>
+         
+         <annotation id="entity1Annotation1-id">
+            <description>en-entity1Annotation1-desc</description>
+            <description xml:lang="fr">fr-entity1Annotation1-desc</description>
+            <description xml:lang="de">de-entity1Annotation1-desc</description>
+            
+            <annotation-class>entity1Annotation1Class</annotation-class>
+            <annotation-implementation-class>entity1Annotation1Impl</annotation-implementation-class>
+            <injection-target>
+               <injection-target-class>entity1Annotation1InjectionTargetClass</injection-target-class>
+               <injection-target-name>entity1Annotation1InjectionTargetName</injection-target-name>
+            </injection-target>
+            <property id="entity1Annotation1Property1-id">
+               <description>en-entity1Annotation1Property1-desc</description>
+               <description xml:lang="fr">fr-entity1Annotation1Property1-desc</description>
+               <description xml:lang="de">de-entity1Annotation1Property1-desc</description>
+               <property-name>entity1Annotation1Property1Name</property-name>
+               <property-value>entity1Annotation1Property1Value</property-value>
+            </property>
+            <property id="entity1Annotation1Property2-id">
+               <description>en-entity1Annotation1Property2-desc</description>
+               <description xml:lang="fr">fr-entity1Annotation1Property2-desc</description>
+               <description xml:lang="de">de-entity1Annotation1Property2-desc</description>
+               <property-name>entity1Annotation1Property2Name</property-name>
+               <property-value>entity1Annotation1Property2Value</property-value>
+            </property>
+         </annotation>
+         <annotation id="entity1Annotation2-id">
+            <description>en-entity1Annotation2-desc</description>
+            <description xml:lang="fr">fr-entity1Annotation2-desc</description>
+            <description xml:lang="de">de-entity1Annotation2-desc</description>
+            
+            <annotation-class>entity1Annotation2Class</annotation-class>
+            <annotation-implementation-class>entity1Annotation2Impl</annotation-implementation-class>
+            <injection-target>
+               <injection-target-class>entity1Annotation2InjectionTargetClass</injection-target-class>
+               <injection-target-name>entity1Annotation2InjectionTargetName</injection-target-name>
+            </injection-target>
+            <property id="entity1Annotation2Property1-id">
+               <description>en-entity1Annotation2Property1-desc</description>
+               <description xml:lang="fr">fr-entity1Annotation2Property1-desc</description>
+               <description xml:lang="de">de-entity1Annotation2Property1-desc</description>
+               <property-name>entity1Annotation2Property1Name</property-name>
+               <property-value>entity1Annotation2Property1Value</property-value>
+            </property>
+            <property id="entity1Annotation2Property2-id">
+               <description>en-entity1Annotation2Property2-desc</description>
+               <description xml:lang="fr">fr-entity1Annotation2Property2-desc</description>
+               <description xml:lang="de">de-entity1Annotation2Property2-desc</description>
+               <property-name>entity1Annotation2Property2Name</property-name>
+               <property-value>entity1Annotation2Property2Value</property-value>
+            </property>
+         </annotation>
+
+         <ignore-dependency id="entity1IgnoreDependency-id">
+            <description>en-entity1IgnoreDependency-desc</description>
+            <description xml:lang="fr">fr-entity1IgnoreDependency-desc</description>
+            <description xml:lang="de">de-entity1IgnoreDependency-desc</description>
+            <injection-target>
+               <injection-target-class>entity1IgnoreDependencyInjection1Class</injection-target-class>
+               <injection-target-name>entity1IgnoreDependencyInjection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity1IgnoreDependencyInjection2Class</injection-target-class>
+               <injection-target-name>entity1IgnoreDependencyInjection2Name</injection-target-name>
+            </injection-target>
+         </ignore-dependency>
+
+         <aop-domain-name>entity1AOPDomain</aop-domain-name>         
+         
+         <!-- TODO cache config -->
+         
+         <!-- TODO pool config -->
+         
+         <jndi-ref id="entity1JndiRef1-id">
+            <description>en-entity1JndiRef1-desc</description>
+            <description xml:lang="fr">fr-entity1JndiRef1-desc</description>
+            <description xml:lang="de">de-entity1JndiRef1-desc</description>
+            <jndi-ref-name>entity1JndiRef1Name</jndi-ref-name>
+            <mapped-name>entity1JndiRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity1JndiRef1Injection1Class</injection-target-class>
+               <injection-target-name>entity1JndiRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity1JndiRef1Injection2Class</injection-target-class>
+               <injection-target-name>entity1JndiRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </jndi-ref>
+         <jndi-ref id="entity1JndiRef2-id">
+            <description>en-entity1JndiRef2-desc</description>
+            <description xml:lang="fr">fr-entity1JndiRef2-desc</description>
+            <description xml:lang="de">de-entity1JndiRef2-desc</description>
+            <jndi-ref-name>entity1JndiRef2Name</jndi-ref-name>
+            <mapped-name>entity1JndiRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity1JndiRef2Injection1Class</injection-target-class>
+               <injection-target-name>entity1JndiRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity1JndiRef2Injection2Class</injection-target-class>
+               <injection-target-name>entity1JndiRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </jndi-ref>
+
+      </entity>
+
+      <entity id="entity2-id">
+         <description>en-entity2-desc</description>
+         <description xml:lang="fr">fr-entity2-desc</description>
+         <description xml:lang="de">de-entity2-desc</description>
+         <display-name>en-entity2-disp</display-name>
+         <display-name xml:lang="fr">fr-entity2-disp</display-name>
+         <display-name xml:lang="de">de-entity2-disp</display-name>
+         <icon id="en-entity2-icon-id">
+            <small-icon>en-entity2-small-icon</small-icon>
+            <large-icon>en-entity2-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="fr" id="fr-entity2-icon-id">
+            <small-icon>fr-entity2-small-icon</small-icon>
+            <large-icon>fr-entity2-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="de" id="de-entity2-icon-id">
+            <small-icon>de-entity2-small-icon</small-icon>
+            <large-icon>de-entity2-large-icon</large-icon>
+         </icon>
+
+         <ejb-name>entity2EjbName</ejb-name>
+
+         <jndi-name>entity2JndiName</jndi-name>
+         <local-jndi-name>entity2LocalJndiName</local-jndi-name>
+         <call-by-value>false</call-by-value>
+         <read-only>false</read-only>
+         <exception-on-rollback>false</exception-on-rollback>
+         <timer-persistence>false</timer-persistence>
+         <configuration-name>entity2ConfigurationName</configuration-name>
+         
+         <invoker-bindings id="entity2InvokerBindings-id">
+            <description>en-entity2InvokerBindings-desc</description>
+            <description xml:lang="fr">fr-entity2InvokerBindings-desc</description>
+            <description xml:lang="de">de-entity2InvokerBindings-desc</description>
+
+            <invoker id="entity2Invoker1-id">
+               <description>en-entity2Invoker1-desc</description>
+               <description xml:lang="fr">fr-entity2Invoker1-desc</description>
+               <description xml:lang="de">de-entity2Invoker1-desc</description>
+               
+               <invoker-proxy-binding-name>entity2Invoker1Name</invoker-proxy-binding-name>
+               <jndi-name>entity2Invoker1JndiName</jndi-name>
+               <!-- TODO ejb-ref -->
+            </invoker>
+            <invoker id="entity2Invoker2-id">
+               <description>en-entity2Invoker2-desc</description>
+               <description xml:lang="fr">fr-entity2Invoker2-desc</description>
+               <description xml:lang="de">de-entity2Invoker2-desc</description>
+               
+               <invoker-proxy-binding-name>entity2Invoker2Name</invoker-proxy-binding-name>
+               <jndi-name>entity2Invoker2JndiName</jndi-name>
+               <!-- TODO ejb-ref -->
+            </invoker>
+         </invoker-bindings>
+         
+         <security-proxy>entity2SecurityProxy</security-proxy>
+         
+         <ejb-ref id="entity2EjbRef1-id">
+            <description>en-entity2EjbRef1-desc</description>
+            <description xml:lang="fr">fr-entity2EjbRef1-desc</description>
+            <description xml:lang="de">de-entity2EjbRef1-desc</description>
+
+            <ejb-ref-name>entity2EjbRef1Name</ejb-ref-name>
+            <injection-target>
+               <injection-target-class>entity2EjbRef1Injection1Class</injection-target-class>
+               <injection-target-name>entity2EjbRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity2EjbRef1Injection2Class</injection-target-class>
+               <injection-target-name>entity2EjbRef1Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>entity2EjbRef1JndiName</jndi-name>
+            <ignore-dependency/>
+         </ejb-ref>
+         <ejb-ref id="entity2EjbRef2-id">
+            <description>en-entity2EjbRef2-desc</description>
+            <description xml:lang="fr">fr-entity2EjbRef2-desc</description>
+            <description xml:lang="de">de-entity2EjbRef2-desc</description>
+
+            <ejb-ref-name>entity2EjbRef2Name</ejb-ref-name>
+            <injection-target>
+               <injection-target-class>entity2EjbRef2Injection1Class</injection-target-class>
+               <injection-target-name>entity2EjbRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity2EjbRef2Injection2Class</injection-target-class>
+               <injection-target-name>entity2EjbRef2Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>entity2EjbRef2JndiName</jndi-name>
+         </ejb-ref>
+
+         <ejb-local-ref id="entity2EjbLocalRef1-id">
+            <description>en-entity2EjbLocalRef1-desc</description>
+            <description xml:lang="fr">fr-entity2EjbLocalRef1-desc</description>
+            <description xml:lang="de">de-entity2EjbLocalRef1-desc</description>
+
+            <ejb-ref-name>entity2EjbLocalRef1Name</ejb-ref-name>
+            <injection-target>
+               <injection-target-class>entity2EjbLocalRef1Injection1Class</injection-target-class>
+               <injection-target-name>entity2EjbLocalRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity2EjbLocalRef1Injection2Class</injection-target-class>
+               <injection-target-name>entity2EjbLocalRef1Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>entity2EjbLocalRef1JndiName</jndi-name>
+            <ignore-dependency/>
+         </ejb-local-ref>
+         <ejb-local-ref id="entity2EjbLocalRef2-id">
+            <description>en-entity2EjbLocalRef2-desc</description>
+            <description xml:lang="fr">fr-entity2EjbLocalRef2-desc</description>
+            <description xml:lang="de">de-entity2EjbLocalRef2-desc</description>
+
+            <ejb-ref-name>entity2EjbLocalRef2Name</ejb-ref-name>
+            <injection-target>
+               <injection-target-class>entity2EjbLocalRef2Injection1Class</injection-target-class>
+               <injection-target-name>entity2EjbLocalRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity2EjbLocalRef2Injection2Class</injection-target-class>
+               <injection-target-name>entity2EjbLocalRef2Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>entity2EjbLocalRef2JndiName</jndi-name>
+         </ejb-local-ref>
+
+         <!-- TODO service-ref -->
+
+         <security-identity id="entity2SecurityIdentity-id">
+            <description>en-entity2SecurityIdentity-desc</description>
+            <description xml:lang="fr">fr-entity2SecurityIdentity-desc</description>
+            <description xml:lang="de">de-entity2SecurityIdentity-desc</description>
+            <run-as-principal>entity2SecurityIdentityRunAsPrincipal</run-as-principal>
+         </security-identity>
+
+         <resource-ref id="entity2ResourceRef1-id">
+            <description>en-entity2ResourceRef1-desc</description>
+            <description xml:lang="fr">fr-entity2ResourceRef1-desc</description>
+            <description xml:lang="de">de-entity2ResourceRef1-desc</description>
+            <res-ref-name>entity2ResourceRef1Name</res-ref-name>
+            <injection-target>
+               <injection-target-class>entity2ResourceRef1Injection1Class</injection-target-class>
+               <injection-target-name>entity2ResourceRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity2ResourceRef1Injection2Class</injection-target-class>
+               <injection-target-name>entity2ResourceRef1Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>entity2ResourceRef1JndiName</jndi-name>
+            <ignore-dependency/>
+         </resource-ref>
+         <resource-ref id="entity2ResourceRef2-id">
+            <description>en-entity2ResourceRef2-desc</description>
+            <description xml:lang="fr">fr-entity2ResourceRef2-desc</description>
+            <description xml:lang="de">de-entity2ResourceRef2-desc</description>
+            <res-ref-name>entity2ResourceRef2Name</res-ref-name>
+            <injection-target>
+               <injection-target-class>entity2ResourceRef2Injection1Class</injection-target-class>
+               <injection-target-name>entity2ResourceRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity2ResourceRef2Injection2Class</injection-target-class>
+               <injection-target-name>entity2ResourceRef2Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>entity2ResourceRef2JndiName</jndi-name>
+         </resource-ref>
+         <resource-env-ref id="entity2ResourceEnvRef1-id">
+            <description>en-entity2ResourceEnvRef1-desc</description>
+            <description xml:lang="fr">fr-entity2ResourceEnvRef1-desc</description>
+            <description xml:lang="de">de-entity2ResourceEnvRef1-desc</description>
+            <resource-env-ref-name>entity2ResourceEnvRef1Name</resource-env-ref-name>
+            <injection-target>
+               <injection-target-class>entity2ResourceEnvRef1Injection1Class</injection-target-class>
+               <injection-target-name>entity2ResourceEnvRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity2ResourceEnvRef1Injection2Class</injection-target-class>
+               <injection-target-name>entity2ResourceEnvRef1Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>entity2ResourceEnvRef1JndiName</jndi-name>
+            <ignore-dependency/>
+         </resource-env-ref>
+         <resource-env-ref id="entity2ResourceEnvRef2-id">
+            <description>en-entity2ResourceEnvRef2-desc</description>
+            <description xml:lang="fr">fr-entity2ResourceEnvRef2-desc</description>
+            <description xml:lang="de">de-entity2ResourceEnvRef2-desc</description>
+            <resource-env-ref-name>entity2ResourceEnvRef2Name</resource-env-ref-name>
+            <injection-target>
+               <injection-target-class>entity2ResourceEnvRef2Injection1Class</injection-target-class>
+               <injection-target-name>entity2ResourceEnvRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity2ResourceEnvRef2Injection2Class</injection-target-class>
+               <injection-target-name>entity2ResourceEnvRef2Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>entity2ResourceEnvRef2JndiName</jndi-name>
+         </resource-env-ref>
+         <message-destination-ref id="entity2MessageDestinationRef1-id">
+            <description>en-entity2MessageDestinationRef1-desc</description>
+            <description xml:lang="fr">fr-entity2MessageDestinationRef1-desc</description>
+            <description xml:lang="de">de-entity2MessageDestinationRef1-desc</description>
+            <message-destination-ref-name>entity2MessageDestinationRef1Name</message-destination-ref-name>
+            <injection-target>
+               <injection-target-class>entity2MessageDestinationRef1Injection1Class</injection-target-class>
+               <injection-target-name>entity2MessageDestinationRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity2MessageDestinationRef1Injection2Class</injection-target-class>
+               <injection-target-name>entity2MessageDestinationRef1Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>entity2MessageDestinationRef1JndiName</jndi-name>
+            <ignore-dependency/>
+         </message-destination-ref>
+         <message-destination-ref id="entity2MessageDestinationRef2-id">
+            <description>en-entity2MessageDestinationRef2-desc</description>
+            <description xml:lang="fr">fr-entity2MessageDestinationRef2-desc</description>
+            <description xml:lang="de">de-entity2MessageDestinationRef2-desc</description>
+            <message-destination-ref-name>entity2MessageDestinationRef2Name</message-destination-ref-name>
+            <injection-target>
+               <injection-target-class>entity2MessageDestinationRef2Injection1Class</injection-target-class>
+               <injection-target-name>entity2MessageDestinationRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity2MessageDestinationRef2Injection2Class</injection-target-class>
+               <injection-target-name>entity2MessageDestinationRef2Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>entity2MessageDestinationRef2JndiName</jndi-name>
+         </message-destination-ref>
+         <message-destination-ref id="entity2MessageDestinationRef3-id">
+            <description>en-entity2MessageDestinationRef3-desc</description>
+            <description xml:lang="fr">fr-entity2MessageDestinationRef3-desc</description>
+            <description xml:lang="de">de-entity2MessageDestinationRef3-desc</description>
+            <message-destination-ref-name>entity2MessageDestinationRef3Name</message-destination-ref-name>
+            <injection-target>
+               <injection-target-class>entity2MessageDestinationRef3Injection1Class</injection-target-class>
+               <injection-target-name>entity2MessageDestinationRef3Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity2MessageDestinationRef3Injection2Class</injection-target-class>
+               <injection-target-name>entity2MessageDestinationRef3Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>entity2MessageDestinationRef3JndiName</jndi-name>
+         </message-destination-ref>
+         
+         <method-attributes id="entity2MethodAttributes-id">
+            <method id="entity2MethodAttributesMethod1-id">
+               <method-name>get*</method-name>
+               <read-only>true</read-only>
+               <idempotent>true</idempotent>
+               <transaction-timeout>5000</transaction-timeout>
+            </method>
+            <method id="entity2MethodAttributesMethod2-id">
+               <method-name>*</method-name>
+            </method>
+         </method-attributes>
+         
+         <clustered>false</clustered>
+         
+         <cluster-config id="entity2ClusterConfig-id">
+            <description>en-entity2ClusterConfig-desc</description>
+            <description xml:lang="fr">fr-entity2ClusterConfig-desc</description>
+            <description xml:lang="de">de-entity2ClusterConfig-desc</description>
+            <partition-name>entity2ClusterConfigPartitionName</partition-name>
+            <home-load-balancing-policy>entity2ClusterConfigHomeLoadBalancingPolicy</home-load-balancing-policy>
+            <bean-load-balancing-policy>entity2ClusterConfigBeanLoadBalancingPolicy</bean-load-balancing-policy>
+         </cluster-config>
+         
+         <security-domain>entity2SecurityDomain</security-domain>
+
+         <cache-invalidation>false</cache-invalidation>
+         <cache-invalidation-config id="entity2CacheInvalidationConfig-id">
+            <description>en-entity2CacheInvalidationConfig-desc</description>
+            <description xml:lang="fr">fr-entity2CacheInvalidationConfig-desc</description>
+            <description xml:lang="de">de-entity2CacheInvalidationConfig-desc</description>
+            <invalidation-group-name>entity2CacheInvalidationConfigInvalidationGroupName</invalidation-group-name>
+            <invalidation-manager-name>entity2CacheInvalidationConfigInvalidationManagerName</invalidation-manager-name>
+         </cache-invalidation-config>
+         
+         <depends>entity2Depends1</depends>
+         <depends>entity2Depends2</depends>
+         
+         <ior-security-config id="entity2IorSecurityConfig-id">
+            <description>en-entity2IorSecurityConfig-desc</description>
+            <description xml:lang="fr">fr-entity2IorSecurityConfig-desc</description>
+            <description xml:lang="de">de-entity2IorSecurityConfig-desc</description>
+            <transport-config id="entity2TransportConfig-id">
+               <description>en-entity2TransportConfig-desc</description>
+               <description xml:lang="fr">fr-entity2TransportConfig-desc</description>
+               <description xml:lang="de">de-entity2TransportConfig-desc</description>
+               <integrity>NONE</integrity>
+               <confidentiality>NONE</confidentiality>
+               <establish-trust-in-target>NONE</establish-trust-in-target>
+               <establish-trust-in-client>NONE</establish-trust-in-client>
+               <detect-misordering>NONE</detect-misordering>
+               <detect-replay>NONE</detect-replay>
+            </transport-config>
+            <as-context id="entity2ASContext-id">
+               <description>en-entity2ASContext-desc</description>
+               <description xml:lang="fr">fr-entity2ASContext-desc</description>
+               <description xml:lang="de">de-entity2ASContext-desc</description>
+               <auth-method>USERNAME_PASSWORD</auth-method>
+               <realm>entity2ASContextRealm</realm>
+               <required>false</required>
+            </as-context>
+            <sas-context id="entity2SASContext-id">
+               <description>en-entity2SASContext-desc</description>
+               <description xml:lang="fr">fr-entity2SASContext-desc</description>
+               <description xml:lang="de">de-entity2SASContext-desc</description>
+               <caller-propagation>NONE</caller-propagation>
+            </sas-context>
+         </ior-security-config>
+         
+         <annotation id="entity2Annotation1-id">
+            <description>en-entity2Annotation1-desc</description>
+            <description xml:lang="fr">fr-entity2Annotation1-desc</description>
+            <description xml:lang="de">de-entity2Annotation1-desc</description>
+            
+            <annotation-class>entity2Annotation1Class</annotation-class>
+            <annotation-implementation-class>entity2Annotation1Impl</annotation-implementation-class>
+            <injection-target>
+               <injection-target-class>entity2Annotation1InjectionTargetClass</injection-target-class>
+               <injection-target-name>entity2Annotation1InjectionTargetName</injection-target-name>
+            </injection-target>
+            <property id="entity2Annotation1Property1-id">
+               <description>en-entity2Annotation1Property1-desc</description>
+               <description xml:lang="fr">fr-entity2Annotation1Property1-desc</description>
+               <description xml:lang="de">de-entity2Annotation1Property1-desc</description>
+               <property-name>entity2Annotation1Property1Name</property-name>
+               <property-value>entity2Annotation1Property1Value</property-value>
+            </property>
+            <property id="entity2Annotation1Property2-id">
+               <description>en-entity2Annotation1Property2-desc</description>
+               <description xml:lang="fr">fr-entity2Annotation1Property2-desc</description>
+               <description xml:lang="de">de-entity2Annotation1Property2-desc</description>
+               <property-name>entity2Annotation1Property2Name</property-name>
+               <property-value>entity2Annotation1Property2Value</property-value>
+            </property>
+         </annotation>
+         <annotation id="entity2Annotation2-id">
+            <description>en-entity2Annotation2-desc</description>
+            <description xml:lang="fr">fr-entity2Annotation2-desc</description>
+            <description xml:lang="de">de-entity2Annotation2-desc</description>
+            
+            <annotation-class>entity2Annotation2Class</annotation-class>
+            <annotation-implementation-class>entity2Annotation2Impl</annotation-implementation-class>
+            <injection-target>
+               <injection-target-class>entity2Annotation2InjectionTargetClass</injection-target-class>
+               <injection-target-name>entity2Annotation2InjectionTargetName</injection-target-name>
+            </injection-target>
+            <property id="entity2Annotation2Property1-id">
+               <description>en-entity2Annotation2Property1-desc</description>
+               <description xml:lang="fr">fr-entity2Annotation2Property1-desc</description>
+               <description xml:lang="de">de-entity2Annotation2Property1-desc</description>
+               <property-name>entity2Annotation2Property1Name</property-name>
+               <property-value>entity2Annotation2Property1Value</property-value>
+            </property>
+            <property id="entity2Annotation2Property2-id">
+               <description>en-entity2Annotation2Property2-desc</description>
+               <description xml:lang="fr">fr-entity2Annotation2Property2-desc</description>
+               <description xml:lang="de">de-entity2Annotation2Property2-desc</description>
+               <property-name>entity2Annotation2Property2Name</property-name>
+               <property-value>entity2Annotation2Property2Value</property-value>
+            </property>
+         </annotation>
+
+         <ignore-dependency id="entity2IgnoreDependency-id">
+            <description>en-entity2IgnoreDependency-desc</description>
+            <description xml:lang="fr">fr-entity2IgnoreDependency-desc</description>
+            <description xml:lang="de">de-entity2IgnoreDependency-desc</description>
+            <injection-target>
+               <injection-target-class>entity2IgnoreDependencyInjection1Class</injection-target-class>
+               <injection-target-name>entity2IgnoreDependencyInjection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity2IgnoreDependencyInjection2Class</injection-target-class>
+               <injection-target-name>entity2IgnoreDependencyInjection2Name</injection-target-name>
+            </injection-target>
+         </ignore-dependency>
+
+         <aop-domain-name>entity2AOPDomain</aop-domain-name>         
+         
+         <!-- TODO cache config -->
+         
+         <!-- TODO pool config -->
+         
+         <jndi-ref id="entity2JndiRef1-id">
+            <description>en-entity2JndiRef1-desc</description>
+            <description xml:lang="fr">fr-entity2JndiRef1-desc</description>
+            <description xml:lang="de">de-entity2JndiRef1-desc</description>
+            <jndi-ref-name>entity2JndiRef1Name</jndi-ref-name>
+            <mapped-name>entity2JndiRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity2JndiRef1Injection1Class</injection-target-class>
+               <injection-target-name>entity2JndiRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity2JndiRef1Injection2Class</injection-target-class>
+               <injection-target-name>entity2JndiRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </jndi-ref>
+         <jndi-ref id="entity2JndiRef2-id">
+            <description>en-entity2JndiRef2-desc</description>
+            <description xml:lang="fr">fr-entity2JndiRef2-desc</description>
+            <description xml:lang="de">de-entity2JndiRef2-desc</description>
+            <jndi-ref-name>entity2JndiRef2Name</jndi-ref-name>
+            <mapped-name>entity2JndiRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>entity2JndiRef2Injection1Class</injection-target-class>
+               <injection-target-name>entity2JndiRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>entity2JndiRef2Injection2Class</injection-target-class>
+               <injection-target-name>entity2JndiRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </jndi-ref>
+
+      </entity>
+
+      <message-driven>
+         <ejb-name>mdb0EjbName</ejb-name>
+      </message-driven>
+
+      <message-driven id="mdb1-id">
+         <description>en-mdb1-desc</description>
+         <description xml:lang="fr">fr-mdb1-desc</description>
+         <description xml:lang="de">de-mdb1-desc</description>
+         <display-name>en-mdb1-disp</display-name>
+         <display-name xml:lang="fr">fr-mdb1-disp</display-name>
+         <display-name xml:lang="de">de-mdb1-disp</display-name>
+         <icon id="en-mdb1-icon-id">
+            <small-icon>en-mdb1-small-icon</small-icon>
+            <large-icon>en-mdb1-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="fr" id="fr-mdb1-icon-id">
+            <small-icon>fr-mdb1-small-icon</small-icon>
+            <large-icon>fr-mdb1-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="de" id="de-mdb1-icon-id">
+            <small-icon>de-mdb1-small-icon</small-icon>
+            <large-icon>de-mdb1-large-icon</large-icon>
+         </icon>
+
+         <ejb-name>mdb1EjbName</ejb-name>
+
+         <destination-jndi-name>mdb1DestinationJndiName</destination-jndi-name>
+         <local-jndi-name>mdb1LocalJndiName</local-jndi-name>
+         <mdb-user>mdb1User</mdb-user>
+         <mdb-passwd>mdb1Password</mdb-passwd>
+         <mdb-client-id>mdb1ClientId</mdb-client-id>
+         <mdb-subscription-id>mdb1SubscriptionId</mdb-subscription-id>
+         <resource-adapter-name>mdb1RAR</resource-adapter-name>
+         <exception-on-rollback>true</exception-on-rollback>
+         <timer-persistence>true</timer-persistence>
+         <configuration-name>mdb1ConfigurationName</configuration-name>
+         
+         <invoker-bindings id="mdb1InvokerBindings-id">
+            <description>en-mdb1InvokerBindings-desc</description>
+            <description xml:lang="fr">fr-mdb1InvokerBindings-desc</description>
+            <description xml:lang="de">de-mdb1InvokerBindings-desc</description>
+
+            <invoker id="mdb1Invoker1-id">
+               <description>en-mdb1Invoker1-desc</description>
+               <description xml:lang="fr">fr-mdb1Invoker1-desc</description>
+               <description xml:lang="de">de-mdb1Invoker1-desc</description>
+               
+               <invoker-proxy-binding-name>mdb1Invoker1Name</invoker-proxy-binding-name>
+               <jndi-name>mdb1Invoker1JndiName</jndi-name>
+               <!-- TODO ejb-ref -->
+            </invoker>
+            <invoker id="mdb1Invoker2-id">
+               <description>en-mdb1Invoker2-desc</description>
+               <description xml:lang="fr">fr-mdb1Invoker2-desc</description>
+               <description xml:lang="de">de-mdb1Invoker2-desc</description>
+               
+               <invoker-proxy-binding-name>mdb1Invoker2Name</invoker-proxy-binding-name>
+               <jndi-name>mdb1Invoker2JndiName</jndi-name>
+               <!-- TODO ejb-ref -->
+            </invoker>
+         </invoker-bindings>
+         
+         <security-proxy>mdb1SecurityProxy</security-proxy>
+         
+         <ejb-ref id="mdb1EjbRef1-id">
+            <description>en-mdb1EjbRef1-desc</description>
+            <description xml:lang="fr">fr-mdb1EjbRef1-desc</description>
+            <description xml:lang="de">de-mdb1EjbRef1-desc</description>
+
+            <ejb-ref-name>mdb1EjbRef1Name</ejb-ref-name>
+            <injection-target>
+               <injection-target-class>mdb1EjbRef1Injection1Class</injection-target-class>
+               <injection-target-name>mdb1EjbRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb1EjbRef1Injection2Class</injection-target-class>
+               <injection-target-name>mdb1EjbRef1Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>mdb1EjbRef1JndiName</jndi-name>
+            <ignore-dependency/>
+         </ejb-ref>
+         <ejb-ref id="mdb1EjbRef2-id">
+            <description>en-mdb1EjbRef2-desc</description>
+            <description xml:lang="fr">fr-mdb1EjbRef2-desc</description>
+            <description xml:lang="de">de-mdb1EjbRef2-desc</description>
+
+            <ejb-ref-name>mdb1EjbRef2Name</ejb-ref-name>
+            <injection-target>
+               <injection-target-class>mdb1EjbRef2Injection1Class</injection-target-class>
+               <injection-target-name>mdb1EjbRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb1EjbRef2Injection2Class</injection-target-class>
+               <injection-target-name>mdb1EjbRef2Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>mdb1EjbRef2JndiName</jndi-name>
+         </ejb-ref>
+
+         <ejb-local-ref id="mdb1EjbLocalRef1-id">
+            <description>en-mdb1EjbLocalRef1-desc</description>
+            <description xml:lang="fr">fr-mdb1EjbLocalRef1-desc</description>
+            <description xml:lang="de">de-mdb1EjbLocalRef1-desc</description>
+
+            <ejb-ref-name>mdb1EjbLocalRef1Name</ejb-ref-name>
+            <injection-target>
+               <injection-target-class>mdb1EjbLocalRef1Injection1Class</injection-target-class>
+               <injection-target-name>mdb1EjbLocalRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb1EjbLocalRef1Injection2Class</injection-target-class>
+               <injection-target-name>mdb1EjbLocalRef1Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>mdb1EjbLocalRef1JndiName</jndi-name>
+            <ignore-dependency/>
+         </ejb-local-ref>
+         <ejb-local-ref id="mdb1EjbLocalRef2-id">
+            <description>en-mdb1EjbLocalRef2-desc</description>
+            <description xml:lang="fr">fr-mdb1EjbLocalRef2-desc</description>
+            <description xml:lang="de">de-mdb1EjbLocalRef2-desc</description>
+
+            <ejb-ref-name>mdb1EjbLocalRef2Name</ejb-ref-name>
+            <injection-target>
+               <injection-target-class>mdb1EjbLocalRef2Injection1Class</injection-target-class>
+               <injection-target-name>mdb1EjbLocalRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb1EjbLocalRef2Injection2Class</injection-target-class>
+               <injection-target-name>mdb1EjbLocalRef2Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>mdb1EjbLocalRef2JndiName</jndi-name>
+         </ejb-local-ref>
+
+         <!-- TODO service-ref -->
+
+         <security-identity id="mdb1SecurityIdentity-id">
+            <description>en-mdb1SecurityIdentity-desc</description>
+            <description xml:lang="fr">fr-mdb1SecurityIdentity-desc</description>
+            <description xml:lang="de">de-mdb1SecurityIdentity-desc</description>
+            <run-as-principal>mdb1SecurityIdentityRunAsPrincipal</run-as-principal>
+         </security-identity>
+
+         <resource-ref id="mdb1ResourceRef1-id">
+            <description>en-mdb1ResourceRef1-desc</description>
+            <description xml:lang="fr">fr-mdb1ResourceRef1-desc</description>
+            <description xml:lang="de">de-mdb1ResourceRef1-desc</description>
+            <res-ref-name>mdb1ResourceRef1Name</res-ref-name>
+            <injection-target>
+               <injection-target-class>mdb1ResourceRef1Injection1Class</injection-target-class>
+               <injection-target-name>mdb1ResourceRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb1ResourceRef1Injection2Class</injection-target-class>
+               <injection-target-name>mdb1ResourceRef1Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>mdb1ResourceRef1JndiName</jndi-name>
+            <ignore-dependency/>
+         </resource-ref>
+         <resource-ref id="mdb1ResourceRef2-id">
+            <description>en-mdb1ResourceRef2-desc</description>
+            <description xml:lang="fr">fr-mdb1ResourceRef2-desc</description>
+            <description xml:lang="de">de-mdb1ResourceRef2-desc</description>
+            <res-ref-name>mdb1ResourceRef2Name</res-ref-name>
+            <injection-target>
+               <injection-target-class>mdb1ResourceRef2Injection1Class</injection-target-class>
+               <injection-target-name>mdb1ResourceRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb1ResourceRef2Injection2Class</injection-target-class>
+               <injection-target-name>mdb1ResourceRef2Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>mdb1ResourceRef2JndiName</jndi-name>
+         </resource-ref>
+         <resource-env-ref id="mdb1ResourceEnvRef1-id">
+            <description>en-mdb1ResourceEnvRef1-desc</description>
+            <description xml:lang="fr">fr-mdb1ResourceEnvRef1-desc</description>
+            <description xml:lang="de">de-mdb1ResourceEnvRef1-desc</description>
+            <resource-env-ref-name>mdb1ResourceEnvRef1Name</resource-env-ref-name>
+            <injection-target>
+               <injection-target-class>mdb1ResourceEnvRef1Injection1Class</injection-target-class>
+               <injection-target-name>mdb1ResourceEnvRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb1ResourceEnvRef1Injection2Class</injection-target-class>
+               <injection-target-name>mdb1ResourceEnvRef1Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>mdb1ResourceEnvRef1JndiName</jndi-name>
+            <ignore-dependency/>
+         </resource-env-ref>
+         <resource-env-ref id="mdb1ResourceEnvRef2-id">
+            <description>en-mdb1ResourceEnvRef2-desc</description>
+            <description xml:lang="fr">fr-mdb1ResourceEnvRef2-desc</description>
+            <description xml:lang="de">de-mdb1ResourceEnvRef2-desc</description>
+            <resource-env-ref-name>mdb1ResourceEnvRef2Name</resource-env-ref-name>
+            <injection-target>
+               <injection-target-class>mdb1ResourceEnvRef2Injection1Class</injection-target-class>
+               <injection-target-name>mdb1ResourceEnvRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb1ResourceEnvRef2Injection2Class</injection-target-class>
+               <injection-target-name>mdb1ResourceEnvRef2Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>mdb1ResourceEnvRef2JndiName</jndi-name>
+         </resource-env-ref>
+         <message-destination-ref id="mdb1MessageDestinationRef1-id">
+            <description>en-mdb1MessageDestinationRef1-desc</description>
+            <description xml:lang="fr">fr-mdb1MessageDestinationRef1-desc</description>
+            <description xml:lang="de">de-mdb1MessageDestinationRef1-desc</description>
+            <message-destination-ref-name>mdb1MessageDestinationRef1Name</message-destination-ref-name>
+            <injection-target>
+               <injection-target-class>mdb1MessageDestinationRef1Injection1Class</injection-target-class>
+               <injection-target-name>mdb1MessageDestinationRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb1MessageDestinationRef1Injection2Class</injection-target-class>
+               <injection-target-name>mdb1MessageDestinationRef1Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>mdb1MessageDestinationRef1JndiName</jndi-name>
+            <ignore-dependency/>
+         </message-destination-ref>
+         <message-destination-ref id="mdb1MessageDestinationRef2-id">
+            <description>en-mdb1MessageDestinationRef2-desc</description>
+            <description xml:lang="fr">fr-mdb1MessageDestinationRef2-desc</description>
+            <description xml:lang="de">de-mdb1MessageDestinationRef2-desc</description>
+            <message-destination-ref-name>mdb1MessageDestinationRef2Name</message-destination-ref-name>
+            <injection-target>
+               <injection-target-class>mdb1MessageDestinationRef2Injection1Class</injection-target-class>
+               <injection-target-name>mdb1MessageDestinationRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb1MessageDestinationRef2Injection2Class</injection-target-class>
+               <injection-target-name>mdb1MessageDestinationRef2Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>mdb1MessageDestinationRef2JndiName</jndi-name>
+         </message-destination-ref>
+         <message-destination-ref id="mdb1MessageDestinationRef3-id">
+            <description>en-mdb1MessageDestinationRef3-desc</description>
+            <description xml:lang="fr">fr-mdb1MessageDestinationRef3-desc</description>
+            <description xml:lang="de">de-mdb1MessageDestinationRef3-desc</description>
+            <message-destination-ref-name>mdb1MessageDestinationRef3Name</message-destination-ref-name>
+            <injection-target>
+               <injection-target-class>mdb1MessageDestinationRef3Injection1Class</injection-target-class>
+               <injection-target-name>mdb1MessageDestinationRef3Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb1MessageDestinationRef3Injection2Class</injection-target-class>
+               <injection-target-name>mdb1MessageDestinationRef3Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>mdb1MessageDestinationRef3JndiName</jndi-name>
+         </message-destination-ref>
+         
+         <method-attributes id="mdb1MethodAttributes-id">
+            <method id="mdb1MethodAttributesMethod1-id">
+               <method-name>get*</method-name>
+               <read-only>true</read-only>
+               <idempotent>true</idempotent>
+               <transaction-timeout>5000</transaction-timeout>
+            </method>
+            <method id="mdb1MethodAttributesMethod2-id">
+               <method-name>*</method-name>
+            </method>
+         </method-attributes>
+         
+         <depends>mdb1Depends1</depends>
+         <depends>mdb1Depends2</depends>
+         
+         <ior-security-config id="mdb1IorSecurityConfig-id">
+            <description>en-mdb1IorSecurityConfig-desc</description>
+            <description xml:lang="fr">fr-mdb1IorSecurityConfig-desc</description>
+            <description xml:lang="de">de-mdb1IorSecurityConfig-desc</description>
+            <transport-config id="mdb1TransportConfig-id">
+               <description>en-mdb1TransportConfig-desc</description>
+               <description xml:lang="fr">fr-mdb1TransportConfig-desc</description>
+               <description xml:lang="de">de-mdb1TransportConfig-desc</description>
+               <integrity>NONE</integrity>
+               <confidentiality>NONE</confidentiality>
+               <establish-trust-in-target>NONE</establish-trust-in-target>
+               <establish-trust-in-client>NONE</establish-trust-in-client>
+               <detect-misordering>NONE</detect-misordering>
+               <detect-replay>NONE</detect-replay>
+            </transport-config>
+            <as-context id="mdb1ASContext-id">
+               <description>en-mdb1ASContext-desc</description>
+               <description xml:lang="fr">fr-mdb1ASContext-desc</description>
+               <description xml:lang="de">de-mdb1ASContext-desc</description>
+               <auth-method>USERNAME_PASSWORD</auth-method>
+               <realm>mdb1ASContextRealm</realm>
+               <required>false</required>
+            </as-context>
+            <sas-context id="mdb1SASContext-id">
+               <description>en-mdb1SASContext-desc</description>
+               <description xml:lang="fr">fr-mdb1SASContext-desc</description>
+               <description xml:lang="de">de-mdb1SASContext-desc</description>
+               <caller-propagation>NONE</caller-propagation>
+            </sas-context>
+         </ior-security-config>
+         
+         <ejb-timeout-identity id="mdb1EjbTimeoutIdentity-id">
+            <description>en-mdb1EjbTimeoutIdentity-desc</description>
+            <description xml:lang="fr">fr-mdb1EjbTimeoutIdentity-desc</description>
+            <description xml:lang="de">de-mdb1EjbTimeoutIdentity-desc</description>
+            <run-as-principal>mdb1EjbTimeoutIdentityRunAsPrincipal</run-as-principal>
+         </ejb-timeout-identity>
+         
+         <annotation id="mdb1Annotation1-id">
+            <description>en-mdb1Annotation1-desc</description>
+            <description xml:lang="fr">fr-mdb1Annotation1-desc</description>
+            <description xml:lang="de">de-mdb1Annotation1-desc</description>
+            
+            <annotation-class>mdb1Annotation1Class</annotation-class>
+            <annotation-implementation-class>mdb1Annotation1Impl</annotation-implementation-class>
+            <injection-target>
+               <injection-target-class>mdb1Annotation1InjectionTargetClass</injection-target-class>
+               <injection-target-name>mdb1Annotation1InjectionTargetName</injection-target-name>
+            </injection-target>
+            <property id="mdb1Annotation1Property1-id">
+               <description>en-mdb1Annotation1Property1-desc</description>
+               <description xml:lang="fr">fr-mdb1Annotation1Property1-desc</description>
+               <description xml:lang="de">de-mdb1Annotation1Property1-desc</description>
+               <property-name>mdb1Annotation1Property1Name</property-name>
+               <property-value>mdb1Annotation1Property1Value</property-value>
+            </property>
+            <property id="mdb1Annotation1Property2-id">
+               <description>en-mdb1Annotation1Property2-desc</description>
+               <description xml:lang="fr">fr-mdb1Annotation1Property2-desc</description>
+               <description xml:lang="de">de-mdb1Annotation1Property2-desc</description>
+               <property-name>mdb1Annotation1Property2Name</property-name>
+               <property-value>mdb1Annotation1Property2Value</property-value>
+            </property>
+         </annotation>
+         <annotation id="mdb1Annotation2-id">
+            <description>en-mdb1Annotation2-desc</description>
+            <description xml:lang="fr">fr-mdb1Annotation2-desc</description>
+            <description xml:lang="de">de-mdb1Annotation2-desc</description>
+            
+            <annotation-class>mdb1Annotation2Class</annotation-class>
+            <annotation-implementation-class>mdb1Annotation2Impl</annotation-implementation-class>
+            <injection-target>
+               <injection-target-class>mdb1Annotation2InjectionTargetClass</injection-target-class>
+               <injection-target-name>mdb1Annotation2InjectionTargetName</injection-target-name>
+            </injection-target>
+            <property id="mdb1Annotation2Property1-id">
+               <description>en-mdb1Annotation2Property1-desc</description>
+               <description xml:lang="fr">fr-mdb1Annotation2Property1-desc</description>
+               <description xml:lang="de">de-mdb1Annotation2Property1-desc</description>
+               <property-name>mdb1Annotation2Property1Name</property-name>
+               <property-value>mdb1Annotation2Property1Value</property-value>
+            </property>
+            <property id="mdb1Annotation2Property2-id">
+               <description>en-mdb1Annotation2Property2-desc</description>
+               <description xml:lang="fr">fr-mdb1Annotation2Property2-desc</description>
+               <description xml:lang="de">de-mdb1Annotation2Property2-desc</description>
+               <property-name>mdb1Annotation2Property2Name</property-name>
+               <property-value>mdb1Annotation2Property2Value</property-value>
+            </property>
+         </annotation>
+
+         <ignore-dependency id="mdb1IgnoreDependency-id">
+            <description>en-mdb1IgnoreDependency-desc</description>
+            <description xml:lang="fr">fr-mdb1IgnoreDependency-desc</description>
+            <description xml:lang="de">de-mdb1IgnoreDependency-desc</description>
+            <injection-target>
+               <injection-target-class>mdb1IgnoreDependencyInjection1Class</injection-target-class>
+               <injection-target-name>mdb1IgnoreDependencyInjection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb1IgnoreDependencyInjection2Class</injection-target-class>
+               <injection-target-name>mdb1IgnoreDependencyInjection2Name</injection-target-name>
+            </injection-target>
+         </ignore-dependency>
+
+         <aop-domain-name>mdb1AOPDomain</aop-domain-name>         
+         
+         <!-- TODO pool config -->
+
+         <jndi-ref id="mdb1JndiRef1-id">
+            <description>en-mdb1JndiRef1-desc</description>
+            <description xml:lang="fr">fr-mdb1JndiRef1-desc</description>
+            <description xml:lang="de">de-mdb1JndiRef1-desc</description>
+            <jndi-ref-name>mdb1JndiRef1Name</jndi-ref-name>
+            <mapped-name>mdb1JndiRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb1JndiRef1Injection1Class</injection-target-class>
+               <injection-target-name>mdb1JndiRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb1JndiRef1Injection2Class</injection-target-class>
+               <injection-target-name>mdb1JndiRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </jndi-ref>
+         <jndi-ref id="mdb1JndiRef2-id">
+            <description>en-mdb1JndiRef2-desc</description>
+            <description xml:lang="fr">fr-mdb1JndiRef2-desc</description>
+            <description xml:lang="de">de-mdb1JndiRef2-desc</description>
+            <jndi-ref-name>mdb1JndiRef2Name</jndi-ref-name>
+            <mapped-name>mdb1JndiRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb1JndiRef2Injection1Class</injection-target-class>
+               <injection-target-name>mdb1JndiRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb1JndiRef2Injection2Class</injection-target-class>
+               <injection-target-name>mdb1JndiRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </jndi-ref>
+         
+         <default-activation-config id="mdb1DefaultActivationConfig-id">
+            <activation-config-property id="mdb1DefaultActivationConfigProperty1-id">
+               <activation-config-property-name>mdb1DefaultActivationConfigProperty1Name</activation-config-property-name>
+               <activation-config-property-value>mdb1DefaultActivationConfigProperty1Value</activation-config-property-value>
+            </activation-config-property>
+            <activation-config-property id="mdb1DefaultActivationConfigProperty2-id">
+               <activation-config-property-name>mdb1DefaultActivationConfigProperty2Name</activation-config-property-name>
+               <activation-config-property-value>mdb1DefaultActivationConfigProperty2Value</activation-config-property-value>
+            </activation-config-property>
+         </default-activation-config>
+
+      </message-driven>
+
+      <message-driven id="mdb2-id">
+         <description>en-mdb2-desc</description>
+         <description xml:lang="fr">fr-mdb2-desc</description>
+         <description xml:lang="de">de-mdb2-desc</description>
+         <display-name>en-mdb2-disp</display-name>
+         <display-name xml:lang="fr">fr-mdb2-disp</display-name>
+         <display-name xml:lang="de">de-mdb2-disp</display-name>
+         <icon id="en-mdb2-icon-id">
+            <small-icon>en-mdb2-small-icon</small-icon>
+            <large-icon>en-mdb2-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="fr" id="fr-mdb2-icon-id">
+            <small-icon>fr-mdb2-small-icon</small-icon>
+            <large-icon>fr-mdb2-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="de" id="de-mdb2-icon-id">
+            <small-icon>de-mdb2-small-icon</small-icon>
+            <large-icon>de-mdb2-large-icon</large-icon>
+         </icon>
+
+         <ejb-name>mdb2EjbName</ejb-name>
+
+         <destination-jndi-name>mdb2DestinationJndiName</destination-jndi-name>
+         <local-jndi-name>mdb2LocalJndiName</local-jndi-name>
+         <mdb-user>mdb2User</mdb-user>
+         <mdb-passwd>mdb2Password</mdb-passwd>
+         <mdb-client-id>mdb2ClientId</mdb-client-id>
+         <mdb-subscription-id>mdb2SubscriptionId</mdb-subscription-id>
+         <resource-adapter-name>mdb2RAR</resource-adapter-name>
+         <exception-on-rollback>false</exception-on-rollback>
+         <timer-persistence>false</timer-persistence>
+         <configuration-name>mdb2ConfigurationName</configuration-name>
+         
+         <invoker-bindings id="mdb2InvokerBindings-id">
+            <description>en-mdb2InvokerBindings-desc</description>
+            <description xml:lang="fr">fr-mdb2InvokerBindings-desc</description>
+            <description xml:lang="de">de-mdb2InvokerBindings-desc</description>
+
+            <invoker id="mdb2Invoker1-id">
+               <description>en-mdb2Invoker1-desc</description>
+               <description xml:lang="fr">fr-mdb2Invoker1-desc</description>
+               <description xml:lang="de">de-mdb2Invoker1-desc</description>
+               
+               <invoker-proxy-binding-name>mdb2Invoker1Name</invoker-proxy-binding-name>
+               <jndi-name>mdb2Invoker1JndiName</jndi-name>
+               <!-- TODO ejb-ref -->
+            </invoker>
+            <invoker id="mdb2Invoker2-id">
+               <description>en-mdb2Invoker2-desc</description>
+               <description xml:lang="fr">fr-mdb2Invoker2-desc</description>
+               <description xml:lang="de">de-mdb2Invoker2-desc</description>
+               
+               <invoker-proxy-binding-name>mdb2Invoker2Name</invoker-proxy-binding-name>
+               <jndi-name>mdb2Invoker2JndiName</jndi-name>
+               <!-- TODO ejb-ref -->
+            </invoker>
+         </invoker-bindings>
+         
+         <security-proxy>mdb2SecurityProxy</security-proxy>
+         
+         <ejb-ref id="mdb2EjbRef1-id">
+            <description>en-mdb2EjbRef1-desc</description>
+            <description xml:lang="fr">fr-mdb2EjbRef1-desc</description>
+            <description xml:lang="de">de-mdb2EjbRef1-desc</description>
+
+            <ejb-ref-name>mdb2EjbRef1Name</ejb-ref-name>
+            <injection-target>
+               <injection-target-class>mdb2EjbRef1Injection1Class</injection-target-class>
+               <injection-target-name>mdb2EjbRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb2EjbRef1Injection2Class</injection-target-class>
+               <injection-target-name>mdb2EjbRef1Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>mdb2EjbRef1JndiName</jndi-name>
+            <ignore-dependency/>
+         </ejb-ref>
+         <ejb-ref id="mdb2EjbRef2-id">
+            <description>en-mdb2EjbRef2-desc</description>
+            <description xml:lang="fr">fr-mdb2EjbRef2-desc</description>
+            <description xml:lang="de">de-mdb2EjbRef2-desc</description>
+
+            <ejb-ref-name>mdb2EjbRef2Name</ejb-ref-name>
+            <injection-target>
+               <injection-target-class>mdb2EjbRef2Injection1Class</injection-target-class>
+               <injection-target-name>mdb2EjbRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb2EjbRef2Injection2Class</injection-target-class>
+               <injection-target-name>mdb2EjbRef2Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>mdb2EjbRef2JndiName</jndi-name>
+         </ejb-ref>
+
+         <ejb-local-ref id="mdb2EjbLocalRef1-id">
+            <description>en-mdb2EjbLocalRef1-desc</description>
+            <description xml:lang="fr">fr-mdb2EjbLocalRef1-desc</description>
+            <description xml:lang="de">de-mdb2EjbLocalRef1-desc</description>
+
+            <ejb-ref-name>mdb2EjbLocalRef1Name</ejb-ref-name>
+            <injection-target>
+               <injection-target-class>mdb2EjbLocalRef1Injection1Class</injection-target-class>
+               <injection-target-name>mdb2EjbLocalRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb2EjbLocalRef1Injection2Class</injection-target-class>
+               <injection-target-name>mdb2EjbLocalRef1Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>mdb2EjbLocalRef1JndiName</jndi-name>
+            <ignore-dependency/>
+         </ejb-local-ref>
+         <ejb-local-ref id="mdb2EjbLocalRef2-id">
+            <description>en-mdb2EjbLocalRef2-desc</description>
+            <description xml:lang="fr">fr-mdb2EjbLocalRef2-desc</description>
+            <description xml:lang="de">de-mdb2EjbLocalRef2-desc</description>
+
+            <ejb-ref-name>mdb2EjbLocalRef2Name</ejb-ref-name>
+            <injection-target>
+               <injection-target-class>mdb2EjbLocalRef2Injection1Class</injection-target-class>
+               <injection-target-name>mdb2EjbLocalRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb2EjbLocalRef2Injection2Class</injection-target-class>
+               <injection-target-name>mdb2EjbLocalRef2Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>mdb2EjbLocalRef2JndiName</jndi-name>
+         </ejb-local-ref>
+
+         <!-- TODO service-ref -->
+
+         <security-identity id="mdb2SecurityIdentity-id">
+            <description>en-mdb2SecurityIdentity-desc</description>
+            <description xml:lang="fr">fr-mdb2SecurityIdentity-desc</description>
+            <description xml:lang="de">de-mdb2SecurityIdentity-desc</description>
+            <run-as-principal>mdb2SecurityIdentityRunAsPrincipal</run-as-principal>
+         </security-identity>
+
+         <resource-ref id="mdb2ResourceRef1-id">
+            <description>en-mdb2ResourceRef1-desc</description>
+            <description xml:lang="fr">fr-mdb2ResourceRef1-desc</description>
+            <description xml:lang="de">de-mdb2ResourceRef1-desc</description>
+            <res-ref-name>mdb2ResourceRef1Name</res-ref-name>
+            <injection-target>
+               <injection-target-class>mdb2ResourceRef1Injection1Class</injection-target-class>
+               <injection-target-name>mdb2ResourceRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb2ResourceRef1Injection2Class</injection-target-class>
+               <injection-target-name>mdb2ResourceRef1Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>mdb2ResourceRef1JndiName</jndi-name>
+            <ignore-dependency/>
+         </resource-ref>
+         <resource-ref id="mdb2ResourceRef2-id">
+            <description>en-mdb2ResourceRef2-desc</description>
+            <description xml:lang="fr">fr-mdb2ResourceRef2-desc</description>
+            <description xml:lang="de">de-mdb2ResourceRef2-desc</description>
+            <res-ref-name>mdb2ResourceRef2Name</res-ref-name>
+            <injection-target>
+               <injection-target-class>mdb2ResourceRef2Injection1Class</injection-target-class>
+               <injection-target-name>mdb2ResourceRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb2ResourceRef2Injection2Class</injection-target-class>
+               <injection-target-name>mdb2ResourceRef2Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>mdb2ResourceRef2JndiName</jndi-name>
+         </resource-ref>
+         <resource-env-ref id="mdb2ResourceEnvRef1-id">
+            <description>en-mdb2ResourceEnvRef1-desc</description>
+            <description xml:lang="fr">fr-mdb2ResourceEnvRef1-desc</description>
+            <description xml:lang="de">de-mdb2ResourceEnvRef1-desc</description>
+            <resource-env-ref-name>mdb2ResourceEnvRef1Name</resource-env-ref-name>
+            <injection-target>
+               <injection-target-class>mdb2ResourceEnvRef1Injection1Class</injection-target-class>
+               <injection-target-name>mdb2ResourceEnvRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb2ResourceEnvRef1Injection2Class</injection-target-class>
+               <injection-target-name>mdb2ResourceEnvRef1Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>mdb2ResourceEnvRef1JndiName</jndi-name>
+            <ignore-dependency/>
+         </resource-env-ref>
+         <resource-env-ref id="mdb2ResourceEnvRef2-id">
+            <description>en-mdb2ResourceEnvRef2-desc</description>
+            <description xml:lang="fr">fr-mdb2ResourceEnvRef2-desc</description>
+            <description xml:lang="de">de-mdb2ResourceEnvRef2-desc</description>
+            <resource-env-ref-name>mdb2ResourceEnvRef2Name</resource-env-ref-name>
+            <injection-target>
+               <injection-target-class>mdb2ResourceEnvRef2Injection1Class</injection-target-class>
+               <injection-target-name>mdb2ResourceEnvRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb2ResourceEnvRef2Injection2Class</injection-target-class>
+               <injection-target-name>mdb2ResourceEnvRef2Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>mdb2ResourceEnvRef2JndiName</jndi-name>
+         </resource-env-ref>
+         <message-destination-ref id="mdb2MessageDestinationRef1-id">
+            <description>en-mdb2MessageDestinationRef1-desc</description>
+            <description xml:lang="fr">fr-mdb2MessageDestinationRef1-desc</description>
+            <description xml:lang="de">de-mdb2MessageDestinationRef1-desc</description>
+            <message-destination-ref-name>mdb2MessageDestinationRef1Name</message-destination-ref-name>
+            <injection-target>
+               <injection-target-class>mdb2MessageDestinationRef1Injection1Class</injection-target-class>
+               <injection-target-name>mdb2MessageDestinationRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb2MessageDestinationRef1Injection2Class</injection-target-class>
+               <injection-target-name>mdb2MessageDestinationRef1Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>mdb2MessageDestinationRef1JndiName</jndi-name>
+            <ignore-dependency/>
+         </message-destination-ref>
+         <message-destination-ref id="mdb2MessageDestinationRef2-id">
+            <description>en-mdb2MessageDestinationRef2-desc</description>
+            <description xml:lang="fr">fr-mdb2MessageDestinationRef2-desc</description>
+            <description xml:lang="de">de-mdb2MessageDestinationRef2-desc</description>
+            <message-destination-ref-name>mdb2MessageDestinationRef2Name</message-destination-ref-name>
+            <injection-target>
+               <injection-target-class>mdb2MessageDestinationRef2Injection1Class</injection-target-class>
+               <injection-target-name>mdb2MessageDestinationRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb2MessageDestinationRef2Injection2Class</injection-target-class>
+               <injection-target-name>mdb2MessageDestinationRef2Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>mdb2MessageDestinationRef2JndiName</jndi-name>
+         </message-destination-ref>
+         <message-destination-ref id="mdb2MessageDestinationRef3-id">
+            <description>en-mdb2MessageDestinationRef3-desc</description>
+            <description xml:lang="fr">fr-mdb2MessageDestinationRef3-desc</description>
+            <description xml:lang="de">de-mdb2MessageDestinationRef3-desc</description>
+            <message-destination-ref-name>mdb2MessageDestinationRef3Name</message-destination-ref-name>
+            <injection-target>
+               <injection-target-class>mdb2MessageDestinationRef3Injection1Class</injection-target-class>
+               <injection-target-name>mdb2MessageDestinationRef3Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb2MessageDestinationRef3Injection2Class</injection-target-class>
+               <injection-target-name>mdb2MessageDestinationRef3Injection2Name</injection-target-name>
+            </injection-target>
+            <jndi-name>mdb2MessageDestinationRef3JndiName</jndi-name>
+         </message-destination-ref>
+
+         <method-attributes id="mdb2MethodAttributes-id">
+            <method id="mdb2MethodAttributesMethod1-id">
+               <method-name>get*</method-name>
+               <read-only>true</read-only>
+               <idempotent>true</idempotent>
+               <transaction-timeout>5000</transaction-timeout>
+            </method>
+            <method id="mdb2MethodAttributesMethod2-id">
+               <method-name>*</method-name>
+            </method>
+         </method-attributes>
+         
+         <depends>mdb2Depends1</depends>
+         <depends>mdb2Depends2</depends>
+         
+         <ior-security-config id="mdb2IorSecurityConfig-id">
+            <description>en-mdb2IorSecurityConfig-desc</description>
+            <description xml:lang="fr">fr-mdb2IorSecurityConfig-desc</description>
+            <description xml:lang="de">de-mdb2IorSecurityConfig-desc</description>
+            <transport-config id="mdb2TransportConfig-id">
+               <description>en-mdb2TransportConfig-desc</description>
+               <description xml:lang="fr">fr-mdb2TransportConfig-desc</description>
+               <description xml:lang="de">de-mdb2TransportConfig-desc</description>
+               <integrity>NONE</integrity>
+               <confidentiality>NONE</confidentiality>
+               <establish-trust-in-target>NONE</establish-trust-in-target>
+               <establish-trust-in-client>NONE</establish-trust-in-client>
+               <detect-misordering>NONE</detect-misordering>
+               <detect-replay>NONE</detect-replay>
+            </transport-config>
+            <as-context id="mdb2ASContext-id">
+               <description>en-mdb2ASContext-desc</description>
+               <description xml:lang="fr">fr-mdb2ASContext-desc</description>
+               <description xml:lang="de">de-mdb2ASContext-desc</description>
+               <auth-method>USERNAME_PASSWORD</auth-method>
+               <realm>mdb2ASContextRealm</realm>
+               <required>false</required>
+            </as-context>
+            <sas-context id="mdb2SASContext-id">
+               <description>en-mdb2SASContext-desc</description>
+               <description xml:lang="fr">fr-mdb2SASContext-desc</description>
+               <description xml:lang="de">de-mdb2SASContext-desc</description>
+               <caller-propagation>NONE</caller-propagation>
+            </sas-context>
+         </ior-security-config>
+         
+         <ejb-timeout-identity id="mdb2EjbTimeoutIdentity-id">
+            <description>en-mdb2EjbTimeoutIdentity-desc</description>
+            <description xml:lang="fr">fr-mdb2EjbTimeoutIdentity-desc</description>
+            <description xml:lang="de">de-mdb2EjbTimeoutIdentity-desc</description>
+            <run-as-principal>mdb2EjbTimeoutIdentityRunAsPrincipal</run-as-principal>
+         </ejb-timeout-identity>
+         
+         <annotation id="mdb2Annotation1-id">
+            <description>en-mdb2Annotation1-desc</description>
+            <description xml:lang="fr">fr-mdb2Annotation1-desc</description>
+            <description xml:lang="de">de-mdb2Annotation1-desc</description>
+            
+            <annotation-class>mdb2Annotation1Class</annotation-class>
+            <annotation-implementation-class>mdb2Annotation1Impl</annotation-implementation-class>
+            <injection-target>
+               <injection-target-class>mdb2Annotation1InjectionTargetClass</injection-target-class>
+               <injection-target-name>mdb2Annotation1InjectionTargetName</injection-target-name>
+            </injection-target>
+            <property id="mdb2Annotation1Property1-id">
+               <description>en-mdb2Annotation1Property1-desc</description>
+               <description xml:lang="fr">fr-mdb2Annotation1Property1-desc</description>
+               <description xml:lang="de">de-mdb2Annotation1Property1-desc</description>
+               <property-name>mdb2Annotation1Property1Name</property-name>
+               <property-value>mdb2Annotation1Property1Value</property-value>
+            </property>
+            <property id="mdb2Annotation1Property2-id">
+               <description>en-mdb2Annotation1Property2-desc</description>
+               <description xml:lang="fr">fr-mdb2Annotation1Property2-desc</description>
+               <description xml:lang="de">de-mdb2Annotation1Property2-desc</description>
+               <property-name>mdb2Annotation1Property2Name</property-name>
+               <property-value>mdb2Annotation1Property2Value</property-value>
+            </property>
+         </annotation>
+         <annotation id="mdb2Annotation2-id">
+            <description>en-mdb2Annotation2-desc</description>
+            <description xml:lang="fr">fr-mdb2Annotation2-desc</description>
+            <description xml:lang="de">de-mdb2Annotation2-desc</description>
+            
+            <annotation-class>mdb2Annotation2Class</annotation-class>
+            <annotation-implementation-class>mdb2Annotation2Impl</annotation-implementation-class>
+            <injection-target>
+               <injection-target-class>mdb2Annotation2InjectionTargetClass</injection-target-class>
+               <injection-target-name>mdb2Annotation2InjectionTargetName</injection-target-name>
+            </injection-target>
+            <property id="mdb2Annotation2Property1-id">
+               <description>en-mdb2Annotation2Property1-desc</description>
+               <description xml:lang="fr">fr-mdb2Annotation2Property1-desc</description>
+               <description xml:lang="de">de-mdb2Annotation2Property1-desc</description>
+               <property-name>mdb2Annotation2Property1Name</property-name>
+               <property-value>mdb2Annotation2Property1Value</property-value>
+            </property>
+            <property id="mdb2Annotation2Property2-id">
+               <description>en-mdb2Annotation2Property2-desc</description>
+               <description xml:lang="fr">fr-mdb2Annotation2Property2-desc</description>
+               <description xml:lang="de">de-mdb2Annotation2Property2-desc</description>
+               <property-name>mdb2Annotation2Property2Name</property-name>
+               <property-value>mdb2Annotation2Property2Value</property-value>
+            </property>
+         </annotation>
+
+         <ignore-dependency id="mdb2IgnoreDependency-id">
+            <description>en-mdb2IgnoreDependency-desc</description>
+            <description xml:lang="fr">fr-mdb2IgnoreDependency-desc</description>
+            <description xml:lang="de">de-mdb2IgnoreDependency-desc</description>
+            <injection-target>
+               <injection-target-class>mdb2IgnoreDependencyInjection1Class</injection-target-class>
+               <injection-target-name>mdb2IgnoreDependencyInjection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb2IgnoreDependencyInjection2Class</injection-target-class>
+               <injection-target-name>mdb2IgnoreDependencyInjection2Name</injection-target-name>
+            </injection-target>
+         </ignore-dependency>
+
+         <aop-domain-name>mdb2AOPDomain</aop-domain-name>         
+         
+         <!-- TODO pool config -->
+
+         <jndi-ref id="mdb2JndiRef1-id">
+            <description>en-mdb2JndiRef1-desc</description>
+            <description xml:lang="fr">fr-mdb2JndiRef1-desc</description>
+            <description xml:lang="de">de-mdb2JndiRef1-desc</description>
+            <jndi-ref-name>mdb2JndiRef1Name</jndi-ref-name>
+            <mapped-name>mdb2JndiRef1MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb2JndiRef1Injection1Class</injection-target-class>
+               <injection-target-name>mdb2JndiRef1Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb2JndiRef1Injection2Class</injection-target-class>
+               <injection-target-name>mdb2JndiRef1Injection2Name</injection-target-name>
+            </injection-target>
+         </jndi-ref>
+         <jndi-ref id="mdb2JndiRef2-id">
+            <description>en-mdb2JndiRef2-desc</description>
+            <description xml:lang="fr">fr-mdb2JndiRef2-desc</description>
+            <description xml:lang="de">de-mdb2JndiRef2-desc</description>
+            <jndi-ref-name>mdb2JndiRef2Name</jndi-ref-name>
+            <mapped-name>mdb2JndiRef2MappedName</mapped-name>
+            <injection-target>
+               <injection-target-class>mdb2JndiRef2Injection1Class</injection-target-class>
+               <injection-target-name>mdb2JndiRef2Injection1Name</injection-target-name>
+            </injection-target>
+            <injection-target>
+               <injection-target-class>mdb2JndiRef2Injection2Class</injection-target-class>
+               <injection-target-name>mdb2JndiRef2Injection2Name</injection-target-name>
+            </injection-target>
+         </jndi-ref>
+         
+         <default-activation-config id="mdb2DefaultActivationConfig-id">
+            <activation-config-property id="mdb2DefaultActivationConfigProperty1-id">
+               <activation-config-property-name>mdb2DefaultActivationConfigProperty1Name</activation-config-property-name>
+               <activation-config-property-value>mdb2DefaultActivationConfigProperty1Value</activation-config-property-value>
+            </activation-config-property>
+            <activation-config-property id="mdb2DefaultActivationConfigProperty2-id">
+               <activation-config-property-name>mdb2DefaultActivationConfigProperty2Name</activation-config-property-name>
+               <activation-config-property-value>mdb2DefaultActivationConfigProperty2Value</activation-config-property-value>
+            </activation-config-property>
+         </default-activation-config>
+
+      </message-driven>
+
+   </enterprise-beans>
+
+   <assembly-descriptor id="assembly-descriptor-id">
+
+      <security-role id="securityRole1-id">
+         <description>en-securityRole1-desc</description>
+         <description xml:lang="fr">fr-securityRole1-desc</description>
+         <description xml:lang="de">de-securityRole1-desc</description>
+         <role-name>securityRole1RoleName</role-name>
+         <principal>securityRole1Principal1</principal>
+         <principal>securityRole1Principal2</principal>
+      </security-role>
+      <security-role id="securityRole2-id">
+         <description>en-securityRole2-desc</description>
+         <description xml:lang="fr">fr-securityRole2-desc</description>
+         <description xml:lang="de">de-securityRole2-desc</description>
+         <role-name>securityRole2RoleName</role-name>
+         <principal>securityRole2Principal1</principal>
+         <principal>securityRole2Principal2</principal>
+      </security-role>
+
+      <message-destination id="messageDestination1-id">
+         <description>en-messageDestination1-desc</description>
+         <description xml:lang="fr">fr-messageDestination1-desc</description>
+         <description xml:lang="de">de-messageDestination1-desc</description>
+         <display-name>en-messageDestination1-disp</display-name>
+         <display-name xml:lang="fr">fr-messageDestination1-disp</display-name>
+         <display-name xml:lang="de">de-messageDestination1-disp</display-name>
+         <icon id="en-messageDestination1-icon-id">
+            <small-icon>en-messageDestination1-small-icon</small-icon>
+            <large-icon>en-messageDestination1-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="fr" id="fr-messageDestination1-icon-id">
+            <small-icon>fr-messageDestination1-small-icon</small-icon>
+            <large-icon>fr-messageDestination1-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="de" id="de-messageDestination1-icon-id">
+            <small-icon>de-messageDestination1-small-icon</small-icon>
+            <large-icon>de-messageDestination1-large-icon</large-icon>
+         </icon>
+         <message-destination-name>messageDestination1Name</message-destination-name>
+         <jndi-name>messageDestination1JndiName</jndi-name>
+      </message-destination>
+      <message-destination id="messageDestination2-id">
+         <description>en-messageDestination2-desc</description>
+         <description xml:lang="fr">fr-messageDestination2-desc</description>
+         <description xml:lang="de">de-messageDestination2-desc</description>
+         <display-name>en-messageDestination2-disp</display-name>
+         <display-name xml:lang="fr">fr-messageDestination2-disp</display-name>
+         <display-name xml:lang="de">de-messageDestination2-disp</display-name>
+         <icon id="en-messageDestination2-icon-id">
+            <small-icon>en-messageDestination2-small-icon</small-icon>
+            <large-icon>en-messageDestination2-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="fr" id="fr-messageDestination2-icon-id">
+            <small-icon>fr-messageDestination2-small-icon</small-icon>
+            <large-icon>fr-messageDestination2-large-icon</large-icon>
+         </icon>
+         <icon xml:lang="de" id="de-messageDestination2-icon-id">
+            <small-icon>de-messageDestination2-small-icon</small-icon>
+            <large-icon>de-messageDestination2-large-icon</large-icon>
+         </icon>
+         <message-destination-name>messageDestination2Name</message-destination-name>
+         <jndi-name>messageDestination2JndiName</jndi-name>
+      </message-destination>
+
+   </assembly-descriptor>
+
+   <resource-managers id="resource-managers-id">
+      <description>en-resource-managers-desc</description>
+      <description xml:lang="fr">fr-resource-managers-desc</description>
+      <description xml:lang="de">de-resource-managers-desc</description>
+      <resource-manager id="resourceManager1-id" res-class="resourceManager1Class">
+         <description>en-resourceManager1-desc</description>
+         <description xml:lang="fr">fr-resourceManager1-desc</description>
+         <description xml:lang="de">de-resourceManager1-desc</description>
+         <res-name>resourceManager1Name</res-name>
+         <res-jndi-name>resourceManager1JndiName</res-jndi-name>
+      </resource-manager>
+      <resource-manager id="resourceManager2-id" res-class="resourceManager2Class">
+         <description>en-resourceManager2-desc</description>
+         <description xml:lang="fr">fr-resourceManager2-desc</description>
+         <description xml:lang="de">de-resourceManager2-desc</description>
+         <res-name>resourceManager2Name</res-name>
+         <res-url>resourceManager2URL</res-url>
+      </resource-manager>
+   </resource-managers>
+   
+   <invoker-proxy-bindings id="invoker-proxy-bindings-id">
+      <description>en-invoker-proxy-bindings-desc</description>
+      <description xml:lang="fr">fr-invoker-proxy-bindings-desc</description>
+      <description xml:lang="de">de-invoker-proxy-bindings-desc</description>
+      <invoker-proxy-binding id="invokerProxyBinding1-id">
+         <description>en-invokerProxyBinding1-desc</description>
+         <description xml:lang="fr">fr-invokerProxyBinding1-desc</description>
+         <description xml:lang="de">de-invokerProxyBinding1-desc</description>
+         <invoker-proxy-binding-name>invokerProxyBinding1Name</invoker-proxy-binding-name>
+         <invoker-mbean>invokerProxyBinding1InvokerMBean</invoker-mbean>
+         <proxy-factory>invokerProxyBinding1ProxyFactory</proxy-factory>
+      </invoker-proxy-binding>
+      <invoker-proxy-binding id="invokerProxyBinding2-id">
+         <description>en-invokerProxyBinding2-desc</description>
+         <description xml:lang="fr">fr-invokerProxyBinding2-desc</description>
+         <description xml:lang="de">de-invokerProxyBinding2-desc</description>
+         <invoker-proxy-binding-name>invokerProxyBinding2Name</invoker-proxy-binding-name>
+         <invoker-mbean>invokerProxyBinding2InvokerMBean</invoker-mbean>
+         <proxy-factory>invokerProxyBinding2ProxyFactory</proxy-factory>
+      </invoker-proxy-binding>
+   </invoker-proxy-bindings>
+   
+   <container-configurations id="container-configurations-id">
+      <description>en-container-configurations-desc</description>
+      <description xml:lang="fr">fr-container-configurations-desc</description>
+      <description xml:lang="de">de-container-configurations-desc</description>
+      <container-configuration>
+         <container-name>containerConfiguration0Name</container-name>
+      </container-configuration>
+      <container-configuration id="containerConfiguration1-id" extends="containerConfiguration1Extends">
+         <description>en-containerConfiguration1-desc</description>
+         <description xml:lang="fr">fr-containerConfiguration1-desc</description>
+         <description xml:lang="de">de-containerConfiguration1-desc</description>
+         <container-name>containerConfiguration1Name</container-name>
+         <call-logging>true</call-logging>
+         <invoker-proxy-binding-name>containerConfiguration1InvokerProxyBindingName1</invoker-proxy-binding-name>
+         <invoker-proxy-binding-name>containerConfiguration1InvokerProxyBindingName2</invoker-proxy-binding-name>
+         <sync-on-commit-only>true</sync-on-commit-only>
+         <insert-after-ejb-post-create>true</insert-after-ejb-post-create>
+         <ejb-store-on-clean>true</ejb-store-on-clean>
+         <store-not-flushed>true</store-not-flushed>
+         <!-- TODO container-interceptors -->
+         <instance-pool>containerConfiguration1InstancePool</instance-pool>
+         <instance-cache>containerConfiguration1InstanceCache</instance-cache>
+         <persistence-manager>containerConfiguration1PersistenceManager</persistence-manager>
+         <web-class-loader>containerConfiguration1WebClassLoader</web-class-loader>
+         <locking-policy>containerConfiguration1LockingPolicy</locking-policy>
+         <!-- TODO container cache conf -->
+         <!-- TODO container pool conf -->
+         <commit-option>D</commit-option>
+         <optiond-refresh-rate>10</optiond-refresh-rate>
+         <security-domain>containerConfiguration1SecurityDomain</security-domain>
+         <cluster-config id="containerConfiguration1ClusterConfig-id">
+            <description>en-containerConfiguration1ClusterConfig-desc</description>
+            <description xml:lang="fr">fr-containerConfiguration1ClusterConfig-desc</description>
+            <description xml:lang="de">de-containerConfiguration1ClusterConfig-desc</description>
+            <partition-name>containerConfiguration1ClusterConfigPartitionName</partition-name>
+            <home-load-balancing-policy>containerConfiguration1ClusterConfigHomeLoadBalancingPolicy</home-load-balancing-policy>
+            <bean-load-balancing-policy>containerConfiguration1ClusterConfigBeanLoadBalancingPolicy</bean-load-balancing-policy>
+            <session-state-manager-jndi-name>containerConfiguration1ClusterConfigSessionStateManagerJndiName</session-state-manager-jndi-name>
+         </cluster-config>
+         <depends>containerConfiguration1Depends1</depends>
+         <depends>containerConfiguration1Depends2</depends>
+      </container-configuration>
+      <container-configuration id="containerConfiguration2-id" extends="containerConfiguration2Extends">
+         <description>en-containerConfiguration2-desc</description>
+         <description xml:lang="fr">fr-containerConfiguration2-desc</description>
+         <description xml:lang="de">de-containerConfiguration2-desc</description>
+         <container-name>containerConfiguration2Name</container-name>
+         <call-logging>false</call-logging>
+         <invoker-proxy-binding-name>containerConfiguration2InvokerProxyBindingName1</invoker-proxy-binding-name>
+         <invoker-proxy-binding-name>containerConfiguration2InvokerProxyBindingName2</invoker-proxy-binding-name>
+         <sync-on-commit-only>false</sync-on-commit-only>
+         <insert-after-ejb-post-create>false</insert-after-ejb-post-create>
+         <ejb-store-on-clean>false</ejb-store-on-clean>
+         <store-not-flushed>false</store-not-flushed>
+         <!-- TODO container-interceptors -->
+         <instance-pool>containerConfiguration2InstancePool</instance-pool>
+         <instance-cache>containerConfiguration2InstanceCache</instance-cache>
+         <persistence-manager>containerConfiguration2PersistenceManager</persistence-manager>
+         <web-class-loader>containerConfiguration2WebClassLoader</web-class-loader>
+         <locking-policy>containerConfiguration2LockingPolicy</locking-policy>
+         <!-- TODO container cache conf -->
+         <!-- TODO container pool conf -->
+         <commit-option>D</commit-option>
+         <optiond-refresh-rate>10</optiond-refresh-rate>
+         <security-domain>containerConfiguration2SecurityDomain</security-domain>
+         <cluster-config id="containerConfiguration2ClusterConfig-id">
+            <description>en-containerConfiguration2ClusterConfig-desc</description>
+            <description xml:lang="fr">fr-containerConfiguration2ClusterConfig-desc</description>
+            <description xml:lang="de">de-containerConfiguration2ClusterConfig-desc</description>
+            <partition-name>containerConfiguration2ClusterConfigPartitionName</partition-name>
+            <home-load-balancing-policy>containerConfiguration2ClusterConfigHomeLoadBalancingPolicy</home-load-balancing-policy>
+            <bean-load-balancing-policy>containerConfiguration2ClusterConfigBeanLoadBalancingPolicy</bean-load-balancing-policy>
+            <session-state-manager-jndi-name>containerConfiguration2ClusterConfigSessionStateManagerJndiName</session-state-manager-jndi-name>
+         </cluster-config>
+         <depends>containerConfiguration2Depends1</depends>
+         <depends>containerConfiguration2Depends2</depends>
+      </container-configuration>
+      <container-configuration>
+         <container-name>containerConfiguration3Name</container-name>
+         <commit-option>B</commit-option>
+      </container-configuration>
+      <container-configuration>
+         <container-name>containerConfiguration4Name</container-name>
+         <commit-option>C</commit-option>
+      </container-configuration>
+   </container-configurations>
+      
+</jboss>
\ No newline at end of file




More information about the jboss-svn-commits mailing list