You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by jm...@apache.org on 2006/05/15 09:10:54 UTC

svn commit: r406563 - in /incubator/tuscany/sandbox/jboynes/sca: containers/container.java/src/main/java/org/apache/tuscany/container/java/builder/ containers/container.java/src/main/java/org/apache/tuscany/container/java/context/ containers/container....

Author: jmarino
Date: Mon May 15 00:10:36 2006
New Revision: 406563

URL: http://svn.apache.org/viewcvs?rev=406563&view=rev
Log:
start on builder refactors

Added:
    incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/builder/
    incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/builder/JavaComponentBuilderTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockModelFactory.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/HttpSessionScopeObjectFactory.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeObjectFactory.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeObjectFactory.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeObjectFactory.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/ScopeRegistryTestCase.java
Removed:
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/builder/support/
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/WireFactoryInitException.java
Modified:
    incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/builder/JavaComponentBuilder.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/context/JavaAtomicContext.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/EPtoExternalServiceTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/EntryPointToJavaTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/ExternalServiceProxyInvokeTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/JavaToExternalServiceTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/invocation/ScopedPojoInvokerTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockContextFactory.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/AbstractScopeContext.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/HttpSessionScopeContext.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeContext.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ScopeRegistryImpl.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeContext.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKSourceWire.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKTargetWire.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/system/WireServiceImpl.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/integration/system/AtomicContextToReferenceContextTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/MockContextFactory.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/jdk/JDKWireFactoryServiceTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/ScopeContext.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/ScopeRegistry.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentBuilderExtension.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/StAXLoaderRegistry.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/policy/PolicyBuilderRegistry.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/SourceWire.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/TargetWire.java

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/builder/JavaComponentBuilder.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/builder/JavaComponentBuilder.java?rev=406563&r1=406562&r2=406563&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/builder/JavaComponentBuilder.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/builder/JavaComponentBuilder.java Mon May 15 00:10:36 2006
@@ -29,6 +29,7 @@
     protected JavaAtomicContext createContext(CompositeContext parent, Component<JavaImplementation> component)
             throws BuilderConfigException {
         PojoComponentType componentType = component.getImplementation().getComponentType();
+
         List<Class<?>> serviceInterfaces = new ArrayList<Class<?>>();
         for (Service service : componentType.getServices().values()) {
             serviceInterfaces.add(((JavaServiceContract) service.getServiceContract()).getInterfaceClass());
@@ -58,7 +59,7 @@
                 }
             }
         }
-        return new JavaAtomicContext(component.getName(), serviceInterfaces, factory,
+        return new JavaAtomicContext(component.getName(), serviceInterfaces, factory, componentType.getLifecycleScope(),
                 componentType.isEagerInit(), componentType.getInitInvoker(), componentType.getDestroyInvoker(),
                 injectors, componentType.getReferenceMembers());
     }

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/context/JavaAtomicContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/context/JavaAtomicContext.java?rev=406563&r1=406562&r2=406563&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/context/JavaAtomicContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/context/JavaAtomicContext.java Mon May 15 00:10:36 2006
@@ -60,9 +60,9 @@
     protected EventInvoker<Object> destroyInvoker;
     protected ObjectFactory<?> objectFactory;
     protected List<Class<?>> serviceInterfaces;
+    protected Scope scope;
 
