Author: jmarino
Date: Fri Apr 14 23:02:05 2006
New Revision: 394263

URL: http://svn.apache.org/viewcvs?rev=394263&view=rev
Log:
more unit tests for scope containers

Added:
    
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockContextFactory.java
    
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/DependencyLifecycleTestCase.java
    
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/OrderedDependentPojo.java
Modified:
    
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockFactory.java
    
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/components/ModuleScopeComponentImpl.java
    
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/ModuleScopeLifecycleTestCase.java
    
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/injection/NonProxiedTargetFactory.java

Added: 
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockContextFactory.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockContextFactory.java?rev=394263&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockContextFactory.java
 (added)
+++ 
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockContextFactory.java
 Fri Apr 14 23:02:05 2006
@@ -0,0 +1,76 @@
+package org.apache.tuscany.container.java.mock;
+
+import org.apache.tuscany.container.java.assembly.JavaAssemblyFactory;
+import org.apache.tuscany.container.java.assembly.impl.JavaAssemblyFactoryImpl;
+import org.apache.tuscany.container.java.config.JavaContextFactory;
+import org.apache.tuscany.container.java.scopes.OrderedDependentPojo;
+import org.apache.tuscany.core.builder.ContextFactory;
+import org.apache.tuscany.core.builder.ObjectFactory;
+import org.apache.tuscany.core.config.JavaIntrospectionHelper;
+import org.apache.tuscany.core.context.Context;
+import org.apache.tuscany.core.context.ScopeContext;
+import org.apache.tuscany.core.injection.Injector;
+import org.apache.tuscany.core.injection.MethodInjector;
+import org.apache.tuscany.core.injection.ObjectCreationException;
+import org.apache.tuscany.core.injection.EventInvoker;
+import org.apache.tuscany.core.injection.MethodEventInvoker;
+import org.apache.tuscany.model.assembly.AssemblyContext;
+import org.apache.tuscany.model.assembly.Scope;
+import org.apache.tuscany.model.assembly.impl.AssemblyContextImpl;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class MockContextFactory {
+
+    private MockContextFactory(){}
+
+    /**
+     * Wires together a source and target
+     * @throws NoSuchMethodException
+     */
+    public static List<ContextFactory<Context>> createWiredContexts(Scope 
scope, ScopeContext context) throws NoSuchMethodException{
+
+        Constructor constructor = 
JavaIntrospectionHelper.getDefaultConstructor(OrderedDependentPojo.class);
+        Method getPojo = 
OrderedDependentPojo.class.getMethod("setPojo",OrderedDependentPojo.class);
+        Method init = 
OrderedDependentPojo.class.getMethod("init",(Class[])null);
+        EventInvoker<Object> initInvoker = new 
MethodEventInvoker<Object>(init);
+        Method destroy = 
OrderedDependentPojo.class.getMethod("destroy",(Class[])null);
+        EventInvoker<Object> destroyInvoker = new 
MethodEventInvoker<Object>(destroy);
+
+        JavaContextFactory source = new 
JavaContextFactory("source",constructor,scope);
+        source.setInitInvoker(initInvoker);
+        source.setDestroyInvoker(destroyInvoker);
+        JavaContextFactory target = new 
JavaContextFactory("target",constructor,scope);
+        target.setInitInvoker(initInvoker);
+        target.setDestroyInvoker(destroyInvoker);
+        List<Injector> injectors = new ArrayList<Injector>();
+        injectors.add(new MethodInjector(getPojo, new 
MockTargetFactory("target",context)));
+        source.setSetters(injectors);
+        List<ContextFactory<Context>> list = new 
ArrayList<ContextFactory<Context>>();
+        list.add((ContextFactory)source);
+        list.add((ContextFactory)target);
+        return list;
+    }
+
+    private static class MockTargetFactory implements ObjectFactory{
+
+        private String name;
+        private ScopeContext context;
+
+        public MockTargetFactory (String name, ScopeContext context){
+            this.name = name;
+            this.context = context;
+        }
+
+        public Object getInstance() throws ObjectCreationException {
+            return context.getContext(name).getInstance(null);
+        }
+    }
+
+}

