You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltaspike.apache.org by gp...@apache.org on 2013/12/12 08:57:22 UTC

git commit: DELTASPIKE-466 startScope and stopScope for ExternalContainer

Updated Branches:
  refs/heads/master 307c757ae -> a00c7e2f6


DELTASPIKE-466 startScope and stopScope for ExternalContainer


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

Branch: refs/heads/master
Commit: a00c7e2f6869ef9a2ea010084ed20899fc009255
Parents: 307c757
Author: gpetracek <gp...@apache.org>
Authored: Thu Dec 12 08:41:05 2013 +0100
Committer: gpetracek <gp...@apache.org>
Committed: Thu Dec 12 08:42:38 2013 +0100

----------------------------------------------------------------------
 .../testcontrol/api/junit/CdiTestRunner.java    | 35 +++++++++++++++++---
 .../testcontrol/spi/ExternalContainer.java      | 14 ++++++++
 2 files changed, 45 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/deltaspike/blob/a00c7e2f/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/junit/CdiTestRunner.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/junit/CdiTestRunner.java b/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/junit/CdiTestRunner.java
index 8093357..9b331a9 100644
--- a/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/junit/CdiTestRunner.java
+++ b/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/junit/CdiTestRunner.java
@@ -425,7 +425,7 @@ public class CdiTestRunner extends BlockJUnit4ClassRunner
                 restrictedScopes.add(SessionScoped.class);
             }
 
-            startContexts(container, restrictedScopes.toArray(new Class[restrictedScopes.size()]));
+            startScopes(container, restrictedScopes.toArray(new Class[restrictedScopes.size()]));
         }
 
         private void bootExternalContainers()
@@ -506,7 +506,7 @@ public class CdiTestRunner extends BlockJUnit4ClassRunner
             this.previousProjectStage = ProjectStageProducer.getInstance().getProjectStage();
             ProjectStageProducer.setProjectStage(this.projectStage);
 
-            startContexts(CdiContainerLoader.getCdiContainer());
+            startScopes(CdiContainerLoader.getCdiContainer());
         }
 
         void applyAfterMethodConfig()
@@ -528,7 +528,7 @@ public class CdiTestRunner extends BlockJUnit4ClassRunner
             CdiTestSuiteRunner.setContainerStarted(true);
         }
 
-        private void startContexts(CdiContainer container, Class<? extends Annotation>... restrictedScopes)
+        private void startScopes(CdiContainer container, Class<? extends Annotation>... restrictedScopes)
         {
             ContextControl contextControl = container.getContextControl();
 
@@ -555,9 +555,13 @@ public class CdiTestRunner extends BlockJUnit4ClassRunner
 
                 try
                 {
-                    contextControl.stopContext(scopeAnnotation); //force a clean context
+                    //force a clean context - TODO discuss onScopeStopped call
+                    contextControl.stopContext(scopeAnnotation);
+
                     contextControl.startContext(scopeAnnotation);
                     this.startedScopes.add(scopeAnnotation);
+
+                    onScopeStarted(scopeAnnotation);
                 }
                 catch (RuntimeException e)
                 {
@@ -615,6 +619,7 @@ public class CdiTestRunner extends BlockJUnit4ClassRunner
                 try
                 {
                     contextControl.stopContext(scopeAnnotation);
+                    onScopeStopped(scopeAnnotation);
                 }
                 catch (RuntimeException e)
                 {
@@ -624,5 +629,27 @@ public class CdiTestRunner extends BlockJUnit4ClassRunner
                 }
             }
         }
+
+        private void onScopeStarted(Class<? extends Annotation> scopeClass)
+        {
+            if (this.externalContainers != null)
+            {
+                for (ExternalContainer externalContainer : this.externalContainers)
+                {
+                    externalContainer.startScope(scopeClass);
+                }
+            }
+        }
+
+        private void onScopeStopped(Class<? extends Annotation> scopeClass)
+        {
+            if (this.externalContainers != null)
+            {
+                for (ExternalContainer externalContainer : this.externalContainers)
+                {
+                    externalContainer.stopScope(scopeClass);
+                }
+            }
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/a00c7e2f/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/spi/ExternalContainer.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/spi/ExternalContainer.java b/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/spi/ExternalContainer.java
index ab4e8c8..250845f 100644
--- a/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/spi/ExternalContainer.java
+++ b/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/spi/ExternalContainer.java
@@ -18,6 +18,8 @@
  */
 package org.apache.deltaspike.testcontrol.spi;
 
+import java.lang.annotation.Annotation;
+
 public interface ExternalContainer
 {
     /**
@@ -31,4 +33,16 @@ public interface ExternalContainer
     void shutdown();
 
     int getOrdinal();
+
+    /**
+     * Signals a started scope
+     * @param scopeClass annotation-class of the scope
+     */
+    void startScope(Class<? extends Annotation> scopeClass);
+
+    /**
+     * Signals a stopped scope
+     * @param scopeClass annotation-class of the scope
+     */
+    void stopScope(Class<? extends Annotation> scopeClass);
 }