-
-    public JavaAtomicContext(String name, List<Class<?>> serviceInterfaces, ObjectFactory<?> objectFactory, boolean eagerInit, EventInvoker<Object> initInvoker,
+    public JavaAtomicContext(String name, List<Class<?>> serviceInterfaces, ObjectFactory<?> objectFactory, Scope scope, boolean eagerInit, EventInvoker<Object> initInvoker,
                              EventInvoker<Object> destroyInvoker, List<Injector> injectors, Map<String, Member> members) {
         this.name = name;
         this.injectors = injectors != null ? injectors : new ArrayList<Injector>();
@@ -72,6 +72,7 @@
         this.initInvoker = initInvoker;
         this.destroyInvoker = destroyInvoker;
         this.serviceInterfaces = serviceInterfaces;
+        this.scope = scope;
     }
 
     public List<Class<?>> getServiceInterfaces() {
@@ -79,10 +80,7 @@
     }
 
     public Scope getScope() {
-        if (scopeContext == null) {
-            return null;
-        }
-        return scopeContext.getScope();
+        return scope;
     }
 
     public boolean isEagerInit() {

Added: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/builder/JavaComponentBuilderTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/builder/JavaComponentBuilderTestCase.java?rev=406563&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/builder/JavaComponentBuilderTestCase.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/builder/JavaComponentBuilderTestCase.java Mon May 15 00:10:36 2006
@@ -0,0 +1,72 @@
+package org.apache.tuscany.container.java.builder;
+
+import junit.framework.TestCase;
+import org.apache.tuscany.container.java.context.JavaAtomicContext;
+import org.apache.tuscany.container.java.mock.components.Source;
+import org.apache.tuscany.container.java.mock.components.SourceImpl;
+import org.apache.tuscany.container.java.mock.components.Target;
+import org.apache.tuscany.container.java.model.JavaImplementation;
+import org.apache.tuscany.core.context.CompositeContextImpl;
+import org.apache.tuscany.core.context.WorkContextImpl;
+import org.apache.tuscany.core.context.scope.ModuleScopeObjectFactory;
+import org.apache.tuscany.core.context.scope.ScopeRegistryImpl;
+import org.apache.tuscany.core.model.PojoComponentType;
+import org.apache.tuscany.core.wire.jdk.JDKWireFactoryService;
+import org.apache.tuscany.core.wire.system.WireServiceImpl;
+import org.apache.tuscany.model.Component;
+import org.apache.tuscany.model.JavaServiceContract;
+import org.apache.tuscany.model.Scope;
+import org.apache.tuscany.model.Service;
+import org.apache.tuscany.model.ServiceContract;
+import org.apache.tuscany.spi.context.CompositeContext;
+import org.apache.tuscany.spi.context.ScopeRegistry;
+import org.apache.tuscany.spi.context.WorkContext;
+import org.apache.tuscany.spi.wire.WireService;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class JavaComponentBuilderTestCase extends TestCase {
+
+    private WireService wireService;
+
+    public void testBuild() throws Exception {
+        CompositeContext parent = new CompositeContextImpl();
+        WorkContext workContext = new WorkContextImpl();
+        workContext.setRemoteContext(parent);
+        ScopeRegistry scopeRegistry = new ScopeRegistryImpl(workContext);
+        scopeRegistry.registerFactory(Scope.MODULE, new ModuleScopeObjectFactory());
+
+        PojoComponentType sourceType = new PojoComponentType();
+        sourceType.setLifecycleScope(Scope.MODULE);
+        sourceType.setReferenceMember("target", SourceImpl.class.getMethod("setTarget", Target.class));
+
+        ServiceContract sourceContract = new JavaServiceContract();
+        sourceContract.setIntefaze(Source.class);
+        Service sourceService = new Service();
+        sourceService.setName("Source");
+        sourceService.setServiceContract(sourceContract);
+
+        sourceType.add(sourceService);
+        JavaImplementation sourceImpl = new JavaImplementation();
+        sourceImpl.setComponentType(sourceType);
+        sourceImpl.setImplementationClass(SourceImpl.class);
+        Component<JavaImplementation> sourceComponent = new Component<JavaImplementation>(sourceImpl);
+
+        JavaComponentBuilder builder = new JavaComponentBuilder();
+        builder.setWireService(wireService);
+        builder.setScopeRegistry(scopeRegistry);
+        JavaAtomicContext<Source> ctx = (JavaAtomicContext<Source>) builder.build(parent, sourceComponent);
+        ctx.start();
+        Source source = ctx.getService();
+        assertNotNull(source);
+        ctx.stop();
+    }
+
+    protected void setUp() throws Exception {
+        super.setUp();
+        wireService = new WireServiceImpl(new JDKWireFactoryService());
+    }
+
+
+}

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/EPtoExternalServiceTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/EPtoExternalServiceTestCase.java?rev=406563&r1=406562&r2=406563&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/EPtoExternalServiceTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/EPtoExternalServiceTestCase.java Mon May 15 00:10:36 2006
@@ -15,11 +15,11 @@
      */
     public void testEPtoESInvocation() throws Throwable {
 //        RuntimeContext runtime = MockContextFactory.registerFooBinding(MockContextFactory.createJavaRuntime());
-//        PolicyBuilderRegistry registry = (PolicyBuilderRegistry) ((CompositeContext) runtime.getSystemContext().getContext(MockContextFactory.SYSTEM_CHILD))
+//        PolicyBuilderRegistry builderRegistry = (PolicyBuilderRegistry) ((CompositeContext) runtime.getSystemContext().getContext(MockContextFactory.SYSTEM_CHILD))
 //                .getContext(MockContextFactory.POLICY_BUILDER_REGISTRY).getInstance(null);
 //        MockSyncInterceptor mockInterceptor = new MockSyncInterceptor();
 //        MockInterceptorBuilder interceptorBuilder = new MockInterceptorBuilder(mockInterceptor, false);
-//        registry.registerTargetBuilder(interceptorBuilder);
+//        builderRegistry.registerTargetBuilder(interceptorBuilder);
 //        runtime.getRootContext().registerModelObject(MockContextFactory.createCompositeComponent("test.module"));
 //        CompositeContext child = (CompositeContext) runtime.getRootContext().getContext("test.module");
 //        child.registerModelObject(MockContextFactory.createModuleWithEntryPointToExternalService());

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/EntryPointToJavaTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/EntryPointToJavaTestCase.java?rev=406563&r1=406562&r2=406563&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/EntryPointToJavaTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/EntryPointToJavaTestCase.java Mon May 15 00:10:36 2006
@@ -35,12 +35,12 @@
      */
     public void testEPtoJavaModuleScopeInvoke() throws Throwable {
 //        RuntimeContext runtime = MockContextFactory.registerFooBinding(MockContextFactory.createJavaRuntime());
-//        PolicyBuilderRegistry registry = (PolicyBuilderRegistry) ((CompositeContext) runtime.getSystemContext().getContext(MockContextFactory.SYSTEM_CHILD))
+//        PolicyBuilderRegistry builderRegistry = (PolicyBuilderRegistry) ((CompositeContext) runtime.getSystemContext().getContext(MockContextFactory.SYSTEM_CHILD))
 //                .getContext(MockContextFactory.POLICY_BUILDER_REGISTRY).getInstance(null);
 //
 //        MockSyncInterceptor mockInterceptor = new MockSyncInterceptor();
 //        MockInterceptorBuilder interceptorBuilder = new MockInterceptorBuilder(mockInterceptor, false);
-//        registry.registerTargetBuilder(interceptorBuilder);
+//        builderRegistry.registerTargetBuilder(interceptorBuilder);
 //        runtime.getRootContext().registerModelObject(MockContextFactory.createCompositeComponent("test.module"));
 //        CompositeContext child = (CompositeContext) runtime.getRootContext().getContext("test.module");
 //        child.registerModelObject(MockContextFactory.createModuleWithEntryPoint(Scope.MODULE));
@@ -80,11 +80,11 @@
      */
     public void testEPtoJavaSessionScopeInvoke() throws Throwable {
 //        RuntimeContext runtime = MockContextFactory.registerFooBinding(MockContextFactory.createJavaRuntime());
-//        PolicyBuilderRegistry registry = (PolicyBuilderRegistry) ((CompositeContext) runtime.getSystemContext().getContext(MockContextFactory.SYSTEM_CHILD))
+//        PolicyBuilderRegistry builderRegistry = (PolicyBuilderRegistry) ((CompositeContext) runtime.getSystemContext().getContext(MockContextFactory.SYSTEM_CHILD))
 //                .getContext(MockContextFactory.POLICY_BUILDER_REGISTRY).getInstance(null);
 //        MockSyncInterceptor mockInterceptor = new MockSyncInterceptor();
 //        MockInterceptorBuilder interceptorBuilder = new MockInterceptorBuilder(mockInterceptor, false);
-//        registry.registerTargetBuilder(interceptorBuilder);
+//        builderRegistry.registerTargetBuilder(interceptorBuilder);
 //        runtime.getRootContext().registerModelObject(MockContextFactory.createCompositeComponent("test.module"));
 //        CompositeContext child = (CompositeContext) runtime.getRootContext().getContext("test.module");
 //        child.registerModelObject(MockContextFactory.createModuleWithEntryPoint(Scope.SESSION));
@@ -155,11 +155,11 @@
      */
     public void testEPtoJavaStatelessInvoke() throws Throwable {
 //        RuntimeContext runtime = MockContextFactory.registerFooBinding(MockContextFactory.createJavaRuntime());
-//        PolicyBuilderRegistry registry = (PolicyBuilderRegistry) ((CompositeContext) runtime.getSystemContext().getContext(MockContextFactory.SYSTEM_CHILD))
+//        PolicyBuilderRegistry builderRegistry = (PolicyBuilderRegistry) ((CompositeContext) runtime.getSystemContext().getContext(MockContextFactory.SYSTEM_CHILD))
 //                .getContext(MockContextFactory.POLICY_BUILDER_REGISTRY).getInstance(null);
 //        MockSyncInterceptor mockInterceptor = new MockSyncInterceptor();
 //        MockInterceptorBuilder interceptorBuilder = new MockInterceptorBuilder(mockInterceptor, false);
-//        registry.registerTargetBuilder(interceptorBuilder);
+//        builderRegistry.registerTargetBuilder(interceptorBuilder);
 //        runtime.getRootContext().registerModelObject(MockContextFactory.createCompositeComponent("test.module"));
 //        CompositeContext child = (CompositeContext) runtime.getRootContext().getContext("test.module");
 //        child.registerModelObject(MockContextFactory.createModuleWithEntryPoint(Scope.STATELESS));
@@ -195,11 +195,11 @@
 
     public void testEPtoJavaRequestInvoke() throws Throwable {
 //        RuntimeContext runtime = MockContextFactory.registerFooBinding(MockContextFactory.createJavaRuntime());
-//        PolicyBuilderRegistry registry = (PolicyBuilderRegistry) ((CompositeContext) runtime.getSystemContext().getContext(MockContextFactory.SYSTEM_CHILD))
+//        PolicyBuilderRegistry builderRegistry = (PolicyBuilderRegistry) ((CompositeContext) runtime.getSystemContext().getContext(MockContextFactory.SYSTEM_CHILD))
 //                .getContext(MockContextFactory.POLICY_BUILDER_REGISTRY).getInstance(null);
 //        MockSyncInterceptor mockInterceptor = new MockSyncInterceptor();
 //        MockInterceptorBuilder interceptorBuilder = new MockInterceptorBuilder(mockInterceptor, false);
-//        registry.registerTargetBuilder(interceptorBuilder);
+//        builderRegistry.registerTargetBuilder(interceptorBuilder);
 //        runtime.getRootContext().registerModelObject(MockContextFactory.createCompositeComponent("test.module"));
 //        CompositeContext child = (CompositeContext) runtime.getRootContext().getContext("test.module");
 //        child.registerModelObject(MockContextFactory.createModuleWithEntryPoint(Scope.REQUEST));

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/ExternalServiceProxyInvokeTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/ExternalServiceProxyInvokeTestCase.java?rev=406563&r1=406562&r2=406563&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/ExternalServiceProxyInvokeTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/ExternalServiceProxyInvokeTestCase.java Mon May 15 00:10:36 2006
@@ -15,11 +15,11 @@
      */
     public void testProxyInvocation() throws Throwable {
 //        RuntimeContext runtime = MockContextFactory.registerFooBinding(MockContextFactory.createJavaRuntime());
-//        PolicyBuilderRegistry registry = (PolicyBuilderRegistry) ((CompositeContext) runtime.getSystemContext().getContext(MockContextFactory.SYSTEM_CHILD))
+//        PolicyBuilderRegistry builderRegistry = (PolicyBuilderRegistry) ((CompositeContext) runtime.getSystemContext().getContext(MockContextFactory.SYSTEM_CHILD))
 //                .getContext(MockContextFactory.POLICY_BUILDER_REGISTRY).getInstance(null);
 //        MockSyncInterceptor mockInterceptor = new MockSyncInterceptor();
 //        MockInterceptorBuilder interceptorBuilder = new MockInterceptorBuilder(mockInterceptor, false);
-//        registry.registerTargetBuilder(interceptorBuilder);
+//        builderRegistry.registerTargetBuilder(interceptorBuilder);
 //        runtime.getRootContext().registerModelObject(MockContextFactory.createCompositeComponent("test.module"));
 //        CompositeContext child = (CompositeContext) runtime.getRootContext().getContext("test.module");
 //        child.registerModelObject(MockContextFactory.createModuleWithEntryPointToExternalService());

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/JavaToExternalServiceTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/JavaToExternalServiceTestCase.java?rev=406563&r1=406562&r2=406563&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/JavaToExternalServiceTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/JavaToExternalServiceTestCase.java Mon May 15 00:10:36 2006
@@ -30,11 +30,11 @@
      */
     public void testJavaToESInvoke() throws Exception {
 //        RuntimeContext runtime = MockContextFactory.registerFooBinding(MockContextFactory.createJavaRuntime());
-//        PolicyBuilderRegistry registry = (PolicyBuilderRegistry) ((CompositeContext) runtime.getSystemContext().getContext(
+//        PolicyBuilderRegistry builderRegistry = (PolicyBuilderRegistry) ((CompositeContext) runtime.getSystemContext().getContext(
 //                MockContextFactory.SYSTEM_CHILD)).getContext(MockContextFactory.POLICY_BUILDER_REGISTRY).getInstance(null);
 //        MockSyncInterceptor mockInterceptor = new MockSyncInterceptor();
 //        MockInterceptorBuilder interceptorBuilder = new MockInterceptorBuilder(mockInterceptor, false);
-//        registry.registerTargetBuilder(interceptorBuilder);
+//        builderRegistry.registerTargetBuilder(interceptorBuilder);
 //        runtime.getRootContext().registerModelObject(MockContextFactory.createCompositeComponent("test.module"));
 //        CompositeContext child = (CompositeContext) runtime.getRootContext().getContext("test.module");
 //        child.registerModelObject(MockContextFactory.createModuleWithExternalService());

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/invocation/ScopedPojoInvokerTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/invocation/ScopedPojoInvokerTestCase.java?rev=406563&r1=406562&r2=406563&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/invocation/ScopedPojoInvokerTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/invocation/ScopedPojoInvokerTestCase.java Mon May 15 00:10:36 2006
@@ -29,6 +29,7 @@
 import org.apache.tuscany.spi.context.AtomicContext;
 import org.apache.tuscany.spi.context.ScopeContext;
 import org.apache.tuscany.spi.context.WorkContext;
+import org.apache.tuscany.model.Scope;
 
 public class ScopedPojoInvokerTestCase extends TestCase {
 
@@ -51,7 +52,7 @@
         WorkContext ctx = new WorkContextImpl();
         ScopeContext<AtomicContext> scope = new ModuleScopeContext(ctx);
         scope.start();
-        JavaAtomicContext context = MockContextFactory.createJavaAtomicContext("foo", SimpleTargetImpl.class);
+        JavaAtomicContext context = MockContextFactory.createJavaAtomicContext("foo", SimpleTargetImpl.class, Scope.MODULE);
         scope.register(context);
         context.setScopeContext(scope);
         ScopedJavaComponentInvoker invoker = new ScopedJavaComponentInvoker(echoMethod, context);

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockContextFactory.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockContextFactory.java?rev=406563&r1=406562&r2=406563&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockContextFactory.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockContextFactory.java Mon May 15 00:10:36 2006
@@ -31,23 +31,23 @@
 import org.apache.tuscany.spi.wire.TargetInvocationChain;
 import org.apache.tuscany.spi.wire.TargetInvoker;
 import org.apache.tuscany.spi.wire.TargetWire;
-import org.apache.tuscany.spi.wire.WireFactoryInitException;
+import org.apache.tuscany.model.Scope;
 
 /**
  * @version $$Rev$$ $$Date$$
  */
 public class MockContextFactory {
 
-    public static JavaAtomicContext createJavaAtomicContext(String name, Class<?> clazz) throws NoSuchMethodException {
-        return createJavaAtomicContext(name, clazz, false, null, null, null, null);
+    public static JavaAtomicContext createJavaAtomicContext(String name, Class<?> clazz, Scope scope) throws NoSuchMethodException {
+        return createJavaAtomicContext(name, clazz, scope, false, null, null, null, null);
 
     }
 
-    public static JavaAtomicContext createJavaAtomicContext(String name, Class<?> clazz, boolean eagerInit, EventInvoker<Object> initInvoker,
+    public static JavaAtomicContext createJavaAtomicContext(String name, Class<?> clazz, Scope scope,boolean eagerInit, EventInvoker<Object> initInvoker,
                                                             EventInvoker<Object> destroyInvoker, List<Injector> injectors, Map<String, Member> members) throws NoSuchMethodException {
         List<Class<?>> serviceInterfaces = new ArrayList<Class<?>>();
         serviceInterfaces.add(clazz);
-        return new JavaAtomicContext(name, serviceInterfaces, createObjectFactory(clazz), eagerInit, initInvoker, destroyInvoker, injectors, members);
+        return new JavaAtomicContext(name, serviceInterfaces, createObjectFactory(clazz), scope, eagerInit, initInvoker, destroyInvoker, injectors, members);
     }
 
     /**
@@ -107,12 +107,12 @@
                                                                  Interceptor targetHeadInterceptor,
                                                                  MessageHandler targetRequestHeadHandler,
                                                                  MessageHandler targetResponseHeadHandler) throws Exception {
-        JavaAtomicContext targetContext = createJavaAtomicContext(targetName, targetClass);
+        JavaAtomicContext targetContext = createJavaAtomicContext(targetName, targetClass, targetScope.getScope());
         TargetWire targetWire = createTargetWire(targetService.getName().substring(
                 targetService.getName().lastIndexOf('.') + 1), targetService, targetHeadInterceptor, targetRequestHeadHandler, targetResponseHeadHandler);
         targetContext.addTargetWire(targetWire);
 
-        JavaAtomicContext sourceContext = createJavaAtomicContext(sourceName, sourceClass, false, null, null, null, members);
+        JavaAtomicContext sourceContext = createJavaAtomicContext(sourceName, sourceClass, sourceScope.getScope(), false, null, null, null, members);
         SourceWire sourceWire = createSourceWire(targetName, sourceReferenceClass, sourceHeadInterceptor,
                 sourceHeadRequestHandler, sourceHeadResponseHandler);
         sourceContext.addSourceWire(sourceWire);
@@ -146,12 +146,12 @@
                                                                      ScopeContext<AtomicContext> sourceScope,
                                                                      String targetName, Class<?> targetService, Class<?> targetClass,
                                                                      Map<String, Member> members, ScopeContext<AtomicContext> targetScope) throws Exception {
-        JavaAtomicContext targetContext = createJavaAtomicContext(targetName, targetClass);
+        JavaAtomicContext targetContext = createJavaAtomicContext(targetName, targetClass,targetScope.getScope());
         TargetWire targetWire = createTargetWire(targetService.getName().substring(
                 targetService.getName().lastIndexOf('.') + 1), targetService, null, null, null);
         targetContext.addTargetWire(targetWire);
 
-        JavaAtomicContext sourceContext = createJavaAtomicContext(sourceName, sourceClass, false, null, null, null, members);
+        JavaAtomicContext sourceContext = createJavaAtomicContext(sourceName, sourceClass, sourceScope.getScope(), false, null, null, null, members);
         SourceWire sourceWire = createSourceWire(targetName, sourceReferenceClass, null, null, null);
         List<SourceWire> factories = new ArrayList<SourceWire>();
         factories.add(sourceWire);
@@ -170,25 +170,23 @@
     public static <T> TargetWire<T> createTargetWire(String serviceName, Class<T> interfaze,
                                                      Interceptor headInterceptor,
                                                      MessageHandler headRequestHandler,
-                                                     MessageHandler headResponseHandler) throws WireFactoryInitException {
+                                                     MessageHandler headResponseHandler) {
         TargetWire<T> wire = new JDKTargetWire<T>();
         wire.setBusinessInterface(interfaze);
         wire.setServiceName(serviceName);
-        wire.setInvocationChains(createTargetInvocationChains(interfaze, headInterceptor, headRequestHandler, headResponseHandler));
-        wire.initialize();
+        wire.addInvocationChains(createTargetInvocationChains(interfaze, headInterceptor, headRequestHandler, headResponseHandler));
         return wire;
     }
 
     public static <T> SourceWire<T> createSourceWire(String refName, Class<T> interfaze,
                                                      Interceptor headInterceptor,
                                                      MessageHandler headRequestHandler,
-                                                     MessageHandler headResponseHandler) throws WireFactoryInitException {
+                                                     MessageHandler headResponseHandler) {
 
         SourceWire<T> wire = new JDKSourceWire<T>();
         wire.setReferenceName(refName);
-        wire.setInvocationChains(createSourceInvocationChains(interfaze, headInterceptor, headRequestHandler, headResponseHandler));
+        wire.addInvocationChains(createSourceInvocationChains(interfaze, headInterceptor, headRequestHandler, headResponseHandler));
         wire.setBusinessInterface(interfaze);
-        wire.initialize();
         return wire;
     }
 

Added: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockModelFactory.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockModelFactory.java?rev=406563&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockModelFactory.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockModelFactory.java Mon May 15 00:10:36 2006
@@ -0,0 +1,22 @@
+package org.apache.tuscany.container.java.mock;
+
+import org.apache.tuscany.model.Component;
+import org.apache.tuscany.model.Implementation;
+import org.apache.tuscany.container.java.model.JavaImplementation;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class MockModelFactory {
+
+    private MockModelFactory() {
+    }
+
+          // static <T extends Component<?>>
+//    public <T extends Implementation> Component<T> createComponent(T impl){
+//              JavaImplementation impl2 = new JavaImplementation();
+//              //impl2.setComponentType();
+//
+//              return impl.newComponent();
+//    }
+}

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/AbstractScopeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/AbstractScopeContext.java?rev=406563&r1=406562&r2=406563&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/AbstractScopeContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/AbstractScopeContext.java Mon May 15 00:10:36 2006
@@ -34,6 +34,10 @@
         this.workContext = workContext;
     }
 
+    public void setWorkContext(WorkContext workContext) {
+        this.workContext = workContext;
+    }
+
     public void addListener(RuntimeEventListener listener) {
         addListener(TRUE_FILTER, listener);
     }

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/HttpSessionScopeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/HttpSessionScopeContext.java?rev=406563&r1=406562&r2=406563&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/HttpSessionScopeContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/HttpSessionScopeContext.java Mon May 15 00:10:36 2006
@@ -27,6 +27,10 @@
     private final Map<AtomicContext, Map<Object, InstanceWrapper>> contexts;
     private final Map<Object, List<InstanceWrapper>> destroyQueues;
 
+    public HttpSessionScopeContext(){
+        this(null);
+    }
+
     public HttpSessionScopeContext(WorkContext workContext) {
         super("Session Scope", workContext);
         contexts = new ConcurrentHashMap<AtomicContext, Map<Object, InstanceWrapper>>();

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/HttpSessionScopeObjectFactory.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/HttpSessionScopeObjectFactory.java?rev=406563&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/HttpSessionScopeObjectFactory.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/HttpSessionScopeObjectFactory.java Mon May 15 00:10:36 2006
@@ -0,0 +1,14 @@
+package org.apache.tuscany.core.context.scope;
+
+import org.apache.tuscany.common.ObjectFactory;
+import org.apache.tuscany.common.ObjectCreationException;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class HttpSessionScopeObjectFactory implements ObjectFactory<HttpSessionScopeContext> {
+
+    public HttpSessionScopeContext getInstance() throws ObjectCreationException {
+        return new HttpSessionScopeContext();
+    }
+}

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java?rev=406563&r1=406562&r2=406563&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java Mon May 15 00:10:36 2006
@@ -29,6 +29,10 @@
     private final List<InstanceWrapper> destroyQueue;
     private static final InstanceWrapper EMPTY = new EmptyWrapper();
 
+    public ModuleScopeContext(){
+        this(null);
+    }
+
     public ModuleScopeContext(WorkContext workContext) {
         super("Module Scope", workContext);
         instanceContexts = new ConcurrentHashMap<AtomicContext, InstanceWrapper>();

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeObjectFactory.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeObjectFactory.java?rev=406563&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeObjectFactory.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeObjectFactory.java Mon May 15 00:10:36 2006
@@ -0,0 +1,14 @@
+package org.apache.tuscany.core.context.scope;
+
+import org.apache.tuscany.common.ObjectCreationException;
+import org.apache.tuscany.common.ObjectFactory;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class ModuleScopeObjectFactory implements ObjectFactory<ModuleScopeContext> {
+
+    public ModuleScopeContext getInstance() throws ObjectCreationException {
+        return new ModuleScopeContext();
+    }
+}

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeContext.java?rev=406563&r1=406562&r2=406563&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeContext.java Mon May 15 00:10:36 2006
@@ -25,6 +25,10 @@
     private final Map<AtomicContext, Map<Thread, InstanceWrapper>> contexts;
     private final Map<Thread, List<InstanceWrapper>> destroyQueues;
 
+    public RequestScopeContext(){
+        this(null);
+    }
+
     public RequestScopeContext(WorkContext workContext) {
         super("Request Scope", workContext);
         contexts = new ConcurrentHashMap<AtomicContext, Map<Thread, InstanceWrapper>>();

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeObjectFactory.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeObjectFactory.java?rev=406563&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeObjectFactory.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeObjectFactory.java Mon May 15 00:10:36 2006
@@ -0,0 +1,14 @@
+package org.apache.tuscany.core.context.scope;
+
+import org.apache.tuscany.common.ObjectFactory;
+import org.apache.tuscany.common.ObjectCreationException;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class RequestScopeObjectFactory implements ObjectFactory<RequestScopeContext> {
+
+    public RequestScopeContext getInstance() throws ObjectCreationException {
+        return new RequestScopeContext();
+    }
+}

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ScopeRegistryImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ScopeRegistryImpl.java?rev=406563&r1=406562&r2=406563&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ScopeRegistryImpl.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ScopeRegistryImpl.java Mon May 15 00:10:36 2006
@@ -17,58 +17,68 @@
 public class ScopeRegistryImpl implements ScopeRegistry {
 
     private final Map<CompositeContext, ScopeContext> moduleScopeCache;
-    private final Map<Scope, ObjectFactory<ScopeContext>> factoryCache;
+    private final Map<Scope, ScopeContext> scopeCache;
+    private final Map<Scope, ObjectFactory<? extends ScopeContext>> factoryCache;
     private final WorkContext workContext;
 
     public ScopeRegistryImpl(WorkContext workContext) {
         assert(workContext != null);
         moduleScopeCache = new ConcurrentHashMap<CompositeContext, ScopeContext>();
-        factoryCache = new ConcurrentHashMap<Scope, ObjectFactory<ScopeContext>>();
+        scopeCache = new ConcurrentHashMap<Scope, ScopeContext>();
+        factoryCache = new ConcurrentHashMap<Scope, ObjectFactory<? extends ScopeContext>>();
         this.workContext = workContext;
     }
 
     public ScopeContext getScopeContext(Scope scope) {
-        CompositeContext remoteContext = workContext.getRemoteContext();
-        assert(remoteContext != null): "Remote composite context next set";
         if (Scope.MODULE == scope) {
+            CompositeContext remoteContext = workContext.getRemoteContext();
+            assert(remoteContext != null): "Remote composite context next set";
             ScopeContext moduleScope = moduleScopeCache.get(remoteContext);
             if (moduleScope == null) {
-                ObjectFactory<ScopeContext> factory = factoryCache.get(scope);
+                ObjectFactory<? extends ScopeContext> factory = factoryCache.get(scope);
                 if (factory == null) {
                     ScopeNotFoundException e = new ScopeNotFoundException("Scope object factor not registered for scope");
                     e.setIdentifier("MODULE");
                     throw e;
                 }
                 moduleScope = factory.getInstance();
+                moduleScope.setWorkContext(workContext);
+                moduleScope.start();
                 moduleScopeCache.put(remoteContext, moduleScope);
             }
             return moduleScope;
-        }
-        ObjectFactory<ScopeContext> factory = factoryCache.get(scope);
-        if (factory == null) {
-            ScopeNotFoundException e = new ScopeNotFoundException("Scope object factor not registered for scope");
-            switch (scope) {
-                case SESSION:
-                    e.setIdentifier("SESSION");
-                    break;
-                case REQUEST:
-                    e.setIdentifier("REQUEST");
-                    break;
-                case STATELESS:
-                    e.setIdentifier("STATELESS");
-                    break;
-                default:
-                    e.setIdentifier("UNKNOWN");
-                    break;
+        } else {
+            ScopeContext context = scopeCache.get(scope);
+            if (context == null) {
+                ObjectFactory<? extends ScopeContext> factory = factoryCache.get(scope);
+                if (factory == null) {
+                    ScopeNotFoundException e = new ScopeNotFoundException("Scope object factory not registered for scope");
+                    switch (scope) {
+                        case SESSION:
+                            e.setIdentifier("SESSION");
+                            break;
+                        case REQUEST:
+                            e.setIdentifier("REQUEST");
+                            break;
+                        case STATELESS:
+                            e.setIdentifier("STATELESS");
+                            break;
+                        default:
+                            e.setIdentifier("UNKNOWN");
+                            break;
+                    }
+                    throw e;
+                }
+                context = factory.getInstance();
+                context.setWorkContext(workContext);
+                context.start();
+                scopeCache.put(scope,context);
             }
-            throw e;
-
+            return context;
         }
-
-        return null;
     }
 
-    public void registerFactory(Scope scope, ObjectFactory<ScopeContext> factory) {
+    public <T extends ScopeContext> void registerFactory(Scope scope, ObjectFactory<T> factory) {
         factoryCache.put(scope, factory);
     }
 

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeContext.java?rev=406563&r1=406562&r2=406563&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeContext.java Mon May 15 00:10:36 2006
@@ -27,6 +27,10 @@
  */
 public class StatelessScopeContext extends AbstractScopeContext<AtomicContext> {
 
+    public StatelessScopeContext(){
+        this(null);
+    }
+
     public StatelessScopeContext(WorkContext workContext) {
         super("Stateless scope", workContext);
         assert(workContext != null): "Work context was null";

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeObjectFactory.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeObjectFactory.java?rev=406563&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeObjectFactory.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeObjectFactory.java Mon May 15 00:10:36 2006
@@ -0,0 +1,14 @@
+package org.apache.tuscany.core.context.scope;
+
+import org.apache.tuscany.common.ObjectFactory;
+import org.apache.tuscany.common.ObjectCreationException;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class StatelessScopeObjectFactory implements ObjectFactory<StatelessScopeContext> {
+
+    public StatelessScopeContext getInstance() throws ObjectCreationException {
+        return new StatelessScopeContext();
+    }
+}

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKSourceWire.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKSourceWire.java?rev=406563&r1=406562&r2=406563&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKSourceWire.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKSourceWire.java Mon May 15 00:10:36 2006
@@ -20,7 +20,6 @@
 import org.apache.tuscany.core.util.MethodHashMap;
 import org.apache.tuscany.spi.wire.SourceInvocationChain;
 import org.apache.tuscany.spi.wire.SourceWire;
-import org.apache.tuscany.spi.wire.WireFactoryInitException;
 import org.apache.tuscany.spi.wire.WireInvocationHandler;
 
 /**
@@ -31,33 +30,23 @@
  */
 public class JDKSourceWire<T> implements SourceWire<T> {
 
-    private static final int UNINITIALIZED = 0;
-
-    private static final int INITIALIZED = 1;
-
-    private int state = UNINITIALIZED;
-
-    private Class<T>[] businessInterfaceArray;
-
-    private Map<Method, SourceInvocationChain> methodToInvocationConfig;
+    private Class<T>[] businessInterfaces;
+    private Map<Method, SourceInvocationChain> invocationChains = new MethodHashMap<SourceInvocationChain>();
 
     @SuppressWarnings("unchecked")
     public T createProxy() {
-        if (state != INITIALIZED) {
-            throw new IllegalStateException("Proxy factory not INITIALIZED [" + state + "]");
-        }
         WireInvocationHandler handler = new JDKInvocationHandler();
-        handler.setConfiguration(methodToInvocationConfig);
-        return (T) Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), businessInterfaceArray, handler);
+        handler.setConfiguration(invocationChains);
+        return (T) Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), businessInterfaces, handler);
     }
 
     @SuppressWarnings("unchecked")
     public void setBusinessInterface(Class<T> interfaze) {
-        businessInterfaceArray = new Class[]{interfaze};
+        businessInterfaces = new Class[]{interfaze};
     }
 
     public Class<T> getBusinessInterface() {
-        return businessInterfaceArray[0];
+        return businessInterfaces[0];
     }
 
     public void addInterface(Class<?> claz) {
@@ -65,31 +54,19 @@
     }
 
     public Class[] getImplementatedInterfaces() {
-        return businessInterfaceArray;
+        return businessInterfaces;
     }
 
-    public void initialize() throws WireFactoryInitException {
-        if (state != UNINITIALIZED) {
-            throw new IllegalStateException("Proxy factory in wrong state [" + state + "]");
-        }
-        if (invocationChains != null) {
-            methodToInvocationConfig = new MethodHashMap<SourceInvocationChain>(invocationChains.size());
-            for (Map.Entry<Method, SourceInvocationChain> entry : invocationChains.entrySet()) {
-                Method method = entry.getKey();
-                methodToInvocationConfig.put(method, entry.getValue());
-            }
-        }
-        state = INITIALIZED;
-    }
-
-    private Map<Method, SourceInvocationChain> invocationChains;
-
     public Map<Method, SourceInvocationChain> getInvocationChains() {
         return invocationChains;
     }
 
-    public void setInvocationChains(Map<Method, SourceInvocationChain> chains) {
-        invocationChains = chains;
+    public void addInvocationChains(Map<Method, SourceInvocationChain> chains) {
+        invocationChains.putAll(chains);
+    }
+
+    public void addInvocationChain(Method method, SourceInvocationChain chain) {
+        invocationChains.put(method, chain);
     }
 
     public String getReferenceName() {

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKTargetWire.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKTargetWire.java?rev=406563&r1=406562&r2=406563&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKTargetWire.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKTargetWire.java Mon May 15 00:10:36 2006
@@ -7,7 +7,6 @@
 import org.apache.tuscany.core.util.MethodHashMap;
 import org.apache.tuscany.spi.wire.TargetInvocationChain;
 import org.apache.tuscany.spi.wire.TargetWire;
-import org.apache.tuscany.spi.wire.WireFactoryInitException;
 import org.apache.tuscany.spi.wire.WireInvocationHandler;
 
 /**
@@ -19,49 +18,24 @@
  */
 public class JDKTargetWire<T> implements TargetWire<T> {
 
-    private static final int UNINITIALIZED = 0;
-
-    private static final int INITIALIZED = 1;
-
-    private int state = UNINITIALIZED;
-
-    private Class[] businessInterfaceArray;
-
-    private Map<Method, TargetInvocationChain> methodToInvocationConfig;
-
-    //private WireTargetConfiguration configuration;
-
-    public void initialize() throws WireFactoryInitException {
-        if (state != UNINITIALIZED) {
-            throw new IllegalStateException("Wire factory in wrong state [" + state + "]");
-        }
-        if (invocationChains != null) {
-            methodToInvocationConfig = new MethodHashMap<TargetInvocationChain>(invocationChains.size());
-            for (Map.Entry<Method, TargetInvocationChain> entry : invocationChains.entrySet()) {
-                Method method = entry.getKey();
-                methodToInvocationConfig.put(method, entry.getValue());
-            }
-        }
-        state = INITIALIZED;
-    }
+    private Class[] businessInterfaces;
+    private Map<Method, TargetInvocationChain> invocationChains = new MethodHashMap<TargetInvocationChain>();
+    private String serviceName;
 
     @SuppressWarnings("unchecked")
     public T createProxy() {
-        if (state != INITIALIZED) {
-            throw new IllegalStateException("Proxy factory not INITIALIZED [" + state + "]");
-        }
         WireInvocationHandler handler = new JDKInvocationHandler();
-        handler.setConfiguration(methodToInvocationConfig);
-        return (T) Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), businessInterfaceArray, handler);
+        handler.setConfiguration(invocationChains);
+        return (T) Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), businessInterfaces, handler);
     }
 
     public void setBusinessInterface(Class interfaze) {
-        businessInterfaceArray = new Class[]{interfaze};
+        businessInterfaces = new Class[]{interfaze};
     }
 
     @SuppressWarnings("unchecked")
     public Class<T> getBusinessInterface() {
-        return businessInterfaceArray[0];
+        return businessInterfaces[0];
     }
 
     public void addInterface(Class claz) {
@@ -69,11 +43,9 @@
     }
 
     public Class[] getImplementedInterfaces() {
-        return businessInterfaceArray;
+        return businessInterfaces;
     }
 
-    private String serviceName;
-
     public String getServiceName() {
         return serviceName;
     }
@@ -82,14 +54,16 @@
         this.serviceName = serviceName;
     }
 
-    private Map<Method, TargetInvocationChain> invocationChains;
-
     public Map<Method, TargetInvocationChain> getInvocationChains() {
         return invocationChains;
     }
 
-    public void setInvocationChains(Map<Method, TargetInvocationChain> chains) {
-        this.invocationChains = chains;
+    public void addInvocationChains(Map<Method, TargetInvocationChain> chains) {
+        invocationChains.putAll(chains);
+    }
+
+    public void addInvocationChain(Method method, TargetInvocationChain chain) {
+        invocationChains.put(method, chain);
     }
 
 }

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/system/WireServiceImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/system/WireServiceImpl.java?rev=406563&r1=406562&r2=406563&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/system/WireServiceImpl.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/system/WireServiceImpl.java Mon May 15 00:10:36 2006
@@ -1,8 +1,6 @@
 package org.apache.tuscany.core.wire.system;
 
 import java.lang.reflect.Method;
-import java.util.HashMap;
-import java.util.Map;
 import java.util.Set;
 
 import org.apache.tuscany.core.util.JavaIntrospectionHelper;
@@ -15,9 +13,9 @@
 import org.apache.tuscany.spi.policy.PolicyBuilderRegistry;
 import org.apache.tuscany.spi.wire.SourceInvocationChain;
 import org.apache.tuscany.spi.wire.SourceWire;
+import org.apache.tuscany.spi.wire.TargetInvocationChain;
 import org.apache.tuscany.spi.wire.TargetWire;
 import org.apache.tuscany.spi.wire.WireFactoryService;
-import org.apache.tuscany.spi.wire.TargetInvocationChain;
 import org.apache.tuscany.spi.wire.WireService;
 import org.osoa.sca.annotations.Init;
 import org.osoa.sca.annotations.Scope;
@@ -39,6 +37,10 @@
 
     }
 
+    public WireServiceImpl(WireFactoryService wireFactoryService) {
+        this.wireFactoryService = wireFactoryService;
+    }
+
     public WireServiceImpl(WireFactoryService wireFactoryService, PolicyBuilderRegistry registry) {
         this.wireFactoryService = wireFactoryService;
         this.policyRegistry = registry;
@@ -66,13 +68,11 @@
         wire.setBusinessInterface(interfaze);
         wire.setReferenceName(name);
 
-        Map<Method, SourceInvocationChain> chains = new HashMap<Method, SourceInvocationChain>();
         Set<Method> javaMethods = JavaIntrospectionHelper.getAllUniqueMethods(interfaze);
         for (Method method : javaMethods) {
             SourceInvocationChain chain = new SourceInvocationChainImpl(method);
-            chains.put(method, chain);
+            wire.addInvocationChain(method, chain);
         }
-        wire.setInvocationChains(chains);
         if (policyRegistry != null) {
             // invoke policy builders
             policyRegistry.buildSource(reference, wire);
@@ -87,13 +87,11 @@
         wire.setBusinessInterface(interfaze);
         wire.setServiceName(name);
 
-        Map<Method, TargetInvocationChain> chains = new HashMap<Method, TargetInvocationChain>();
         Set<Method> javaMethods = JavaIntrospectionHelper.getAllUniqueMethods(interfaze);
         for (Method method : javaMethods) {
             TargetInvocationChain chain = new TargetInvocationChainImpl(method);
-            chains.put(method, chain);
+            wire.addInvocationChain(method, chain);
         }
-        wire.setInvocationChains(chains);
         if (policyRegistry != null) {
             // invoke policy builders
             policyRegistry.buildTarget(service, wire);

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/ScopeRegistryTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/ScopeRegistryTestCase.java?rev=406563&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/ScopeRegistryTestCase.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/ScopeRegistryTestCase.java Mon May 15 00:10:36 2006
@@ -0,0 +1,47 @@
+package org.apache.tuscany.core.context.scope;
+
+import junit.framework.TestCase;
+import org.apache.tuscany.core.context.CompositeContextImpl;
+import org.apache.tuscany.core.context.WorkContextImpl;
+import org.apache.tuscany.model.Scope;
+import org.apache.tuscany.spi.context.CompositeContext;
+import org.apache.tuscany.spi.context.ScopeRegistry;
+import org.apache.tuscany.spi.context.WorkContext;
+import org.apache.tuscany.spi.context.ScopeContext;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class ScopeRegistryTestCase extends TestCase {
+
+    public void testRemotableIsolation() throws Exception {
+        CompositeContext context1 = new CompositeContextImpl();
+        CompositeContext context2 = new CompositeContextImpl();
+        WorkContext workContext = new WorkContextImpl();
+        ScopeRegistry scopeRegistry = new ScopeRegistryImpl(workContext);
+        scopeRegistry.registerFactory(Scope.MODULE, new ModuleScopeObjectFactory());
+        workContext.setRemoteContext(context1);
+        ScopeContext scope1 = scopeRegistry.getScopeContext(Scope.MODULE);
+        workContext.setRemoteContext(context2);
+        ScopeContext scope2 = scopeRegistry.getScopeContext(Scope.MODULE);
+        assertNotSame(scope1,scope2);
+        workContext.setRemoteContext(context1);
+        assertSame(scope1,scopeRegistry.getScopeContext(Scope.MODULE));
+        workContext.setRemoteContext(context2);
+        assertSame(scope2,scopeRegistry.getScopeContext(Scope.MODULE));
+    }
+
+    public void testScopeContextCreation() throws Exception {
+        WorkContext workContext = new WorkContextImpl();
+        ScopeRegistry scopeRegistry = new ScopeRegistryImpl(workContext);
+        scopeRegistry.registerFactory(Scope.REQUEST, new RequestScopeObjectFactory());
+        scopeRegistry.registerFactory(Scope.SESSION, new HttpSessionScopeObjectFactory());
+        ScopeContext request = scopeRegistry.getScopeContext(Scope.REQUEST);
+        assertTrue(request instanceof RequestScopeContext);
+        assertSame(request,scopeRegistry.getScopeContext(Scope.REQUEST));
+        ScopeContext session = scopeRegistry.getScopeContext(Scope.SESSION);
+        assertTrue(session instanceof HttpSessionScopeContext);
+        assertSame(session,scopeRegistry.getScopeContext(Scope.SESSION));
+        assertNotSame(request,session);
+    }
+}

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/integration/system/AtomicContextToReferenceContextTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/integration/system/AtomicContextToReferenceContextTestCase.java?rev=406563&r1=406562&r2=406563&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/integration/system/AtomicContextToReferenceContextTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/integration/system/AtomicContextToReferenceContextTestCase.java Mon May 15 00:10:36 2006
@@ -20,14 +20,13 @@
 import org.apache.tuscany.core.system.context.SystemCompositeContextImpl;
 import org.apache.tuscany.spi.context.ReferenceContext;
 import org.apache.tuscany.spi.context.WorkContext;
-import org.apache.tuscany.spi.wire.WireFactoryInitException;
 
 /**
  * @version $$Rev$$ $$Date$$
  */
 public class AtomicContextToReferenceContextTestCase extends TestCase {
 
-    public void testWireResolution() throws NoSuchMethodException, WireFactoryInitException {
+    public void testWireResolution() throws NoSuchMethodException{
         WorkContext ctx = new WorkContextImpl();
         ModuleScopeContext scope = new ModuleScopeContext(ctx);
         SystemCompositeContext context = new SystemCompositeContextImpl();

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/MockContextFactory.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/MockContextFactory.java?rev=406563&r1=406562&r2=406563&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/MockContextFactory.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/MockContextFactory.java Mon May 15 00:10:36 2006
@@ -24,7 +24,6 @@
 import org.apache.tuscany.spi.context.ScopeContext;
 import org.apache.tuscany.spi.wire.TargetInvocationChain;
 import org.apache.tuscany.spi.wire.TargetWire;
-import org.apache.tuscany.spi.wire.WireFactoryInitException;
 import org.osoa.sca.annotations.Destroy;
 import org.osoa.sca.annotations.Init;
 
@@ -126,12 +125,11 @@
         return new SystemAtomicContextImpl(name, serviceInterfaces, createObjectFactory(clazz), eagerInit, initInvoker, destroyInvoker, injectors);
     }
 
-    public static <T> TargetWire<T> createTargetWireFactory(String serviceName, Class<T> interfaze) throws WireFactoryInitException {
+    public static <T> TargetWire<T> createTargetWireFactory(String serviceName, Class<T> interfaze) {
         TargetWire<T> wire = new JDKTargetWire<T>();
         wire.setServiceName(serviceName);
         wire.setBusinessInterface(interfaze);
-        wire.setInvocationChains(createTargetInvocationConfigurations(interfaze));
-        wire.initialize();
+        wire.addInvocationChains(createTargetInvocationConfigurations(interfaze));
         return wire;
     }
 

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/jdk/JDKWireFactoryServiceTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/jdk/JDKWireFactoryServiceTestCase.java?rev=406563&r1=406562&r2=406563&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/jdk/JDKWireFactoryServiceTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/jdk/JDKWireFactoryServiceTestCase.java Mon May 15 00:10:36 2006
@@ -14,10 +14,8 @@
 package org.apache.tuscany.core.wire.jdk;
 
 import java.lang.reflect.Method;
-import java.util.Map;
 
 import junit.framework.TestCase;
-import org.apache.tuscany.core.util.MethodHashMap;
 import org.apache.tuscany.core.wire.InvokerInterceptor;
 import org.apache.tuscany.core.wire.SourceInvocationChainImpl;
 import org.apache.tuscany.core.wire.TargetInvocationChainImpl;
@@ -25,8 +23,6 @@
 import org.apache.tuscany.core.wire.mock.MockSyncInterceptor;
 import org.apache.tuscany.core.wire.mock.SimpleTarget;
 import org.apache.tuscany.core.wire.mock.SimpleTargetImpl;
-import org.apache.tuscany.spi.wire.SourceInvocationChain;
-import org.apache.tuscany.spi.wire.TargetInvocationChain;
 
 public class JDKWireFactoryServiceTestCase extends TestCase {
 
@@ -47,13 +43,10 @@
         source.setTargetInterceptor(new InvokerInterceptor());
         source.setTargetInvoker(new MockStaticInvoker(hello, new SimpleTargetImpl()));
         source.build();
-        Map<Method, SourceInvocationChain> configs = new MethodHashMap<SourceInvocationChain>();
-        configs.put(hello, source);
         JDKSourceWire<SimpleTarget> factory = new JDKSourceWire<SimpleTarget>();
         factory.setReferenceName("foo");
-        factory.setInvocationChains(configs);
+        factory.addInvocationChain(hello, source);
         factory.setBusinessInterface(SimpleTarget.class);
-        factory.initialize();
         SimpleTarget instance = factory.createProxy();
         assertEquals("foo", instance.hello("foo"));
     }
@@ -65,12 +58,9 @@
         source.addInterceptor(new InvokerInterceptor());
         source.setTargetInvoker(new MockStaticInvoker(hello, new SimpleTargetImpl()));
         source.build();
-        Map<Method, TargetInvocationChain> configs = new MethodHashMap<TargetInvocationChain>();
-        configs.put(hello, source);
         JDKTargetWire<SimpleTarget> factory = new JDKTargetWire<SimpleTarget>();
-        factory.setInvocationChains(configs);
+        factory.addInvocationChain(hello, source);
         factory.setBusinessInterface(SimpleTarget.class);
-        factory.initialize();
         SimpleTarget instance = factory.createProxy();
         assertEquals("foo", instance.hello("foo"));
     }

Modified: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/ScopeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/ScopeContext.java?rev=406563&r1=406562&r2=406563&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/ScopeContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/ScopeContext.java Mon May 15 00:10:36 2006
@@ -29,22 +29,35 @@
  */
 public interface ScopeContext<T extends Context> extends Lifecycle, RuntimeEventListener {
 
-    public Scope getScope();
+    /**
+     * Returns the scope value representing the scope context
+     */
+    Scope getScope();
+
+    /**
+     * Sets the work context used by the scope container
+     */
+    void setWorkContext(WorkContext workContext);
 
-    public void register(T context);
+    /**
+     * Registers a context with the scope context
+     */
+    void register(T context);
 
     /**
      * Returns an instance associated with the current context
      *
      * @throws TargetException
      */
-    public Object getInstance(T context) throws TargetException;
+    Object getInstance(T context) throws TargetException;
 
 
     /**
+     * Returns the instance wrapper associated with the current context
+     *
      * @throws TargetException
      */
-    public InstanceWrapper getInstanceContext(T context) throws TargetException;
+    InstanceWrapper getInstanceContext(T context) throws TargetException;
 
 
 }

Modified: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/ScopeRegistry.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/ScopeRegistry.java?rev=406563&r1=406562&r2=406563&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/ScopeRegistry.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/ScopeRegistry.java Mon May 15 00:10:36 2006
@@ -23,7 +23,7 @@
 
     ScopeContext getScopeContext(Scope scope) throws ScopeNotFoundException;
 
-    void registerFactory(Scope scope, ObjectFactory<ScopeContext> factory);
+    <T extends ScopeContext> void registerFactory(Scope scope, ObjectFactory<T> factory);
 
     void deregisterFactory(Scope scope);
 

Modified: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentBuilderExtension.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentBuilderExtension.java?rev=406563&r1=406562&r2=406563&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentBuilderExtension.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentBuilderExtension.java Mon May 15 00:10:36 2006
@@ -1,42 +1,57 @@
 package org.apache.tuscany.spi.extension;
 
-import org.apache.tuscany.spi.builder.ComponentBuilder;
+import org.apache.tuscany.model.Component;
+import org.apache.tuscany.model.ComponentType;
+import org.apache.tuscany.model.Implementation;
+import org.apache.tuscany.model.Reference;
+import org.apache.tuscany.model.Scope;
+import org.apache.tuscany.model.Service;
+import org.apache.tuscany.spi.annotation.Autowire;
 import org.apache.tuscany.spi.builder.BuilderConfigException;
 import org.apache.tuscany.spi.builder.BuilderRegistry;
-import org.apache.tuscany.spi.context.Context;
-import org.apache.tuscany.spi.context.CompositeContext;
+import org.apache.tuscany.spi.builder.ComponentBuilder;
+import org.apache.tuscany.spi.context.AtomicContext;
 import org.apache.tuscany.spi.context.ComponentContext;
-import org.apache.tuscany.spi.annotation.Autowire;
-import org.apache.tuscany.spi.wire.WireService;
-import org.apache.tuscany.spi.wire.TargetWire;
+import org.apache.tuscany.spi.context.CompositeContext;
+import org.apache.tuscany.spi.context.Context;
+import org.apache.tuscany.spi.context.ScopeRegistry;
+import org.apache.tuscany.spi.context.ScopeContext;
 import org.apache.tuscany.spi.wire.SourceWire;
-import org.apache.tuscany.model.Implementation;
-import org.apache.tuscany.model.Component;
-import org.apache.tuscany.model.Service;
-import org.apache.tuscany.model.ComponentType;
-import org.apache.tuscany.model.Reference;
-import org.osoa.sca.annotations.Scope;
+import org.apache.tuscany.spi.wire.TargetWire;
+import org.apache.tuscany.spi.wire.WireService;
 import org.osoa.sca.annotations.Init;
 
 /**
  * @version $$Rev$$ $$Date$$
  */
-@Scope("MODULE")
+@org.osoa.sca.annotations.Scope("MODULE")
 public abstract class ComponentBuilderExtension<I extends Implementation<?>> implements ComponentBuilder<I> {
 
-    protected BuilderRegistry registry;
+    protected BuilderRegistry builderRegistry;
     protected WireService wireService;
+    protected ScopeRegistry scopeRegistry;
 
     @Autowire
-    public void setRegistry(BuilderRegistry registry) {
-        this.registry = registry;
+    public void setBuilderRegistry(BuilderRegistry registry) {
+        this.builderRegistry = registry;
+    }
+
+    @Autowire
+    public void setWireService(WireService wireService) {
+        this.wireService = wireService;
+    }
+
+    @Autowire
+    public void setScopeRegistry(ScopeRegistry scopeRegistry) {
+        this.scopeRegistry = scopeRegistry;
     }
 
     @Init(eager = true)
-    public void init(){
-        registry.register(this);
+    public void init() {
+        builderRegistry.register(this);
     }
 
+    @SuppressWarnings("unchecked")
     public Context build(CompositeContext parent, Component<I> component) throws BuilderConfigException {
         ComponentType componentType = component.getImplementation().getComponentType();
         ComponentContext context = createContext(parent, component);
@@ -49,6 +64,21 @@
         for (Reference reference : componentType.getReferences().values()) {
             SourceWire wire = wireService.createSourceWire(reference);
             context.addSourceWire(wire);
+        }
+        //TODO this could be moved up to the runtime
+        if (context instanceof AtomicContext) {
+            AtomicContext ctx = (AtomicContext) context;
+            Scope scope = ctx.getScope();
+            if (scope == null) {
+                scope = Scope.STATELESS;
+            }
+            ScopeContext scopeContext = scopeRegistry.getScopeContext(scope);
+            if (scopeContext == null){
+                throw new BuilderConfigException("Scope context not registered for scope "+ scope);
+            }
+            ctx.setScopeContext(scopeContext);
+            scopeContext.register(ctx);
+
         }
         return context;
     }

Modified: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/StAXLoaderRegistry.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/StAXLoaderRegistry.java?rev=406563&r1=406562&r2=406563&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/StAXLoaderRegistry.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/StAXLoaderRegistry.java Mon May 15 00:10:36 2006
@@ -28,11 +28,11 @@
  * Loaders will typically be contributed to the system by any extension that needs to
  * handle extension specific information contained in some XML configuration file.
  * The loader can be contributed as a system component with an autowire reference
- * to this registry which is used during initialization to actually register.
+ * to this builderRegistry which is used during initialization to actually register.
  * </p>
- * This registry can also be used to parse an input stream, dispatching to the
+ * This builderRegistry can also be used to parse an input stream, dispatching to the
  * appropriate loader for each element accepted. Loaders can call back to the
- * registry to load sub-elements that they are not able to handle directly.
+ * builderRegistry to load sub-elements that they are not able to handle directly.
  *
  * @version $Rev$ $Date$
  */

Modified: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/policy/PolicyBuilderRegistry.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/policy/PolicyBuilderRegistry.java?rev=406563&r1=406562&r2=406563&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/policy/PolicyBuilderRegistry.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/policy/PolicyBuilderRegistry.java Mon May 15 00:10:36 2006
@@ -9,7 +9,7 @@
 import org.apache.tuscany.spi.wire.TargetWire;
 
 /**
- * A System registry for policy builders.
+ * A System builderRegistry for policy builders.
  * <p/>
  * Policy builders operate on either a source- or target-side wire and typically are registered by runtime
  * extensions through {@link #registerTargetBuilder} or {@link #registerSourceBuilder}

Modified: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/SourceWire.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/SourceWire.java?rev=406563&r1=406562&r2=406563&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/SourceWire.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/SourceWire.java Mon May 15 00:10:36 2006
@@ -24,36 +24,40 @@
 public interface SourceWire<T> {
 
     /**
-     * Prepares the factory. This will typically be called at buildSource time, after bridging source- and target-side invocation chains.
-     *
-     * @throws WireFactoryInitException if an error is encountered during initialization
+     * Returns the name of the source reference
      */
-    public void initialize() throws WireFactoryInitException;
+    String getReferenceName();
+
+    /**
+     * Sets the name of the source reference
+     */
+    void setReferenceName(String name);
+
 
     /**
      * Returns a proxy for a service specified by a reference or target
      */
-    public T createProxy() throws ProxyCreationException;
+    T createProxy() throws ProxyCreationException;
 
     /**
      * Sets the primary interface type generated proxies implement
      */
-    public void setBusinessInterface(Class<T> interfaze);
+    void setBusinessInterface(Class<T> interfaze);
 
     /**
      * Returns the primary interface type implemented by generated proxies
      */
-    public Class<T> getBusinessInterface();
+    Class<T> getBusinessInterface();
 
     /**
      * Adds an interface type generated proxies implement
      */
-    public void addInterface(Class<?> claz);
+    void addInterface(Class<?> claz);
 
     /**
      * Returns an array of all interfaces implemented by generated proxies
      */
-    public Class[] getImplementatedInterfaces();
+    Class[] getImplementatedInterfaces();
 
     /**
      * Returns the invocation configuration for each operation on a service specified by a reference or a
@@ -61,13 +65,8 @@
      */
     Map<Method, SourceInvocationChain> getInvocationChains();
 
-    void setInvocationChains(Map<Method, SourceInvocationChain> chains);
+    void addInvocationChains(Map<Method, SourceInvocationChain> chains);
 
-    /**
-     * Returns the name of the source reference
-     */
-    String getReferenceName();
-
-    void setReferenceName(String name);
+    void addInvocationChain(Method method, SourceInvocationChain chains);
 
 }

Modified: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/TargetWire.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/TargetWire.java?rev=406563&r1=406562&r2=406563&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/TargetWire.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/TargetWire.java Mon May 15 00:10:36 2006
@@ -24,11 +24,15 @@
 public interface TargetWire<T> {
 
     /**
-     * Prepares the factory. This will typically be called at buildSource time, after bridging source- and target-side invocation chains.
-     *
-     * @throws WireFactoryInitException if an error is encountered during initialization
+     * Returns the name of the target service of the wire
      */
-    void initialize() throws WireFactoryInitException;
+    String getServiceName();
+
+    /**
+     * Sets the name of the target service of the wire
+     */
+    void setServiceName(String name);
+
 
     /**
      * Returns a proxy for a service specified by a reference or target
@@ -56,18 +60,13 @@
     Class[] getImplementedInterfaces();
 
     /**
-     * Returns the name of the target service specified by the wire
-     */
-    String getServiceName();
-
-    void setServiceName(String name);
-
-    /**
      * Returns the invocation configuration for each operation on a service specified by a reference or a
      * target service.
      */
     Map<Method, TargetInvocationChain> getInvocationChains();
 
-    void setInvocationChains(Map<Method, TargetInvocationChain> chains);
+    void addInvocationChains(Map<Method, TargetInvocationChain> chains);
+
+    void addInvocationChain(Method method, TargetInvocationChain chain);
 
 }