Modified: 
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockFactory.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockFactory.java?rev=394263&r1=394262&r2=394263&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockFactory.java
 (original)
+++ 
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockFactory.java
 Fri Apr 14 23:02:05 2006
@@ -686,4 +686,6 @@
         
Assert.assertNotNull(child.getContext(FOO_WIRE_BUILDER).getInstance(null));
         return runtime;
     }
+
+
 }

Modified: 
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/components/ModuleScopeComponentImpl.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/components/ModuleScopeComponentImpl.java?rev=394263&r1=394262&r2=394263&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/components/ModuleScopeComponentImpl.java
 (original)
+++ 
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/components/ModuleScopeComponentImpl.java
 Fri Apr 14 23:02:05 2006
@@ -23,18 +23,6 @@
 public class ModuleScopeComponentImpl extends AbstractGenericComponent 
implements
         ModuleScopeComponent {
 
-//     private boolean init;
-//     
-//     @Init(eager=false)
-//     public void init(){
-//             init= true;
-//     }
-//
-//     public boolean isInit(){
-//             return init;
-//     }
-
-
     private String foo;
 
     public void setFoo(String foo) {

Added: 
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/DependencyLifecycleTestCase.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/DependencyLifecycleTestCase.java?rev=394263&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/DependencyLifecycleTestCase.java
 (added)
+++ 
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/DependencyLifecycleTestCase.java
 Fri Apr 14 23:02:05 2006
@@ -0,0 +1,77 @@
+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();
+    }
+
+}

Modified: 
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/ModuleScopeLifecycleTestCase.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/ModuleScopeLifecycleTestCase.java?rev=394263&r1=394262&r2=394263&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/ModuleScopeLifecycleTestCase.java
 (original)
+++ 
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/ModuleScopeLifecycleTestCase.java
 Fri Apr 14 23:02:05 2006
@@ -41,7 +41,7 @@
 import org.apache.tuscany.model.assembly.Scope;
 
 /**
- * Lifecycle unit tests for the Http session scope container
+ * Lifecycle unit tests for the module scope container
  * 
  * @version $Rev$ $Date$
  */
@@ -185,7 +185,6 @@
         for (AtomicComponent aCa : ca) {
             builder.build(aCa);
             configs.add((ContextFactory<Context>) aCa.getContextFactory());
-
         }
         return configs;
     }
@@ -200,7 +199,6 @@
         for (AtomicComponent aCa : ca) {
             builder.build(aCa);
             configs.add((ContextFactory<Context>) aCa.getContextFactory());
-
         }
         return configs;
     }

Added: 
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/OrderedDependentPojo.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/OrderedDependentPojo.java?rev=394263&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/OrderedDependentPojo.java
 (added)
+++ 
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/OrderedDependentPojo.java
 Fri Apr 14 23:02:05 2006
@@ -0,0 +1,18 @@
+package org.apache.tuscany.container.java.scopes;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class OrderedDependentPojo extends OrderedInitPojo {
+
+    private OrderedDependentPojo pojo;
+
+    public OrderedDependentPojo getPojo() {
+        return pojo;
+    }
+
+    public void setPojo(OrderedDependentPojo pojo) {
+        this.pojo = pojo;
+    }
+
+}

Modified: 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/injection/NonProxiedTargetFactory.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/injection/NonProxiedTargetFactory.java?rev=394263&r1=394262&r2=394263&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/injection/NonProxiedTargetFactory.java
 (original)
+++ 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/injection/NonProxiedTargetFactory.java
 Fri Apr 14 23:02:05 2006
@@ -28,9 +28,10 @@
 
     private ContextResolver resolver;
 
-    // the SCDL name of the target component/service for this reference
+    // the name of the target component/service for this reference
     private QualifiedName targetName;
     private QualifiedName qualifiedServiceName;
+
     /**
      * Constructs a reference object factory from a configured reference on a 
type
      * 


Reply via email to