[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