You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltaspike.apache.org by st...@apache.org on 2012/07/11 00:09:40 UTC

git commit: DELTASPIKE-207 fix possible mem leak

Updated Branches:
  refs/heads/master 2b5095035 -> 5819dc890


DELTASPIKE-207 fix possible mem leak


Project: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/commit/5819dc89
Tree: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/tree/5819dc89
Diff: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/diff/5819dc89

Branch: refs/heads/master
Commit: 5819dc89013b6075a6eecedf0f62278c25bf00f9
Parents: 2b50950
Author: Mark Struberg <st...@apache.org>
Authored: Wed Jul 11 00:04:00 2012 +0200
Committer: Mark Struberg <st...@apache.org>
Committed: Wed Jul 11 00:04:00 2012 +0200

----------------------------------------------------------------------
 .../deltaspike/cdise/owb/MockServletContext.java   |    6 ++
 .../cdise/owb/OpenWebBeansContextControl.java      |   55 ++----------
 .../org/apache/deltaspike/cdise/owb/OwbHelper.java |   66 +++++++++++++++
 3 files changed, 80 insertions(+), 47 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/5819dc89/deltaspike/cdictrl/impl-owb/src/main/java/org/apache/deltaspike/cdise/owb/MockServletContext.java
----------------------------------------------------------------------
diff --git a/deltaspike/cdictrl/impl-owb/src/main/java/org/apache/deltaspike/cdise/owb/MockServletContext.java b/deltaspike/cdictrl/impl-owb/src/main/java/org/apache/deltaspike/cdise/owb/MockServletContext.java
index 42e7967..2aa4ceb 100644
--- a/deltaspike/cdictrl/impl-owb/src/main/java/org/apache/deltaspike/cdise/owb/MockServletContext.java
+++ b/deltaspike/cdictrl/impl-owb/src/main/java/org/apache/deltaspike/cdise/owb/MockServletContext.java
@@ -29,6 +29,7 @@ import java.util.StringTokenizer;
 import javax.servlet.RequestDispatcher;
 import javax.servlet.Servlet;
 import javax.servlet.ServletContext;
