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 2010/02/18 23:47:48 UTC

svn commit: r911629 - in /openwebbeans/trunk: webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/DefaultLifecycle.java webbeans-spi/src/main/java/org/apache/webbeans/spi/ServletContainerLifecycle.java

Author: struberg
Date: Thu Feb 18 22:47:48 2010
New Revision: 911629

URL: http://svn.apache.org/viewvc?rev=911629&view=rev
Log:
OWB-290 provice SPI for servlet specific lifecycles 

This is needed for better testing support of @RequestScoped and @SessionScoped beans

Added:
    openwebbeans/trunk/webbeans-spi/src/main/java/org/apache/webbeans/spi/ServletContainerLifecycle.java
Modified:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/DefaultLifecycle.java

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/DefaultLifecycle.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/DefaultLifecycle.java?rev=911629&r1=911628&r2=911629&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/DefaultLifecycle.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/DefaultLifecycle.java Thu Feb 18 22:47:48 2010
@@ -44,10 +44,10 @@
 import org.apache.webbeans.portable.events.ExtensionLoader;
 import org.apache.webbeans.portable.events.discovery.BeforeShutdownImpl;
 import org.apache.webbeans.servlet.WebBeansConfigurationListener;
-import org.apache.webbeans.spi.ContainerLifecycle;
 import org.apache.webbeans.spi.JNDIService;
 import org.apache.webbeans.spi.ScannerService;
 import org.apache.webbeans.spi.ServiceLoader;
+import org.apache.webbeans.spi.ServletContainerLifecycle;
 import org.apache.webbeans.xml.WebBeansXMLConfigurator;
 
 /**
@@ -61,7 +61,7 @@
  * @version $Rev$ $Date$
  * @see WebBeansConfigurationListener
  */
-public final class DefaultLifecycle implements ContainerLifecycle
+public final class DefaultLifecycle implements ServletContainerLifecycle
 {
 	//Logger instance
     private static final WebBeansLogger logger = WebBeansLogger.getLogger(DefaultLifecycle.class);
@@ -105,8 +105,14 @@
         rootManager.setXMLConfigurator(this.xmlDeployer);        
     }
     
-    public void requestStarted(ServletRequestEvent event)
+    public void requestStarted(Object startObject)
     {
+        ServletRequestEvent event = null;
+        if (startObject instanceof ServletRequestEvent)
+        {
+            event = (ServletRequestEvent) startObject;
+        }
+        
         logger.debug("Starting a new request : ", new Object[]{event.getServletRequest().getRemoteAddr()});
         
         ContextFactory.initializeThreadLocals();
@@ -134,20 +140,37 @@
         }
     }
 
-    public void requestEnded(ServletRequestEvent event)
+    public void requestEnded(Object endObject)
     {
+        ServletRequestEvent event = null;
+        if (endObject instanceof ServletRequestEvent)
+        {
+            event = (ServletRequestEvent) endObject;
+        }
+
     	logger.debug("Destroying a request : ", new Object[]{event.getServletRequest().getRemoteAddr()});
         ContextFactory.destroyRequestContext((HttpServletRequest) event.getServletRequest());
     }
 
-    public void sessionStarted(HttpSessionEvent event)
+    public void sessionStarted(Object startObject)
     {
+        HttpSessionEvent event = null;
+        if (startObject instanceof HttpSessionEvent)
+        {
+            event = (HttpSessionEvent) startObject;
+        }
+
         logger.debug("Starting a session with session id : ", new Object[]{event.getSession().getId()});
         ContextFactory.initSessionContext(event.getSession());
     }
 
-    public void sessionEnded(HttpSessionEvent event)
+    public void sessionEnded(Object endObject)
     {
+        HttpSessionEvent event = null;
+        if (endObject instanceof HttpSessionEvent)
+        {
+            event = (HttpSessionEvent) endObject;
+        }
     	logger.debug("Destroying a session with session id : ", new Object[]{event.getSession().getId()});
         ContextFactory.destroySessionContext(event.getSession());
 

Added: openwebbeans/trunk/webbeans-spi/src/main/java/org/apache/webbeans/spi/ServletContainerLifecycle.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-spi/src/main/java/org/apache/webbeans/spi/ServletContainerLifecycle.java?rev=911629&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-spi/src/main/java/org/apache/webbeans/spi/ServletContainerLifecycle.java (added)
+++ openwebbeans/trunk/webbeans-spi/src/main/java/org/apache/webbeans/spi/ServletContainerLifecycle.java Thu Feb 18 22:47:48 2010
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.webbeans.spi;
+
+
+/**
+ * Interface for any CDI Container Lifecycles which are meant to be used for Servlets.
+ * Additionally to the default ContainerLifecycle this allows starting and stopping sessions
+ * and requests.
+ * 
+ * This may be used to access servlet related lifecycle implementations in e.g. test containers.
+ * 
+ * @version $Rev$ $Date$
+ */
+public interface ServletContainerLifecycle extends ContainerLifecycle {
+
+    /**
+     * start a new session context
+     * @param event most probably a HttpSessionEvent
+     */
+    public void sessionStarted(Object event);
+    
+    /**
+     * end the session context
+     * @param event most probably a HttpSessionEvent
+     */
+    public void sessionEnded(Object event);
+    
+    /**
+     * start a new request context 
+     * @param event most probably a ServletRequestEvent
+     */
+    public void requestStarted(Object event);
+    
+    /**
+     * stop the current request context
+     */
+    public void requestEnded(Object event);
+    
+}