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 2015/05/05 17:26:37 UTC

svn commit: r1677838 - in /openwebbeans/trunk/webbeans-web/src: it/webcdiapp/src/main/java/org/apache/openwebbeans/web/it/ it/webcdiapp/src/main/java/org/apache/openwebbeans/web/it/beans/ it/webcdiapp/src/test/java/org/apache/openwebbeans/web/it/ main/...

Author: struberg
Date: Tue May  5 15:26:36 2015
New Revision: 1677838

URL: http://svn.apache.org/r1677838
Log:
OWB-1040 fix @Initialized(ApplicationContext.class) event

Added:
    openwebbeans/trunk/webbeans-web/src/it/webcdiapp/src/main/java/org/apache/openwebbeans/web/it/beans/ContextEventCounter.java
      - copied, changed from r1677747, openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/contexts/session/common/AppScopedBean.java
Modified:
    openwebbeans/trunk/webbeans-web/src/it/webcdiapp/src/main/java/org/apache/openwebbeans/web/it/TestServlet.java
    openwebbeans/trunk/webbeans-web/src/it/webcdiapp/src/test/java/org/apache/openwebbeans/web/it/ConversationScopedIT.java
    openwebbeans/trunk/webbeans-web/src/it/webcdiapp/src/test/java/org/apache/openwebbeans/web/it/OwbITBase.java
    openwebbeans/trunk/webbeans-web/src/it/webcdiapp/src/test/java/org/apache/openwebbeans/web/it/RequestScopedIT.java
    openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/context/WebContextsService.java
    openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/lifecycle/WebContainerLifecycle.java

Modified: openwebbeans/trunk/webbeans-web/src/it/webcdiapp/src/main/java/org/apache/openwebbeans/web/it/TestServlet.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-web/src/it/webcdiapp/src/main/java/org/apache/openwebbeans/web/it/TestServlet.java?rev=1677838&r1=1677837&r2=1677838&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-web/src/it/webcdiapp/src/main/java/org/apache/openwebbeans/web/it/TestServlet.java (original)
+++ openwebbeans/trunk/webbeans-web/src/it/webcdiapp/src/main/java/org/apache/openwebbeans/web/it/TestServlet.java Tue May  5 15:26:36 2015
@@ -18,6 +18,7 @@
  */
 package org.apache.openwebbeans.web.it;
 
+import org.apache.openwebbeans.web.it.beans.ContextEventCounter;
 import org.apache.openwebbeans.web.it.beans.RequestScopedBean;
 
 import javax.servlet.ServletException;
@@ -27,24 +28,33 @@ import javax.servlet.http.HttpServletReq
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 
-@WebServlet(urlPatterns = "/check")
+@WebServlet(urlPatterns = "/check/*")
 public class TestServlet extends HttpServlet
 {
     private static final long serialVersionUID = -8232635534522251153L;
 
     @Override
-    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
+    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
     {
-        if (req.getParameter("reset") != null)
+        String uri = request.getRequestURI();
+        String action = uri.substring(uri.lastIndexOf('/') + 1);
+
+        response.setContentType("text/plain");
+        response.setStatus(HttpServletResponse.SC_OK);
+
+        if ("reset".equals(action))
         {
             RequestScopedBean.resetCounter();
+            ContextEventCounter.resetCounter();
+        }
+        else if ("events".equals(action))
+        {
+            response.getWriter().append(ContextEventCounter.info());
         }
         else
         {
-            resp.setContentType("text/plain");
-            resp.setStatus(HttpServletResponse.SC_OK);
 
-            resp.getWriter().append(RequestScopedBean.info());
+            response.getWriter().append(RequestScopedBean.info());
         }
     }
 }

Copied: openwebbeans/trunk/webbeans-web/src/it/webcdiapp/src/main/java/org/apache/openwebbeans/web/it/beans/ContextEventCounter.java (from r1677747, openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/contexts/session/common/AppScopedBean.java)
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-web/src/it/webcdiapp/src/main/java/org/apache/openwebbeans/web/it/beans/ContextEventCounter.java?p2=openwebbeans/trunk/webbeans-web/src/it/webcdiapp/src/main/java/org/apache/openwebbeans/web/it/beans/ContextEventCounter.java&p1=openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/contexts/session/common/AppScopedBean.java&r1=1677747&r2=1677838&rev=1677838&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/contexts/session/common/AppScopedBean.java (original)
+++ openwebbeans/trunk/webbeans-web/src/it/webcdiapp/src/main/java/org/apache/openwebbeans/web/it/beans/ContextEventCounter.java Tue May  5 15:26:36 2015
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.webbeans.test.contexts.session.common;
+package org.apache.openwebbeans.web.it.beans;
 
 import javax.enterprise.context.ApplicationScoped;
 import javax.enterprise.context.Destroyed;
