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

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Nov 15 03:00:23 EST 2007


Author: scott.stark at jboss.org
Date: 2007-11-15 03:00:22 -0500 (Thu, 15 Nov 2007)
New Revision: 67113

Added:
   projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/EJBClassProcessor.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/EJBsClassProcessor.java
Modified:
   projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractComponentProcessor.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractEJBProcessor.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/MyStatefulBean.java
Log:
Add @EJBs processing

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractComponentProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractComponentProcessor.java	2007-11-15 02:41:46 UTC (rev 67112)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractComponentProcessor.java	2007-11-15 08:00:22 UTC (rev 67113)
@@ -78,6 +78,8 @@
       addTypeProcessor(new ResourcesClassProcessor(finder));
       addMethodProcessor(new EJBMethodProcessor(finder));
       addFieldProcessor(new EJBFieldProcessor(finder));
+      addTypeProcessor(new EJBClassProcessor(finder));
+      addTypeProcessor(new EJBsClassProcessor(finder));
    }
 
    public void addFieldProcessor(Processor processor)

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractEJBProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractEJBProcessor.java	2007-11-15 02:41:46 UTC (rev 67112)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/AbstractEJBProcessor.java	2007-11-15 08:00:22 UTC (rev 67113)
@@ -51,9 +51,14 @@
       EJB annotation = finder.getAnnotation(element, EJB.class);
       if(annotation == null)
          return;
-      
+
+      process(refs, element, annotation);
+   }
+
+   protected void process(AnnotatedEJBReferencesMetaData refs, E element, EJB annotation)
+   {
       AnnotatedEJBReferenceMetaData ref = createEJB(annotation, element);
-      refs.add(ref);
+      refs.add(ref);      
    }
 
    /**

Added: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/EJBClassProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/EJBClassProcessor.java	                        (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/EJBClassProcessor.java	2007-11-15 08:00:22 UTC (rev 67113)
@@ -0,0 +1,59 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.metadata.annotation.creator;
+
+import java.lang.reflect.AnnotatedElement;
+
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.javaee.spec.AnnotatedEJBReferencesMetaData;
+
+/**
+ * @EJB processor for Class annotations
+ * 
+ * @author Scott.Stark at jboss.org
+ * @version $Revision$
+ */
+public class EJBClassProcessor
+   extends AbstractEJBProcessor<Class>
+   implements Processor<AnnotatedEJBReferencesMetaData, Class>
+{
+
+   /**
+    * @param finder
+    */
+   public EJBClassProcessor(AnnotationFinder<AnnotatedElement> finder)
+   {
+      super(finder);
+   }
+
+   @Override
+   protected String getName(Class element)
+   {
+      String name = element.getSimpleName();
+      return name;
+   }
+   @Override
+   protected Class getType(Class element)
+   {
+      return element;
+   }
+}


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

Added: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/EJBsClassProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/EJBsClassProcessor.java	                        (rev 0)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/EJBsClassProcessor.java	2007-11-15 08:00:22 UTC (rev 67113)
@@ -0,0 +1,77 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.metadata.annotation.creator;
+
+import java.lang.reflect.AnnotatedElement;
+
+import javax.ejb.EJB;
+import javax.ejb.EJBs;
+
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.javaee.spec.AnnotatedEJBReferencesMetaData;
+
+/**
+ * Process a collection of EJB references
+ * 
+ * @author Scott.Stark at jboss.org
+ * @version $Revision$
+ */
+public class EJBsClassProcessor
+   extends EJBClassProcessor
+   implements Processor<AnnotatedEJBReferencesMetaData, Class>
+{
+
+   /**
+    * @param finder
+    */
+   public EJBsClassProcessor(AnnotationFinder<AnnotatedElement> finder)
+   {
+      super(finder);
+   }
+
+   public void process(AnnotatedEJBReferencesMetaData metaData, Class type)
+   {
+      EJBs annotation = finder.getAnnotation(type, EJBs.class);
+      if(annotation == null)
+         return;
+
+      EJB[] ejbs = annotation.value();
+      if(ejbs != null)
+      {
+         for(EJB ejb : ejbs)
+            super.process(metaData, type, ejb);
+      }
+   }
+
+   @Override
+   protected String getName(Class element)
+   {
+      String name = element.getSimpleName();
+      return name;
+   }
+   @Override
+   protected Class getType(Class element)
+   {
+      return element;
+   }
+
+}


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

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	2007-11-15 02:41:46 UTC (rev 67112)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/AnnotationEjb3UnitTestCase.java	2007-11-15 08:00:22 UTC (rev 67113)
@@ -40,9 +40,14 @@
 import org.jboss.metadata.ejb.spec.ContainerTransactionMetaData;
 import org.jboss.metadata.ejb.spec.EjbJar30MetaData;
 import org.jboss.metadata.ejb.spec.InitMethodMetaData;
