summaryrefslogtreecommitdiffstats
path: root/sca-java-1.x/tags/java-M1-final/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/DependencyLifecycleTestCase.java
diff options
context:
space:
mode:
Diffstat (limited to 'sca-java-1.x/tags/java-M1-final/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/DependencyLifecycleTestCase.java')
-rw-r--r--sca-java-1.x/tags/java-M1-final/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/DependencyLifecycleTestCase.java93
1 files changed, 93 insertions, 0 deletions
diff --git a/sca-java-1.x/tags/java-M1-final/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/DependencyLifecycleTestCase.java b/sca-java-1.x/tags/java-M1-final/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/DependencyLifecycleTestCase.java
new file mode 100644
index 0000000000..dc3fe3efcb
--- /dev/null
+++ b/sca-java-1.x/tags/java-M1-final/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/DependencyLifecycleTestCase.java
@@ -0,0 +1,93 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed 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.tuscany.container.java.scopes;
+
+import junit.framework.TestCase;
+import org.apache.tuscany.container.java.mock.MockContextFactory;
+import org.apache.tuscany.core.context.EventContext;
+import org.apache.tuscany.core.context.event.ModuleStart;
+import org.apache.tuscany.core.context.event.ModuleStop;
+import org.apache.tuscany.core.context.event.HttpSessionBound;
+import org.apache.tuscany.core.context.event.HttpSessionEvent;
+import org.apache.tuscany.core.context.event.HttpSessionEnd;
+import org.apache.tuscany.core.context.event.RequestStart;
+import org.apache.tuscany.core.context.event.RequestEnd;
+import org.apache.tuscany.core.context.impl.EventContextImpl;
+import org.apache.tuscany.core.context.scope.ModuleScopeContext;
+import org.apache.tuscany.core.context.scope.SessionScopeContext;
+import org.apache.tuscany.core.context.scope.RequestScopeContext;
+import org.apache.tuscany.model.assembly.Scope;
+
+/**
+ * Tests that dependencies are initalized and destroyed in the proper order (i.e. LIFO)
+ *
+ * @version $Rev: 393992 $ $Date: 2006-04-13 18:01:05 -0700 (Thu, 13 Apr 2006) $
+ */
+public class DependencyLifecycleTestCase extends TestCase {
+
+
+
+ public void testInitDestroyOrderModuleScope() throws Exception {
+ EventContext ctx = new EventContextImpl();
+ ModuleScopeContext scope = new ModuleScopeContext(ctx);
+ scope.registerFactories(MockContextFactory.createWiredContexts(Scope.MODULE,scope));
+ scope.start();
+ scope.onEvent(new ModuleStart(this));
+ OrderedDependentPojo source = (OrderedDependentPojo) scope.getContext("source").getInstance(null);
+ assertNotNull(source.getPojo());
+ // expire module
+ assertEquals(2,source.getNumberInstantiated());
+ scope.onEvent(new ModuleStop(this));
+ assertEquals(0,source.getNumberInstantiated());
+ scope.stop();
+ }
+
+ public void testInitDestroyOrderSessionScope() throws Exception {
+ EventContext ctx = new EventContextImpl();
+ SessionScopeContext scope = new SessionScopeContext(ctx);
+ scope.registerFactories(MockContextFactory.createWiredContexts(Scope.SESSION,scope));
+ scope.start();
+ Object session = new Object();
+ ctx.setIdentifier(HttpSessionEvent.HTTP_IDENTIFIER,session);
+ scope.onEvent(new HttpSessionBound(this,session));
+ OrderedDependentPojo source = (OrderedDependentPojo) scope.getContext("source").getInstance(null);
+ assertNotNull(source.getPojo());
+ // expire module
+ assertEquals(2,source.getNumberInstantiated());
+ scope.onEvent(new HttpSessionEnd(this,session));
+ assertEquals(0,source.getNumberInstantiated());
+ scope.stop();
+ }
+
+
+ public void testInitDestroyOrderRequestScope() throws Exception {
+ EventContext ctx = new EventContextImpl();
+ RequestScopeContext scope = new RequestScopeContext(ctx);
+ scope.registerFactories(MockContextFactory.createWiredContexts(Scope.REQUEST,scope));
+ scope.start();
+ Object request = new Object();
+ scope.onEvent(new RequestStart(this,request));
+ OrderedDependentPojo source = (OrderedDependentPojo) scope.getContext("source").getInstance(null);
+ assertNotNull(source.getPojo());
+ // expire module
+ assertEquals(2,source.getNumberInstantiated());
+ scope.onEvent(new RequestEnd(this,request));
+ assertEquals(0,source.getNumberInstantiated());
+ scope.stop();
+ }
+
+}