[webbeans-commits] Webbeans SVN: r533 - in ri/trunk/webbeans-ri/src: main/java/org/jboss/webbeans/bootstrap and 5 other directories.
webbeans-commits at lists.jboss.org
webbeans-commits at lists.jboss.org
Tue Dec 16 13:09:58 EST 2008
Author: pete.muir at jboss.org
Date: 2008-12-16 13:09:58 -0500 (Tue, 16 Dec 2008)
New Revision: 533
Added:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/spi/BusinessInterfaceDescriptor.java
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/spi/EjbDescriptor.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/spi/WebBeanDiscovery.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ejb/EJB.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ejb/EjbDescriptorCache.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Reflections.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/AbstractTest.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/BoostrapTest.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/NewEventTest.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockBootstrap.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockEjbDescriptor.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockWebBeanDiscovery.java
Log:
Fix Nick's weird EJB code from last night, remove all usage of EJB metadata scanning from code (comment out remove methods for now), improve structure of mock bootstrap
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java 2008-12-16 07:36:02 UTC (rev 532)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java 2008-12-16 18:09:58 UTC (rev 533)
@@ -37,7 +37,6 @@
import org.jboss.webbeans.ManagerImpl;
import org.jboss.webbeans.bootstrap.spi.EjbDescriptor;
import org.jboss.webbeans.contexts.DependentContext;
-import org.jboss.webbeans.ejb.EJB;
import org.jboss.webbeans.ejb.EjbDescriptorCache;
import org.jboss.webbeans.introspector.AnnotatedField;
import org.jboss.webbeans.introspector.AnnotatedMethod;
@@ -144,7 +143,7 @@
{
return;
}
- if (!EJB.isEjb(getType().getSuperclass()))
+ if (EjbDescriptorCache.instance().containsKey(getType().getSuperclass()))
{
throw new DefinitionException("Annotation defined specializing EJB must have EJB superclass");
}
@@ -185,13 +184,13 @@
private Set<AnnotatedMethod<Object>> getNoArgsRemoveMethods()
{
Set<AnnotatedMethod<Object>> noArgsRemoveMethods = new HashSet<AnnotatedMethod<Object>>();
- for (AnnotatedMethod<Object> removeMethod : getAnnotatedItem().getAnnotatedMethods(EJB.REMOVE_ANNOTATION))
+ /*for (AnnotatedMethod<Object> removeMethod : getAnnotatedItem().getAnnotatedMethods(EJB.REMOVE_ANNOTATION))
{
if (removeMethod.getParameters().isEmpty())
{
noArgsRemoveMethods.add(removeMethod);
}
- }
+ }*/
return noArgsRemoveMethods;
}
@@ -205,10 +204,10 @@
return;
}
- if (removeMethod.isAnnotationPresent(Destructor.class) && !removeMethod.isAnnotationPresent(EJB.REMOVE_ANNOTATION))
+ /*if (removeMethod.isAnnotationPresent(Destructor.class) && !removeMethod.isAnnotationPresent(EJB.REMOVE_ANNOTATION))
{
throw new DefinitionException("Methods marked @Destructor must also be marked @Remove on " + removeMethod.getName());
- }
+ }*/
else if (removeMethod.isAnnotationPresent(Initializer.class))
{
throw new DefinitionException("Remove methods cannot be initializers on " + removeMethod.getName());
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java 2008-12-16 07:36:02 UTC (rev 532)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java 2008-12-16 18:09:58 UTC (rev 533)
@@ -57,7 +57,6 @@
import org.jboss.webbeans.bootstrap.spi.WebBeanDiscovery;
import org.jboss.webbeans.contexts.DependentContext;
import org.jboss.webbeans.ejb.DefaultEnterpriseBeanLookup;
-import org.jboss.webbeans.ejb.EJB;
import org.jboss.webbeans.ejb.EjbDescriptorCache;
import org.jboss.webbeans.event.ObserverImpl;
import org.jboss.webbeans.introspector.AnnotatedField;
@@ -82,7 +81,7 @@
private static LogProvider log = Logging.getLogProvider(WebBeansBootstrap.class);
- private ManagerImpl manager;
+ protected ManagerImpl manager;
/**
* Constructor
@@ -107,7 +106,7 @@
*
* @param classes The classes to register
*/
- public void registerBeans(Class<?>... classes)
+ protected void registerBeans(Class<?>... classes)
{
registerBeans(new HashSet<Class<?>>(Arrays.asList(classes)));
}
@@ -117,11 +116,21 @@
*
* @param classes The classes to register as Web Beans
*/
- public void registerBeans(Iterable<Class<?>> classes)
+ protected void registerBeans(Iterable<Class<?>> classes)
{
Set<AbstractBean<?, ?>> beans = createBeans(classes);
+ beans.addAll(createStandardBeans());
manager.setBeans(beans);
}
+
+ protected Set<AbstractBean<?, ?>> createStandardBeans()
+ {
+ Set<AbstractBean<?, ?>> beans = new HashSet<AbstractBean<?, ?>>();
+ createBean(BeanFactory.createSimpleBean(Transaction.class, manager), beans);
+ createBean(BeanFactory.createSimpleBean(ManagerImpl.class, manager), beans);
+ createBean(BeanFactory.createSimpleBean(DefaultEnterpriseBeanLookup.class, manager), beans);
+ return beans;
+ }
/**
* Creates Web Beans from a set of classes
@@ -134,12 +143,12 @@
* @param classes The classes to adapt
* @return A set of adapted Web Beans
*/
- public Set<AbstractBean<?, ?>> createBeans(Iterable<Class<?>> classes)
+ protected Set<AbstractBean<?, ?>> createBeans(Iterable<Class<?>> classes)
{
Set<AbstractBean<?, ?>> beans = new HashSet<AbstractBean<?, ?>>();
for (Class<?> clazz : classes)
{
- if (EJB.isEjb(clazz))
+ if (EjbDescriptorCache.instance().containsKey(clazz))
{
createBean(createEnterpriseBean(clazz, manager), beans);
}
@@ -148,14 +157,11 @@
createBean(createSimpleBean(clazz, manager), beans);
}
}
- createBean(BeanFactory.createSimpleBean(Transaction.class, manager), beans);
- createBean(BeanFactory.createSimpleBean(ManagerImpl.class, manager), beans);
- createBean(BeanFactory.createSimpleBean(DefaultEnterpriseBeanLookup.class, manager), beans);
return beans;
}
- public void createBean(AbstractClassBean<?> bean, Set<AbstractBean<?, ?>> beans)
+ protected void createBean(AbstractClassBean<?> bean, Set<AbstractBean<?, ?>> beans)
{
beans.add(bean);
manager.getResolver().addInjectionPoints(bean.getInjectionPoints());
@@ -219,8 +225,9 @@
{
throw new IllegalStateException("No WebBeanDiscovery provider found, you need to implement the org.jboss.webbeans.bootstrap.spi.WebBeanDiscovery interface, and tell the RI to use it by specifying -D" + WebBeansBootstrap.WEB_BEAN_DISCOVERY_PROPERTY_NAME + "=<classname>");
}
+ // Must populate EJB cache first, as we need it to detect whether a bean is an EJB!
+ EjbDescriptorCache.instance().addAll(webBeanDiscovery.discoverEjbs());
registerBeans(webBeanDiscovery.discoverWebBeanClasses());
- EjbDescriptorCache.instance().setEjbDescriptors(webBeanDiscovery.discoverEjbs());
log.info("Validing Web Bean injection points");
manager.getResolver().resolveInjectionPoints();
manager.fireEvent(manager, new InitializedBinding());
Added: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/spi/BusinessInterfaceDescriptor.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/spi/BusinessInterfaceDescriptor.java (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/spi/BusinessInterfaceDescriptor.java 2008-12-16 18:09:58 UTC (rev 533)
@@ -0,0 +1,21 @@
+/**
+ *
+ */
+package org.jboss.webbeans.bootstrap.spi;
+
+public interface BusinessInterfaceDescriptor<T>
+{
+
+ /**
+ * Gets the business interface class
+ */
+ public Class<T> getInterface();
+
+ /**
+ * Gets the JNDI name under which the EJB is registered
+ *
+ * @return The JNDI name
+ */
+ public String getJndiName();
+
+}
\ No newline at end of file
Property changes on: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/spi/BusinessInterfaceDescriptor.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/spi/EjbDescriptor.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/spi/EjbDescriptor.java 2008-12-16 07:36:02 UTC (rev 532)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/spi/EjbDescriptor.java 2008-12-16 18:09:58 UTC (rev 533)
@@ -18,7 +18,6 @@
package org.jboss.webbeans.bootstrap.spi;
import java.lang.reflect.Method;
-import java.util.Iterator;
/**
* EJB metadata from the EJB descriptor
@@ -30,23 +29,6 @@
public interface EjbDescriptor<T>
{
- public interface BusinessInterfaceDescriptor
- {
-
- /**
- * Gets the business interface class
- */
- public Class<?> getInterface();
-
- /**
- * Gets the JNDI name under which the EJB is registered
- *
- * @return The JNDI name
- */
- public String getJndiName();
-
- }
-
/**
* Gets the EJB type
*
@@ -59,30 +41,50 @@
*
* @return An iterator over the local business interfaces
*/
- public Iterator<BusinessInterfaceDescriptor> getLocalBusinessInterfaces();
+ public Iterable<BusinessInterfaceDescriptor<?>> getLocalBusinessInterfaces();
/**
* Gets the remote business interfaces of the EJB
*
* @return An iterator over the remote business interfaces
*/
- public Iterator<BusinessInterfaceDescriptor> getRemoteBusinessInterfaces();
+ public Iterable<BusinessInterfaceDescriptor<?>> getRemoteBusinessInterfaces();
/**
* Get the remove methods of the EJB
*
* @return An iterator the remove methods
*/
- public Iterator<Method> getRemoveMethods();
+ public Iterable<Method> getRemoveMethods();
+ /**
+ * The type of EJB
+ * @return true if the bean is stateless
+ */
public boolean isStateless();
+ /**
+ * The type of EJB
+ * @return true if the bean is an EJB 3.1 singleton
+ */
public boolean isSingleton();
+ /**
+ * The type of EJB
+ * @return true if the bean is stateful
+ */
public boolean isStateful();
+ /**
+ * The type of EJB
+ * @return true if the bean is an MDB
+ */
public boolean isMessageDriven();
+ /**
+ *
+ * @return The ejbName
+ */
public String getEjbName();
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/spi/WebBeanDiscovery.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/spi/WebBeanDiscovery.java 2008-12-16 07:36:02 UTC (rev 532)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/spi/WebBeanDiscovery.java 2008-12-16 18:09:58 UTC (rev 533)
@@ -18,7 +18,6 @@
package org.jboss.webbeans.bootstrap.spi;
import java.net.URL;
-import java.util.Map;
/**
* A container should implement this interface to allow the Web Beans RI to
@@ -44,10 +43,10 @@
public Iterable<URL> discoverWebBeansXml();
/**
- * Gets a Map of EJB descriptors, keyed by the EJB bean class
+ * Gets a descriptor for each EJB in the application
*
* @return The bean class to descriptor map
*/
- public Map<String, EjbDescriptor<?>> discoverEjbs();
+ public Iterable<EjbDescriptor<?>> discoverEjbs();
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ejb/EJB.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ejb/EJB.java 2008-12-16 07:36:02 UTC (rev 532)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ejb/EJB.java 2008-12-16 18:09:58 UTC (rev 533)
@@ -17,25 +17,16 @@
package org.jboss.webbeans.ejb;
-import java.lang.annotation.Annotation;
-
import org.jboss.webbeans.util.ApiAbstraction;
/**
- * Utility class for EJB annotations etc
+ * Utility class for EJB classes etc. EJB metadata should NOT be inspected here
*
* @author Pete Muir
*/
public class EJB extends ApiAbstraction
{
- // Annotation instances
- public static final Class<? extends Annotation> STATELESS_ANNOTATION;
- public static final Class<? extends Annotation> STATEFUL_ANNOTATION;
- public static final Class<? extends Annotation> MESSAGE_DRIVEN_ANNOTATION;
- public static final Class<? extends Annotation> FAKE_MESSAGE_DRIVEN_ANNOTATION;
- public static final Class<? extends Annotation> SINGLETON_ANNOTATION;
- public static final Class<? extends Annotation> REMOVE_ANNOTATION;
public static final Class<?> ENTERPRISE_BEAN_CLASS;
/**
@@ -43,22 +34,7 @@
*/
static
{
- STATELESS_ANNOTATION = annotationTypeForName("javax.ejb.Stateless");
- STATEFUL_ANNOTATION = annotationTypeForName("javax.ejb.Stateful");
- MESSAGE_DRIVEN_ANNOTATION = annotationTypeForName("javax.ejb.MessageDriven");
- // Fake MDB for tests
- FAKE_MESSAGE_DRIVEN_ANNOTATION = annotationTypeForName("org.jboss.webbeans.test.annotations.MessageDriven");
- // TODO Faking singleton for tests
- SINGLETON_ANNOTATION = annotationTypeForName("org.jboss.webbeans.test.annotations.Singleton");
- // SINGLETON_ANNOTATION = classForName("javax.ejb.Singleton");
- REMOVE_ANNOTATION = annotationTypeForName("javax.ejb.Remove");
ENTERPRISE_BEAN_CLASS = classForName("javax.ejb.EnterpriseBean");
}
-
- public static boolean isEjb(Class<?> clazz)
- {
- return clazz.isAnnotationPresent(STATEFUL_ANNOTATION) || clazz.isAnnotationPresent(STATELESS_ANNOTATION) || clazz.isAnnotationPresent(SINGLETON_ANNOTATION);
- }
-
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ejb/EjbDescriptorCache.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ejb/EjbDescriptorCache.java 2008-12-16 07:36:02 UTC (rev 532)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ejb/EjbDescriptorCache.java 2008-12-16 18:09:58 UTC (rev 533)
@@ -1,14 +1,12 @@
package org.jboss.webbeans.ejb;
-import java.util.Map;
+import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.CopyOnWriteArraySet;
import org.jboss.webbeans.bootstrap.spi.EjbDescriptor;
-import org.jboss.webbeans.test.mock.MockEjbDescriptor;
-import org.jboss.webbeans.util.Strings;
-import com.google.common.collect.ForwardingMap;
-
public class EjbDescriptorCache
{
private static EjbDescriptorCache instance;
@@ -23,43 +21,48 @@
instance = new EjbDescriptorCache();
}
- private class EjbDescriptorMap extends ForwardingMap<String, EjbDescriptor<?>>
- {
- private Map<String, EjbDescriptor<?>> delegate;
+ private ConcurrentMap<String, EjbDescriptor<?>> ejbsByName;
+ private ConcurrentMap<Class<?>, Set<EjbDescriptor<?>>> ejbsByBeanClass;
- public EjbDescriptorMap()
- {
- delegate = new ConcurrentHashMap<String, EjbDescriptor<?>>();
- }
-
- @Override
- protected Map<String, EjbDescriptor<?>> delegate()
- {
- return delegate;
- }
-
- @Override
- public String toString()
- {
- return Strings.mapToString("EjbMetaDataMap (EJB name -> metadata): ", delegate);
- }
- }
-
- private EjbDescriptorMap ejbDescriptorMap = new EjbDescriptorMap();
-
- public void setEjbDescriptors(Map<String, EjbDescriptor<?>> ejbDescriptorMap)
+ public EjbDescriptorCache()
{
- ejbDescriptorMap.putAll(ejbDescriptorMap);
+ this.ejbsByName = new ConcurrentHashMap<String, EjbDescriptor<?>>();
+ this.ejbsByBeanClass = new ConcurrentHashMap<Class<?>, Set<EjbDescriptor<?>>>();
}
public EjbDescriptor<?> get(String ejbName)
{
- return ejbDescriptorMap.get(ejbName);
+ return ejbsByName.get(ejbName);
}
+
+ public Iterable<EjbDescriptor<?>> get(Class<?> beanClass)
+ {
+ return ejbsByBeanClass.get(beanClass);
+ }
- public void addEjbDescriptor(String ejbName, EjbDescriptor<?> ejbDescriptor)
+ public void add(EjbDescriptor<?> ejbDescriptor)
{
- ejbDescriptorMap.put(ejbName, ejbDescriptor);
+ ejbsByName.put(ejbDescriptor.getEjbName(), ejbDescriptor);
+ ejbsByBeanClass.putIfAbsent(ejbDescriptor.getType(), new CopyOnWriteArraySet<EjbDescriptor<?>>());
+ ejbsByBeanClass.get(ejbDescriptor.getType()).add(ejbDescriptor);
}
+
+ public boolean containsKey(String ejbName)
+ {
+ return ejbsByName.containsKey(ejbName);
+ }
+
+ public boolean containsKey(Class<?> beanClass)
+ {
+ return ejbsByBeanClass.containsKey(beanClass);
+ }
+
+ public void addAll(Iterable<EjbDescriptor<?>> ejbDescriptors)
+ {
+ for (EjbDescriptor<?> ejbDescriptor : ejbDescriptors)
+ {
+ add(ejbDescriptor);
+ }
+ }
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Reflections.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Reflections.java 2008-12-16 07:36:02 UTC (rev 532)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Reflections.java 2008-12-16 18:09:58 UTC (rev 533)
@@ -54,9 +54,21 @@
*/
public static Class<?> classForName(String name) throws ClassNotFoundException
{
+ return classForName(name, Thread.currentThread().getContextClassLoader());
+ }
+
+ /**
+ * Creates an instance from a class name
+ *
+ * @param name The class name
+ * @return The instance
+ * @throws ClassNotFoundException If the class if not found
+ */
+ public static Class<?> classForName(String name, ClassLoader classLoader) throws ClassNotFoundException
+ {
try
{
- return Thread.currentThread().getContextClassLoader().loadClass(name);
+ return classLoader.loadClass(name);
}
catch (Exception e)
{
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/AbstractTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/AbstractTest.java 2008-12-16 07:36:02 UTC (rev 532)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/AbstractTest.java 2008-12-16 18:09:58 UTC (rev 533)
@@ -31,8 +31,8 @@
manager.addContext(SessionContext.INSTANCE);
ApplicationContext.INSTANCE.setBeanMap(new SimpleBeanMap());
manager.addContext(ApplicationContext.INSTANCE);
- // Load the build in beans
- webBeansBootstrap.registerBeans();
+ // Load the built in beans
+ webBeansBootstrap.registerStandardBeans();
init();
}
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/BoostrapTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/BoostrapTest.java 2008-12-16 07:36:02 UTC (rev 532)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/BoostrapTest.java 2008-12-16 18:09:58 UTC (rev 533)
@@ -3,8 +3,8 @@
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.List;
import java.util.Map;
-import java.util.Set;
import javax.webbeans.manager.Bean;
@@ -36,12 +36,16 @@
@Test(groups="bootstrap")
public void testSingleSimpleBean()
{
- Set<AbstractBean<?, ?>> beans = webBeansBootstrap.createBeans(Tuna.class);
+ webBeansBootstrap.boot(new MockWebBeanDiscovery(Tuna.class));
+ List<Bean<?>> beans = manager.getBeans();
+ Map<Class<?>, Bean<?>> classes = new HashMap<Class<?>, Bean<?>>();
assert beans.size() == 1 + MockManagerImpl.BUILT_IN_BEANS;
- Map<Class<?>, Bean<?>> classes = new HashMap<Class<?>, Bean<?>>();
- for (AbstractBean<?, ?> bean : beans)
+ for (Bean<?> bean : beans)
{
- classes.put(bean.getType(), bean);
+ if (bean instanceof AbstractBean)
+ {
+ classes.put(((AbstractBean<?, ?>) bean).getType(), bean);
+ }
}
assert classes.containsKey(Tuna.class);
}
@@ -49,12 +53,16 @@
@Test(groups="bootstrap")
public void testSingleEnterpriseBean()
{
- Set<AbstractBean<?, ?>> beans = webBeansBootstrap.createBeans(Hound.class);
+ webBeansBootstrap.boot(new MockWebBeanDiscovery(Hound.class));
+ List<Bean<?>> beans = manager.getBeans();
assert beans.size() == 1 + MockManagerImpl.BUILT_IN_BEANS;
Map<Class<?>, Bean<?>> classes = new HashMap<Class<?>, Bean<?>>();
- for (AbstractBean<?, ?> bean : beans)
+ for (Bean<?> bean : beans)
{
- classes.put(bean.getType(), bean);
+ if (bean instanceof AbstractBean)
+ {
+ classes.put(((AbstractBean<?, ?>) bean).getType(), bean);
+ }
}
assert classes.containsKey(Hound.class);
}
@@ -62,12 +70,16 @@
@Test(groups="bootstrap")
public void testMultipleSimpleBean()
{
- Set<AbstractBean<?, ?>> beans = webBeansBootstrap.createBeans(Tuna.class, Salmon.class, SeaBass.class, Sole.class);
+ webBeansBootstrap.boot(new MockWebBeanDiscovery(Tuna.class, Salmon.class, SeaBass.class, Sole.class));
+ List<Bean<?>> beans = manager.getBeans();
assert beans.size() == 4 + MockManagerImpl.BUILT_IN_BEANS;
Map<Class<?>, Bean<?>> classes = new HashMap<Class<?>, Bean<?>>();
- for (AbstractBean<?, ?> bean : beans)
+ for (Bean<?> bean : beans)
{
- classes.put(bean.getType(), bean);
+ if (bean instanceof AbstractBean)
+ {
+ classes.put(((AbstractBean<?, ?>) bean).getType(), bean);
+ }
}
assert classes.containsKey(Tuna.class);
assert classes.containsKey(Salmon.class);
@@ -83,12 +95,16 @@
@Test(groups="bootstrap")
public void testProducerMethodBean()
{
- Set<AbstractBean<?, ?>> beans = webBeansBootstrap.createBeans(TarantulaProducer.class);
+ webBeansBootstrap.boot(new MockWebBeanDiscovery(TarantulaProducer.class));
+ List<Bean<?>> beans = manager.getBeans();
assert beans.size() == 2 + MockManagerImpl.BUILT_IN_BEANS;
Map<Class<?>, Bean<?>> classes = new HashMap<Class<?>, Bean<?>>();
- for (AbstractBean<?, ?> bean : beans)
+ for (Bean<?> bean : beans)
{
- classes.put(bean.getType(), bean);
+ if (bean instanceof AbstractBean)
+ {
+ classes.put(((AbstractBean<?, ?>) bean).getType(), bean);
+ }
}
assert classes.containsKey(TarantulaProducer.class);
assert classes.containsKey(Tarantula.class);
@@ -100,12 +116,16 @@
@Test(groups="bootstrap")
public void testMultipleEnterpriseBean()
{
- Set<AbstractBean<?, ?>> beans = webBeansBootstrap.createBeans(Hound.class, Elephant.class, Panther.class, Tiger.class);
+ webBeansBootstrap.boot(new MockWebBeanDiscovery(Hound.class, Elephant.class, Panther.class, Tiger.class));
+ List<Bean<?>> beans = manager.getBeans();
assert beans.size() == 4 + MockManagerImpl.BUILT_IN_BEANS;
Map<Class<?>, Bean<?>> classes = new HashMap<Class<?>, Bean<?>>();
- for (AbstractBean<?, ?> bean : beans)
+ for (Bean<?> bean : beans)
{
- classes.put(bean.getType(), bean);
+ if (bean instanceof AbstractBean)
+ {
+ classes.put(((AbstractBean<?, ?>) bean).getType(), bean);
+ }
}
assert classes.containsKey(Hound.class);
assert classes.containsKey(Elephant.class);
@@ -121,12 +141,16 @@
@Test(groups="bootstrap")
public void testMultipleEnterpriseAndSimpleBean()
{
- Set<AbstractBean<?, ?>> beans = webBeansBootstrap.createBeans(Hound.class, Elephant.class, Panther.class, Tiger.class, Tuna.class, Salmon.class, SeaBass.class, Sole.class);
+ webBeansBootstrap.boot(new MockWebBeanDiscovery(Hound.class, Elephant.class, Panther.class, Tiger.class, Tuna.class, Salmon.class, SeaBass.class, Sole.class));
+ List<Bean<?>> beans = manager.getBeans();
assert beans.size() == 8 + MockManagerImpl.BUILT_IN_BEANS;
Map<Class<?>, Bean<?>> classes = new HashMap<Class<?>, Bean<?>>();
- for (AbstractBean<?, ?> bean : beans)
+ for (Bean<?> bean : beans)
{
- classes.put(bean.getType(), bean);
+ if (bean instanceof AbstractBean)
+ {
+ classes.put(((AbstractBean<?, ?>) bean).getType(), bean);
+ }
}
assert classes.containsKey(Hound.class);
assert classes.containsKey(Elephant.class);
@@ -150,7 +174,7 @@
@Test(groups="bootstrap")
public void testRegisterProducerMethodBean()
{
- webBeansBootstrap.registerBeans(TarantulaProducer.class);
+ webBeansBootstrap.boot(new MockWebBeanDiscovery(TarantulaProducer.class));
assert manager.getBeans().size() == 2 + MockManagerImpl.BUILT_IN_BEANS;
Map<Class<?>, Bean<?>> classes = new HashMap<Class<?>, Bean<?>>();
for (Bean<?> bean : manager.getBeans())
@@ -171,7 +195,7 @@
@Test(groups="bootstrap")
public void testRegisterMultipleEnterpriseAndSimpleBean()
{
- webBeansBootstrap.registerBeans(Hound.class, Elephant.class, Panther.class, Tiger.class, Tuna.class, Salmon.class, SeaBass.class, Sole.class);
+ webBeansBootstrap.boot(new MockWebBeanDiscovery(Hound.class, Elephant.class, Panther.class, Tiger.class, Tuna.class, Salmon.class, SeaBass.class, Sole.class));
assert manager.getBeans().size() == 8 + MockManagerImpl.BUILT_IN_BEANS;
Map<Class<?>, Bean<?>> classes = new HashMap<Class<?>, Bean<?>>();
for (Bean<?> bean : manager.getBeans())
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/NewEventTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/NewEventTest.java 2008-12-16 07:36:02 UTC (rev 532)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/NewEventTest.java 2008-12-16 18:09:58 UTC (rev 533)
@@ -1,6 +1,7 @@
package org.jboss.webbeans.test;
import java.lang.annotation.Annotation;
+import java.util.List;
import java.util.Set;
import javax.webbeans.DefinitionException;
@@ -10,8 +11,8 @@
import javax.webbeans.Observer;
import javax.webbeans.ObserverException;
import javax.webbeans.TypeLiteral;
+import javax.webbeans.manager.Bean;
-import org.jboss.webbeans.bean.AbstractBean;
import org.jboss.webbeans.bean.BeanFactory;
import org.jboss.webbeans.bean.EventBean;
import org.jboss.webbeans.bean.SimpleBean;
@@ -35,6 +36,7 @@
import org.jboss.webbeans.test.ejb.valid.BullTerrier;
import org.jboss.webbeans.test.ejb.valid.Pomeranian;
import org.jboss.webbeans.test.mock.MockManagerImpl;
+import org.jboss.webbeans.test.mock.MockWebBeanDiscovery;
import org.testng.annotations.Test;
/**
@@ -336,7 +338,8 @@
@SpecAssertion(section = "8.5")
public void testObserverMethodOnEnterpriseBeanIsBusinessMethodOrStatic()
{
- Set<AbstractBean<?, ?>> beans = webBeansBootstrap.createBeans(Pomeranian.class);
+ webBeansBootstrap.boot(new MockWebBeanDiscovery(Pomeranian.class));
+ List<Bean<?>> beans = manager.getBeans();
assert beans.size() == 1 + MockManagerImpl.BUILT_IN_BEANS;
Set<Observer<MockManagerImpl>> observers = manager.resolveObservers(manager, new InitializedBinding());
assert observers.size() == 2;
@@ -346,7 +349,8 @@
@SpecAssertion(section = "8.5")
public void testObserverMethodOnEnterpriseBeanNotBusinessMethodOrStaticFails()
{
- Set<AbstractBean<?, ?>> beans = webBeansBootstrap.createBeans(TibetanTerrier.class);
+ webBeansBootstrap.boot(new MockWebBeanDiscovery(TibetanTerrier.class));
+ List<Bean<?>> beans = manager.getBeans();
assert beans.size() == 1 + MockManagerImpl.BUILT_IN_BEANS;
Set<Observer<MockManagerImpl>> observers = manager.resolveObservers(manager, new InitializedBinding());
assert observers.size() == 1;
@@ -366,7 +370,8 @@
@SpecAssertion(section = { "8.5.1", "8.5.2" })
public void testObserverMethodMustHaveOnlyOneEventParameter()
{
- Set<AbstractBean<?, ?>> beans = webBeansBootstrap.createBeans(YorkshireTerrier.class);
+ webBeansBootstrap.boot(new MockWebBeanDiscovery(YorkshireTerrier.class));
+ List<Bean<?>> beans = manager.getBeans();
assert beans != null;
}
@@ -374,7 +379,8 @@
@SpecAssertion(section = "8.5.1")
public void testObserverMethodCannotObserveParameterizedEvents()
{
- Set<AbstractBean<?, ?>> beans = webBeansBootstrap.createBeans(BostonTerrier.class);
+ webBeansBootstrap.boot(new MockWebBeanDiscovery(BostonTerrier.class));
+ List<Bean<?>> beans = manager.getBeans();
assert beans != null;
}
@@ -383,7 +389,8 @@
public void testObserverMethodWithoutBindingTypesObservesEventsWithoutBindingTypes()
{
// This observer has no binding types specified
- Set<AbstractBean<?, ?>> beans = webBeansBootstrap.createBeans(Pomeranian.class);
+ webBeansBootstrap.boot(new MockWebBeanDiscovery(Pomeranian.class));
+ List<Bean<?>> beans = manager.getBeans();
assert beans.size() == 1 + MockManagerImpl.BUILT_IN_BEANS;
// Resolve registered observers with an event containing no binding types
@@ -396,7 +403,8 @@
@SpecAssertion(section = "8.5.2")
public void testObserverMethodAnnotatedProducesFails()
{
- Set<AbstractBean<?, ?>> beans = webBeansBootstrap.createBeans(BorderTerrier.class);
+ webBeansBootstrap.boot(new MockWebBeanDiscovery(BorderTerrier.class));
+ List<Bean<?>> beans = manager.getBeans();
assert beans != null;
}
@@ -404,7 +412,8 @@
@SpecAssertion(section = "8.5.2")
public void testObserverMethodAnnotatedInitializerFails()
{
- Set<AbstractBean<?, ?>> beans = webBeansBootstrap.createBeans(AustralianTerrier.class);
+ webBeansBootstrap.boot(new MockWebBeanDiscovery(AustralianTerrier.class));
+ List<Bean<?>> beans = manager.getBeans();
assert beans != null;
}
@@ -412,7 +421,8 @@
@SpecAssertion(section = "8.5.2")
public void testObserverMethodAnnotatedDestructorFails()
{
- Set<AbstractBean<?, ?>> beans = webBeansBootstrap.createBeans(CairnsTerrier.class);
+ webBeansBootstrap.boot(new MockWebBeanDiscovery(CairnsTerrier.class));
+ List<Bean<?>> beans = manager.getBeans();
assert beans != null;
}
@@ -420,7 +430,8 @@
@SpecAssertion(section = "8.5.2")
public void testObserverMethodWithDisposesParamFails()
{
- Set<AbstractBean<?, ?>> beans = webBeansBootstrap.createBeans(FoxTerrier.class);
+ webBeansBootstrap.boot(new MockWebBeanDiscovery(FoxTerrier.class));
+ List<Bean<?>> beans = manager.getBeans();
assert beans != null;
}
@@ -428,7 +439,8 @@
@SpecAssertion(section = "8.5.2")
public void testObserverMethodMayHaveMultipleBindingTypes()
{
- Set<AbstractBean<?, ?>> beans = webBeansBootstrap.createBeans(BullTerrier.class);
+ webBeansBootstrap.boot(new MockWebBeanDiscovery(BullTerrier.class));
+ List<Bean<?>> beans = manager.getBeans();
assert beans != null;
// If we can resolve the observer with the two binding types,
// then it worked
@@ -456,7 +468,8 @@
@SpecAssertion(section = "8.5.4")
public void testObserverMethodReceivesInjectionsOnNonObservesParameters()
{
- Set<AbstractBean<?, ?>> beans = webBeansBootstrap.createBeans(BananaSpider.class);
+ webBeansBootstrap.boot(new MockWebBeanDiscovery(BananaSpider.class));
+ List<Bean<?>> beans = manager.getBeans();
assert beans != null;
}
@@ -470,7 +483,7 @@
@SpecAssertion(section = "8.5.5")
public void testConditionalObserver()
{
- webBeansBootstrap.registerBeans(RecluseSpider.class);
+ webBeansBootstrap.boot(new MockWebBeanDiscovery(RecluseSpider.class));
manager.fireEvent("New string event");
// Should not be notified since bean is not instantiated yet
@@ -534,7 +547,8 @@
@SpecAssertion(section = "8.5.7")
public void testEnterpriseBeanObserverMethodCalledWithCallerContext()
{
- Set<AbstractBean<?, ?>> beans = webBeansBootstrap.createBeans(Pomeranian.class);
+ webBeansBootstrap.boot(new MockWebBeanDiscovery(Pomeranian.class));
+ List<Bean<?>> beans = manager.getBeans();
assert beans.size() == 1;
String event = "A new event";
Set<Observer<String>> observers = manager.resolveObservers(event);
@@ -555,7 +569,8 @@
@SpecAssertion(section = "8.5.7")
public void testNonTransactionalObserverThrownNonCheckedExceptionIsRethrown()
{
- Set<AbstractBean<?, ?>> beans = webBeansBootstrap.createBeans(TeaCupPomeranian.class);
+ webBeansBootstrap.boot(new MockWebBeanDiscovery(TeaCupPomeranian.class));
+ List<Bean<?>> beans = manager.getBeans();
assert beans.size() == 1 + MockManagerImpl.BUILT_IN_BEANS;
manager.fireEvent("Another event");
}
@@ -564,7 +579,8 @@
@SpecAssertion(section = "8.5.7")
public void testNonTransactionalObserverThrownCheckedExceptionIsWrappedAndRethrown()
{
- Set<AbstractBean<?, ?>> beans = webBeansBootstrap.createBeans(TeaCupPomeranian.class);
+ webBeansBootstrap.boot(new MockWebBeanDiscovery(TeaCupPomeranian.class));
+ List<Bean<?>> beans = manager.getBeans();
assert beans.size() == 1 + MockManagerImpl.BUILT_IN_BEANS;
manager.fireEvent(new Integer(1));
}
@@ -573,7 +589,7 @@
@SpecAssertion(section = "8.6")
public void testDuplicateBindingsToFireFails()
{
- webBeansBootstrap.registerBeans(SweeWaxbill.class);
+ webBeansBootstrap.boot(new MockWebBeanDiscovery(SweeWaxbill.class));
try
{
DependentContext.INSTANCE.setActive(true);
@@ -590,7 +606,7 @@
@SpecAssertion(section = "8.6")
public void testDuplicateBindingsToObservesFails()
{
- webBeansBootstrap.registerBeans(SweeWaxbill.class);
+ webBeansBootstrap.boot(new MockWebBeanDiscovery(SweeWaxbill.class));
try
{
DependentContext.INSTANCE.setActive(true);
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockBootstrap.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockBootstrap.java 2008-12-16 07:36:02 UTC (rev 532)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockBootstrap.java 2008-12-16 18:09:58 UTC (rev 533)
@@ -1,14 +1,7 @@
package org.jboss.webbeans.test.mock;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
import org.jboss.webbeans.ManagerImpl;
-import org.jboss.webbeans.bean.AbstractBean;
import org.jboss.webbeans.bootstrap.WebBeansBootstrap;
-import org.jboss.webbeans.ejb.EJB;
-import org.jboss.webbeans.ejb.EjbDescriptorCache;
public class MockBootstrap extends WebBeansBootstrap
{
@@ -18,24 +11,9 @@
super(manager);
}
- /**
- * Discover any beans defined by the provided classes
- *
- * Beans discovered are not registered with the manager
- *
- * @param classes The classes to create Web Beans from
- * @return A set of Web Beans that represents the classes
- */
- @SuppressWarnings("unchecked")
- public Set<AbstractBean<?, ?>> createBeans(Class<?>... classes)
+ public void registerStandardBeans()
{
- for (Class<?> clazz : classes) {
- if (EJB.isEjb(clazz)) {
- String ejbName = clazz.getSimpleName() + "/local";
- EjbDescriptorCache.instance().addEjbDescriptor(ejbName, new MockEjbDescriptor(ejbName, clazz));
- }
- }
- return createBeans(new HashSet<Class<?>>(Arrays.asList(classes)));
+ manager.setBeans(createStandardBeans());
}
}
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockEjbDescriptor.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockEjbDescriptor.java 2008-12-16 07:36:02 UTC (rev 532)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockEjbDescriptor.java 2008-12-16 18:09:58 UTC (rev 533)
@@ -2,21 +2,27 @@
import java.lang.reflect.Method;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashSet;
-import java.util.Iterator;
+import javax.ejb.MessageDriven;
+import javax.ejb.Remove;
+import javax.ejb.Singleton;
+import javax.ejb.Stateful;
+import javax.ejb.Stateless;
+
+import org.jboss.webbeans.bootstrap.spi.BusinessInterfaceDescriptor;
import org.jboss.webbeans.bootstrap.spi.EjbDescriptor;
-import org.jboss.webbeans.ejb.EJB;
public class MockEjbDescriptor<T> implements EjbDescriptor<T>
{
private Class<T> type;
private String ejbName;
- public MockEjbDescriptor(String ejbName, Class<T> type)
+ public MockEjbDescriptor(Class<T> type)
{
- this.ejbName = ejbName;
this.type = type;
+ this.ejbName = type.getSimpleName() + "/local";
}
public String getEjbName()
@@ -24,27 +30,27 @@
return ejbName;
}
- public Iterator<BusinessInterfaceDescriptor> getLocalBusinessInterfaces()
+ public Iterable<BusinessInterfaceDescriptor<?>> getLocalBusinessInterfaces()
{
- return new HashSet<BusinessInterfaceDescriptor>().iterator();
+ return Collections.emptyList();
}
-
- public Iterator<BusinessInterfaceDescriptor> getRemoteBusinessInterfaces()
+
+ public Iterable<BusinessInterfaceDescriptor<?>> getRemoteBusinessInterfaces()
{
- return new HashSet<BusinessInterfaceDescriptor>().iterator();
+ return Collections.emptyList();
}
- public Iterator<Method> getRemoveMethods()
+ public Iterable<Method> getRemoveMethods()
{
Collection<Method> removeMethods = new HashSet<Method>();
for (Method method : type.getMethods())
{
- if (method.isAnnotationPresent(EJB.REMOVE_ANNOTATION))
+ if (method.isAnnotationPresent(Remove.class))
{
removeMethods.add(method);
}
}
- return removeMethods.iterator();
+ return removeMethods;
}
public Class<T> getType()
@@ -54,22 +60,22 @@
public boolean isMessageDriven()
{
- return type.isAnnotationPresent(EJB.MESSAGE_DRIVEN_ANNOTATION);
+ return type.isAnnotationPresent(MessageDriven.class);
}
public boolean isSingleton()
{
- return type.isAnnotationPresent(EJB.SINGLETON_ANNOTATION);
+ return type.isAnnotationPresent(Singleton.class);
}
public boolean isStateful()
{
- return type.isAnnotationPresent(EJB.STATEFUL_ANNOTATION);
+ return type.isAnnotationPresent(Stateful.class);
}
public boolean isStateless()
{
- return type.isAnnotationPresent(EJB.STATELESS_ANNOTATION);
+ return type.isAnnotationPresent(Stateless.class);
}
}
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockWebBeanDiscovery.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockWebBeanDiscovery.java 2008-12-16 07:36:02 UTC (rev 532)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockWebBeanDiscovery.java 2008-12-16 18:09:58 UTC (rev 533)
@@ -1,56 +1,82 @@
package org.jboss.webbeans.test.mock;
import java.net.URL;
-import java.util.HashMap;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashSet;
-import java.util.Map;
+import java.util.List;
import java.util.Set;
+import javax.ejb.MessageDriven;
+import javax.ejb.Singleton;
+import javax.ejb.Stateful;
+import javax.ejb.Stateless;
+
import org.jboss.webbeans.bootstrap.spi.EjbDescriptor;
import org.jboss.webbeans.bootstrap.spi.WebBeanDiscovery;
public class MockWebBeanDiscovery implements WebBeanDiscovery
{
- private Set<Class<?>> webBeanClasses = new HashSet<Class<?>>();
+ private Iterable<Class<?>> webBeanClasses = new HashSet<Class<?>>();
- private Set<URL> webBeansXmlFiles = new HashSet<URL>();
+ private Iterable<URL> webBeansXmlFiles = new HashSet<URL>();
- private Map<String, EjbDescriptor<?>> ejbs = new HashMap<String, EjbDescriptor<?>>();
+ private List<EjbDescriptor<?>> ejbs = new ArrayList<EjbDescriptor<?>>();
+ /**
+ * Simple constructor that auto discovers EJBs
+ * @param webBeanClasses
+ */
+ public MockWebBeanDiscovery(Class<?>... webBeanClasses)
+ {
+ this(Arrays.asList(webBeanClasses));
+ }
+
+ public MockWebBeanDiscovery(Iterable<Class<?>> webBeanClasses)
+ {
+ this(webBeanClasses, null, discoverEjbs(webBeanClasses));
+ }
+
@SuppressWarnings("unchecked")
- public MockWebBeanDiscovery(Set<Class<?>> webBeanClasses, Set<URL> webBeansXmlFiles, Set<Class<?>> ejbs)
+ public MockWebBeanDiscovery(Iterable<Class<?>> webBeanClasses, Iterable<URL> webBeansXmlFiles, Iterable<Class<?>> ejbs)
{
super();
this.webBeanClasses = webBeanClasses;
this.webBeansXmlFiles = webBeansXmlFiles;
- this.ejbs = new HashMap<String, EjbDescriptor<?>>();
- for (Class<?> ejb : ejbs)
+ this.ejbs = new ArrayList<EjbDescriptor<?>>();
+ for (Class<?> ejbClass : ejbs)
{
- String ejbName = getEjbName(ejb);
- this.ejbs.put(ejbName, new MockEjbDescriptor(ejbName, ejb));
+ this.ejbs.add(new MockEjbDescriptor(ejbClass));
}
}
- private String getEjbName(Class<?> clazz)
- {
- return clazz.getSimpleName() + "/local";
- }
-
public Iterable<Class<?>> discoverWebBeanClasses()
{
return webBeanClasses;
}
- public Map<String, EjbDescriptor<?>> discoverEjbs()
+ public Iterable<EjbDescriptor<?>> discoverEjbs()
{
- // TODO Auto-generated method stub
- return new HashMap<String, EjbDescriptor<?>>();
+ return ejbs;
}
public Iterable<URL> discoverWebBeansXml()
{
return webBeansXmlFiles;
}
+
+ protected static Iterable<Class<?>> discoverEjbs(Iterable<Class<?>> webBeanClasses)
+ {
+ Set<Class<?>> ejbs = new HashSet<Class<?>>();
+ for (Class<?> clazz : webBeanClasses)
+ {
+ if (clazz.isAnnotationPresent(Stateless.class) || clazz.isAnnotationPresent(Stateful.class) || clazz.isAnnotationPresent(MessageDriven.class) || clazz.isAnnotationPresent(Singleton.class))
+ {
+ ejbs.add(clazz);
+ }
+ }
+ return ejbs;
+ }
}
More information about the weld-commits
mailing list