Author: jmarino
Date: Tue Feb 28 19:11:22 2006
New Revision: 381885
URL: http://svn.apache.org/viewcvs?rev=381885&view=rev
Log:
consolidation and cleanup of mock java factory
Removed:
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/TestContextFactory.java
Modified:
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/context/BadPojoTestCase.java
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/context/PojoLifecycleTestCase.java
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/JavaBuilderContextIntegrationTestCase.java
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/EntryPointToJavaTestCase.java
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/JavaToExternalServiceTestCase.java
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockFactory.java
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/scopes/AggregateScopeTestCase.java
Modified:
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/context/BadPojoTestCase.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/context/BadPojoTestCase.java?rev=381885&r1=381884&r2=381885&view=diff
==============================================================================
---
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/context/BadPojoTestCase.java
(original)
+++
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/context/BadPojoTestCase.java
Tue Feb 28 19:11:22 2006
@@ -18,7 +18,7 @@
import junit.framework.TestCase;
-import org.apache.tuscany.container.java.mock.TestContextFactory;
+import org.apache.tuscany.container.java.mock.MockFactory;
import org.apache.tuscany.container.java.mock.components.BadContextPojo;
import org.apache.tuscany.container.java.mock.components.BadNamePojo;
import org.apache.tuscany.core.context.AggregateContext;
@@ -37,7 +37,7 @@
AggregateContext mc = new AggregateContextImpl();
mc.setName("mc");
try {
- JavaComponentContext context =
TestContextFactory.createPojoContext("BadNamePojo", BadNamePojo.class,
+ JavaComponentContext context =
MockFactory.createPojoContext("BadNamePojo", BadNamePojo.class,
Scope.MODULE, mc);
} catch (NoSuchMethodException e) {
if (e.getMessage().indexOf("@ComponentName") < 0) {
@@ -57,7 +57,7 @@
AggregateContext mc = new AggregateContextImpl();
mc.setName("mc");
try {
- JavaComponentContext context =
TestContextFactory.createPojoContext("BadContextPojo", BadContextPojo.class,
+ JavaComponentContext context =
MockFactory.createPojoContext("BadContextPojo", BadContextPojo.class,
Scope.MODULE, mc);
} catch (NoSuchMethodException e) {
if (e.getMessage().indexOf("@Context") < 0) {
Modified:
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/context/PojoLifecycleTestCase.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/context/PojoLifecycleTestCase.java?rev=381885&r1=381884&r2=381885&view=diff
==============================================================================
---
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/context/PojoLifecycleTestCase.java
(original)
+++
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/context/PojoLifecycleTestCase.java
Tue Feb 28 19:11:22 2006
@@ -19,7 +19,7 @@
import junit.framework.Assert;
import junit.framework.TestCase;
-import org.apache.tuscany.container.java.mock.TestContextFactory;
+import org.apache.tuscany.container.java.mock.MockFactory;
import
org.apache.tuscany.container.java.mock.components.ModuleScopeInitOnlyComponent;
import org.apache.tuscany.core.context.AggregateContext;
import org.apache.tuscany.core.context.impl.AggregateContextImpl;
@@ -35,7 +35,7 @@
public void testComponentNameSet() throws Exception {
AggregateContext mc = new AggregateContextImpl();
mc.setName("mc");
- JavaComponentContext context =
TestContextFactory.createPojoContext("TestServiceInit",
+ JavaComponentContext context =
MockFactory.createPojoContext("TestServiceInit",
ModuleScopeInitOnlyComponent.class, Scope.MODULE, mc);
context.start();
ModuleScopeInitOnlyComponent instance = (ModuleScopeInitOnlyComponent)
context.getInstance(null);
@@ -47,7 +47,7 @@
public void testModuleContextSet() throws Exception {
AggregateContext mc = new AggregateContextImpl();
mc.setName("mc");
- JavaComponentContext context =
TestContextFactory.createPojoContext("TestServiceInit",
+ JavaComponentContext context =
MockFactory.createPojoContext("TestServiceInit",
ModuleScopeInitOnlyComponent.class, Scope.MODULE, mc);
context.start();
ModuleScopeInitOnlyComponent instance = (ModuleScopeInitOnlyComponent)
context.getInstance(null);
@@ -59,7 +59,7 @@
public void testInit() throws Exception {
AggregateContext mc = new AggregateContextImpl();
mc.setName("mc");
- JavaComponentContext context =
TestContextFactory.createPojoContext("TestServiceInit",
+ JavaComponentContext context =
MockFactory.createPojoContext("TestServiceInit",
ModuleScopeInitOnlyComponent.class, Scope.MODULE, mc);
context.start();
ModuleScopeInitOnlyComponent instance = (ModuleScopeInitOnlyComponent)
context.getInstance(null);
Modified:
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/JavaBuilderContextIntegrationTestCase.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/JavaBuilderContextIntegrationTestCase.java?rev=381885&r1=381884&r2=381885&view=diff
==============================================================================
---
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/JavaBuilderContextIntegrationTestCase.java
(original)
+++
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/JavaBuilderContextIntegrationTestCase.java
Tue Feb 28 19:11:22 2006
@@ -32,7 +32,6 @@
import org.apache.tuscany.core.builder.impl.HierarchicalBuilder;
import org.apache.tuscany.core.context.AggregateContext;
import org.apache.tuscany.core.context.EventContext;
-import org.apache.tuscany.core.context.impl.AggregateContextImpl;
import org.apache.tuscany.core.invocation.jdk.JDKProxyFactoryFactory;
import org.apache.tuscany.core.invocation.spi.ProxyFactoryFactory;
import org.apache.tuscany.core.message.MessageFactory;
@@ -90,7 +89,7 @@
runtime.addBuilder(new JavaTargetWireBuilder());
runtime.start();
runtime.getRootContext().registerModelObject(
- MockFactory.createSystemComponent("test.module",
AggregateContextImpl.class.getName(), Scope.AGGREGATE));
+ MockFactory.createAggregateComponent("test.module",
Scope.AGGREGATE));
AggregateContext child = (AggregateContext)
runtime.getRootContext().getContext("test.module");
child.registerModelObject(MockFactory.createModule());
child.fireEvent(EventContext.MODULE_START, null);
@@ -132,8 +131,7 @@
runtime.addBuilder(new JavaTargetWireBuilder());
runtime.start();
runtime.getRootContext().registerModelObject(
- MockFactory.createSystemComponent("test.module",
AggregateContextImpl.class.getName(),
- Scope.AGGREGATE));
+ MockFactory.createAggregateComponent("test.module",
Scope.AGGREGATE));
AggregateContext child = (AggregateContext)
runtime.getRootContext().getContext("test.module");
child.registerModelObject(MockFactory.createModule());
child.fireEvent(EventContext.MODULE_START, null);
@@ -178,8 +176,7 @@
runtime.addBuilder(new JavaTargetWireBuilder());
runtime.start();
runtime.getRootContext().registerModelObject(
- MockFactory.createSystemComponent("test.module",
AggregateContextImpl.class.getName(),
- Scope.AGGREGATE));
+ MockFactory.createAggregateComponent("test.module",
Scope.AGGREGATE));
AggregateContext child = (AggregateContext)
runtime.getRootContext().getContext("test.module");
child.registerModelObject(MockFactory.createModule());
child.fireEvent(EventContext.MODULE_START, null);
@@ -222,8 +219,7 @@
runtime.start();
runtime.getRootContext().registerModelObject(
- MockFactory.createSystemComponent("test.module",
AggregateContextImpl.class.getName(),
- Scope.AGGREGATE));
+ MockFactory.createAggregateComponent("test.module",
Scope.AGGREGATE));
AggregateContext child = (AggregateContext)
runtime.getRootContext().getContext("test.module");
child.registerModelObject(MockFactory.createModule());
child.fireEvent(EventContext.MODULE_START, null);
Modified:
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/EntryPointToJavaTestCase.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/EntryPointToJavaTestCase.java?rev=381885&r1=381884&r2=381885&view=diff
==============================================================================
---
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/EntryPointToJavaTestCase.java
(original)
+++
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/EntryPointToJavaTestCase.java
Tue Feb 28 19:11:22 2006
@@ -35,7 +35,6 @@
import org.apache.tuscany.core.context.AggregateContext;
import org.apache.tuscany.core.context.EntryPointContext;
import org.apache.tuscany.core.context.EventContext;
-import org.apache.tuscany.core.context.impl.AggregateContextImpl;
import org.apache.tuscany.core.invocation.jdk.JDKProxyFactoryFactory;
import org.apache.tuscany.core.invocation.spi.ProxyFactoryFactory;
import org.apache.tuscany.core.message.MessageFactory;
@@ -92,7 +91,7 @@
runtime.addBuilder(new FooBindingWireBuilder());
runtime.start();
runtime.getRootContext().registerModelObject(
- MockFactory.createSystemComponent("test.module",
AggregateContextImpl.class.getName(), Scope.AGGREGATE));
+ MockFactory.createAggregateComponent("test.module",
Scope.AGGREGATE));
AggregateContext child = (AggregateContext)
runtime.getRootContext().getContext("test.module");
child.registerModelObject(MockFactory.createModuleWithEntryPoint());
child.fireEvent(EventContext.MODULE_START, null);
Modified:
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/JavaToExternalServiceTestCase.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/JavaToExternalServiceTestCase.java?rev=381885&r1=381884&r2=381885&view=diff
==============================================================================
---
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/JavaToExternalServiceTestCase.java
(original)
+++
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/JavaToExternalServiceTestCase.java
Tue Feb 28 19:11:22 2006
@@ -32,7 +32,6 @@
import org.apache.tuscany.core.builder.impl.HierarchicalBuilder;
import org.apache.tuscany.core.context.AggregateContext;
import org.apache.tuscany.core.context.EventContext;
-import org.apache.tuscany.core.context.impl.AggregateContextImpl;
import org.apache.tuscany.core.invocation.jdk.JDKProxyFactoryFactory;
import org.apache.tuscany.core.invocation.spi.ProxyFactoryFactory;
import org.apache.tuscany.core.message.MessageFactory;
@@ -83,7 +82,7 @@
runtime.addBuilder(new FooBindingWireBuilder());
runtime.start();
runtime.getRootContext().registerModelObject(
- MockFactory.createSystemComponent("test.module",
AggregateContextImpl.class.getName(), Scope.AGGREGATE));
+ MockFactory.createAggregateComponent("test.module",
Scope.AGGREGATE));
AggregateContext child = (AggregateContext)
runtime.getRootContext().getContext("test.module");
child.registerModelObject(MockFactory.createModuleWithExternalService());
child.fireEvent(EventContext.MODULE_START, null);
Modified:
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockFactory.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockFactory.java?rev=381885&r1=381884&r2=381885&view=diff
==============================================================================
---
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockFactory.java
(original)
+++
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockFactory.java
Tue Feb 28 19:11:22 2006
@@ -16,14 +16,18 @@
*/
package org.apache.tuscany.container.java.mock;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
+import java.util.Set;
import org.apache.tuscany.container.java.assembly.JavaAssemblyFactory;
import org.apache.tuscany.container.java.assembly.JavaImplementation;
import org.apache.tuscany.container.java.assembly.impl.JavaAssemblyFactoryImpl;
import org.apache.tuscany.container.java.assembly.mock.HelloWorldImpl;
import org.apache.tuscany.container.java.assembly.mock.HelloWorldService;
+import org.apache.tuscany.container.java.context.JavaComponentContext;
import org.apache.tuscany.container.java.mock.binding.foo.FooBinding;
import org.apache.tuscany.container.java.mock.components.GenericComponent;
import org.apache.tuscany.container.java.mock.components.HelloWorldClient;
@@ -32,6 +36,15 @@
import org.apache.tuscany.core.builder.RuntimeConfigurationBuilder;
import org.apache.tuscany.core.config.JavaIntrospectionHelper;
import org.apache.tuscany.core.context.AggregateContext;
+import org.apache.tuscany.core.context.InstanceContext;
+import org.apache.tuscany.core.context.impl.AggregateContextImpl;
+import org.apache.tuscany.core.injection.EventInvoker;
+import org.apache.tuscany.core.injection.FieldInjector;
+import org.apache.tuscany.core.injection.Injector;
+import org.apache.tuscany.core.injection.MethodEventInvoker;
+import org.apache.tuscany.core.injection.MethodInjector;
+import org.apache.tuscany.core.injection.PojoObjectFactory;
+import org.apache.tuscany.core.injection.SingletonObjectFactory;
import org.apache.tuscany.core.system.assembly.SystemAssemblyFactory;
import org.apache.tuscany.core.system.assembly.SystemBinding;
import org.apache.tuscany.core.system.assembly.SystemImplementation;
@@ -53,6 +66,10 @@
import org.apache.tuscany.model.assembly.SimpleComponent;
import org.apache.tuscany.model.assembly.impl.AssemblyModelContextImpl;
import org.apache.tuscany.model.types.java.JavaServiceContract;
+import org.osoa.sca.annotations.ComponentName;
+import org.osoa.sca.annotations.Context;
+import org.osoa.sca.annotations.Destroy;
+import org.osoa.sca.annotations.Init;
/**
* Generates test components, modules, and runtime artifacts
@@ -67,7 +84,14 @@
private static AssemblyModelContext assemblyContext = new
AssemblyModelContextImpl(null, null, null);
- public static SimpleComponent createComponent(String name, Class type,
Scope scope) throws NoSuchMethodException {
+ /**
+ * Creates an initialized simple component
+ *
+ * @param name the component name
+ * @param type the implementation type
+ * @param scope the component scope
+ */
+ public static SimpleComponent createComponent(String name, Class type,
Scope scope) {
SimpleComponent sc = factory.createSimpleComponent();
JavaImplementation impl = factory.createJavaImplementation();
impl.setComponentType(factory.createComponentType());
@@ -83,17 +107,17 @@
return sc;
}
- public static Component createSystemComponent(String name, String type,
Scope scope) throws NoSuchMethodException,
- ClassNotFoundException {
- Class claz = JavaIntrospectionHelper.loadClass(type);
- Component sc = null;
- if (AggregateContext.class.isAssignableFrom(claz)) {
- sc = systemFactory.createModuleComponent();
- } else {
- sc = systemFactory.createSimpleComponent();
- }
+ /**
+ * Creates a system
+ * @param name
+ * @param scope
+ * @return
+ * @throws ClassNotFoundException
+ */
+ public static Component createAggregateComponent(String name, Scope scope)
throws ClassNotFoundException {
+ Component sc = sc = systemFactory.createModuleComponent();
SystemImplementation impl = systemFactory.createSystemImplementation();
- impl.setImplementationClass(claz);
+ impl.setImplementationClass(AggregateContextImpl.class);
sc.setComponentImplementation(impl);
Service s = systemFactory.createService();
JavaServiceContract ji = systemFactory.createJavaServiceContract();
@@ -144,26 +168,6 @@
}
/**
- * Creates a component decorated with an appropriate runtime configuration
- *
- * @param name the name of the component
- * @param type the component implementation class name
- * @param scope the scope of the component implementation
- * @param aggregateContext the containing aggregate context
- * @throws NoSuchMethodException
- * @throws ClassNotFoundException
- * @see RuntimeConfiguration
- */
- public static Component createDecoratedComponent(String name, String type,
Scope scope,
- AggregateContext aggregateContext) throws NoSuchMethodException,
ClassNotFoundException {
-
- Component sc = createSystemComponent(name, type, scope);
- SystemComponentContextBuilder builder = new
SystemComponentContextBuilder();
- builder.build(sc, aggregateContext);
- return sc;
- }
-
- /**
* Creates an entry point wired to the given target (e.g. component,
external service) using the system binding
*
* @param name the name of the entry point
@@ -174,10 +178,10 @@
public static EntryPoint createEPSystemBinding(String name, Class
interfaz, String refName, AggregatePart target) {
JavaServiceContract contract =
systemFactory.createJavaServiceContract();
contract.setInterface(interfaz);
-
+
EntryPoint ep = systemFactory.createEntryPoint();
ep.setName(name);
-
+
Reference ref = systemFactory.createReference();
ref.setName(refName);
ref.setServiceContract(contract);
@@ -185,24 +189,24 @@
configuredReference.setReference(ref);
Service service = systemFactory.createService();
service.setServiceContract(contract);
-
+
ConfiguredService cService = systemFactory.createConfiguredService();
cService.setService(service);
cService.initialize(MockFactory.assemblyContext);
-
+
configuredReference.getTargetConfiguredServices().add(cService);
ep.setConfiguredReference(configuredReference);
-
- ///
+
+ // /
Service epService = systemFactory.createService();
epService.setServiceContract(contract);
-
+
ConfiguredService epCService = systemFactory.createConfiguredService();
epCService.initialize(MockFactory.assemblyContext);
epCService.setService(epService);
-
+
//
-
+
ep.setConfiguredService(epCService);
SystemBinding binding = systemFactory.createSystemBinding();
ep.getBindings().add(binding);
@@ -235,9 +239,9 @@
}
public static Module createModule() throws Exception {
- Component sourceComponent = createComponent("source",
ModuleScopeComponentImpl.class,Scope.MODULE);
- Component targetComponent = createComponent("target",
ModuleScopeComponentImpl.class,Scope.MODULE);
-
+ Component sourceComponent = createComponent("source",
ModuleScopeComponentImpl.class, Scope.MODULE);
+ Component targetComponent = createComponent("target",
ModuleScopeComponentImpl.class, Scope.MODULE);
+
Service targetService = factory.createService();
JavaServiceContract targetContract =
factory.createJavaServiceContract();
targetContract.setInterface(GenericComponent.class);
@@ -248,7 +252,7 @@
cTargetService.initialize(assemblyContext);
targetComponent.getConfiguredServices().add(cTargetService);
targetComponent.initialize(assemblyContext);
-
+
Reference ref = factory.createReference();
ConfiguredReference cref = factory.createConfiguredReference();
ref.setName("setGenericComponent");
@@ -260,7 +264,7 @@
cref.initialize(assemblyContext);
sourceComponent.getConfiguredReferences().add(cref);
sourceComponent.initialize(assemblyContext);
-
+
Module module = factory.createModule();
module.setName("test.module");
module.getComponents().add(sourceComponent);
@@ -270,9 +274,9 @@
}
public static Module createModuleWithExternalService() throws Exception {
- Component sourceComponent = createComponent("source",
HelloWorldClient.class,Scope.MODULE);
- ExternalService targetES =
createFooBindingExternalService("target",HelloWorldService.class);
-
+ Component sourceComponent = createComponent("source",
HelloWorldClient.class, Scope.MODULE);
+ ExternalService targetES = createFooBindingExternalService("target",
HelloWorldService.class);
+
Service targetService = factory.createService();
JavaServiceContract targetContract =
factory.createJavaServiceContract();
targetContract.setInterface(HelloWorldService.class);
@@ -282,7 +286,7 @@
cTargetService.setService(targetService);
targetES.setConfiguredService(cTargetService);
targetES.initialize(assemblyContext);
-
+
Reference ref = factory.createReference();
ConfiguredReference cref = factory.createConfiguredReference();
ref.setName("setHelloWorldService");
@@ -294,7 +298,7 @@
cref.initialize(assemblyContext);
sourceComponent.getConfiguredReferences().add(cref);
sourceComponent.initialize(assemblyContext);
-
+
Module module = factory.createModule();
module.setName("test.module");
module.getComponents().add(sourceComponent);
@@ -305,8 +309,8 @@
public static Module createModuleWithEntryPoint() throws Exception {
EntryPoint sourceEP = createFooBindingEntryPoint("source",
HelloWorldService.class);
- Component targetComponent =
createComponent("target",HelloWorldImpl.class,Scope.MODULE);
-
+ Component targetComponent = createComponent("target",
HelloWorldImpl.class, Scope.MODULE);
+
Service targetService = factory.createService();
JavaServiceContract targetContract =
factory.createJavaServiceContract();
targetContract.setInterface(HelloWorldService.class);
@@ -316,7 +320,7 @@
cTargetService.setService(targetService);
targetComponent.getConfiguredServices().add(cTargetService);
targetComponent.initialize(assemblyContext);
-
+
Reference ref = factory.createReference();
ConfiguredReference cref = factory.createConfiguredReference();
ref.setName("setHelloWorldService");
@@ -329,8 +333,7 @@
sourceEP.setConfiguredReference(cref);
sourceEP.getConfiguredService().getService().setName("HelloWorldService");
sourceEP.initialize(assemblyContext);
-
-
+
Module module = factory.createModule();
module.setName("test.module");
module.getEntryPoints().add(sourceEP);
@@ -346,6 +349,87 @@
builders.add(new SystemExternalServiceBuilder());
return builders;
}
-
-
+
+ /**
+ * Creates an aggregate runtime configuration
+ *
+ * @param name the name of the component
+ * @param scope the scope of the component implementation
+ * @param aggregateContext the containing aggregate context
+ * @throws NoSuchMethodException
+ * @throws ClassNotFoundException
+ * @see RuntimeConfiguration
+ */
+ public static RuntimeConfiguration<InstanceContext>
createAggregateConfiguration(String name, Scope scope, AggregateContext
aggregateContext)
+ throws NoSuchMethodException, ClassNotFoundException {
+
+ Component sc = createAggregateComponent(name, scope);
+ SystemComponentContextBuilder builder = new
SystemComponentContextBuilder();
+ builder.build(sc, aggregateContext);
+ return (RuntimeConfiguration<InstanceContext>)
sc.getComponentImplementation().getRuntimeConfiguration();
+ }
+
+ /**
+ * Creates a Java POJO component context
+ *
+ * @param name the name of the context
+ * @param implType the POJO class
+ * @param scope the component scope
+ * @param moduleComponentContext the containing aggregate context
+ * @throws NoSuchMethodException
+ */
+ public static JavaComponentContext createPojoContext(String name, Class
implType, Scope scope,
+ AggregateContext moduleComponentContext) throws
NoSuchMethodException {
+ SimpleComponent component = createComponent(name, implType, scope);
+
+ Set<Field> fields = JavaIntrospectionHelper.getAllFields(implType);
+ Set<Method> methods =
JavaIntrospectionHelper.getAllUniqueMethods(implType);
+ List<Injector> injectors = new ArrayList();
+ EventInvoker initInvoker = null;
+ boolean eagerInit = false;
+ EventInvoker destroyInvoker = null;
+ for (Field field : fields) {
+ ComponentName compName = field.getAnnotation(ComponentName.class);
+ if (compName != null) {
+ Injector injector = new FieldInjector(field, new
SingletonObjectFactory(name));
+ injectors.add(injector);
+ }
+ Context context = field.getAnnotation(Context.class);
+ if (context != null) {
+ Injector injector = new FieldInjector(field, new
SingletonObjectFactory(moduleComponentContext));
+ injectors.add(injector);
+ }
+ }
+ for (Method method : methods) {
+ // FIXME Java5
+ Init init = method.getAnnotation(Init.class);
+ if (init != null && initInvoker == null) {
+ initInvoker = new MethodEventInvoker(method);
+ eagerInit = init.eager();
+ continue;
+ }
+ Destroy destroy = method.getAnnotation(Destroy.class);
+ if (destroy != null && destroyInvoker == null) {
+ destroyInvoker = new MethodEventInvoker(method);
+ continue;
+ }
+ ComponentName compName = method.getAnnotation(ComponentName.class);
+ if (compName != null) {
+ Injector injector = new MethodInjector(method, new
SingletonObjectFactory(name));
+ injectors.add(injector);
+ }
+ Context context = method.getAnnotation(Context.class);
+ if (context != null) {
+ Injector injector = new MethodInjector(method, new
SingletonObjectFactory(moduleComponentContext));
+ injectors.add(injector);
+ }
+ }
+
+ boolean stateless = (scope == Scope.INSTANCE);
+ JavaComponentContext context = new JavaComponentContext("foo", new
PojoObjectFactory(JavaIntrospectionHelper
+ .getDefaultConstructor(implType), null, injectors), eagerInit,
initInvoker, destroyInvoker, stateless);
+
+ return context;
+ }
+
}
Modified:
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/scopes/AggregateScopeTestCase.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/scopes/AggregateScopeTestCase.java?rev=381885&r1=381884&r2=381885&view=diff
==============================================================================
---
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/scopes/AggregateScopeTestCase.java
(original)
+++
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/scopes/AggregateScopeTestCase.java
Tue Feb 28 19:11:22 2006
@@ -24,17 +24,13 @@
import org.apache.tuscany.container.java.mock.components.GenericComponent;
import
org.apache.tuscany.container.java.mock.components.ModuleScopeComponentImpl;
import
org.apache.tuscany.container.java.mock.components.SessionScopeComponentImpl;
-import org.apache.tuscany.core.builder.BuilderConfigException;
import org.apache.tuscany.core.builder.BuilderException;
-import org.apache.tuscany.core.builder.RuntimeConfiguration;
import org.apache.tuscany.core.context.AggregateContext;
import org.apache.tuscany.core.context.EventContext;
-import org.apache.tuscany.core.context.InstanceContext;
import org.apache.tuscany.core.context.QualifiedName;
import org.apache.tuscany.core.context.impl.AggregateContextImpl;
import org.apache.tuscany.core.context.impl.EventContextImpl;
import org.apache.tuscany.core.context.scope.AggregateScopeContext;
-import org.apache.tuscany.model.assembly.Component;
import org.apache.tuscany.model.assembly.Extensible;
import org.apache.tuscany.model.assembly.Scope;
import org.apache.tuscany.model.assembly.SimpleComponent;
@@ -55,12 +51,9 @@
AggregateContext moduleComponentCtx = new AggregateContextImpl();
moduleComponentCtx.setName("testMC");
AggregateScopeContext scopeContainer = new AggregateScopeContext(ctx);
- Component aggregateComponent =
MockFactory.createDecoratedComponent("AggregateComponent",
- AggregateContextImpl.class.getName(), Scope.AGGREGATE,
moduleComponentCtx);
-
scopeContainer.registerConfiguration((RuntimeConfiguration<InstanceContext>)
aggregateComponent
- .getComponentImplementation().getRuntimeConfiguration());
+
scopeContainer.registerConfiguration(MockFactory.createAggregateConfiguration("AggregateComponent",
Scope.AGGREGATE,
+ moduleComponentCtx));
scopeContainer.start();
-
AggregateContext child = (AggregateContext)
scopeContainer.getContext("AggregateComponent");
List<Extensible> models = createAssembly(moduleComponentCtx);
for (Extensible model : models) {
@@ -71,8 +64,7 @@
Object session = new Object();
scopeContainer.onEvent(EventContext.REQUEST_START, null);
scopeContainer.onEvent(EventContext.SESSION_NOTIFY, session);
- AggregateContext componentCtx = (AggregateContext) scopeContainer
- .getContext("AggregateComponent");
+ AggregateContext componentCtx = (AggregateContext)
scopeContainer.getContext("AggregateComponent");
GenericComponent testService1 = (GenericComponent)
componentCtx.locateInstance("TestService1");
GenericComponent testService2 = (GenericComponent)
componentCtx.locateInstance("TestService2");
GenericComponent testService3 = (GenericComponent)
componentCtx.locateInstance("TestService3");
@@ -112,10 +104,8 @@
AggregateContext moduleComponentCtx = new AggregateContextImpl();
moduleComponentCtx.setName("testMC");
AggregateScopeContext scopeContainer = new AggregateScopeContext(ctx);
- Component aggregateComponent =
MockFactory.createDecoratedComponent("AggregateComponent",
- AggregateContextImpl.class.getName(), Scope.AGGREGATE,
moduleComponentCtx);
-
scopeContainer.registerConfiguration((RuntimeConfiguration<InstanceContext>)
aggregateComponent
- .getComponentImplementation().getRuntimeConfiguration());
+
scopeContainer.registerConfiguration(MockFactory.createAggregateConfiguration("AggregateComponent",
Scope.AGGREGATE,
+ moduleComponentCtx));
scopeContainer.start();
AggregateContext child = (AggregateContext)
scopeContainer.getContext("AggregateComponent");
List<Extensible> parts = createAssembly(moduleComponentCtx);
@@ -126,8 +116,7 @@
// aggregate.onEvent(EventContext.SYSTEM_START, null);
scopeContainer.onEvent(EventContext.MODULE_START, null);
QualifiedName name = new
QualifiedName("AggregateComponent/TestService1");
- AggregateContext componentCtx = (AggregateContext) scopeContainer
- .getContext("AggregateComponent");
+ AggregateContext componentCtx = (AggregateContext)
scopeContainer.getContext("AggregateComponent");
}
/**
@@ -138,16 +127,12 @@
AggregateContext moduleComponentCtx = new AggregateContextImpl();
moduleComponentCtx.setName("testMC");
AggregateScopeContext scopeContainer = new AggregateScopeContext(ctx);
- Component aggregateComponent =
MockFactory.createDecoratedComponent("AggregateComponent",
- AggregateContextImpl.class.getName(), Scope.AGGREGATE,
moduleComponentCtx);
-
scopeContainer.registerConfiguration((RuntimeConfiguration<InstanceContext>)
aggregateComponent
- .getComponentImplementation().getRuntimeConfiguration());
+
scopeContainer.registerConfiguration(MockFactory.createAggregateConfiguration("AggregateComponent",
Scope.AGGREGATE,
+ moduleComponentCtx));
scopeContainer.start();
-
scopeContainer.onEvent(EventContext.MODULE_START, null);
QualifiedName name = new
QualifiedName("AggregateComponent/TestService1");
- AggregateContext componentCtx = (AggregateContext) scopeContainer
- .getContext("AggregateComponent");
+ AggregateContext componentCtx = (AggregateContext)
scopeContainer.getContext("AggregateComponent");
scopeContainer.onEvent(EventContext.MODULE_STOP, null);
scopeContainer.stop();
}
@@ -160,20 +145,17 @@
AggregateContext moduleComponentCtx = new AggregateContextImpl();
moduleComponentCtx.setName("testMC");
AggregateScopeContext scopeContainer = new AggregateScopeContext(ctx);
- Component aggregateComponent =
MockFactory.createDecoratedComponent("AggregateComponent",
- AggregateContextImpl.class.getName(), Scope.AGGREGATE,
moduleComponentCtx);
scopeContainer.start();
scopeContainer.onEvent(EventContext.MODULE_START, null);
-
scopeContainer.registerConfiguration((RuntimeConfiguration<InstanceContext>)
aggregateComponent
- .getComponentImplementation().getRuntimeConfiguration());
+
scopeContainer.registerConfiguration(MockFactory.createAggregateConfiguration("AggregateComponent",
Scope.AGGREGATE,
+ moduleComponentCtx));
QualifiedName name = new
QualifiedName("AggregateComponent/TestService1");
- AggregateContext componentCtx = (AggregateContext) scopeContainer
- .getContext("AggregateComponent");
+ AggregateContext componentCtx = (AggregateContext)
scopeContainer.getContext("AggregateComponent");
scopeContainer.onEvent(EventContext.MODULE_STOP, null);
scopeContainer.stop();
}
-
+
/**
* Creats an assembly containing a module-scoped component definition, a
session-scoped component definition, and a
* request-scoped component definition
@@ -181,25 +163,20 @@
* @param ctx the parent module context
*/
private List<Extensible> createAssembly(AggregateContext ctx) throws
BuilderException {
- try {
- JavaComponentContextBuilder builder = new
JavaComponentContextBuilder();
- SimpleComponent component =
MockFactory.createComponent("TestService1", ModuleScopeComponentImpl.class,
- Scope.MODULE);
- SimpleComponent sessionComponent =
MockFactory.createComponent("TestService2",
- SessionScopeComponentImpl.class, Scope.SESSION);
- SimpleComponent requestComponent =
MockFactory.createComponent("TestService3",
- SessionScopeComponentImpl.class, Scope.REQUEST);
- builder.build(component, ctx);
- builder.build(sessionComponent, ctx);
- builder.build(requestComponent, ctx);
- List<Extensible> configs = new ArrayList();
- configs.add(component);
- configs.add(sessionComponent);
- configs.add(requestComponent);
- return configs;
- } catch (NoSuchMethodException e) {
- throw new BuilderConfigException(e);
- }
+ JavaComponentContextBuilder builder = new
JavaComponentContextBuilder();
+ SimpleComponent component =
MockFactory.createComponent("TestService1", ModuleScopeComponentImpl.class,
Scope.MODULE);
+ SimpleComponent sessionComponent =
MockFactory.createComponent("TestService2", SessionScopeComponentImpl.class,
+ Scope.SESSION);
+ SimpleComponent requestComponent =
MockFactory.createComponent("TestService3", SessionScopeComponentImpl.class,
+ Scope.REQUEST);
+ builder.build(component, ctx);
+ builder.build(sessionComponent, ctx);
+ builder.build(requestComponent, ctx);
+ List<Extensible> configs = new ArrayList();
+ configs.add(component);
+ configs.add(sessionComponent);
+ configs.add(requestComponent);
+ return configs;
}
}