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/03/27 16:22:07 UTC

[2/2] git commit: DELTASPIKE-136 make servlet-api optional for cdictrl-owb

DELTASPIKE-136 make servlet-api optional for cdictrl-owb


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

Branch: refs/heads/master
Commit: 6f5ff204280572d80eaaa7c1d5ecf9542408d921
Parents: 798f293
Author: Mark Struberg <st...@apache.org>
Authored: Tue Mar 27 16:19:33 2012 +0200
Committer: Mark Struberg <st...@apache.org>
Committed: Tue Mar 27 16:20:07 2012 +0200

----------------------------------------------------------------------
 .../deltaspike/cdise/api/ContextControl.java       |    1 +
 .../cdise/owb/OpenWebBeansContextControl.java      |   59 ++++++++++++---
 2 files changed, 50 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/6f5ff204/deltaspike/cdictrl/api/src/main/java/org/apache/deltaspike/cdise/api/ContextControl.java
----------------------------------------------------------------------
diff --git a/deltaspike/cdictrl/api/src/main/java/org/apache/deltaspike/cdise/api/ContextControl.java b/deltaspike/cdictrl/api/src/main/java/org/apache/deltaspike/cdise/api/ContextControl.java
index c0c5cdb..3d22526 100644
--- a/deltaspike/cdictrl/api/src/main/java/org/apache/deltaspike/cdise/api/ContextControl.java
+++ b/deltaspike/cdictrl/api/src/main/java/org/apache/deltaspike/cdise/api/ContextControl.java
@@ -55,4 +55,5 @@ public interface ContextControl
      */
     void stopContext(Class<? extends Annotation> scopeClass);
 
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/6f5ff204/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 b1bcabe..2f9457a 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
@@ -42,18 +42,57 @@ public class OpenWebBeansContextControl implements ContextControl
 
     private static final Logger LOG = Logger.getLogger(OpenWebBeansContextControl.class.getName());
 
-    private MockHttpSession session = new MockHttpSession();;
-    private MockServletContext servletContext  = new MockServletContext();
+    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();
+        }
 
+        return session;
+    }
+    
+    protected Object getMockServletContext()
+    {
+        if (isServletApiAvailable() && servletContext == null)
+        {
+            servletContext  = new MockServletContext();
+        }
+
+        return servletContext;
+    }
 
     @Override
     public void startContexts()
     {
         ContextFactory contextFactory = getContextFactory();
 
-        contextFactory.initSingletonContext(servletContext);
-        contextFactory.initApplicationContext(servletContext);
-        contextFactory.initSessionContext(session);
+        contextFactory.initSingletonContext(getMockServletContext());
+        contextFactory.initApplicationContext(getMockServletContext());
+        contextFactory.initSessionContext(getMockSession());
         contextFactory.initRequestContext(null);
         contextFactory.initConversationContext(null);
     }
@@ -120,14 +159,14 @@ public class OpenWebBeansContextControl implements ContextControl
     {
         ContextFactory contextFactory = getContextFactory();
 
-        contextFactory.initApplicationContext(servletContext);
+        contextFactory.initApplicationContext(getMockServletContext());
     }
 
     private void startSessionScope()
     {
         ContextFactory contextFactory = getContextFactory();
 
-        contextFactory.initSessionContext(session);
+        contextFactory.initSessionContext(getMockSession());
     }
 
     private void startRequestScope()
@@ -155,7 +194,7 @@ public class OpenWebBeansContextControl implements ContextControl
         Context context = contextFactory.getStandardContext(ContextTypes.SINGLETON);
         if (context != null)
         {
-            contextFactory.destroySingletonContext(servletContext);
+            contextFactory.destroySingletonContext(getMockServletContext());
         }
     }
 
@@ -166,7 +205,7 @@ public class OpenWebBeansContextControl implements ContextControl
         Context context = contextFactory.getStandardContext(ContextTypes.APPLICATION);
         if (context != null)
         {
-            contextFactory.destroyApplicationContext(servletContext);
+            contextFactory.destroyApplicationContext(getMockServletContext());
         }
     }
 
@@ -177,7 +216,7 @@ public class OpenWebBeansContextControl implements ContextControl
         Context context = contextFactory.getStandardContext(ContextTypes.SESSION);
         if (context != null)
         {
-            contextFactory.destroySessionContext(session);
+            contextFactory.destroySessionContext(getMockSession());
         }
     }