+import org.jboss.metadata.ejb.spec.MethodInterfaceType;
+import org.jboss.metadata.ejb.spec.MethodsMetaData;
 import org.jboss.metadata.ejb.spec.SessionBeanMetaData;
 import org.jboss.metadata.ejb.spec.SessionType;
 import org.jboss.metadata.ejb.spec.TransAttributeType;
+import org.jboss.metadata.javaee.spec.AnnotatedEJBReferenceMetaData;
+import org.jboss.metadata.javaee.spec.AnnotatedEJBReferencesMetaData;
+import org.jboss.metadata.javaee.spec.EJBReferencesMetaData;
 import org.jboss.test.BaseTestCase;
 
 /**
@@ -78,8 +83,26 @@
       assertEquals(1, bean.getInitMethods().size());
       InitMethodMetaData initMethod = bean.getInitMethods().iterator().next();
       assertEquals("init", initMethod.getBeanMethod().getMethodName());
+
+      // @EJBs
+      AnnotatedEJBReferencesMetaData ejbRefs = bean.getAnnotatedEjbReferences();
+      assertEquals(2, ejbRefs.size());
+      AnnotatedEJBReferenceMetaData local1 = ejbRefs.get("ejb/local1");
+      assertNotNull(local1);
+      assertEquals("java:/MyLocalSession1", local1.getMappedName());
+      assertEquals("ejb/local1", local1.getEjbRefName());
+      assertEquals("MyLocalSession1", local1.getLink());
+      assertEquals("A reference to MyLocalSession1", local1.getDescriptions().value()[0].value());
+      assertEquals(MyStatelessLocal.class, local1.getBeanInterface());
+      AnnotatedEJBReferenceMetaData local2 = ejbRefs.get("ejb/local2");
+      assertNotNull(local2);
+      assertEquals("java:/MyLocalSession2", local2.getMappedName());
+      assertEquals("ejb/local2", local2.getEjbRefName());
+      assertEquals("local.jar#MyLocalSession1", local2.getLink());
+      assertEquals("A reference to MyLocalSession2", local2.getDescriptions().value()[0].value());
+      assertEquals(MyStatelessLocal.class, local2.getBeanInterface());
    }
-   
+
    private void assertMyStateless21Bean(IEnterpriseBeanMetaData enterpriseBean)
    {
       assertTrue(enterpriseBean instanceof SessionBeanMetaData);
@@ -113,9 +136,21 @@
       // TODO: methods
       ContainerTransactionMetaData tx2 = it.next();
       assertEquals(TransAttributeType.Mandatory, tx2.getTransAttribute());
-      // TODO: methods
+      MethodsMetaData tx2Methods = tx2.getMethods();
+      String[] params = {};
+      tx2Methods.matches("transactionAttributeMandatory", params, null);
+
+      // @EJB
+      AnnotatedEJBReferencesMetaData ejbRefs = bean.getAnnotatedEjbReferences();
+      assertEquals(2, ejbRefs.size());
+      AnnotatedEJBReferenceMetaData injectedField = ejbRefs.get("injectedField");
+      assertNotNull(injectedField);
+      assertEquals(MyStatelessLocal.class, injectedField.getBeanInterface());
+      AnnotatedEJBReferenceMetaData injectedFieldWithOverridenName = ejbRefs.get("overrideName");
+      assertNotNull(injectedFieldWithOverridenName);
+      assertEquals(MyStatelessLocal.class, injectedFieldWithOverridenName.getBeanInterface());
    }
-   
+
    private Collection<Class> loadClassesFromCurrentClassDir()
    {
       // In real life the deployer will pass probably pass a class scanner

Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/MyStatefulBean.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/MyStatefulBean.java	2007-11-15 02:41:46 UTC (rev 67112)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/MyStatefulBean.java	2007-11-15 08:00:22 UTC (rev 67113)
@@ -21,6 +21,8 @@
  */
 package org.jboss.test.metadata.annotation.ejb3;
 
+import javax.ejb.EJB;
+import javax.ejb.EJBs;
 import javax.ejb.Init;
 import javax.ejb.Remote;
 import javax.ejb.Stateful;
@@ -33,6 +35,16 @@
  */
 @Stateful(name="AnotherName")
 @Remote(MyStateful.class)
+ at EJBs(
+      value={
+            @EJB(name="ejb/local1", beanInterface=MyStatelessLocal.class,
+                  beanName="MyLocalSession1", mappedName="java:/MyLocalSession1",
+                  description="A reference to MyLocalSession1"),
+            @EJB(name="ejb/local2", beanInterface=MyStatelessLocal.class,
+                  beanName="local.jar#MyLocalSession1", mappedName="java:/MyLocalSession2",
+                  description="A reference to MyLocalSession2"),
+      }
+)
 public class MyStatefulBean
 {
    @Init




More information about the jboss-cvs-commits mailing list