[jboss-cvs] JBossAS SVN: r72018 - in projects/metadata/trunk/src: test/java/org/jboss/test/metadata/annotation/ejb3 and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Apr 11 08:55:41 EDT 2008


Author: wolfc
Date: 2008-04-11 08:55:41 -0400 (Fri, 11 Apr 2008)
New Revision: 72018

Added:
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/MetaDataStatelessBean.java
   projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/ejb3/AnnotationEjb3_testPostConstruct.xml
Modified:
   projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/RemoteEnvironmentRefsGroupMetaData.java
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/AnnotationEjb3UnitTestCase.java
Log:
JBMETA-14: merge lifecycle callbacks

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/RemoteEnvironmentRefsGroupMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/RemoteEnvironmentRefsGroupMetaData.java	2008-04-11 12:11:05 UTC (rev 72017)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/RemoteEnvironmentRefsGroupMetaData.java	2008-04-11 12:55:41 UTC (rev 72018)
@@ -93,6 +93,16 @@
       // For serialization
    }
 
+   private LifecycleCallbacksMetaData addAll(LifecycleCallbacksMetaData current, LifecycleCallbacksMetaData additions)
+   {
+      if(additions == null)
+         return current;
+      if(current == null)
+         current = new LifecycleCallbacksMetaData();
+      current.addAll(additions);
+      return current;
+   }
+   
    /**
     * Get the environmentEntries.
     * 
@@ -373,9 +383,20 @@
       MessageDestinationReferencesMetaData messageDestinationRefs = null;
       MessageDestinationReferencesMetaData jbossMessageDestinationRefs = null;
       PersistenceUnitReferencesMetaData persistenceUnitRefs = null;
-      LifecycleCallbacksMetaData postConstructs = null;
-      LifecycleCallbacksMetaData preDestroys = null;
+//      LifecycleCallbacksMetaData postConstructs = null;
+//      LifecycleCallbacksMetaData preDestroys = null;
       
+      if(jbossEnv != null)
+      {
+         postConstructs = addAll(postConstructs, jbossEnv.getPostConstructs());
+         preDestroys = addAll(preDestroys, jbossEnv.getPreDestroys());
+      }
+      if(specEnv != null)
+      {
+         postConstructs = addAll(postConstructs, specEnv.getPostConstructs());
+         preDestroys = addAll(preDestroys, specEnv.getPreDestroys());
+      }
+      
       if (specEnv != null)
       {
          annotatedEjbRefs = specEnv.getAnnotatedEjbReferences();
@@ -385,8 +406,6 @@
          resEnvRefs = specEnv.getResourceEnvironmentReferences();
          messageDestinationRefs = specEnv.getMessageDestinationReferences();
          persistenceUnitRefs = specEnv.getPersistenceUnitRefs();
-         postConstructs = specEnv.getPostConstructs();
-         preDestroys = specEnv.getPreDestroys();
       }
       
       if (jbossEnv != null)
@@ -456,12 +475,6 @@
       if (persistenceUnitRefs != null)
          setPersistenceUnitRefs(persistenceUnitRefs);
       
-      if (postConstructs != null)
-         setPostConstructs(postConstructs);
-      
-      if (preDestroys != null)
-         setPreDestroys(preDestroys);
-      
       if(annotatedEjbRefs != null)
          this.setAnnotatedEjbReferences(annotatedEjbRefs);
    }

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-04-11 12:11:05 UTC (rev 72017)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/AnnotationEjb3UnitTestCase.java	2008-04-11 12:55:41 UTC (rev 72018)
@@ -391,7 +391,7 @@
          System.out.println(transaction);
       }
       
-      assertEquals(7, metaData.getEnterpriseBeans().size());
+      assertEquals(8, metaData.getEnterpriseBeans().size());
       
       assertMyStatefulBean(metaData.getEnterpriseBean("AnotherName")); // MyStatefulBean
       assertMyStateless21Bean(metaData.getEnterpriseBean("MyStateless21Bean"));
@@ -580,6 +580,33 @@
    }
    
    /**
+    * Test merging annotation and xml based metadata
+    * @throws Exception
+    */
+   public void testPostConstruct()
+      throws Exception
+   {
+      Class<?>[] beanClasses = {
+            MetaDataStatelessBean.class
+      };
+      List<Class<?>> classes = Arrays.asList(beanClasses);
+      AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+      EjbJar30Creator creator = new EjbJar30Creator(finder);
+      EjbJar30MetaData metaData = creator.create(classes);
+      EjbJar3xMetaData specMetaData = unmarshal(EjbJar3xMetaData.class);
+      EjbJar3xMetaData merged = new EjbJar30MetaData();
+      AnnotationMergedView.merge(merged, specMetaData, metaData);
+
+      SessionBeanMetaData sessionBean = (SessionBeanMetaData) merged.getEnterpriseBean("MetaDataStatelessBean");
+      assertNotNull(sessionBean);
+      LifecycleCallbacksMetaData lifecycleCallbacks = sessionBean.getPostConstructs();
+      assertNotNull(lifecycleCallbacks);
+      assertEquals(1, lifecycleCallbacks.size());
+      LifecycleCallbackMetaData lifecycleCallback = lifecycleCallbacks.get(0);
+      assertEquals("postConstruct", lifecycleCallback.getMethodName());
+   }
+
+   /**
     * Test that we don't lose anything because of an annotation merge.
     * 
     * @throws Exception

Added: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/MetaDataStatelessBean.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/MetaDataStatelessBean.java	                        (rev 0)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/MetaDataStatelessBean.java	2008-04-11 12:55:41 UTC (rev 72018)
@@ -0,0 +1,39 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2007, 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.ejb3;
+
+import javax.ejb.Stateless;
+
+/**
+ * This bean has a postConstruct in the descriptor.
+ * 
+ * @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+ at Stateless
+public class MetaDataStatelessBean
+{
+   public void postConstruct()
+   {
+      
+   }
+}

Added: projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/ejb3/AnnotationEjb3_testPostConstruct.xml
===================================================================
--- projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/ejb3/AnnotationEjb3_testPostConstruct.xml	                        (rev 0)
+++ projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/ejb3/AnnotationEjb3_testPostConstruct.xml	2008-04-11 12:55:41 UTC (rev 72018)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ejb-jar version="3.0"
+    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">
+    <enterprise-beans>
+        <session>
+            <ejb-name>MetaDataStatelessBean</ejb-name>
+            <ejb-class>org.jboss.test.metadata.annotation.ejb3.MetaDataStatelessBean</ejb-class>
+            <post-construct>
+            	<lifecycle-callback-method>postConstruct</lifecycle-callback-method>
+            </post-construct>
+        </session>
+    </enterprise-beans>
+</ejb-jar>




More information about the jboss-cvs-commits mailing list