You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by st...@apache.org on 2009/10/29 09:17:27 UTC

svn commit: r830858 - in /incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test: component/library/BookShop.java component/portable/events/MyExtension.java mock/MockManager.java unittests/portable/events/ExtensionTest.java

Author: struberg
Date: Thu Oct 29 08:17:26 2009
New Revision: 830858

URL: http://svn.apache.org/viewvc?rev=830858&view=rev
Log:
[OWB-148] start adding a test to observe all lifecycle events from within an Extension

I also added the BeanManager itself to the context so it can be injected as @Default BeanManager

Modified:
    incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/library/BookShop.java
    incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/portable/events/MyExtension.java
    incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/mock/MockManager.java
    incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/portable/events/ExtensionTest.java

Modified: incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/library/BookShop.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/library/BookShop.java?rev=830858&r1=830857&r2=830858&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/library/BookShop.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/library/BookShop.java Thu Oct 29 08:17:26 2009
@@ -14,10 +14,12 @@
 package org.apache.webbeans.test.component.library;
 
 import javax.enterprise.context.RequestScoped;
+import javax.enterprise.event.Observes;
 import javax.interceptor.AroundInvoke;
 import javax.interceptor.InvocationContext;
 
 import org.apache.webbeans.annotation.deployment.Production;
+import org.apache.webbeans.test.event.LoggedInEvent;
 
 @Production
 @RequestScoped
@@ -34,5 +36,10 @@
     {
         return context.proceed();
     }
+    
+    public void observeSomething(@Observes LoggedInEvent lie)
+    {
+        // this is purely for checking if the Extension mechanism works
+    }
 
 }

Modified: incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/portable/events/MyExtension.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/portable/events/MyExtension.java?rev=830858&r1=830857&r2=830858&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/portable/events/MyExtension.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/portable/events/MyExtension.java Thu Oct 29 08:17:26 2009
@@ -20,20 +20,97 @@
 
 import javax.enterprise.event.Observes;
 import javax.enterprise.inject.Default;
+import javax.enterprise.inject.spi.AfterBeanDiscovery;
+import javax.enterprise.inject.spi.AfterDeploymentValidation;
+import javax.enterprise.inject.spi.BeanManager;
+import javax.enterprise.inject.spi.BeforeBeanDiscovery;
+import javax.enterprise.inject.spi.BeforeShutdown;
 import javax.enterprise.inject.spi.Extension;
 import javax.enterprise.inject.spi.ProcessAnnotatedType;
+import javax.enterprise.inject.spi.ProcessBean;
+import javax.enterprise.inject.spi.ProcessInjectionTarget;
+import javax.enterprise.inject.spi.ProcessObserverMethod;
+import javax.enterprise.inject.spi.ProcessProducer;
 
+/**
+ * Test extension which only sets a few static members which will be validated in a test case.
+ */
 public class MyExtension implements Extension
 {
-    public static ProcessAnnotatedType<?> event = null;
+    public static ProcessAnnotatedType<?>     processAnnotatedTypeEvent;
+    public static BeforeBeanDiscovery         lastBeforeBeanDiscovery;
+    public static AfterBeanDiscovery          lastAfterBeanDiscovery;
+    public static BeforeShutdown              beforeShutdownEvent;
+    public static AfterDeploymentValidation   afterDeploymentValidation;
+    public static ProcessInjectionTarget<?>   processInjectionTarget;
+    public static ProcessProducer<?,?>        processProducer;
+    public static ProcessBean<?>              processBean;
+    public static ProcessObserverMethod<?, ?> processObserverMethod;
+    
+    
+    /**
+     * Reset all static fields before the test starts
+     */
+    public static void reset() {
+        processAnnotatedTypeEvent = null;
+        lastBeforeBeanDiscovery = null;
+        lastAfterBeanDiscovery = null;
+        beforeShutdownEvent = null;
+        afterDeploymentValidation = null;
+        processInjectionTarget = null;
+        processProducer = null;
+        processBean = null;
+        processObserverMethod = null;
+    }
     
     public MyExtension()
     {
-        
+        reset();
+    }
+
+    public void observeBeforeBeanDiscovery(@Observes BeforeBeanDiscovery beforeBean) 
+    {
+        lastBeforeBeanDiscovery = beforeBean;
+    }
+    
+    public void observeAfterBeanDiscovery(@Observes AfterBeanDiscovery afterBean, BeanManager beanManager) 
+    {
+        lastAfterBeanDiscovery = afterBean;
+    }
+
+    public void observeAfterDeploymentValidation(@Observes AfterDeploymentValidation adv, BeanManager bm) 
+    {
+        afterDeploymentValidation = adv;
+    }
+
+    public void observeShutdownEvent(@Observes BeforeShutdown bs, BeanManager bm) 
+    {
+        beforeShutdownEvent = bs;
     }
 
-    public void observer(@Default @Observes ProcessAnnotatedType<?> annotatedType)
+    public void observeProcessAnnotatedTypeEvent(@Observes @Default ProcessAnnotatedType<?> annotatedType)
+    {
+        processAnnotatedTypeEvent = annotatedType;
+    }
+    
+    public <T> void observeProcessInjectionTarget(@Observes ProcessInjectionTarget<T> pit)
+    {
+        processInjectionTarget = pit;
+    }
+    
+    public <T, X> void observeProcessProducer(@Observes ProcessProducer<T, X> pp)
     {
-        event = annotatedType;
+        processProducer = pp;
     }
+    
+    public <X> void observeProcessBean(@Observes ProcessBean<X> pb)
+    {
+        processBean = pb;
+    }
+    
+    public <X, T> void processObserverMethod(@Observes ProcessObserverMethod<X, T> pom)
+    {
+        processObserverMethod = pom;
+    }
+    
 }

