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
*