@@ -24,15 +24,14 @@ import javax.enterprise.context.Initiali
 import javax.enterprise.context.RequestScoped;
 import javax.enterprise.context.SessionScoped;
 import javax.enterprise.event.Observes;
-import javax.inject.Inject;
+import javax.inject.Singleton;
 import java.util.ArrayList;
 import java.util.List;
 
-@ApplicationScoped
-public class AppScopedBean {
+@Singleton
+public class ContextEventCounter
+{
     
-    private @Inject PersonalDataBean pdb;
-
     public static List<Object> appContextInitializedEvent = new ArrayList<Object>();
     public static List<Object> appContextDestroyedEvent = new ArrayList<Object>();
 
@@ -42,9 +41,6 @@ public class AppScopedBean {
     public static List<Object> requestContextInitializedEvent = new ArrayList<Object>();
     public static List<Object> requestContextDestroyedEvent = new ArrayList<Object>();
 
-    public PersonalDataBean getPdb() {
-        return pdb;
-    }
 
     public void appContextInitialized(@Observes @Initialized(ApplicationScoped.class) Object payload)
     {
@@ -76,5 +72,19 @@ public class AppScopedBean {
         requestContextDestroyedEvent.add(payload);
     }
 
+    public static void resetCounter()
+    {
+        sessionContextInitializedEvent.clear();
+        sessionContextDestroyedEvent.clear();
+        requestContextInitializedEvent.clear();
+        requestContextDestroyedEvent.clear();
+    }
+
+    public static String info()
+    {
+        return "application:" + appContextInitializedEvent.size() + "/" + appContextDestroyedEvent.size() + "\n" +
+               "session:" + sessionContextInitializedEvent.size() + "/" + sessionContextDestroyedEvent.size() + "\n" +
+               "request:" + requestContextInitializedEvent.size() + "/" + requestContextDestroyedEvent.size();
+    }
     
 }

Modified: openwebbeans/trunk/webbeans-web/src/it/webcdiapp/src/test/java/org/apache/openwebbeans/web/it/ConversationScopedIT.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-web/src/it/webcdiapp/src/test/java/org/apache/openwebbeans/web/it/ConversationScopedIT.java?rev=1677838&r1=1677837&r2=1677838&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-web/src/it/webcdiapp/src/test/java/org/apache/openwebbeans/web/it/ConversationScopedIT.java (original)
+++ openwebbeans/trunk/webbeans-web/src/it/webcdiapp/src/test/java/org/apache/openwebbeans/web/it/ConversationScopedIT.java Tue May  5 15:26:36 2015
@@ -161,6 +161,7 @@ public class ConversationScopedIT extend
             String content = httpGet(client, "conversation/info?cid=" + oldCid, HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
             Assert.assertTrue(content.contains(NonexistentConversationException.class.getName()));
         }
+
     }
 
 

Modified: openwebbeans/trunk/webbeans-web/src/it/webcdiapp/src/test/java/org/apache/openwebbeans/web/it/OwbITBase.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-web/src/it/webcdiapp/src/test/java/org/apache/openwebbeans/web/it/OwbITBase.java?rev=1677838&r1=1677837&r2=1677838&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-web/src/it/webcdiapp/src/test/java/org/apache/openwebbeans/web/it/OwbITBase.java (original)
+++ openwebbeans/trunk/webbeans-web/src/it/webcdiapp/src/test/java/org/apache/openwebbeans/web/it/OwbITBase.java Tue May  5 15:26:36 2015
@@ -182,6 +182,6 @@ public class OwbITBase
 
         Assert.assertEquals(expectedHttpCode, statusCode);
         getRequest.releaseConnection();
-        return content;
+        return content.trim();
     }
 }

Modified: openwebbeans/trunk/webbeans-web/src/it/webcdiapp/src/test/java/org/apache/openwebbeans/web/it/RequestScopedIT.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-web/src/it/webcdiapp/src/test/java/org/apache/openwebbeans/web/it/RequestScopedIT.java?rev=1677838&r1=1677837&r2=1677838&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-web/src/it/webcdiapp/src/test/java/org/apache/openwebbeans/web/it/RequestScopedIT.java (original)
+++ openwebbeans/trunk/webbeans-web/src/it/webcdiapp/src/test/java/org/apache/openwebbeans/web/it/RequestScopedIT.java Tue May  5 15:26:36 2015
@@ -18,17 +18,13 @@
  */
 package org.apache.openwebbeans.web.it;
 
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpEntity;
-import org.apache.http.client.methods.HttpGet;
+import javax.servlet.http.HttpServletResponse;
+
 import org.apache.http.impl.client.DefaultHttpClient;
 
 import org.junit.Assert;
 import org.junit.Test;
 