Modified: incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/mock/MockManager.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/mock/MockManager.java?rev=830858&r1=830857&r2=830858&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/mock/MockManager.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/mock/MockManager.java Thu Oct 29 08:17:26 2009
@@ -36,8 +36,10 @@
 import javax.enterprise.inject.spi.ObserverMethod;
 
 import org.apache.webbeans.component.AbstractBean;
+import org.apache.webbeans.component.BeanManagerBean;
 import org.apache.webbeans.container.BeanManagerImpl;
 import org.apache.webbeans.container.activity.ActivityManager;
+import org.apache.webbeans.util.WebBeansUtil;
 
 public class MockManager implements BeanManager
 {
@@ -49,6 +51,7 @@
     {
         this.manager = new BeanManagerImpl();
         ActivityManager.getInstance().setRootActivity(this.manager);
+        manager.addBean(WebBeansUtil.getManagerBean());
     }
 
 

Modified: incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/portable/events/ExtensionTest.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/portable/events/ExtensionTest.java?rev=830858&r1=830857&r2=830858&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/portable/events/ExtensionTest.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/portable/events/ExtensionTest.java Thu Oct 29 08:17:26 2009
@@ -18,6 +18,8 @@
  */
 package org.apache.webbeans.test.unittests.portable.events;
 
+import java.lang.annotation.Annotation;
+
 import javax.enterprise.inject.spi.Bean;
 
 import junit.framework.Assert;
@@ -25,6 +27,7 @@
 import org.apache.webbeans.annotation.DefaultLiteral;
 import org.apache.webbeans.context.ContextFactory;
 import org.apache.webbeans.portable.events.ExtensionLoader;
+import org.apache.webbeans.portable.events.discovery.BeforeShutdownImpl;
 import org.apache.webbeans.test.component.library.BookShop;
 import org.apache.webbeans.test.component.portable.events.MyExtension;
 import org.apache.webbeans.test.mock.MockServletContext;
@@ -49,19 +52,32 @@
     @SuppressWarnings("unchecked")
     public void testExtensionServices()
     {
+        MyExtension.reset();
+        
         ExtensionLoader.getInstance().loadExtensionServices();
         
         MockServletContext servletContext = new MockServletContext();
         ContextFactory.initApplicationContext(servletContext);
+
         Bean<MyExtension> extension = (Bean<MyExtension>)getManager().resolveByType(MyExtension.class, new DefaultLiteral()).iterator().next();
         
         MyExtension ext = getManager().getInstance(extension);
+        
         System.out.println(ext.toString());
         
         defineSimpleWebBean(BookShop.class);
         
-        Assert.assertNotNull(MyExtension.event);
+        Assert.assertNotNull(MyExtension.processAnnotatedTypeEvent);
+
+        //X TODO should work after fixing the test lifecycle Assert.assertNotNull(MyExtension.processBean);
+
+        //X TODO should work after fixing the test lifecycle Assert.assertNotNull(MyExtension.processObserverMethod);
         
+        //Fire shut down
+        getManager().fireEvent(new BeforeShutdownImpl(), new Annotation[0]);
+
         ContextFactory.destroyApplicationContext(servletContext);
+        
+        Assert.assertNotNull(MyExtension.beforeShutdownEvent);
     }
 }