+import javax.servlet.ServletContextEvent;
 import javax.servlet.ServletException;
 
 /**
@@ -53,6 +54,11 @@ public class MockServletContext implements ServletContext
         return instance;
     }
 
+    public static ServletContextEvent getServletContextEvent()
+    {
+        return new ServletContextEvent(getInstance());
+    }
+
 
 
     public Object getAttribute(String name)

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/5819dc89/deltaspike/cdictrl/impl-owb/src/main/java/org/apache/deltaspike/cdise/owb/OpenWebBeansContextControl.java
----------------------------------------------------------------------
diff --git a/deltaspike/cdictrl/impl-owb/src/main/java/org/apache/deltaspike/cdise/owb/OpenWebBeansContextControl.java b/deltaspike/cdictrl/impl-owb/src/main/java/org/apache/deltaspike/cdise/owb/OpenWebBeansContextControl.java
index e1068e3..0f195ee 100644
--- a/deltaspike/cdictrl/impl-owb/src/main/java/org/apache/deltaspike/cdise/owb/OpenWebBeansContextControl.java
+++ b/deltaspike/cdictrl/impl-owb/src/main/java/org/apache/deltaspike/cdise/owb/OpenWebBeansContextControl.java
@@ -41,57 +41,18 @@ public class OpenWebBeansContextControl implements ContextControl
 {
     private static final Logger LOG = Logger.getLogger(OpenWebBeansContextControl.class.getName());
 
-    private Boolean servletApiAvailable = null;
-    
     private Object session = null;
     private Object servletContext = null;
     
-    protected boolean isServletApiAvailable()
-    {
-        if (servletApiAvailable == null)
-        {
-            try
-            {
-                Class servletClass = Class.forName("javax.servlet.http.HttpSession");
-                servletApiAvailable = servletClass != null;
-                LOG.fine("Servlet API available: " + servletApiAvailable);
-            }
-            catch (ClassNotFoundException e)
-            {
-                servletApiAvailable = Boolean.FALSE;
-            }
-        }
-        return servletApiAvailable;
-    }
-
-    protected Object getMockSession()
-    {
-        if (isServletApiAvailable() && session == null)
-        {
-            session = new MockHttpSession("mockSession1");
-        }
-
-        return session;
-    }
-    
-    protected Object getMockServletContext()
-    {
-        if (isServletApiAvailable() && servletContext == null)
-        {
-            servletContext = MockServletContext.getInstance();
-        }
-
-        return servletContext;
-    }
 
     @Override
     public void startContexts()
     {
         ContextFactory contextFactory = getContextFactory();
 
-        contextFactory.initSingletonContext(getMockServletContext());
-        contextFactory.initApplicationContext(getMockServletContext());
-        contextFactory.initSessionContext(getMockSession());
+        contextFactory.initSingletonContext(OwbHelper.getMockServletContextEvent());
+        contextFactory.initApplicationContext(OwbHelper.getMockServletContextEvent());
+        contextFactory.initSessionContext(OwbHelper.getMockSession());
         contextFactory.initRequestContext(null);
         contextFactory.initConversationContext(null);
     }
@@ -154,14 +115,14 @@ public class OpenWebBeansContextControl implements ContextControl
     {
         ContextFactory contextFactory = getContextFactory();
 
-        contextFactory.initApplicationContext(getMockServletContext());
+        contextFactory.initApplicationContext(OwbHelper.getMockServletContextEvent());
     }
 
     private void startSessionScope()
     {
         ContextFactory contextFactory = getContextFactory();
 
-        contextFactory.initSessionContext(getMockSession());
+        contextFactory.initSessionContext(OwbHelper.getMockSession());
     }
 
     private void startRequestScope()
@@ -189,7 +150,7 @@ public class OpenWebBeansContextControl implements ContextControl
         Context context = contextFactory.getStandardContext(ContextTypes.SINGLETON);
         if (context != null)
         {
-            contextFactory.destroySingletonContext(getMockServletContext());
+            contextFactory.destroySingletonContext(OwbHelper.getMockServletContextEvent());
         }
     }
 
@@ -200,7 +161,7 @@ public class OpenWebBeansContextControl implements ContextControl
         Context context = contextFactory.getStandardContext(ContextTypes.APPLICATION);
         if (context != null)
         {
-            contextFactory.destroyApplicationContext(getMockServletContext());
+            contextFactory.destroyApplicationContext(OwbHelper.getMockServletContextEvent());
         }
     }
 
@@ -211,7 +172,7 @@ public class OpenWebBeansContextControl implements ContextControl
         Context context = contextFactory.getStandardContext(ContextTypes.SESSION);
         if (context != null)
         {
-            contextFactory.destroySessionContext(getMockSession());
+            contextFactory.destroySessionContext(OwbHelper.getMockSession());
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/5819dc89/deltaspike/cdictrl/impl-owb/src/main/java/org/apache/deltaspike/cdise/owb/OwbHelper.java
----------------------------------------------------------------------
diff --git a/deltaspike/cdictrl/impl-owb/src/main/java/org/apache/deltaspike/cdise/owb/OwbHelper.java b/deltaspike/cdictrl/impl-owb/src/main/java/org/apache/deltaspike/cdise/owb/OwbHelper.java
new file mode 100644
index 0000000..e2860a4
--- /dev/null
+++ b/deltaspike/cdictrl/impl-owb/src/main/java/org/apache/deltaspike/cdise/owb/OwbHelper.java
@@ -0,0 +1,66 @@
+/*
+ * 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.deltaspike.cdise.owb;
+
+import javax.servlet.ServletContextEvent;
+
+/**
+ * A few utility methods for OWB
+ */
+public class OwbHelper
+{
+    private OwbHelper()
+    {
+        // just to prevent initialisation
+    }
+
+    public static Object getMockSession()
+    {
+        if (isServletApiAvailable())
+        {
+            return new MockHttpSession("mockSession1");
+        }
+
+        return null;
+    }
+
+    public static Object getMockServletContextEvent()
+    {
+        if (isServletApiAvailable() )
+        {
+            return new ServletContextEvent(MockServletContext.getInstance());
+        }
+
+        return null;
+    }
+
+    private static boolean isServletApiAvailable()
+    {
+        try
+        {
+            Class servletClass = Class.forName("javax.servlet.http.HttpSession");
+            return servletClass != null;
+        }
+        catch (ClassNotFoundException e)
+        {
+            return false;
+        }
+    }
+
+}