[webbeans-commits] Webbeans SVN: r387 - in ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans: bootstrap and 1 other directory.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Tue Dec 2 02:19:21 EST 2008


Author: nickarls
Date: 2008-12-02 02:19:21 -0500 (Tue, 02 Dec 2008)
New Revision: 387

Modified:
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EventBean.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/Bootstrap.java
Log:
hooking event beans into bootstrap process, changes in constructors

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java	2008-12-01 22:12:52 UTC (rev 386)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java	2008-12-02 07:19:21 UTC (rev 387)
@@ -100,7 +100,8 @@
    /**
     * Returns the producer methods
     * 
-    * @return A set of producer methods
+    * @return A set of producer methods. An empty set is returned if there are
+    *         none present
     */
    public Set<AnnotatedMethod<Object>> getProducerMethods()
    {
@@ -108,6 +109,17 @@
    }
 
    /**
+    * Returns @Observer annotated fields.
+    * 
+    * @return A set of observing fields. An empty set is returned if there are
+    *         none present.
+    */
+   public Set<AnnotatedField<Object>> getEventFields()
+   {
+      return getAnnotatedItem().getAnnotatedFields(Observes.class);
+   }
+
+   /**
     * Initializes the injection points
     */
    @Override

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EventBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EventBean.java	2008-12-01 22:12:52 UTC (rev 386)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EventBean.java	2008-12-02 07:19:21 UTC (rev 387)
@@ -45,14 +45,32 @@
    private String location;
    private AnnotatedField<EventImpl<T>> annotatedItem;
 
-   public EventBean(Field field, ManagerImpl manager, AbstractClassBean<?> declaringBean)
+   @SuppressWarnings("unchecked")
+   public EventBean(AnnotatedField<T> field, ManagerImpl manager)
    {
       super(manager);
-      this.annotatedItem = new AnnotatedFieldImpl<EventImpl<T>>(field, declaringBean.getAnnotatedItem());
+      this.annotatedItem = (AnnotatedField<EventImpl<T>>) field;
       init();
    }
 
    /**
+    * Initializes the bean
+    * 
+    * Calls super method and validates the annotated item
+    */
+   protected void init() {
+      super.init();
+      checkAnnotatedItem();
+   }
+   
+   /**
+    * Validates the annotated item
+    */
+   private void checkAnnotatedItem() {
+      // TODO: checks
+   }
+   
+   /**
     * Caches the constructor for this type of bean to avoid future reflections
     * during use.
     */

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/Bootstrap.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/Bootstrap.java	2008-12-01 22:12:52 UTC (rev 386)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/Bootstrap.java	2008-12-02 07:19:21 UTC (rev 387)
@@ -20,6 +20,7 @@
 import static org.jboss.webbeans.util.BeanFactory.createEnterpriseBean;
 import static org.jboss.webbeans.util.BeanFactory.createProducerMethodBean;
 import static org.jboss.webbeans.util.BeanFactory.createSimpleBean;
+import static org.jboss.webbeans.util.BeanFactory.createEventBean;
 
 import java.util.Arrays;
 import java.util.HashSet;
@@ -28,8 +29,10 @@
 import org.jboss.webbeans.ManagerImpl;
 import org.jboss.webbeans.bean.AbstractBean;
 import org.jboss.webbeans.bean.AbstractClassBean;
+import org.jboss.webbeans.bean.EventBean;
 import org.jboss.webbeans.bean.ProducerMethodBean;
 import org.jboss.webbeans.bootstrap.spi.WebBeanDiscovery;
+import org.jboss.webbeans.introspector.AnnotatedField;
 import org.jboss.webbeans.introspector.AnnotatedMethod;
 import org.jboss.webbeans.log.LogProvider;
 import org.jboss.webbeans.log.Logging;
@@ -139,11 +142,18 @@
             beans.add(producerMethodBean);
             manager.getResolver().addInjectionPoints(producerMethodBean.getInjectionPoints());
          }
+         for (AnnotatedField<Object> eventField : bean.getEventFields())
+         {
+            EventBean<?> eventBean = createEventBean(eventField.getType(), eventField, manager);
+            beans.add(eventBean);
+            manager.getResolver().addInjectionPoints(eventBean.getInjectionPoints());
+         }
          log.info("Web Bean: " + bean);
       }
       return beans;
    }
 
+
    /**
     * Starts the boot process.
     * 




More information about the weld-commits mailing list