-import java.io.BufferedReader;
-import java.io.InputStream;
-import java.io.InputStreamReader;
 
 public class RequestScopedIT extends OwbITBase
 {
@@ -38,47 +34,19 @@ public class RequestScopedIT extends Owb
     {
         DefaultHttpClient client = new DefaultHttpClient();
 
-        HttpGet resetGet = new HttpGet(getPageUrl("/check?reset=true"));
-        HttpResponse response = client.execute(resetGet);
-        resetGet.releaseConnection();
-
-        HttpGet jspGet = new HttpGet(getPageUrl("/index.jsp"));
-        checkResponse(client.execute(jspGet));
-        jspGet.releaseConnection();
-
-        HttpGet checkGet = new HttpGet(getPageUrl("/check"));
-        response = client.execute(checkGet);
-        checkResponse(response);
-
-        HttpEntity httpEntity = response.getEntity();
-        Assert.assertNotNull(httpEntity);
-
-        InputStream content = null;
-        try
-        {
-            content = httpEntity.getContent();
-            Assert.assertNotNull(content);
-            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(content));
-            String result = bufferedReader.readLine();
-            Assert.assertNotNull(result);
-            Assert.assertEquals("2,2", result);
-        }
-        finally {
-            if (content != null)
-            {
-                content.close();
-            }
-        }
-
+        // GET http://localhost:8089/webbeanswebCdiApp/check
 
-        checkGet.releaseConnection();
-    }
+        String response = httpGet(client, "/check/reset", HttpServletResponse.SC_OK);
+        response = httpGet(client, "/index.jsp", HttpServletResponse.SC_OK);
+        response = httpGet(client, "/check", HttpServletResponse.SC_OK);
+        Assert.assertEquals("2,2", response);
 
-    private void checkResponse(HttpResponse response)
-    {
+        response = httpGet(client, "/check/events", HttpServletResponse.SC_OK);
         Assert.assertNotNull(response);
-        Assert.assertNotNull(response.getStatusLine());
-        Assert.assertEquals(200, response.getStatusLine().getStatusCode());
+
+        // application and session still running
+        // for the session we got 2 full requests + 1 end after the reset + 1 start before the info gets rendered in the last request
+        Assert.assertEquals("application:1/0\nsession:1/0\nrequest:3/3", response);
     }
 
 }

Modified: openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/context/WebContextsService.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/context/WebContextsService.java?rev=1677838&r1=1677837&r2=1677838&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/context/WebContextsService.java (original)
+++ openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/context/WebContextsService.java Tue May  5 15:26:36 2015
@@ -126,13 +126,13 @@ public class WebContextsService extends
      */
     @Override
     public void init(Object initializeObject)
-    {        
-        //Start application context
-        startContext(ApplicationScoped.class, initializeObject);
-        
+    {
         //Start signelton context
         startContext(Singleton.class, initializeObject);
-    }    
+
+        //Start application context
+        startContext(ApplicationScoped.class, initializeObject);
+    }
     
     /**
      * {@inheritDoc}

Modified: openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/lifecycle/WebContainerLifecycle.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/lifecycle/WebContainerLifecycle.java?rev=1677838&r1=1677837&r2=1677838&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/lifecycle/WebContainerLifecycle.java (original)
+++ openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/lifecycle/WebContainerLifecycle.java Tue May  5 15:26:36 2015
@@ -116,6 +116,8 @@ public final class WebContainerLifecycle
         // Add BeanManager to the 'javax.enterprise.inject.spi.BeanManager' servlet context attribute
         ServletContext servletContext = (ServletContext)(startupObject);
         servletContext.setAttribute(BeanManager.class.getName(), getBeanManager());
+
+        // fire @Initialized(ApplicationScoped.class) if any observer for it exists
         if (webBeansContext.getBeanManagerImpl().getNotificationManager().hasLifecycleObserver(InitializedLiteral.INSTANCE_APPLICATION_SCOPED))
         {
             // we need to temporarily start the ReqeustContext
@@ -153,7 +155,6 @@ public final class WebContainerLifecycle
         {
             elStore.destroyELContextStore();
         }
-
     }
 
     /**