[jboss-cvs] JBossAS SVN: r77599 - in projects/metadata/trunk/src: main/java/org/jboss/metadata/ejb/spec and 8 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Aug 28 10:13:03 EDT 2008


Author: emuckenhuber
Date: 2008-08-28 10:13:03 -0400 (Thu, 28 Aug 2008)
New Revision: 77599

Added:
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/jbmeta98/
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/jbmeta98/OverrideRemoveMethodUnitTestCase.java
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/jbmeta98/RemoveBean.java
   projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/jbmeta98/
   projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/jbmeta98/ejb-jar.xml
   projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/jbmeta98/jboss.xml
Modified:
   projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossSessionBeanMetaData.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/spec/RemoveMethodMetaData.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/spec/RemoveMethodsMetaData.java
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/AnnotationEjb3UnitTestCase.java
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/JBossAnnotationEjb3UnitTestCase.java
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/runas/TargetBean.java
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/JBossSessionBeanOverrideUnitTestCase.java
   projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/ejb3/AnnotationEjb3_testXmlMerge.xml
Log:
[JBMETA-98] - merge removeMethod

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossSessionBeanMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossSessionBeanMetaData.java	2008-08-28 13:54:35 UTC (rev 77598)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossSessionBeanMetaData.java	2008-08-28 14:13:03 UTC (rev 77599)
@@ -895,11 +895,6 @@
          initMethods = joverride.getInitMethods();
       else if(soriginal != null && soriginal.getInitMethods() != null)
          initMethods = soriginal.getInitMethods();
-      // removeMethods
-      if(joverride != null && joverride.getRemoveMethods() != null)
-         removeMethods = joverride.getRemoveMethods();
-      else if(soriginal != null && soriginal.getRemoveMethods() != null)
-         removeMethods = soriginal.getRemoveMethods();
       // aroundInvokes
       if(joverride != null && joverride.getAroundInvokes() != null)
          aroundInvokes = joverride.getAroundInvokes();
@@ -921,6 +916,17 @@
       else if(soriginal != null && soriginal.getSecurityRoleRefs() != null)
          securityRoleRefs = soriginal.getSecurityRoleRefs();
 
+      // removeMethods
+      RemoveMethodsMetaData originalMethods = null;
+      RemoveMethodsMetaData overrideMethods = null;
+      if(joverride != null && joverride.getRemoveMethods() != null)
+         overrideMethods = joverride.getRemoveMethods();
+      if(soriginal != null && soriginal.getRemoveMethods() != null)
+         originalMethods = soriginal.getRemoveMethods();
+      
+      this.removeMethods = new RemoveMethodsMetaData();
+      removeMethods.merge(overrideMethods, originalMethods);
+      
       if(joverride != null)
       {
          // jndiName
@@ -1024,11 +1030,6 @@
          initMethods = joverride.getInitMethods();
       else if(soriginal != null && soriginal.getInitMethods() != null)
          initMethods = soriginal.getInitMethods();
-      // removeMethods
-      if(joverride != null && joverride.getRemoveMethods() != null)
-         removeMethods = joverride.getRemoveMethods();
-      else if(soriginal != null && soriginal.getRemoveMethods() != null)
-         removeMethods = soriginal.getRemoveMethods();
       // postActivates
       if(joverride != null && joverride.getPostActivates() != null)
          postActivates = joverride.getPostActivates();
@@ -1070,6 +1071,18 @@
       else if(soriginal != null && soriginal.isConcurrent() != null)
          concurrent = soriginal.isConcurrent();
       
+      
+      // removeMethods
+      RemoveMethodsMetaData originalMethods = null;
+      RemoveMethodsMetaData overrideMethods = null;
+      if(joverride != null && joverride.getRemoveMethods() != null)
+         overrideMethods = joverride.getRemoveMethods();
+      if(soriginal != null && soriginal.getRemoveMethods() != null)
+         originalMethods = soriginal.getRemoveMethods();
+      
+      this.removeMethods = new RemoveMethodsMetaData();
+      removeMethods.merge(overrideMethods, originalMethods);
+      
       // CallByValue
       if(joverride != null)
          callByValue = joverride.isCallByValue();

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/spec/RemoveMethodMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/spec/RemoveMethodMetaData.java	2008-08-28 13:54:35 UTC (rev 77598)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/spec/RemoveMethodMetaData.java	2008-08-28 14:13:03 UTC (rev 77599)
@@ -37,11 +37,14 @@
    /** The serialVersionUID */
    private static final long serialVersionUID = 1830841714074832930L;
    
+   /** The ratainIfExeption default value */
+   private static final boolean retainIfExceptionDefault = false;
+   
    /** The bean method */
    private NamedMethodMetaData beanMethod;
    
    /** Retain if exception */
-   private boolean retainIfException = false;
+   private Boolean retainIfException = null;
    
    /**
     * Create a new RemoveMethodMetaData.
@@ -81,7 +84,8 @@
     */
    public boolean isRetainIfException()
    {
-      return retainIfException;
+      if(retainIfException == null) return retainIfExceptionDefault;
+      return retainIfException.booleanValue();
    }
 
    /**
@@ -91,6 +95,32 @@
     */
    public void setRetainIfException(boolean retainIfException)
    {
-      this.retainIfException = retainIfException;
+      this.retainIfException = new Boolean(retainIfException);
    }
+   
+   public void mergeRetainifException(RemoveMethodMetaData override, RemoveMethodMetaData original)
+   {
+      // JBMETA-98 - merge retainIfException
+      if(original != null && override != null)
+      {
+         if(override.retainIfException == null)
+         {
+            this.retainIfException = original.retainIfException;
+         }
+         else
+         {
+            this.retainIfException = override.retainIfException;
+         }
+         return;
+      }
+      
+      if(original != null)
+      {
+         this.retainIfException = original.retainIfException;
+      }
+      if(override != null)
+      {
+         this.retainIfException = override.retainIfException;
+      }
+   }
 }

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/spec/RemoveMethodsMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/spec/RemoveMethodsMetaData.java	2008-08-28 13:54:35 UTC (rev 77598)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/spec/RemoveMethodsMetaData.java	2008-08-28 14:13:03 UTC (rev 77599)
@@ -22,6 +22,8 @@
 package org.jboss.metadata.ejb.spec;
 
 import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * RemoveMethodsMetaData.
@@ -41,4 +43,43 @@
    {
       // For serialization
    }
+   
+   public void merge(RemoveMethodsMetaData override, RemoveMethodsMetaData original)
+   {
+      Map<String, RemoveMethodMetaData> tmp = new HashMap<String, RemoveMethodMetaData>();
+      if(original != null)
+      {
+         for(RemoveMethodMetaData remove : original)
+            tmp.put(remove.getBeanMethod().getMethodName(), remove);
+      }
+      
+      if(override != null)
+      {
+         if(original != null)
+         {
+            for(RemoveMethodMetaData overrideMethod : override)
+            {
+               RemoveMethodMetaData merged = new RemoveMethodMetaData();
+               RemoveMethodMetaData originalMethod = tmp.get(overrideMethod.getBeanMethod().getMethodName());
+               if(overrideMethod.getId() != null)
+                  merged.setId(overrideMethod.getId());
+               else if(originalMethod != null && originalMethod.getId() != null)
+                  merged.setId(originalMethod.getId());
+               
+               merged.setBeanMethod(overrideMethod.getBeanMethod());
+               // JBMETA-98 - merge retainIfException
+               merged.mergeRetainifException(overrideMethod, originalMethod);
+               this.add(merged);
+            }
+         }
+         else
+         {
+            addAll(override);
+         }
+      }
+      else if(original != null)
+      {
+         addAll(original);
+      }
+   }
 }

Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/AnnotationEjb3UnitTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/AnnotationEjb3UnitTestCase.java	2008-08-28 13:54:35 UTC (rev 77598)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/AnnotationEjb3UnitTestCase.java	2008-08-28 14:13:03 UTC (rev 77599)
@@ -269,13 +269,14 @@
 
       assertNotNull("bean has no container transactions", bean.getContainerTransactions());
       Iterator<ContainerTransactionMetaData> it = bean.getContainerTransactions().iterator();
-      String[] params = {};
+      String[] params =
+      {};
       ContainerTransactionMetaData tx1 = it.next();
       assertEquals(TransactionAttributeType.NEVER, tx1.getTransAttribute());
       MethodsMetaData tx1Methods = tx1.getMethods();
       assertNotNull(tx1Methods);
       assertTrue(tx1Methods.matches("*", params, null));
-      
+
       ContainerTransactionMetaData tx2 = it.next();
       assertEquals(TransactionAttributeType.MANDATORY, tx2.getTransAttribute());
       MethodsMetaData tx2Methods = tx2.getMethods();
@@ -319,7 +320,7 @@
       AroundInvokeMetaData aroundInvoke = invokes.get(0);
       assertEquals(MyStatelessBean.class.getName(), aroundInvoke.getClassName());
       assertEquals("intercept", aroundInvoke.getMethodName());
-      
+
       // @Timeout
       NamedMethodMetaData timeoutMethod = bean.getTimeoutMethod();
       assertNotNull(timeoutMethod);
@@ -328,7 +329,7 @@
       assertEquals(1, parameters.size());
       assertEquals(Timer.class.getName(), parameters.get(0));
    }
-   
+
    private void assertMyMDB(IEnterpriseBeanMetaData enterpriseBean)
    {
       assertTrue(enterpriseBean instanceof MessageDrivenBeanMetaData);
@@ -372,26 +373,28 @@
       {
          throw new RuntimeException(e);
       }
-      String classFileNames[] = currentDir.list(new FilenameFilter() {
+      String classFileNames[] = currentDir.list(new FilenameFilter()
+      {
          public boolean accept(File dir, String name)
          {
             return name.endsWith(".class");
          }
       });
-      if(classFileNames == null)
+      if (classFileNames == null)
          throw new RuntimeException("list failed");
 
       Arrays.sort(classFileNames);
 
       String packageName;
-      if(dir.indexOf('/') != -1)
+      if (dir.indexOf('/') != -1)
          packageName = dir.replaceAll("\\/", "") + ".";
       else
          packageName = ".";
 
-      for(String classFileName : classFileNames)
+      for (String classFileName : classFileNames)
       {
-         String className = getClass().getPackage().getName() + packageName + classFileName.substring(0, classFileName.length() - 6);
+         String className = getClass().getPackage().getName() + packageName
+               + classFileName.substring(0, classFileName.length() - 6);
          try
          {
             classes.add(Class.forName(className));
@@ -409,7 +412,7 @@
       AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
 
       Collection<Class<?>> classes = loadClassesFromCurrentClassDir();
-      System.out.println("Processing classes: "+classes);
+      System.out.println("Processing classes: " + classes);
 
       //enableTrace("org.jboss.metadata.annotation.creator");
       EjbJar30Creator creator = new EjbJar30Creator(finder);
@@ -423,7 +426,7 @@
       assertNotNull("no assembly descriptor defined", metaData.getAssemblyDescriptor());
 
       // There is a bug in IdMetaDataImpl.hashCode which isn't unique when id is not set.
-      for(ContainerTransactionMetaData transaction : metaData.getAssemblyDescriptor().getContainerTransactions())
+      for (ContainerTransactionMetaData transaction : metaData.getAssemblyDescriptor().getContainerTransactions())
       {
          System.out.println(transaction);
       }
@@ -474,11 +477,11 @@
       assertEquals(2, perms.size());
       MethodPermissionMetaData permitAll = null;
       MethodPermissionMetaData rolesAllowed = null;
-      for(MethodPermissionMetaData mp : perms)
+      for (MethodPermissionMetaData mp : perms)
       {
-         if(mp.matches("permitAll", null, null))
+         if (mp.matches("permitAll", null, null))
             permitAll = mp;
-         if(mp.matches("rolesAllowed", null, null))
+         if (mp.matches("rolesAllowed", null, null))
             rolesAllowed = mp;
       }
       assertNotNull(permitAll);
@@ -497,40 +500,36 @@
       InterceptorBindingMetaData ib1 = interceptorBindings.get(1);
       assertEquals("MyStatelessBean", ib0.getEjbName());
       NamedMethodMetaData ib0Method = ib0.getMethod();
-      if(ib0Method == null)
+      if (ib0Method == null)
       {
          // The class level @Interceptors
          assertFalse(ib0.isExcludeClassInterceptors());
          assertTrue(ib0.isExcludeDefaultInterceptors());
-         assertEquals(TestClassInterceptor.class.getName(),
-               ib0.getInterceptorClasses().iterator().next());
+         assertEquals(TestClassInterceptor.class.getName(), ib0.getInterceptorClasses().iterator().next());
       }
       else
       {
          // The method level @Interceptors
          assertTrue(ib0.isExcludeClassInterceptors());
          assertTrue(ib0.isExcludeDefaultInterceptors());
-         assertEquals(TestMethodInterceptor.class.getName(),
-               ib0.getInterceptorClasses().iterator().next());
+         assertEquals(TestMethodInterceptor.class.getName(), ib0.getInterceptorClasses().iterator().next());
          assertEquals("intercept2", ib0Method.getMethodName());
       }
       assertEquals("MyStatelessBean", ib1.getEjbName());
       NamedMethodMetaData ib1Method = ib1.getMethod();
-      if(ib1Method == null)
+      if (ib1Method == null)
       {
          // The class level @Interceptors
          assertFalse(ib1.isExcludeClassInterceptors());
          assertTrue(ib1.isExcludeDefaultInterceptors());
-         assertEquals(TestClassInterceptor.class.getName(),
-               ib1.getInterceptorClasses().iterator().next());
+         assertEquals(TestClassInterceptor.class.getName(), ib1.getInterceptorClasses().iterator().next());
       }
       else
       {
          // The method level @Interceptors
          assertTrue(ib1.isExcludeClassInterceptors());
          assertTrue(ib1.isExcludeDefaultInterceptors());
-         assertEquals(TestMethodInterceptor.class.getName(),
-               ib1.getInterceptorClasses().iterator().next());
+         assertEquals(TestMethodInterceptor.class.getName(), ib1.getInterceptorClasses().iterator().next());
          assertEquals("intercept2", ib1Method.getMethodName());
       }
    }
@@ -539,12 +538,10 @@
     * Test merging annotation and xml based metadata
     * @throws Exception
     */
-   public void testXmlMerge()
-      throws Exception
+   public void testXmlMerge() throws Exception
    {
-      Class<?>[] beanClasses = {
-            InterMediateBean.class
-      };
+      Class<?>[] beanClasses =
+      {InterMediateBean.class};
       List<Class<?>> classes = Arrays.asList(beanClasses);
       AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
       EjbJar30Creator creator = new EjbJar30Creator(finder);
@@ -556,19 +553,18 @@
       EnterpriseBeanMetaData enterpriseBean = merged.getEnterpriseBean("InterMediateBean");
       assertNotNull(enterpriseBean);
       assertInterMediateBean(enterpriseBean);
+      SessionBeanMetaData sb = (SessionBeanMetaData) merged.getEnterpriseBean("TargetBean");
+      assertNotNull(sb);
    }
 
    /**
     *
     * @throws Exception
     */
-   public void testAnnotationMergedViewWithPartialXml()
-      throws Exception
+   public void testAnnotationMergedViewWithPartialXml() throws Exception
    {
-      Class<?>[] beanClasses = {
-            EjbLink2Bean.class,
-            EjbLink3Bean.class
-      };
+      Class<?>[] beanClasses =
+      {EjbLink2Bean.class, EjbLink3Bean.class};
       List<Class<?>> classes = Arrays.asList(beanClasses);
       AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
       EjbJar30Creator creator = new EjbJar30Creator(finder);
@@ -577,7 +573,8 @@
       EjbJar3xMetaData merged = new EjbJar30MetaData();
       AnnotationMergedView.merge(merged, specMetaData, metaData);
 
-      JBoss50MetaData jbossMetaData = unmarshal("AnnotationEjb3_testAnnotationMergedViewWithPartialXml-jboss.xml", JBoss50MetaData.class, null);
+      JBoss50MetaData jbossMetaData = unmarshal("AnnotationEjb3_testAnnotationMergedViewWithPartialXml-jboss.xml",
+            JBoss50MetaData.class, null);
       // Create a merged view
       JBossMetaData jbossMergedMetaData = new JBossMetaData();
       jbossMergedMetaData.merge(jbossMetaData, merged);
@@ -602,12 +599,10 @@
     * Test merging annotation based metadata without xml
     * @throws Exception
     */
-   public void testAnnotationMergedViewWithNoXml()
-      throws Exception
+   public void testAnnotationMergedViewWithNoXml() throws Exception
    {
-      Class<?>[] beanClasses = {
-            MyStatelessBean.class
-      };
+      Class<?>[] beanClasses =
+      {MyStatelessBean.class};
       List<Class<?>> classes = Arrays.asList(beanClasses);
       AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
       EjbJar30Creator creator = new EjbJar30Creator(finder);
@@ -631,7 +626,7 @@
       AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
 
       Collection<Class<?>> classes = PackageScanner.loadClasses();
-      System.out.println("Processing classes: "+classes);
+      System.out.println("Processing classes: " + classes);
 
       //enableTrace("org.jboss.metadata.annotation.creator");
       EjbJar30Creator creator = new EjbJar30Creator(finder);
@@ -659,12 +654,10 @@
     * Test merging annotation and xml based metadata
     * @throws Exception
     */
-   public void testPostConstruct()
-      throws Exception
+   public void testPostConstruct() throws Exception
    {
-      Class<?>[] beanClasses = {
-            MetaDataStatelessBean.class
-      };
+      Class<?>[] beanClasses =
+      {MetaDataStatelessBean.class};
       List<Class<?>> classes = Arrays.asList(beanClasses);
       AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
       EjbJar30Creator creator = new EjbJar30Creator(finder);
@@ -690,7 +683,8 @@
    public void testEjbJar3xEverything() throws Exception
    {
       EjbJar3xEverythingUnitTestCase ejbJar = new EjbJar3xEverythingUnitTestCase("ejb-jar");
-      EjbJar3xMetaData specMetaData = unmarshal("/org/jboss/test/metadata/ejb/EjbJar3xEverything_testEverything.xml", EjbJar30MetaData.class);
+      EjbJar3xMetaData specMetaData = unmarshal("/org/jboss/test/metadata/ejb/EjbJar3xEverything_testEverything.xml",
+            EjbJar30MetaData.class);
       //ejbJar.assertEverythingWithAppMetaData(specMetaData, Mode.SPEC);
 
       EjbJar3xMetaData metaData = new EjbJar30MetaData();
@@ -711,7 +705,7 @@
       AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
 
       Collection<Class<?>> classes = PackageScanner.loadClasses();
-      System.out.println("Processing classes: "+classes);
+      System.out.println("Processing classes: " + classes);
 
       EjbJar30Creator creator = new EjbJar30Creator(finder);
 
@@ -723,9 +717,11 @@
       EjbJar3xMetaData merged = new EjbJar30MetaData();
       AnnotationMergedView.merge(merged, specMetaData, metaData);
 
-      MessageDrivenBeanMetaData result = (MessageDrivenBeanMetaData) merged.getEnterpriseBean("UnknownMessageListenerInterfaceMDB");
+      MessageDrivenBeanMetaData result = (MessageDrivenBeanMetaData) merged
+            .getEnterpriseBean("UnknownMessageListenerInterfaceMDB");
       assertEquals("javax.jms.MessageListener", result.getMessagingType());
-      ActivationConfigPropertiesMetaData activationConfigProperties = result.getActivationConfig().getActivationConfigProperties();
+      ActivationConfigPropertiesMetaData activationConfigProperties = result.getActivationConfig()
+            .getActivationConfigProperties();
       assertEquals(3, activationConfigProperties.size());
       assertEquals("none", activationConfigProperties.get("dummy").getValue());
       assertEquals("Auto-acknowledge", activationConfigProperties.get("acknowledgeMode").getValue());
@@ -754,7 +750,7 @@
       AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
 
       Collection<Class<?>> classes = PackageScanner.loadClasses();
-      System.out.println("Processing classes: "+classes);
+      System.out.println("Processing classes: " + classes);
 
       EjbJar30Creator creator = new EjbJar30Creator(finder);
 
@@ -772,13 +768,12 @@
    }
 
    @ScanPackage("org.jboss.test.metadata.annotation.ejb3.jbmeta30")
-   public void testMergeGenericMDBMetaData()
-      throws Exception
+   public void testMergeGenericMDBMetaData() throws Exception
    {
       AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
 
       Collection<Class<?>> classes = PackageScanner.loadClasses();
-      System.out.println("Processing classes: "+classes);
+      System.out.println("Processing classes: " + classes);
 
       EjbJar30Creator creator = new EjbJar30Creator(finder);
 
@@ -787,19 +782,19 @@
       JBossMetaData mergedMetaData = new JBossMetaData();
       JBossMetaData metaData = unmarshal(JBossMetaData.class);
       mergedMetaData.merge(metaData, specMetaData);
-      
-      JBossMessageDrivenBeanMetaData mdb = (JBossMessageDrivenBeanMetaData) mergedMetaData.getEnterpriseBean("MessageDrivenBean");
+
+      JBossMessageDrivenBeanMetaData mdb = (JBossMessageDrivenBeanMetaData) mergedMetaData
+            .getEnterpriseBean("MessageDrivenBean");
       assertEquals("MDB_QUEUE", mdb.getDestinationJndiName());
    }
-   
+
    @ScanPackage("org.jboss.test.metadata.annotation.ejb3.jbas5124")
-   public void testMergeGenericMetaData()
-      throws Exception
+   public void testMergeGenericMetaData() throws Exception
    {
       AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
 
       Collection<Class<?>> classes = PackageScanner.loadClasses();
-      System.out.println("Processing classes: "+classes);
+      System.out.println("Processing classes: " + classes);
 
       EjbJar30Creator creator = new EjbJar30Creator(finder);
 
@@ -835,25 +830,25 @@
       assertNotNull(runAs);
       assertEquals("InternalUser", runAs.getRoleName());
    }
-   
+
    public void testEjbJar30CreatorAnnotationContext()
    {
       AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
       EjbJar30Creator creator = new EjbJar30Creator(finder);
-      
+
       assertNotNull(creator);
       assertNotNull(creator.getAnnotationContext());
-      
+
       Collection<Class<? extends Annotation>> expected = new HashSet<Class<? extends Annotation>>();
       expected.add(Stateless.class);
       expected.add(Stateful.class);
       expected.add(MessageDriven.class);
       expected.add(ApplicationException.class);
-      
+
       // Check Type annotations, others must be empty
       assertEquals(expected.size(), creator.getAnnotationContext().getTypeAnnotations().size());
       assertTrue(creator.getAnnotationContext().getTypeAnnotations().containsAll(expected));
-      
+
       assertTrue(creator.getAnnotationContext().getFieldAnnotations().isEmpty());
       assertTrue(creator.getAnnotationContext().getMethodAnnotations().isEmpty());
    }

Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/JBossAnnotationEjb3UnitTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/JBossAnnotationEjb3UnitTestCase.java	2008-08-28 13:54:35 UTC (rev 77598)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/JBossAnnotationEjb3UnitTestCase.java	2008-08-28 14:13:03 UTC (rev 77599)
@@ -111,6 +111,7 @@
 import org.jboss.test.metadata.annotation.ejb3.partialxml.EjbLink2Bean;
 import org.jboss.test.metadata.annotation.ejb3.partialxml.EjbLink3Bean;
 import org.jboss.test.metadata.annotation.ejb3.runas.InterMediateBean;
+import org.jboss.test.metadata.annotation.ejb3.runas.TargetBean;
 import org.jboss.test.metadata.common.PackageScanner;
 import org.jboss.test.metadata.common.ScanPackage;
 import org.jboss.test.metadata.common.SetHelper;
@@ -295,24 +296,32 @@
       throws Exception
    {
       Class<?>[] beanClasses = {
-            InterMediateBean.class
+            InterMediateBean.class,
+            TargetBean.class
       };
       List<Class<?>> classes = Arrays.asList(beanClasses);
       AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
       JBoss50Creator creator = new JBoss50Creator(finder);
       JBoss50MetaData annotations = creator.create(classes);
-      EjbJar3xMetaData specMetaData = unmarshal("AnnotationEjb3_testXmlMerge.xml", EjbJar3xMetaData.class, null);
-      JBoss50MetaData dd = new JBoss50MetaData();
-      dd.merge(null, specMetaData);
-      JBossEnterpriseBeanMetaData eb = dd.getEnterpriseBean("InterMediateBean");
+      EjbJar3xMetaData ejbJarMetaData = unmarshal("AnnotationEjb3_testXmlMerge.xml", EjbJar3xMetaData.class, null);
+      JBoss50MetaData specMetaData = new JBoss50MetaData();
+      specMetaData.merge(null, ejbJarMetaData);
+      JBossEnterpriseBeanMetaData eb = specMetaData.getEnterpriseBean("InterMediateBean");
       assertNotNull(eb);
 
-      JBoss50MetaData merged = new JBoss50MetaData();
-      merged.merge(dd, annotations);
+      JBoss50MetaData specMerged = new JBoss50MetaData();
+      specMerged.merge(specMetaData, annotations);
 
-      JBossEnterpriseBeanMetaData enterpriseBean = merged.getEnterpriseBean("InterMediateBean");
+      JBossEnterpriseBeanMetaData enterpriseBean = specMerged.getEnterpriseBean("InterMediateBean");
       assertNotNull(enterpriseBean);
       assertInterMediateBean(enterpriseBean);
+      JBossSessionBeanMetaData sb = (JBossSessionBeanMetaData) specMerged.getEnterpriseBean("TargetBean");
+      assertNotNull(sb);
+      RemoveMethodsMetaData removeMethods = sb.getRemoveMethods();
+      assertNotNull(removeMethods);
+      assertEquals(1, removeMethods.size());
+      RemoveMethodMetaData removeMethod = removeMethods.get(0);
+      assertTrue(removeMethod.isRetainIfException());
    }
 
    public void testAnnotationMergedViewWithPartialXml() throws Exception

Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/runas/TargetBean.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/runas/TargetBean.java	2008-08-28 13:54:35 UTC (rev 77598)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/runas/TargetBean.java	2008-08-28 14:13:03 UTC (rev 77599)
@@ -21,11 +21,22 @@
  */
 package org.jboss.test.metadata.annotation.ejb3.runas;
 
+import javax.ejb.Remove;
+import javax.ejb.Stateful;
+
 /**
  * @author Scott.Stark at jboss.org
  * @version $Revision$
  */
+ at Stateful
 public class TargetBean
 {
 
+   
+   @Remove(retainIfException=true)
+   public void remove()
+   {
+      
+   }
+   
 }

Added: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/jbmeta98/OverrideRemoveMethodUnitTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/jbmeta98/OverrideRemoveMethodUnitTestCase.java	                        (rev 0)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/jbmeta98/OverrideRemoveMethodUnitTestCase.java	2008-08-28 14:13:03 UTC (rev 77599)
@@ -0,0 +1,97 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.metadata.annotation.jbmeta98;
+
+import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
+
+import org.jboss.metadata.annotation.creator.ejb.jboss.JBoss50Creator;
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.annotation.finder.DefaultAnnotationFinder;
+import org.jboss.metadata.ejb.jboss.JBoss50MetaData;
+import org.jboss.metadata.ejb.jboss.JBossMetaData;
+import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
+import org.jboss.metadata.ejb.spec.EjbJar30MetaData;
+import org.jboss.metadata.ejb.spec.EjbJar3xMetaData;
+import org.jboss.metadata.ejb.spec.RemoveMethodMetaData;
+import org.jboss.test.metadata.common.PackageScanner;
+import org.jboss.test.metadata.common.ScanPackage;
+import org.jboss.test.metadata.javaee.AbstractJavaEEMetaDataTest;
+import org.jboss.xb.binding.sunday.unmarshalling.DefaultSchemaResolver;
+import org.jboss.xb.binding.sunday.unmarshalling.SchemaBindingResolver;
+
+/**
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+public class OverrideRemoveMethodUnitTestCase extends AbstractJavaEEMetaDataTest
+{
+   public static SchemaBindingResolver initResolver()
+   {
+      DefaultSchemaResolver resolver = new DefaultSchemaResolver();
+
+      resolver.addClassBindingForLocation("ejb-jar_3_0.xsd", EjbJar30MetaData.class);
+      resolver.addClassBindingForLocation("jboss_5_0.xsd", JBoss50MetaData.class);
+      // Workaround wildard resolution slowness
+      resolver.addClassBinding("http://www.jboss.com/xml/ns/javaee", JBoss50MetaData.class);
+      return resolver;
+   }
+
+   public OverrideRemoveMethodUnitTestCase(String name)
+   {
+      super(name);
+   }
+   
+   @ScanPackage("org.jboss.test.metadata.annotation.jbmeta98")
+   public void testMerge() throws Exception
+   {
+      Collection<Class<?>> classes = PackageScanner.loadClasses();
+      AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+      JBoss50Creator creator = new JBoss50Creator(finder);
+      JBoss50MetaData annotations = creator.create(classes);
+
+      EjbJar3xMetaData ejbJarMetaData = unmarshal("ejb-jar.xml", EjbJar3xMetaData.class, null);
+      JBossMetaData jbossMetaData = unmarshal("jboss.xml", JBoss50MetaData.class, null);
+      
+      JBoss50MetaData specMetaData = new JBoss50MetaData();
+      specMetaData.merge(null, ejbJarMetaData);
+
+      JBoss50MetaData specMerged = new JBoss50MetaData();
+      specMerged.merge(specMetaData, annotations);
+      
+      JBoss50MetaData mergedMetaData = new JBoss50MetaData();
+      mergedMetaData.merge(jbossMetaData, specMerged);
+      
+      JBossSessionBeanMetaData sb = (JBossSessionBeanMetaData) mergedMetaData.getEnterpriseBean("RemoveBean");
+      assertNotNull(sb.getRemoveMethods());
+      assertEquals(2, sb.getRemoveMethods().size());
+      RemoveMethodMetaData removeMethod = sb.getRemoveMethods().get(0);
+      assertNotNull(removeMethod);
+      assertTrue(removeMethod.isRetainIfException());
+      removeMethod = sb.getRemoveMethods().get(1);
+      assertFalse(removeMethod.isRetainIfException());
+   }
+
+
+   
+}
+

Added: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/jbmeta98/RemoveBean.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/jbmeta98/RemoveBean.java	                        (rev 0)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/jbmeta98/RemoveBean.java	2008-08-28 14:13:03 UTC (rev 77599)
@@ -0,0 +1,48 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.metadata.annotation.jbmeta98;
+
+import javax.ejb.Remove;
+import javax.ejb.Stateful;
+
+/**
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision$
+ */
+ at Stateful
+public class RemoveBean
+{
+   
+   @Remove
+   public void remove()
+   {
+      //
+   }
+
+   @Remove(retainIfException = true)
+   public void retain()
+   {
+      //
+   }
+   
+}
+

Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/JBossSessionBeanOverrideUnitTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/JBossSessionBeanOverrideUnitTestCase.java	2008-08-28 13:54:35 UTC (rev 77598)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/JBossSessionBeanOverrideUnitTestCase.java	2008-08-28 14:13:03 UTC (rev 77599)
@@ -1,492 +1,536 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2006, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.test.metadata.ejb;
-
-
-import org.jboss.metadata.ejb.jboss.CacheConfigMetaData;
-import org.jboss.metadata.ejb.jboss.ClusterConfigMetaData;
-import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
-import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
-import org.jboss.metadata.ejb.spec.AroundInvokeMetaData;
-import org.jboss.metadata.ejb.spec.AroundInvokesMetaData;
-import org.jboss.metadata.ejb.spec.BusinessLocalsMetaData;
-import org.jboss.metadata.ejb.spec.BusinessRemotesMetaData;
-import org.jboss.metadata.ejb.spec.InitMethodMetaData;
-import org.jboss.metadata.ejb.spec.InitMethodsMetaData;
-import org.jboss.metadata.ejb.spec.MethodParametersMetaData;
-import org.jboss.metadata.ejb.spec.NamedMethodMetaData;
-import org.jboss.metadata.ejb.spec.RemoveMethodMetaData;
-import org.jboss.metadata.ejb.spec.RemoveMethodsMetaData;
-import org.jboss.metadata.ejb.spec.SecurityIdentityMetaData;
-import org.jboss.metadata.javaee.spec.DescriptionsImpl;
-import org.jboss.metadata.javaee.spec.EmptyMetaData;
-import org.jboss.metadata.javaee.spec.PortComponent;
-import org.jboss.metadata.javaee.spec.RunAsMetaData;
-import org.jboss.metadata.javaee.spec.SecurityRoleRefMetaData;
-import org.jboss.metadata.javaee.spec.SecurityRoleRefsMetaData;
-
-
-/**
- * A JBossSessionBeanOverrideUnitTestCase.
- * 
- * @author <a href="alex at jboss.com">Alexey Loubyansky</a>
- * @version $Revision: 1.1 $
- */
-public class JBossSessionBeanOverrideUnitTestCase
-   extends AbstractJBossEnterpriseBeanOverrideTest
-{
-   public void testSimpleProperties() throws Exception
-   {
-      simplePropertiesTest(JBossSessionBeanMetaData.class, JBossEnterpriseBeanMetaData.class, null);
-   }
-   
-   public void testBusinessLocals()
-   {
-      // Override
-      BusinessLocalsMetaData overrideBusinessLocal = new BusinessLocalsMetaData();
-      overrideBusinessLocal.add("override1");
-      overrideBusinessLocal.add("override2");
-      overrideBusinessLocal.add("override3");
-      JBossSessionBeanMetaData override = new JBossSessionBeanMetaData();
-      override.setBusinessLocals(overrideBusinessLocal);
-      override.setName("overrideName");
-      
-      //Original
-      BusinessLocalsMetaData originalBusinessLocal = new BusinessLocalsMetaData();
-      originalBusinessLocal.add("original1");
-      originalBusinessLocal.add("original2");
-      originalBusinessLocal.add("original3");
-      JBossSessionBeanMetaData original = new JBossSessionBeanMetaData();
-      original.setBusinessLocals(originalBusinessLocal);
-      
-      // Merged 
-      JBossSessionBeanMetaData merged = new JBossSessionBeanMetaData();
-      merged.merge(override, original);
-      BusinessLocalsMetaData businessLocals = merged.getBusinessLocals();
-      assertNotNull(businessLocals);
-      assertEquals(3, businessLocals.size());
-      assertTrue(businessLocals.contains("override1"));
-      assertTrue(businessLocals.contains("override2"));
-      assertTrue(businessLocals.contains("override3"));
-   }
-   
-   public void testBusinessRemotes()
-   {
-      // Override
-      BusinessRemotesMetaData overrideBusinessRemotes = new BusinessRemotesMetaData();
-      overrideBusinessRemotes.add("override1");
-      overrideBusinessRemotes.add("override2");
-      overrideBusinessRemotes.add("override3");
-      JBossSessionBeanMetaData override = new JBossSessionBeanMetaData();
-      override.setBusinessRemotes(overrideBusinessRemotes);
-      override.setName("overrideName");
-      
-      // Original
-      BusinessRemotesMetaData originalBusinessRemotes = new BusinessRemotesMetaData();
-      originalBusinessRemotes.add("original1");
-      originalBusinessRemotes.add("original2");
-      originalBusinessRemotes.add("original3");
-      JBossSessionBeanMetaData original = new JBossSessionBeanMetaData();
-      original.setBusinessRemotes(originalBusinessRemotes);
-      
-      // Merged
-      JBossSessionBeanMetaData merged = new JBossSessionBeanMetaData();
-      merged.merge(override, original);
-      BusinessRemotesMetaData businessRemotes = merged.getBusinessRemotes();
-      assertNotNull(businessRemotes);
-      assertEquals(3, businessRemotes.size());
-      assertTrue(businessRemotes.contains("override1"));
-      assertTrue(businessRemotes.contains("override2"));
-      assertTrue(businessRemotes.contains("override3"));
-   }
-   
-   public void testTimeoutMethod()
-   {
-      // Override
-      JBossSessionBeanMetaData override = new JBossSessionBeanMetaData();
-      NamedMethodMetaData overrideTimeoutMethod = new NamedMethodMetaData();
-      overrideTimeoutMethod.setId("override");
-      overrideTimeoutMethod.setMethodName("override");
-      MethodParametersMetaData parameter2 = new MethodParametersMetaData();
-      parameter2.add("override");
-      parameter2.add("parameter");
-      overrideTimeoutMethod.setMethodParams(parameter2);
-      overrideTimeoutMethod.setName("override");
-      override.setTimeoutMethod(overrideTimeoutMethod);
-      override.setName("override");
-      
-      // Original
-      JBossSessionBeanMetaData original = new JBossSessionBeanMetaData();      
-      NamedMethodMetaData originalTimeoutMethod = new NamedMethodMetaData();
-      originalTimeoutMethod.setId("id");
-      originalTimeoutMethod.setMethodName("methodName");
-      MethodParametersMetaData parameter = new MethodParametersMetaData();
-      parameter.add("originalParameter");
-      originalTimeoutMethod.setMethodParams(parameter);
-      originalTimeoutMethod.setName("name");
-      original.setTimeoutMethod(originalTimeoutMethod);
-      
-      // Merged
-      JBossSessionBeanMetaData merged = new JBossSessionBeanMetaData();
-      merged.merge(override, original);
-      NamedMethodMetaData namedMethod = merged.getTimeoutMethod();
-      assertEquals("override", merged.getName());
-      assertNotNull(namedMethod);
-      assertEquals("method id", "override", namedMethod.getId());
-      assertEquals("method name", "override", namedMethod.getMethodName());
-      assertEquals("override", namedMethod.getName());
-      MethodParametersMetaData methodParameters = namedMethod.getMethodParams();
-      assertEquals("override", methodParameters.get(0));
-      assertEquals("parameter", methodParameters.get(1));
-   }
-   
-   public void testInitMethods()
-   {
-      // Override
-      InitMethodsMetaData overrideInitMethods = new InitMethodsMetaData();
-      InitMethodMetaData overrideInitMethod = new InitMethodMetaData();
-      NamedMethodMetaData overrideNamedMethod = new NamedMethodMetaData();
-      overrideNamedMethod.setMethodName("overrideMethodName");
-      overrideInitMethod.setId("overrideId");
-      overrideInitMethods.add(overrideInitMethod);
-      
-      JBossSessionBeanMetaData override = new JBossSessionBeanMetaData();
-      override.setInitMethods(overrideInitMethods);
-      override.setName("name");
-      
-      // Original
-      InitMethodsMetaData originalInitMethods = new InitMethodsMetaData();
-      InitMethodMetaData originalInitMethod = new InitMethodMetaData();
-      NamedMethodMetaData originalNamedMethod = new NamedMethodMetaData();
-      originalNamedMethod.setMethodName("originalMethodName");
-      originalInitMethod.setId("originalId");
-      originalInitMethods.add(originalInitMethod);
-      
-      JBossSessionBeanMetaData original = new JBossSessionBeanMetaData();
-      original.setInitMethods(originalInitMethods);
-      
-      // Merged
-      JBossSessionBeanMetaData merged = new JBossSessionBeanMetaData();
-      merged.merge(override, original);
-      InitMethodsMetaData initMethods = merged.getInitMethods();
-      assertNotNull(initMethods);
-      InitMethodMetaData initMethod = initMethods.get(0);
-      assertNotNull(initMethod);
-      assertEquals("overrideId", initMethod.getId());
-   }
-   
-   public void testRemoveMethods()
-   {
-      // Override
-      RemoveMethodsMetaData overrideRemoveMethods = new RemoveMethodsMetaData();
-      RemoveMethodMetaData overrideRemoveMethod = new RemoveMethodMetaData();
-      overrideRemoveMethod.setId("overrideId");
-      overrideRemoveMethod.setRetainIfException(true);
-      NamedMethodMetaData overrideNamedMethod = new NamedMethodMetaData();
-      overrideNamedMethod.setMethodName("overrideMethodName");
-      overrideRemoveMethod.setBeanMethod(overrideNamedMethod);
-      overrideRemoveMethods.add(overrideRemoveMethod);
-
-      JBossSessionBeanMetaData override = new JBossSessionBeanMetaData();
-      override.setRemoveMethods(overrideRemoveMethods);
-      override.setName("overrideName");
-
-      // Original
-      RemoveMethodsMetaData originalRemoveMethods = new RemoveMethodsMetaData();
-      RemoveMethodMetaData originalRemoveMethod = new RemoveMethodMetaData();
-      originalRemoveMethod.setId("originalId");
-      originalRemoveMethod.setRetainIfException(false);
-      NamedMethodMetaData originalNamedMethod = new NamedMethodMetaData();
-      originalNamedMethod.setId("originalId");
-      originalRemoveMethod.setBeanMethod(originalNamedMethod);
-      originalRemoveMethods.add(originalRemoveMethod);
-      
-      JBossSessionBeanMetaData original = new JBossSessionBeanMetaData();
-      original.setRemoveMethods(originalRemoveMethods);
-      
-      // Merged
-      JBossSessionBeanMetaData merged = new JBossSessionBeanMetaData();
-      merged.merge(override, original);
-      RemoveMethodsMetaData removeMethods = merged.getRemoveMethods();
-      assertNotNull(removeMethods);
-      RemoveMethodMetaData removeMethod = removeMethods.get(0);
-      assertNotNull(removeMethod);
-      assertEquals("overrideId", removeMethod.getId());
-      assertTrue(removeMethod.isRetainIfException());
-      NamedMethodMetaData namedMethod = removeMethod.getBeanMethod();
-      assertNotNull(namedMethod);
-      assertEquals("overrideMethodName", namedMethod.getMethodName());
-      
-   }
-   
-   public void testAroundInvokes()
-   {
-      // Override
-      AroundInvokesMetaData overrideInvokes = new AroundInvokesMetaData();
-      AroundInvokeMetaData overrideInvoke = new AroundInvokeMetaData();
-      overrideInvoke.setClassName("overrideClassName");
-      overrideInvoke.setMethodName("overrideMethodName");
-      overrideInvokes.add(overrideInvoke);
-      JBossSessionBeanMetaData override = new JBossSessionBeanMetaData();
-      override.setAroundInvokes(overrideInvokes);
-      override.setName("sbmd");
-      
-      // Original
-      AroundInvokesMetaData originalInvokes = new AroundInvokesMetaData();
-      AroundInvokeMetaData originalInvoke = new AroundInvokeMetaData();
-      originalInvoke.setClassName("originalClassName");
-      originalInvoke.setMethodName("originalMethodName");
-      originalInvokes.add(originalInvoke);
-      JBossSessionBeanMetaData original = new JBossSessionBeanMetaData();
-      original.setAroundInvokes(originalInvokes);
-      
-      // Merged
-      JBossSessionBeanMetaData merged = new JBossSessionBeanMetaData();
-      merged.merge(override, original);
-      AroundInvokesMetaData aroundInvokes = merged.getAroundInvokes();
-      assertNotNull(aroundInvokes);
-      assertEquals(2, aroundInvokes.size());
-      AroundInvokeMetaData aroundInvoke = aroundInvokes.get(0);
-      assertNotNull(aroundInvoke);
-      assertEquals("originalClassName", aroundInvoke.getClassName());
-      assertEquals("originalMethodName", aroundInvoke.getMethodName());
-      aroundInvoke = aroundInvokes.get(1);
-      assertNotNull(aroundInvoke);
-      assertEquals("overrideClassName", aroundInvoke.getClassName());
-      assertEquals("overrideMethodName", aroundInvoke.getMethodName());
-
-   }
-   
-   public void testSecurityRoleRefs()
-   {
-      // Override
-      SecurityRoleRefsMetaData overrideSecurity = new SecurityRoleRefsMetaData();
-      overrideSecurity.setId("override");
-      SecurityRoleRefMetaData overrideSecurityRoleRef = new SecurityRoleRefMetaData();
-      overrideSecurityRoleRef.setDescriptions(new DescriptionsImpl());
-      overrideSecurityRoleRef.setId("overrideId");
-      overrideSecurityRoleRef.setRoleLink("overrideLink");
-      overrideSecurityRoleRef.setRoleName("overrideRoleName");
-      overrideSecurity.add(overrideSecurityRoleRef);
-      JBossSessionBeanMetaData override = new JBossSessionBeanMetaData();
-      override.setSecurityRoleRefs(overrideSecurity);
-      
-      // Original
-      SecurityRoleRefMetaData originalSecurityRoleRef = new SecurityRoleRefMetaData();
-      originalSecurityRoleRef.setDescriptions(new DescriptionsImpl());
-      originalSecurityRoleRef.setId("originalId");
-      originalSecurityRoleRef.setName("originalName");
-      originalSecurityRoleRef.setRoleLink("originalLink");
-      originalSecurityRoleRef.setRoleName("originalRoleName");
-      SecurityRoleRefsMetaData originalSecurityRoleRefsMetaData = new SecurityRoleRefsMetaData();
-      originalSecurityRoleRefsMetaData.setId("originalId");
-      originalSecurityRoleRefsMetaData.add(originalSecurityRoleRef);
-      JBossSessionBeanMetaData original = new JBossSessionBeanMetaData();
-      original.setSecurityRoleRefs(originalSecurityRoleRefsMetaData);
-      original.setName("original");
-      
-      // Merged
-      JBossSessionBeanMetaData merged = new JBossSessionBeanMetaData();
-      merged.merge(override, original);
-      SecurityRoleRefsMetaData securityRoleRefs = merged.getSecurityRoleRefs();
-      assertNotNull(securityRoleRefs);
-      assertEquals(1, securityRoleRefs.size());
-      assertEquals("override", securityRoleRefs.getId());
-      SecurityRoleRefMetaData securityRoleRef = securityRoleRefs.get(overrideSecurityRoleRef.getKey());
-      assertNotNull(securityRoleRef);
-      assertEquals("overrideId", securityRoleRef.getId());
-      assertEquals("overrideLink", securityRoleRef.getRoleLink());
-      assertEquals("overrideRoleName", securityRoleRef.getRoleName());
-   }
-   
-   public void testClusterConfig()
-   {
-      // Override
-      ClusterConfigMetaData overrideClusterConfig = new ClusterConfigMetaData();
-      overrideClusterConfig.setBeanLoadBalancePolicy("overrideBeanLoadBalancePolicy");
-      overrideClusterConfig.setDescriptions(new DescriptionsImpl());
-      overrideClusterConfig.setHomeLoadBalancePolicy("overrideHomeLoadBalancePolicy");
-      overrideClusterConfig.setId("overrideId");
-      overrideClusterConfig.setPartitionName("overridePartitionName");
-      overrideClusterConfig.setSessionStateManagerJndiName("overrideSessionStateManagerJndiName");
-      
-      JBossSessionBeanMetaData override = new JBossSessionBeanMetaData();
-      override.setClusterConfig(overrideClusterConfig);
-      override.setName("override");
-      
-      // Original
-      ClusterConfigMetaData originalClusterConfig = new ClusterConfigMetaData();
-      originalClusterConfig.setBeanLoadBalancePolicy("originalBeanLoadBalancePolicy");
-      originalClusterConfig.setDescriptions(new DescriptionsImpl());
-      originalClusterConfig.setHomeLoadBalancePolicy("originalHomeLoadBalancePolicy");
-      originalClusterConfig.setId("originalId");
-      originalClusterConfig.setPartitionName("originalPartitionName");
-      originalClusterConfig.setSessionStateManagerJndiName("originalSessionStateManagerJndiName");
-      
-      JBossSessionBeanMetaData original = new JBossSessionBeanMetaData();
-      original.setClusterConfig(originalClusterConfig);
-      
-      // Merged
-      JBossSessionBeanMetaData merged = new JBossSessionBeanMetaData();
-      merged.merge(override, original);
-      ClusterConfigMetaData clusterConfig = merged.getClusterConfig();
-      assertNotNull(clusterConfig);
-      assertEquals("overrideBeanLoadBalancePolicy", clusterConfig.getBeanLoadBalancePolicy());
-      assertEquals("overrideHomeLoadBalancePolicy", clusterConfig.getHomeLoadBalancePolicy());
-      assertEquals("overridePartitionName", clusterConfig.getPartitionName());
-      assertEquals("overrideSessionStateManagerJndiName", clusterConfig.getSessionStateManagerJndiName());
-      assertEquals("overrideId", clusterConfig.getId());
-      
-   }
-   
-   public void testPortComponent()
-   {
-      // Override
-      PortComponent overridePortComponent = new PortComponent();
-      overridePortComponent.setAuthMethod("overrideauthMethod");
-      overridePortComponent.setId("overrideId");
-      overridePortComponent.setPortComponentName("overridePortComponentName");
-      overridePortComponent.setPortComponentURI("overridePortComponentURI");
-      overridePortComponent.setSecureWSDLAccess(true);
-      overridePortComponent.setTransportGuarantee("overrideTransportGuarantee");
-      
-      JBossSessionBeanMetaData override = new JBossSessionBeanMetaData();
-      override.setPortComponent(overridePortComponent);
-      override.setName("overrideName");
-      
-      // Original
-      PortComponent originalPortComponent = new PortComponent();
-      originalPortComponent.setAuthMethod("originalAuthMethod");
-      originalPortComponent.setPortComponentName("originalPortComponentName");
-      originalPortComponent.setPortComponentURI("originalPortComponentURI");
-      originalPortComponent.setSecureWSDLAccess(false);
-      originalPortComponent.setTransportGuarantee("originalTransportGuarantee");
-      
-      JBossSessionBeanMetaData original = new JBossSessionBeanMetaData();
-      original.setPortComponent(originalPortComponent);
-      
-      // Merged
-      JBossSessionBeanMetaData merged = new JBossSessionBeanMetaData();
-      merged.merge(override, original);
-      PortComponent portComponent = merged.getPortComponent();
-      assertEquals("overrideauthMethod", portComponent.getAuthMethod());
-      assertEquals("overridePortComponentName", portComponent.getPortComponentName());
-      assertEquals("overridePortComponentURI", portComponent.getPortComponentURI());
-      assertEquals("overrideTransportGuarantee", portComponent.getTransportGuarantee());
-      assertEquals(true, portComponent.getSecureWSDLAccess());
-      
-   }
-   
-   public void testEjbTimeout()
-   {
-      // Override
-      SecurityIdentityMetaData overrideEjbTimeout = new SecurityIdentityMetaData();
-      overrideEjbTimeout.setDescriptions(new DescriptionsImpl());
-      overrideEjbTimeout.setRunAsPrincipal("overrideRunAsPrincipal");
-      
-      RunAsMetaData overrideRunAs = new RunAsMetaData();
-      overrideRunAs.setDescriptions(new DescriptionsImpl());
-      overrideRunAs.setRoleName("overrideRoleName");
-      overrideRunAs.setId("overrideId");
-      
-      EmptyMetaData overrideEmpty = new EmptyMetaData();
-      overrideEmpty.setId("overrideId");
-      
-      overrideEjbTimeout.setRunAs(overrideRunAs);
-      overrideEjbTimeout.setUseCallerIdentity(overrideEmpty);
-      JBossSessionBeanMetaData override = new JBossSessionBeanMetaData();
-      override.setEjbTimeoutIdentity(overrideEjbTimeout);
-      override.setName("overrideName");
-      
-      // Original
-      SecurityIdentityMetaData originalEjbTimeout = new SecurityIdentityMetaData();
-      originalEjbTimeout.setRunAsPrincipal("originalRunAsPrincipal");
-      
-      RunAsMetaData originalRunAs = new RunAsMetaData();
-      originalRunAs.setDescriptions(new DescriptionsImpl());
-      originalRunAs.setRoleName("originalRoleName");
-      originalRunAs.setId("originalId");
-      
-      EmptyMetaData originalEmpty = new EmptyMetaData();
-      originalEmpty.setId("originalId");
-      
-      originalEjbTimeout.setRunAs(originalRunAs);
-      originalEjbTimeout.setUseCallerIdentity(originalEmpty);
-      JBossSessionBeanMetaData original = new JBossSessionBeanMetaData();
-      original.setEjbTimeoutIdentity(originalEjbTimeout);
-      original.setName("originalName");
-      
-      // Merged
-      JBossSessionBeanMetaData merged = new JBossSessionBeanMetaData();
-      merged.merge(override, original);
-      SecurityIdentityMetaData ejbTimeout = merged.getEjbTimeoutIdentity();
-      assertNotNull(ejbTimeout);
-      assertNotNull(ejbTimeout.getDescriptions());
-      assertEquals("overrideRunAsPrincipal", ejbTimeout.getRunAsPrincipal());
-      assertEquals("overrideRoleName", ejbTimeout.getRunAs().getRoleName());
-      assertEquals("overrideId", ejbTimeout.getRunAs().getId());
-      assertEquals("overrideId", ejbTimeout.getUseCallerIdentity().getId());
-   }
-   
-   public void todotestCacheConfig()
-   {
-      // Override
-      CacheConfigMetaData overrideCacheConfig = new CacheConfigMetaData();
-      overrideCacheConfig.setIdleTimeoutSeconds(Integer.valueOf(5));
-      overrideCacheConfig.setMaxSize(Integer.valueOf(5));
-      overrideCacheConfig.setRemoveTimeoutSeconds(Integer.valueOf(5));
-      overrideCacheConfig.setName("overrideName");
-      overrideCacheConfig.setPersistenceManager("overridePersistenceManager");
-      overrideCacheConfig.setReplicationIsPassivation("overrideReplicationIsPassivation");
-      overrideCacheConfig.setValue("overrideValue");
-      
-      JBossSessionBeanMetaData override = new JBossSessionBeanMetaData();
-      override.setCacheConfig(overrideCacheConfig);
-      override.setName("overrideName");
-    
-      // Original
-      CacheConfigMetaData originalCacheConfig = new CacheConfigMetaData();
-      originalCacheConfig.setIdleTimeoutSeconds(Integer.valueOf(6));
-      originalCacheConfig.setMaxSize(Integer.valueOf(6));
-      originalCacheConfig.setRemoveTimeoutSeconds(Integer.valueOf(6));
-      originalCacheConfig.setName("originalName");
-      originalCacheConfig.setPersistenceManager("originalPersistenceManager");
-      originalCacheConfig.setReplicationIsPassivation("originalReplicationIsPassivation");
-      originalCacheConfig.setValue("originalValue");
-      
-      JBossSessionBeanMetaData original = new JBossSessionBeanMetaData();
-      original.setCacheConfig(originalCacheConfig);
-      
-      // Merged
-      JBossSessionBeanMetaData merged = new JBossSessionBeanMetaData();
-      merged.merge(override, original);
-      CacheConfigMetaData cacheConfig = merged.getCacheConfig();
-      assertNotNull(cacheConfig);
-      assertEquals(Integer.valueOf(5), cacheConfig.getIdleTimeoutSeconds());
-      assertEquals(Integer.valueOf(5), cacheConfig.getMaxSize());
-      assertEquals(Integer.valueOf(5), cacheConfig.getRemoveTimeoutSeconds());
-      assertEquals("overrideName", cacheConfig.getName());
-      assertEquals("overridePersistenceManager", cacheConfig.getPersistenceManager());
-      assertEquals("overrideReplicationIsPassivation", cacheConfig.getReplicationIsPassivation());
-      assertEquals("overrideValue", cacheConfig.getValue());
-   }
-}
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.metadata.ejb;
+
+
+import org.jboss.metadata.ejb.jboss.CacheConfigMetaData;
+import org.jboss.metadata.ejb.jboss.ClusterConfigMetaData;
+import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
+import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
+import org.jboss.metadata.ejb.spec.AroundInvokeMetaData;
+import org.jboss.metadata.ejb.spec.AroundInvokesMetaData;
+import org.jboss.metadata.ejb.spec.BusinessLocalsMetaData;
+import org.jboss.metadata.ejb.spec.BusinessRemotesMetaData;
+import org.jboss.metadata.ejb.spec.InitMethodMetaData;
+import org.jboss.metadata.ejb.spec.InitMethodsMetaData;
+import org.jboss.metadata.ejb.spec.MethodParametersMetaData;
+import org.jboss.metadata.ejb.spec.NamedMethodMetaData;
+import org.jboss.metadata.ejb.spec.RemoveMethodMetaData;
+import org.jboss.metadata.ejb.spec.RemoveMethodsMetaData;
+import org.jboss.metadata.ejb.spec.SecurityIdentityMetaData;
+import org.jboss.metadata.javaee.spec.DescriptionsImpl;
+import org.jboss.metadata.javaee.spec.EmptyMetaData;
+import org.jboss.metadata.javaee.spec.PortComponent;
+import org.jboss.metadata.javaee.spec.RunAsMetaData;
+import org.jboss.metadata.javaee.spec.SecurityRoleRefMetaData;
+import org.jboss.metadata.javaee.spec.SecurityRoleRefsMetaData;
+
+
+/**
+ * A JBossSessionBeanOverrideUnitTestCase.
+ * 
+ * @author <a href="alex at jboss.com">Alexey Loubyansky</a>
+ * @version $Revision: 1.1 $
+ */
+public class JBossSessionBeanOverrideUnitTestCase
+   extends AbstractJBossEnterpriseBeanOverrideTest
+{
+   public void testSimpleProperties() throws Exception
+   {
+      simplePropertiesTest(JBossSessionBeanMetaData.class, JBossEnterpriseBeanMetaData.class, null);
+   }
+   
+   public void testBusinessLocals()
+   {
+      // Override
+      BusinessLocalsMetaData overrideBusinessLocal = new BusinessLocalsMetaData();
+      overrideBusinessLocal.add("override1");
+      overrideBusinessLocal.add("override2");
+      overrideBusinessLocal.add("override3");
+      JBossSessionBeanMetaData override = new JBossSessionBeanMetaData();
+      override.setBusinessLocals(overrideBusinessLocal);
+      override.setName("overrideName");
+      
+      //Original
+      BusinessLocalsMetaData originalBusinessLocal = new BusinessLocalsMetaData();
+      originalBusinessLocal.add("original1");
+      originalBusinessLocal.add("original2");
+      originalBusinessLocal.add("original3");
+      JBossSessionBeanMetaData original = new JBossSessionBeanMetaData();
+      original.setBusinessLocals(originalBusinessLocal);
+      
+      // Merged 
+      JBossSessionBeanMetaData merged = new JBossSessionBeanMetaData();
+      merged.merge(override, original);
+      BusinessLocalsMetaData businessLocals = merged.getBusinessLocals();
+      assertNotNull(businessLocals);
+      assertEquals(3, businessLocals.size());
+      assertTrue(businessLocals.contains("override1"));
+      assertTrue(businessLocals.contains("override2"));
+      assertTrue(businessLocals.contains("override3"));
+   }
+   
+   public void testBusinessRemotes()
+   {
+      // Override
+      BusinessRemotesMetaData overrideBusinessRemotes = new BusinessRemotesMetaData();
+      overrideBusinessRemotes.add("override1");
+      overrideBusinessRemotes.add("override2");
+      overrideBusinessRemotes.add("override3");
+      JBossSessionBeanMetaData override = new JBossSessionBeanMetaData();
+      override.setBusinessRemotes(overrideBusinessRemotes);
+      override.setName("overrideName");
+      
+      // Original
+      BusinessRemotesMetaData originalBusinessRemotes = new BusinessRemotesMetaData();
+      originalBusinessRemotes.add("original1");
+      originalBusinessRemotes.add("original2");
+      originalBusinessRemotes.add("original3");
+      JBossSessionBeanMetaData original = new JBossSessionBeanMetaData();
+      original.setBusinessRemotes(originalBusinessRemotes);
+      
+      // Merged
+      JBossSessionBeanMetaData merged = new JBossSessionBeanMetaData();
+      merged.merge(override, original);
+      BusinessRemotesMetaData businessRemotes = merged.getBusinessRemotes();
+      assertNotNull(businessRemotes);
+      assertEquals(3, businessRemotes.size());
+      assertTrue(businessRemotes.contains("override1"));
+      assertTrue(businessRemotes.contains("override2"));
+      assertTrue(businessRemotes.contains("override3"));
+   }
+   
+   public void testTimeoutMethod()
+   {
+      // Override
+      JBossSessionBeanMetaData override = new JBossSessionBeanMetaData();
+      NamedMethodMetaData overrideTimeoutMethod = new NamedMethodMetaData();
+      overrideTimeoutMethod.setId("override");
+      overrideTimeoutMethod.setMethodName("override");
+      MethodParametersMetaData parameter2 = new MethodParametersMetaData();
+      parameter2.add("override");
+      parameter2.add("parameter");
+      overrideTimeoutMethod.setMethodParams(parameter2);
+      overrideTimeoutMethod.setName("override");
+      override.setTimeoutMethod(overrideTimeoutMethod);
+      override.setName("override");
+      
+      // Original
+      JBossSessionBeanMetaData original = new JBossSessionBeanMetaData();      
+      NamedMethodMetaData originalTimeoutMethod = new NamedMethodMetaData();
+      originalTimeoutMethod.setId("id");
+      originalTimeoutMethod.setMethodName("methodName");
+      MethodParametersMetaData parameter = new MethodParametersMetaData();
+      parameter.add("originalParameter");
+      originalTimeoutMethod.setMethodParams(parameter);
+      originalTimeoutMethod.setName("name");
+      original.setTimeoutMethod(originalTimeoutMethod);
+      
+      // Merged
+      JBossSessionBeanMetaData merged = new JBossSessionBeanMetaData();
+      merged.merge(override, original);
+      NamedMethodMetaData namedMethod = merged.getTimeoutMethod();
+      assertEquals("override", merged.getName());
+      assertNotNull(namedMethod);
+      assertEquals("method id", "override", namedMethod.getId());
+      assertEquals("method name", "override", namedMethod.getMethodName());
+      assertEquals("override", namedMethod.getName());
+      MethodParametersMetaData methodParameters = namedMethod.getMethodParams();
+      assertEquals("override", methodParameters.get(0));
+      assertEquals("parameter", methodParameters.get(1));
+   }
+   
+   public void testInitMethods()
+   {
+      // Override
+      InitMethodsMetaData overrideInitMethods = new InitMethodsMetaData();
+      InitMethodMetaData overrideInitMethod = new InitMethodMetaData();
+      NamedMethodMetaData overrideNamedMethod = new NamedMethodMetaData();
+      overrideNamedMethod.setMethodName("overrideMethodName");
+      overrideInitMethod.setId("overrideId");
+      overrideInitMethods.add(overrideInitMethod);
+      
+      JBossSessionBeanMetaData override = new JBossSessionBeanMetaData();
+      override.setInitMethods(overrideInitMethods);
+      override.setName("name");
+      
+      // Original
+      InitMethodsMetaData originalInitMethods = new InitMethodsMetaData();
+      InitMethodMetaData originalInitMethod = new InitMethodMetaData();
+      NamedMethodMetaData originalNamedMethod = new NamedMethodMetaData();
+      originalNamedMethod.setMethodName("originalMethodName");
+      originalInitMethod.setId("originalId");
+      originalInitMethods.add(originalInitMethod);
+      
+      JBossSessionBeanMetaData original = new JBossSessionBeanMetaData();
+      original.setInitMethods(originalInitMethods);
+      
+      // Merged
+      JBossSessionBeanMetaData merged = new JBossSessionBeanMetaData();
+      merged.merge(override, original);
+      InitMethodsMetaData initMethods = merged.getInitMethods();
+      assertNotNull(initMethods);
+      InitMethodMetaData initMethod = initMethods.get(0);
+      assertNotNull(initMethod);
+      assertEquals("overrideId", initMethod.getId());
+   }
+   
+   public void testRemoveMethods()
+   {
+      // Override
+      RemoveMethodsMetaData overrideRemoveMethods = new RemoveMethodsMetaData();
+      RemoveMethodMetaData overrideRemoveMethod = new RemoveMethodMetaData();
+      overrideRemoveMethod.setId("overrideId");
+      overrideRemoveMethod.setRetainIfException(true);
+      NamedMethodMetaData overrideNamedMethod = new NamedMethodMetaData();
+      overrideNamedMethod.setMethodName("overrideMethodName");
+      overrideRemoveMethod.setBeanMethod(overrideNamedMethod);
+      overrideRemoveMethods.add(overrideRemoveMethod);
+
+      JBossSessionBeanMetaData override = new JBossSessionBeanMetaData();
+      override.setRemoveMethods(overrideRemoveMethods);
+      override.setName("overrideName");
+
+      // Original
+      RemoveMethodsMetaData originalRemoveMethods = new RemoveMethodsMetaData();
+      RemoveMethodMetaData originalRemoveMethod = new RemoveMethodMetaData();
+      originalRemoveMethod.setId("originalId");
+      originalRemoveMethod.setRetainIfException(false);
+      NamedMethodMetaData originalNamedMethod = new NamedMethodMetaData();
+      originalNamedMethod.setId("originalId");
+      originalRemoveMethod.setBeanMethod(originalNamedMethod);
+      originalRemoveMethods.add(originalRemoveMethod);
+      
+      JBossSessionBeanMetaData original = new JBossSessionBeanMetaData();
+      original.setRemoveMethods(originalRemoveMethods);
+      
+      // Merged
+      JBossSessionBeanMetaData merged = new JBossSessionBeanMetaData();
+      merged.merge(override, original);
+      RemoveMethodsMetaData removeMethods = merged.getRemoveMethods();
+      assertNotNull(removeMethods);
+      RemoveMethodMetaData removeMethod = removeMethods.get(0);
+      assertNotNull(removeMethod);
+      assertEquals("overrideId", removeMethod.getId());
+      assertTrue(removeMethod.isRetainIfException());
+      NamedMethodMetaData namedMethod = removeMethod.getBeanMethod();
+      assertNotNull(namedMethod);
+      assertEquals("overrideMethodName", namedMethod.getMethodName());
+      
+   }
+   
+   public void testRemoveMethodsRetainOverrideIsNull()
+   {
+      // Override
+      RemoveMethodsMetaData overrideRemoveMethods = new RemoveMethodsMetaData();
+      RemoveMethodMetaData overrideRemoveMethod = new RemoveMethodMetaData();
+      overrideRemoveMethod.setId("overrideId");
+      NamedMethodMetaData overrideNamedMethod = new NamedMethodMetaData();
+      overrideNamedMethod.setMethodName("overrideMethodName");
+      overrideRemoveMethod.setBeanMethod(overrideNamedMethod);
+      overrideRemoveMethods.add(overrideRemoveMethod);
+
+      JBossSessionBeanMetaData override = new JBossSessionBeanMetaData();
+      override.setRemoveMethods(overrideRemoveMethods);
+      override.setName("overrideName");
+
+      // Original
+      RemoveMethodsMetaData originalRemoveMethods = new RemoveMethodsMetaData();
+      RemoveMethodMetaData originalRemoveMethod = new RemoveMethodMetaData();
+      originalRemoveMethod.setId("originalId");
+      originalRemoveMethod.setRetainIfException(true);
+      NamedMethodMetaData originalNamedMethod = new NamedMethodMetaData();
+      originalNamedMethod.setMethodName("overrideMethodName");
+      originalNamedMethod.setId("originalId");
+      originalRemoveMethod.setBeanMethod(originalNamedMethod);
+      originalRemoveMethods.add(originalRemoveMethod);
+      
+      JBossSessionBeanMetaData original = new JBossSessionBeanMetaData();
+      original.setRemoveMethods(originalRemoveMethods);
+      
+      // Merged
+      JBossSessionBeanMetaData merged = new JBossSessionBeanMetaData();
+      merged.merge(override, original);
+      RemoveMethodsMetaData removeMethods = merged.getRemoveMethods();
+      assertNotNull(removeMethods);
+      RemoveMethodMetaData removeMethod = removeMethods.get(0);
+      assertNotNull(removeMethod);
+      assertEquals("overrideId", removeMethod.getId());
+      assertTrue(removeMethod.isRetainIfException());
+      NamedMethodMetaData namedMethod = removeMethod.getBeanMethod();
+      assertNotNull(namedMethod);
+      assertEquals("overrideMethodName", namedMethod.getMethodName());
+      
+   }
+   
+   public void testAroundInvokes()
+   {
+      // Override
+      AroundInvokesMetaData overrideInvokes = new AroundInvokesMetaData();
+      AroundInvokeMetaData overrideInvoke = new AroundInvokeMetaData();
+      overrideInvoke.setClassName("overrideClassName");
+      overrideInvoke.setMethodName("overrideMethodName");
+      overrideInvokes.add(overrideInvoke);
+      JBossSessionBeanMetaData override = new JBossSessionBeanMetaData();
+      override.setAroundInvokes(overrideInvokes);
+      override.setName("sbmd");
+      
+      // Original
+      AroundInvokesMetaData originalInvokes = new AroundInvokesMetaData();
+      AroundInvokeMetaData originalInvoke = new AroundInvokeMetaData();
+      originalInvoke.setClassName("originalClassName");
+      originalInvoke.setMethodName("originalMethodName");
+      originalInvokes.add(originalInvoke);
+      JBossSessionBeanMetaData original = new JBossSessionBeanMetaData();
+      original.setAroundInvokes(originalInvokes);
+      
+      // Merged
+      JBossSessionBeanMetaData merged = new JBossSessionBeanMetaData();
+      merged.merge(override, original);
+      AroundInvokesMetaData aroundInvokes = merged.getAroundInvokes();
+      assertNotNull(aroundInvokes);
+      assertEquals(2, aroundInvokes.size());
+      AroundInvokeMetaData aroundInvoke = aroundInvokes.get(0);
+      assertNotNull(aroundInvoke);
+      assertEquals("originalClassName", aroundInvoke.getClassName());
+      assertEquals("originalMethodName", aroundInvoke.getMethodName());
+      aroundInvoke = aroundInvokes.get(1);
+      assertNotNull(aroundInvoke);
+      assertEquals("overrideClassName", aroundInvoke.getClassName());
+      assertEquals("overrideMethodName", aroundInvoke.getMethodName());
+
+   }
+   
+   public void testSecurityRoleRefs()
+   {
+      // Override
+      SecurityRoleRefsMetaData overrideSecurity = new SecurityRoleRefsMetaData();
+      overrideSecurity.setId("override");
+      SecurityRoleRefMetaData overrideSecurityRoleRef = new SecurityRoleRefMetaData();
+      overrideSecurityRoleRef.setDescriptions(new DescriptionsImpl());
+      overrideSecurityRoleRef.setId("overrideId");
+      overrideSecurityRoleRef.setRoleLink("overrideLink");
+      overrideSecurityRoleRef.setRoleName("overrideRoleName");
+      overrideSecurity.add(overrideSecurityRoleRef);
+      JBossSessionBeanMetaData override = new JBossSessionBeanMetaData();
+      override.setSecurityRoleRefs(overrideSecurity);
+      
+      // Original
+      SecurityRoleRefMetaData originalSecurityRoleRef = new SecurityRoleRefMetaData();
+      originalSecurityRoleRef.setDescriptions(new DescriptionsImpl());
+      originalSecurityRoleRef.setId("originalId");
+      originalSecurityRoleRef.setName("originalName");
+      originalSecurityRoleRef.setRoleLink("originalLink");
+      originalSecurityRoleRef.setRoleName("originalRoleName");
+      SecurityRoleRefsMetaData originalSecurityRoleRefsMetaData = new SecurityRoleRefsMetaData();
+      originalSecurityRoleRefsMetaData.setId("originalId");
+      originalSecurityRoleRefsMetaData.add(originalSecurityRoleRef);
+      JBossSessionBeanMetaData original = new JBossSessionBeanMetaData();
+      original.setSecurityRoleRefs(originalSecurityRoleRefsMetaData);
+      original.setName("original");
+      
+      // Merged
+      JBossSessionBeanMetaData merged = new JBossSessionBeanMetaData();
+      merged.merge(override, original);
+      SecurityRoleRefsMetaData securityRoleRefs = merged.getSecurityRoleRefs();
+      assertNotNull(securityRoleRefs);
+      assertEquals(1, securityRoleRefs.size());
+      assertEquals("override", securityRoleRefs.getId());
+      SecurityRoleRefMetaData securityRoleRef = securityRoleRefs.get(overrideSecurityRoleRef.getKey());
+      assertNotNull(securityRoleRef);
+      assertEquals("overrideId", securityRoleRef.getId());
+      assertEquals("overrideLink", securityRoleRef.getRoleLink());
+      assertEquals("overrideRoleName", securityRoleRef.getRoleName());
+   }
+   
+   public void testClusterConfig()
+   {
+      // Override
+      ClusterConfigMetaData overrideClusterConfig = new ClusterConfigMetaData();
+      overrideClusterConfig.setBeanLoadBalancePolicy("overrideBeanLoadBalancePolicy");
+      overrideClusterConfig.setDescriptions(new DescriptionsImpl());
+      overrideClusterConfig.setHomeLoadBalancePolicy("overrideHomeLoadBalancePolicy");
+      overrideClusterConfig.setId("overrideId");
+      overrideClusterConfig.setPartitionName("overridePartitionName");
+      overrideClusterConfig.setSessionStateManagerJndiName("overrideSessionStateManagerJndiName");
+      
+      JBossSessionBeanMetaData override = new JBossSessionBeanMetaData();
+      override.setClusterConfig(overrideClusterConfig);
+      override.setName("override");
+      
+      // Original
+      ClusterConfigMetaData originalClusterConfig = new ClusterConfigMetaData();
+      originalClusterConfig.setBeanLoadBalancePolicy("originalBeanLoadBalancePolicy");
+      originalClusterConfig.setDescriptions(new DescriptionsImpl());
+      originalClusterConfig.setHomeLoadBalancePolicy("originalHomeLoadBalancePolicy");
+      originalClusterConfig.setId("originalId");
+      originalClusterConfig.setPartitionName("originalPartitionName");
+      originalClusterConfig.setSessionStateManagerJndiName("originalSessionStateManagerJndiName");
+      
+      JBossSessionBeanMetaData original = new JBossSessionBeanMetaData();
+      original.setClusterConfig(originalClusterConfig);
+      
+      // Merged
+      JBossSessionBeanMetaData merged = new JBossSessionBeanMetaData();
+      merged.merge(override, original);
+      ClusterConfigMetaData clusterConfig = merged.getClusterConfig();
+      assertNotNull(clusterConfig);
+      assertEquals("overrideBeanLoadBalancePolicy", clusterConfig.getBeanLoadBalancePolicy());
+      assertEquals("overrideHomeLoadBalancePolicy", clusterConfig.getHomeLoadBalancePolicy());
+      assertEquals("overridePartitionName", clusterConfig.getPartitionName());
+      assertEquals("overrideSessionStateManagerJndiName", clusterConfig.getSessionStateManagerJndiName());
+      assertEquals("overrideId", clusterConfig.getId());
+      
+   }
+   
+   public void testPortComponent()
+   {
+      // Override
+      PortComponent overridePortComponent = new PortComponent();
+      overridePortComponent.setAuthMethod("overrideauthMethod");
+      overridePortComponent.setId("overrideId");
+      overridePortComponent.setPortComponentName("overridePortComponentName");
+      overridePortComponent.setPortComponentURI("overridePortComponentURI");
+      overridePortComponent.setSecureWSDLAccess(true);
+      overridePortComponent.setTransportGuarantee("overrideTransportGuarantee");
+      
+      JBossSessionBeanMetaData override = new JBossSessionBeanMetaData();
+      override.setPortComponent(overridePortComponent);
+      override.setName("overrideName");
+      
+      // Original
+      PortComponent originalPortComponent = new PortComponent();
+      originalPortComponent.setAuthMethod("originalAuthMethod");
+      originalPortComponent.setPortComponentName("originalPortComponentName");
+      originalPortComponent.setPortComponentURI("originalPortComponentURI");
+      originalPortComponent.setSecureWSDLAccess(false);
+      originalPortComponent.setTransportGuarantee("originalTransportGuarantee");
+      
+      JBossSessionBeanMetaData original = new JBossSessionBeanMetaData();
+      original.setPortComponent(originalPortComponent);
+      
+      // Merged
+      JBossSessionBeanMetaData merged = new JBossSessionBeanMetaData();
+      merged.merge(override, original);
+      PortComponent portComponent = merged.getPortComponent();
+      assertEquals("overrideauthMethod", portComponent.getAuthMethod());
+      assertEquals("overridePortComponentName", portComponent.getPortComponentName());
+      assertEquals("overridePortComponentURI", portComponent.getPortComponentURI());
+      assertEquals("overrideTransportGuarantee", portComponent.getTransportGuarantee());
+      assertEquals(true, portComponent.getSecureWSDLAccess());
+      
+   }
+   
+   public void testEjbTimeout()
+   {
+      // Override
+      SecurityIdentityMetaData overrideEjbTimeout = new SecurityIdentityMetaData();
+      overrideEjbTimeout.setDescriptions(new DescriptionsImpl());
+      overrideEjbTimeout.setRunAsPrincipal("overrideRunAsPrincipal");
+      
+      RunAsMetaData overrideRunAs = new RunAsMetaData();
+      overrideRunAs.setDescriptions(new DescriptionsImpl());
+      overrideRunAs.setRoleName("overrideRoleName");
+      overrideRunAs.setId("overrideId");
+      
+      EmptyMetaData overrideEmpty = new EmptyMetaData();
+      overrideEmpty.setId("overrideId");
+      
+      overrideEjbTimeout.setRunAs(overrideRunAs);
+      overrideEjbTimeout.setUseCallerIdentity(overrideEmpty);
+      JBossSessionBeanMetaData override = new JBossSessionBeanMetaData();
+      override.setEjbTimeoutIdentity(overrideEjbTimeout);
+      override.setName("overrideName");
+      
+      // Original
+      SecurityIdentityMetaData originalEjbTimeout = new SecurityIdentityMetaData();
+      originalEjbTimeout.setRunAsPrincipal("originalRunAsPrincipal");
+      
+      RunAsMetaData originalRunAs = new RunAsMetaData();
+      originalRunAs.setDescriptions(new DescriptionsImpl());
+      originalRunAs.setRoleName("originalRoleName");
+      originalRunAs.setId("originalId");
+      
+      EmptyMetaData originalEmpty = new EmptyMetaData();
+      originalEmpty.setId("originalId");
+      
+      originalEjbTimeout.setRunAs(originalRunAs);
+      originalEjbTimeout.setUseCallerIdentity(originalEmpty);
+      JBossSessionBeanMetaData original = new JBossSessionBeanMetaData();
+      original.setEjbTimeoutIdentity(originalEjbTimeout);
+      original.setName("originalName");
+      
+      // Merged
+      JBossSessionBeanMetaData merged = new JBossSessionBeanMetaData();
+      merged.merge(override, original);
+      SecurityIdentityMetaData ejbTimeout = merged.getEjbTimeoutIdentity();
+      assertNotNull(ejbTimeout);
+      assertNotNull(ejbTimeout.getDescriptions());
+      assertEquals("overrideRunAsPrincipal", ejbTimeout.getRunAsPrincipal());
+      assertEquals("overrideRoleName", ejbTimeout.getRunAs().getRoleName());
+      assertEquals("overrideId", ejbTimeout.getRunAs().getId());
+      assertEquals("overrideId", ejbTimeout.getUseCallerIdentity().getId());
+   }
+   
+   public void todotestCacheConfig()
+   {
+      // Override
+      CacheConfigMetaData overrideCacheConfig = new CacheConfigMetaData();
+      overrideCacheConfig.setIdleTimeoutSeconds(Integer.valueOf(5));
+      overrideCacheConfig.setMaxSize(Integer.valueOf(5));
+      overrideCacheConfig.setRemoveTimeoutSeconds(Integer.valueOf(5));
+      overrideCacheConfig.setName("overrideName");
+      overrideCacheConfig.setPersistenceManager("overridePersistenceManager");
+      overrideCacheConfig.setReplicationIsPassivation("overrideReplicationIsPassivation");
+      overrideCacheConfig.setValue("overrideValue");
+      
+      JBossSessionBeanMetaData override = new JBossSessionBeanMetaData();
+      override.setCacheConfig(overrideCacheConfig);
+      override.setName("overrideName");
+    
+      // Original
+      CacheConfigMetaData originalCacheConfig = new CacheConfigMetaData();
+      originalCacheConfig.setIdleTimeoutSeconds(Integer.valueOf(6));
+      originalCacheConfig.setMaxSize(Integer.valueOf(6));
+      originalCacheConfig.setRemoveTimeoutSeconds(Integer.valueOf(6));
+      originalCacheConfig.setName("originalName");
+      originalCacheConfig.setPersistenceManager("originalPersistenceManager");
+      originalCacheConfig.setReplicationIsPassivation("originalReplicationIsPassivation");
+      originalCacheConfig.setValue("originalValue");
+      
+      JBossSessionBeanMetaData original = new JBossSessionBeanMetaData();
+      original.setCacheConfig(originalCacheConfig);
+      
+      // Merged
+      JBossSessionBeanMetaData merged = new JBossSessionBeanMetaData();
+      merged.merge(override, original);
+      CacheConfigMetaData cacheConfig = merged.getCacheConfig();
+      assertNotNull(cacheConfig);
+      assertEquals(Integer.valueOf(5), cacheConfig.getIdleTimeoutSeconds());
+      assertEquals(Integer.valueOf(5), cacheConfig.getMaxSize());
+      assertEquals(Integer.valueOf(5), cacheConfig.getRemoveTimeoutSeconds());
+      assertEquals("overrideName", cacheConfig.getName());
+      assertEquals("overridePersistenceManager", cacheConfig.getPersistenceManager());
+      assertEquals("overrideReplicationIsPassivation", cacheConfig.getReplicationIsPassivation());
+      assertEquals("overrideValue", cacheConfig.getValue());
+   }
+}

Modified: projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/ejb3/AnnotationEjb3_testXmlMerge.xml
===================================================================
--- projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/ejb3/AnnotationEjb3_testXmlMerge.xml	2008-08-28 13:54:35 UTC (rev 77598)
+++ projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/ejb3/AnnotationEjb3_testXmlMerge.xml	2008-08-28 14:13:03 UTC (rev 77599)
@@ -11,6 +11,14 @@
         <session>
             <ejb-name>TargetBean</ejb-name>
             <ejb-class>org.jboss.test.metadata.annotation.ejb3.runas.TargetBean</ejb-class>
+            <remove-method>
+                <bean-method>
+                    <method-name>remove</method-name>
+                </bean-method>
+                <!-- specify it in annotation
+                <retain-if-exception>true</retain-if-exception>
+                -->
+            </remove-method>
         </session>
     </enterprise-beans>
 </ejb-jar>

Added: projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/jbmeta98/ejb-jar.xml
===================================================================
--- projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/jbmeta98/ejb-jar.xml	                        (rev 0)
+++ projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/jbmeta98/ejb-jar.xml	2008-08-28 14:13:03 UTC (rev 77599)
@@ -0,0 +1,31 @@
+<?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"
+		 metadata-complete="false"
+		 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>RemoveBean</ejb-name>
+            <session-type>Stateful</session-type>
+            <remove-method>
+                <bean-method>
+                    <method-name>retain</method-name>
+                </bean-method>
+                <!-- specify it in annotation
+                <retain-if-exception>true</retain-if-exception>
+                -->
+            </remove-method>
+            <remove-method>
+                <bean-method>
+                    <method-name>remove2</method-name>
+                </bean-method>
+                <retain-if-exception>false</retain-if-exception>
+            </remove-method>
+            <transaction-type>Container</transaction-type>
+            <security-identity>
+                <use-caller-identity/>
+            </security-identity>
+        </session>
+    </enterprise-beans>
+</ejb-jar>
\ No newline at end of file

Added: projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/jbmeta98/jboss.xml
===================================================================
--- projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/jbmeta98/jboss.xml	                        (rev 0)
+++ projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/jbmeta98/jboss.xml	2008-08-28 14:13:03 UTC (rev 77599)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<jboss xmlns="http://www.jboss.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee
+            http://www.jboss.org/j2ee/schema/jboss_5_0.xsd" version="3.0">
+  <unauthenticated-principal>guest</unauthenticated-principal>
+  <enterprise-beans>
+    <session>
+      <ejb-name>RemoveBean</ejb-name>
+      <jndi-name>stateful_remove_override_RemoveBean</jndi-name>
+      <home-jndi-name>stateful_remove_override_RemoveBean</home-jndi-name>
+      <call-by-value>true</call-by-value>
+    </session>
+  </enterprise-beans>
+</jboss>
\ No newline at end of file




More information about the jboss-cvs-commits mailing list