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/02/27 10:07:57 UTC

svn commit: r381293 - in /incubator/tuscany/java/sca: container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/ container.java/src/test/java/org/apache/tuscany/container/java/mock/ container.java/src/test/java/org/apache/tusca...

Author: jmarino
Date: Mon Feb 27 01:07:48 2006
New Revision: 381293

URL: http://svn.apache.org/viewcvs?rev=381293&view=rev
Log:
checkin fix for TUSCANY-40; continued entrypoint implementation, which will not work yet

Added:
    incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooEPTargetInvoker.java
    incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooESTargetInvoker.java
      - copied, changed from r381049, incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooTargetInvoker.java
    incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooEntryPointRuntimeConfiguration.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/EntryPointRuntimeConfiguration.java
Removed:
    incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooTargetInvoker.java
Modified:
    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/MockAssemblyFactory.java
    incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockModuleFactory.java
    incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooBindingBuilder.java
    incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooBindingWireBuilder.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/BaseExternalServiceRuntimeConfiguration.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractAggregateContext.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/EntryPointContextImpl.java

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=381293&r1=381292&r2=381293&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 Mon Feb 27 01:07:48 2006
@@ -86,7 +86,7 @@
         runtime.getRootContext().registerModelObject(
                 MockAssemblyFactory.createSystemComponent("test.module", AggregateContextImpl.class.getName(), Scope.AGGREGATE));
         AggregateContext child = (AggregateContext) runtime.getRootContext().getContext("test.module");
-        child.registerModelObject(MockModuleFactory.createModuleWithExerntalService());
+        child.registerModelObject(MockModuleFactory.createModuleWithExternalService());
         child.fireEvent(EventContext.MODULE_START, null);
         HelloWorldService source = (HelloWorldService) child.locateInstance("source");
         Assert.assertNotNull(source);

Modified: incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockAssemblyFactory.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockAssemblyFactory.java?rev=381293&r1=381292&r2=381293&view=diff
==============================================================================
--- incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockAssemblyFactory.java (original)
+++ incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockAssemblyFactory.java Mon Feb 27 01:07:48 2006
@@ -27,6 +27,7 @@
 import org.apache.tuscany.core.system.assembly.impl.SystemAssemblyFactoryImpl;
 import org.apache.tuscany.model.assembly.Component;
 import org.apache.tuscany.model.assembly.ConfiguredService;
+import org.apache.tuscany.model.assembly.EntryPoint;
 import org.apache.tuscany.model.assembly.ExternalService;
 import org.apache.tuscany.model.assembly.Scope;
 import org.apache.tuscany.model.assembly.Service;
@@ -103,4 +104,20 @@
         return es;
     }
 
+    public static EntryPoint createFooBindingEntryPoint(String name, Class interfaz) throws NoSuchMethodException,
+            ClassNotFoundException {
+        EntryPoint ep = factory.createEntryPoint();
+        ep.setName(name);
+        Service s = factory.createService();
+        JavaServiceContract ji = factory.createJavaServiceContract();
+        ji.setScope(Scope.MODULE);
+        ji.setInterface(interfaz);
+        s.setServiceContract(ji);
+        ConfiguredService configuredService = factory.createConfiguredService();
+        configuredService.setService(s);
+        ep.setConfiguredService(configuredService);
+        FooBinding binding = new FooBinding();
+        ep.getBindings().add(binding);
+        return ep;
+    }
 }

Modified: incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockModuleFactory.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockModuleFactory.java?rev=381293&r1=381292&r2=381293&view=diff
==============================================================================
--- incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockModuleFactory.java (original)
+++ incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockModuleFactory.java Mon Feb 27 01:07:48 2006
@@ -1,5 +1,6 @@
 package org.apache.tuscany.container.java.mock;
 
+import org.apache.tuscany.container.java.assembly.mock.HelloWorldImpl;
 import org.apache.tuscany.container.java.assembly.mock.HelloWorldService;
 import org.apache.tuscany.container.java.mock.components.GenericComponent;
 import org.apache.tuscany.container.java.mock.components.HelloWorldClient;
@@ -9,6 +10,7 @@
 import org.apache.tuscany.model.assembly.Component;
 import org.apache.tuscany.model.assembly.ConfiguredReference;
 import org.apache.tuscany.model.assembly.ConfiguredService;
+import org.apache.tuscany.model.assembly.EntryPoint;
 import org.apache.tuscany.model.assembly.ExternalService;
 import org.apache.tuscany.model.assembly.Module;
 import org.apache.tuscany.model.assembly.Reference;
@@ -63,7 +65,7 @@
     }
 
     
-    public static Module createModuleWithExerntalService() throws Exception {
+    public static Module createModuleWithExternalService() throws Exception {
         Component sourceComponent = MockAssemblyFactory.createComponent("source", HelloWorldClient.class,Scope.MODULE);
         ExternalService targetES = MockAssemblyFactory.createFooBindingExternalService("target",HelloWorldService.class);
 
@@ -97,5 +99,41 @@
         return module;
     }
 
+    
+    public static Module createModuleWithEntryPoint() throws Exception {
+        EntryPoint sourceEP = MockAssemblyFactory.createFooBindingEntryPoint("source", HelloWorldService.class);
+        Component targetComponent = MockAssemblyFactory.createComponent("target",HelloWorldImpl.class,Scope.MODULE);
+
+        Service targetService = factory.createService();
+        JavaServiceContract targetContract = factory.createJavaServiceContract();
+        targetContract.setInterface(HelloWorldService.class);
+        targetService.setServiceContract(targetContract);
+        targetService.setName("HelloWorld");
+        ConfiguredService cTargetService = factory.createConfiguredService();
+        cTargetService.setService(targetService);
+        targetComponent.getConfiguredServices().add(cTargetService);
+        targetComponent.initialize(assemblyContext);
+        
+        Reference ref = factory.createReference();
+        ConfiguredReference cref = factory.createConfiguredReference();
+        ref.setName("setHelloWorldService");
+        JavaServiceContract inter = factory.createJavaServiceContract();
+        inter.setInterface(HelloWorldService.class);
+        ref.setServiceContract(inter);
+        cref.setReference(ref);
+        cref.getTargetConfiguredServices().add(cTargetService);
+        cref.initialize(assemblyContext);
+        sourceEP.setConfiguredReference(cref);
+        sourceEP.initialize(assemblyContext);
+
+        Module module = factory.createModule();
+        module.setName("test.module");
+        module.getEntryPoints().add(sourceEP);
+        module.getComponents().add(targetComponent);
+        module.initialize(assemblyContext);
+        return module;
+    }
+
+    
 }
 

Modified: incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooBindingBuilder.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooBindingBuilder.java?rev=381293&r1=381292&r2=381293&view=diff
==============================================================================
--- incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooBindingBuilder.java (original)
+++ incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooBindingBuilder.java Mon Feb 27 01:07:48 2006
@@ -15,18 +15,19 @@
 
 import java.lang.reflect.Method;
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
 
 import org.apache.tuscany.core.builder.BuilderException;
 import org.apache.tuscany.core.builder.ObjectFactory;
 import org.apache.tuscany.core.builder.RuntimeConfigurationBuilder;
+import org.apache.tuscany.core.builder.impl.EntryPointRuntimeConfiguration;
 import org.apache.tuscany.core.config.JavaIntrospectionHelper;
 import org.apache.tuscany.core.context.Context;
 import org.apache.tuscany.core.context.QualifiedName;
 import org.apache.tuscany.core.injection.ObjectCreationException;
 import org.apache.tuscany.core.invocation.InvocationConfiguration;
-import org.apache.tuscany.core.invocation.MethodHashMap;
 import org.apache.tuscany.core.invocation.ProxyConfiguration;
 import org.apache.tuscany.core.invocation.impl.InvokerInterceptor;
 import org.apache.tuscany.core.invocation.spi.ProxyFactory;
@@ -36,6 +37,7 @@
 import org.apache.tuscany.core.system.annotation.Autowire;
 import org.apache.tuscany.model.assembly.AssemblyModelObject;
 import org.apache.tuscany.model.assembly.ConfiguredService;
+import org.apache.tuscany.model.assembly.EntryPoint;
 import org.apache.tuscany.model.assembly.ExternalService;
 import org.apache.tuscany.model.assembly.Service;
 import org.apache.tuscany.model.assembly.ServiceContract;
@@ -43,7 +45,8 @@
 import org.osoa.sca.annotations.Scope;
 
 /**
- * Creates a <code>RuntimeConfigurationBuilder</code> for an external service configured with the {@link FooBinding}
+ * Creates a <code>RuntimeConfigurationBuilder</code> for an entry point or external service configured with the
+ * {@link FooBinding}
  * 
  * @version $Rev$ $Date$
  */
@@ -104,43 +107,81 @@
     }
 
     public void build(AssemblyModelObject object, Context context) throws BuilderException {
-        if (!(object instanceof ExternalService)) {
-            return;
-        }
-        ExternalService es = (ExternalService) object;
-        if (es.getBindings().size() < 1 || !(es.getBindings().get(0) instanceof FooBinding)) {
-            return;
-        }
+        if (object instanceof EntryPoint) {
+            EntryPoint ep = (EntryPoint) object;
+            if (ep.getBindings().size() < 1 || !(ep.getBindings().get(0) instanceof FooBinding)) {
+                return;
+            }
+
+            // TODO create entry point context
+            EntryPointRuntimeConfiguration config = new FooEntryPointRuntimeConfiguration(ep.getName(), ep.getConfiguredService()
+                    .getService().getName(), messageFactory);
+
+            ConfiguredService configuredService = ep.getConfiguredService();
+            Service service = configuredService.getService();
+            ServiceContract serviceContract = service.getServiceContract();
+            Map<Method, InvocationConfiguration> iConfigMap = new HashMap();
+            ProxyFactory proxyFactory = proxyFactoryFactory.createProxyFactory();
+            Set<Method> javaMethods = JavaIntrospectionHelper.getAllUniqueMethods(serviceContract.getInterface());
+            for (Method method : javaMethods) {
+                InvocationConfiguration iConfig = new InvocationConfiguration(method);
+                iConfigMap.put(method, iConfig);
+            }
+            QualifiedName qName = new QualifiedName(ep.getName() + "/" + service.getName());
+            ProxyConfiguration pConfiguration = new ProxyConfiguration(qName, iConfigMap, null, messageFactory);
+            proxyFactory.setBusinessInterface(serviceContract.getInterface());
+            proxyFactory.setProxyConfiguration(pConfiguration);
+            config.addSourceProxyFactory(service.getName(), proxyFactory);
+            configuredService.setProxyFactory(proxyFactory);
+            if (policyBuilder != null) {
+                // invoke the reference builder to handle additional policy metadata
+                policyBuilder.build(configuredService, context);
+            }
+            // add tail interceptor
+            for (InvocationConfiguration iConfig : (Collection<InvocationConfiguration>) iConfigMap.values()) {
+                iConfig.addTargetInterceptor(new InvokerInterceptor());
+            }
+            ep.getConfiguredReference().setRuntimeConfiguration(config);
+
+        } else if (object instanceof ExternalService) {
+            ExternalService es = (ExternalService) object;
+            if (es.getBindings().size() < 1 || !(es.getBindings().get(0) instanceof FooBinding)) {
+                return;
+            }
+
+            FooExternalServiceRuntimeConfiguration config = new FooExternalServiceRuntimeConfiguration(es.getName(),
+                    new FooClientFactory());
+
+            ConfiguredService configuredService = es.getConfiguredService();
+            Service service = configuredService.getService();
+            ServiceContract serviceContract = service.getServiceContract();
+            Map<Method, InvocationConfiguration> iConfigMap = new HashMap();
+            ProxyFactory proxyFactory = proxyFactoryFactory.createProxyFactory();
+            Set<Method> javaMethods = JavaIntrospectionHelper.getAllUniqueMethods(serviceContract.getInterface());
+            for (Method method : javaMethods) {
+                InvocationConfiguration iConfig = new InvocationConfiguration(method);
+                iConfigMap.put(method, iConfig);
+            }
+            QualifiedName qName = new QualifiedName(es.getName() + "/" + service.getName());
+            ProxyConfiguration pConfiguration = new ProxyConfiguration(qName, iConfigMap, null, messageFactory);
+            proxyFactory.setBusinessInterface(serviceContract.getInterface());
+            proxyFactory.setProxyConfiguration(pConfiguration);
+            config.addTargetProxyFactory(service.getName(), proxyFactory);
+            configuredService.setProxyFactory(proxyFactory);
+            if (policyBuilder != null) {
+                // invoke the reference builder to handle additional policy metadata
+                policyBuilder.build(configuredService, context);
+            }
+            // add tail interceptor
+            for (InvocationConfiguration iConfig : (Collection<InvocationConfiguration>) iConfigMap.values()) {
+                iConfig.addTargetInterceptor(new InvokerInterceptor());
+            }
 
-        FooExternalServiceRuntimeConfiguration config = new FooExternalServiceRuntimeConfiguration(es.getName(),
-                new FooClientFactory());
+            es.getConfiguredService().setRuntimeConfiguration(config);
+        } else {
+            return;
 
-        ConfiguredService configuredService = es.getConfiguredService();
-        Service service = configuredService.getService();
-        ServiceContract serviceContract = service.getServiceContract();
-        Map<Method, InvocationConfiguration> iConfigMap = new MethodHashMap();
-        ProxyFactory proxyFactory = proxyFactoryFactory.createProxyFactory();
-        Set<Method> javaMethods = JavaIntrospectionHelper.getAllUniqueMethods(serviceContract.getInterface());
-        for (Method method : javaMethods) {
-            InvocationConfiguration iConfig = new InvocationConfiguration(method);
-            iConfigMap.put(method, iConfig);
-        }
-        QualifiedName qName = new QualifiedName(es.getName() + "/" + service.getName());
-        ProxyConfiguration pConfiguration = new ProxyConfiguration(qName, iConfigMap, null, messageFactory);
-        proxyFactory.setBusinessInterface(serviceContract.getInterface());
-        proxyFactory.setProxyConfiguration(pConfiguration);
-        config.addTargetProxyFactory(service.getName(), proxyFactory);
-        configuredService.setProxyFactory(proxyFactory);
-        if (policyBuilder != null) {
-            // invoke the reference builder to handle additional policy metadata
-            policyBuilder.build(configuredService, context);
         }
-        // add tail interceptor
-        for (InvocationConfiguration iConfig : (Collection<InvocationConfiguration>) iConfigMap.values()) {
-            iConfig.addTargetInterceptor(new InvokerInterceptor());
-        }
-
-        es.getConfiguredService().setRuntimeConfiguration(config);
     }
 
     private class FooClientFactory implements ObjectFactory {

Modified: incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooBindingWireBuilder.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooBindingWireBuilder.java?rev=381293&r1=381292&r2=381293&view=diff
==============================================================================
--- incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooBindingWireBuilder.java (original)
+++ incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooBindingWireBuilder.java Mon Feb 27 01:07:48 2006
@@ -14,27 +14,35 @@
 
     public void connect(ProxyFactory sourceFactory, ProxyFactory targetFactory, Class targetType, boolean downScope,
             ScopeContext targetScopeContext) throws BuilderConfigException {
-        if (!(FooExternalServiceRuntimeConfiguration.class.isAssignableFrom(targetType))) {
+        if (!(FooExternalServiceRuntimeConfiguration.class.isAssignableFrom(targetType) || FooEntryPointRuntimeConfiguration.class
+                .isAssignableFrom(targetType))) {
             return;
         }
         for (InvocationConfiguration sourceInvocationConfig : sourceFactory.getProxyConfiguration().getInvocationConfigurations()
                 .values()) {
-            FooTargetInvoker invoker = new FooTargetInvoker(sourceFactory.getProxyConfiguration().getTargetName().getPartName(),
-                    targetScopeContext);
+            if (FooExternalServiceRuntimeConfiguration.class.isAssignableFrom(targetType)) {
+                FooESTargetInvoker invoker = new FooESTargetInvoker(sourceFactory.getProxyConfiguration().getTargetName()
+                        .getPartName(), targetScopeContext);
+                sourceInvocationConfig.setTargetInvoker(invoker);
+            } else {
+                FooEPTargetInvoker invoker = new FooEPTargetInvoker(sourceFactory.getProxyConfiguration().getTargetName()
+                        .getPartName(), sourceInvocationConfig.getMethod(), targetScopeContext);
+                sourceInvocationConfig.setTargetInvoker(invoker);
+
+            }
             // if (downScope) {
             // // the source scope is shorter than the target, so the invoker can cache the target instance
             // invoker.setCacheable(true);
             // } else {
             // invoker.setCacheable(false);
             // }
-            sourceInvocationConfig.setTargetInvoker(invoker);
         }
 
     }
 
     public void completeTargetChain(ProxyFactory targetFactory, Class targetType, ScopeContext targetScopeContext)
             throws BuilderConfigException {
-        //TODO implement
+        // TODO implement
     }
 
 }

Added: incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooEPTargetInvoker.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooEPTargetInvoker.java?rev=381293&view=auto
==============================================================================
--- incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooEPTargetInvoker.java (added)
+++ incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooEPTargetInvoker.java Mon Feb 27 01:07:48 2006
@@ -0,0 +1,93 @@
+/**
+ * 
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package org.apache.tuscany.container.java.mock.binding.foo;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+import org.apache.tuscany.core.context.EntryPointContext;
+import org.apache.tuscany.core.context.InstanceContext;
+import org.apache.tuscany.core.context.ScopeContext;
+import org.apache.tuscany.core.context.TargetException;
+import org.apache.tuscany.core.invocation.Interceptor;
+import org.apache.tuscany.core.invocation.TargetInvoker;
+import org.apache.tuscany.core.message.Message;
+
+/**
+ * 
+ * @version $Rev$ $Date$
+ */
+public class FooEPTargetInvoker implements TargetInvoker {
+
+    private String name;
+
+    private ScopeContext container;
+
+    private EntryPointContext context;
+
+    private Method operation;
+
+    public FooEPTargetInvoker(String esName, Method operation, ScopeContext container) {
+        assert (esName != null) : "No external service name specified";
+        assert (container != null) : "No scope container specified";
+        assert (operation != null) : "No operation method specified";
+        name = esName;
+        this.container = container;
+    }
+
+    public Object invokeTarget(Object payload) throws InvocationTargetException {
+        if (context == null) {
+            InstanceContext iContext = container.getContext(name);
+            if (!(iContext instanceof EntryPointContext)) {
+                TargetException te = new TargetException("Unexpected target context type");
+                te.setIdentifier(iContext.getClass().getName());
+                te.addContextName(iContext.getName());
+                throw te;
+            }
+            context = (EntryPointContext) iContext;
+        }
+        try {
+            InvocationHandler handler = (InvocationHandler) context.getInstance(null);
+            if (payload != null) {
+                return handler.invoke(null, operation, new Object[] { payload });
+            } else {
+                return handler.invoke(null, operation, (Object[]) null);
+            }
+        } catch (Throwable e) {
+            throw new TargetException(e);
+        }
+    }
+
+    public boolean isCacheable() {
+        return false;
+    }
+
+    public Message invoke(Message msg) {
+        try {
+            Object resp = invokeTarget(msg.getBody());
+            msg.setBody(resp);
+        } catch (InvocationTargetException e) {
+            msg.setBody(e.getCause());
+        } catch (Throwable e) {
+            msg.setBody(e);
+        }
+        return msg;
+    }
+
+    public void setNext(Interceptor next) {
+        throw new UnsupportedOperationException();
+    }
+
+}

Copied: incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooESTargetInvoker.java (from r381049, incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooTargetInvoker.java)
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooESTargetInvoker.java?p2=incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooESTargetInvoker.java&p1=incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooTargetInvoker.java&r1=381049&r2=381293&rev=381293&view=diff
==============================================================================
--- incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooTargetInvoker.java (original)
+++ incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooESTargetInvoker.java Mon Feb 27 01:07:48 2006
@@ -24,11 +24,11 @@
 import org.apache.tuscany.core.message.Message;
 
 /**
- * Responsible for invoking a mock transport binding client
+ * Responsible for invoking a mock transport binding client configured for an external service
  * 
  * @version $Rev$ $Date$
  */
-public class FooTargetInvoker implements TargetInvoker {
+public class FooESTargetInvoker implements TargetInvoker {
 
     private String name;
 
@@ -36,7 +36,7 @@
 
     private ExternalServiceContext context;
 
-    public FooTargetInvoker(String esName, ScopeContext container) {
+    public FooESTargetInvoker(String esName, ScopeContext container) {
         assert (esName != null) : "No external service name specified";
         assert (container != null) : "No scope container specified";
         name = esName;

Added: incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooEntryPointRuntimeConfiguration.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooEntryPointRuntimeConfiguration.java?rev=381293&view=auto
==============================================================================
--- incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooEntryPointRuntimeConfiguration.java (added)
+++ incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooEntryPointRuntimeConfiguration.java Mon Feb 27 01:07:48 2006
@@ -0,0 +1,31 @@
+/**
+ * 
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package org.apache.tuscany.container.java.mock.binding.foo;
+
+import org.apache.tuscany.core.builder.impl.EntryPointRuntimeConfiguration;
+import org.apache.tuscany.core.message.MessageFactory;
+
+/**
+ * 
+ * 
+ * @version $Rev$ $Date$
+ */
+public class FooEntryPointRuntimeConfiguration extends EntryPointRuntimeConfiguration {
+
+    public FooEntryPointRuntimeConfiguration(String name, String serviceName, MessageFactory msgFactory) {
+        super(name, serviceName, msgFactory);
+    }
+
+}
+

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/BaseExternalServiceRuntimeConfiguration.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/BaseExternalServiceRuntimeConfiguration.java?rev=381293&r1=381292&r2=381293&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/BaseExternalServiceRuntimeConfiguration.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/BaseExternalServiceRuntimeConfiguration.java Mon Feb 27 01:07:48 2006
@@ -44,7 +44,7 @@
 
     private String targetServiceName;
 
-    private Map targetProxyFactories;
+    private Map<String,ProxyFactory> targetProxyFactories;
 
     public BaseExternalServiceRuntimeConfiguration(String name, ObjectFactory objectFactory) {
         assert (name != null) : "Name was null";
@@ -83,7 +83,7 @@
         }
     }
 
-    public Map getTargetProxyFactories() {
+    public Map<String,ProxyFactory> getTargetProxyFactories() {
         if (targetProxyFactories == null) {
             targetProxyFactories = new HashMap(1);
             targetProxyFactories.put(targetServiceName, proxyFactory);

Added: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/EntryPointRuntimeConfiguration.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/EntryPointRuntimeConfiguration.java?rev=381293&view=auto
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/EntryPointRuntimeConfiguration.java (added)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/EntryPointRuntimeConfiguration.java Mon Feb 27 01:07:48 2006
@@ -0,0 +1,101 @@
+/**
+ * 
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package org.apache.tuscany.core.builder.impl;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.tuscany.core.builder.ContextCreationException;
+import org.apache.tuscany.core.builder.RuntimeConfiguration;
+import org.apache.tuscany.core.context.EntryPointContext;
+import org.apache.tuscany.core.context.impl.EntryPointContextImpl;
+import org.apache.tuscany.core.invocation.spi.ProxyFactory;
+import org.apache.tuscany.core.message.MessageFactory;
+import org.apache.tuscany.model.assembly.Scope;
+
+/**
+ * Produces entry point contexts
+ * 
+ * @version $Rev$ $Date$
+ */
+public abstract class EntryPointRuntimeConfiguration implements RuntimeConfiguration<EntryPointContext> {
+
+    private String name;
+
+    private ProxyFactory proxyFactory;
+
+    private String epServiceName;
+    
+    private  MessageFactory msgFactory;
+
+    private Map<String,ProxyFactory> sourceProxyFactories;
+
+    public EntryPointRuntimeConfiguration(String name, String serviceName, MessageFactory msgFactory) {
+        assert (name != null) : "Entry point name was null";
+        assert (msgFactory != null) : "Message factory was null";
+        this.name = name;
+        this.msgFactory = msgFactory;
+    }
+
+    public EntryPointContext createInstanceContext() throws ContextCreationException {
+        return new EntryPointContextImpl(name,proxyFactory,msgFactory);
+    }
+
+    public Scope getScope() {
+        return Scope.MODULE;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void prepare() {
+    }
+
+    public void addTargetProxyFactory(String serviceName, ProxyFactory factory) {
+        // no wires to an entry point from with an aggregate 
+    }
+
+    public ProxyFactory getTargetProxyFactory(String serviceName) {
+        return null;
+    }
+
+    public Map<String,ProxyFactory> getTargetProxyFactories() {
+        return Collections.EMPTY_MAP;
+    }
+
+    public void addSourceProxyFactory(String referenceName, ProxyFactory factory) {
+        assert (referenceName != null) : "No reference name specified";
+        assert (factory != null) : "Proxy factory was null";
+        this.epServiceName = referenceName; // entry points are configured with only one reference
+        this.proxyFactory = factory;
+    }
+
+    public ProxyFactory getSourceProxyFactory(String referenceName) {
+        if (this.epServiceName.equals(referenceName)) {
+            return proxyFactory;
+        } else {
+            return null;
+        }
+    }
+
+    public Map<String,ProxyFactory> getSourceProxyFactories() {
+        if (sourceProxyFactories == null) {
+            sourceProxyFactories = new HashMap(1);
+            sourceProxyFactories.put(epServiceName, proxyFactory);
+        }
+        return sourceProxyFactories;
+    }
+}

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractAggregateContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractAggregateContext.java?rev=381293&r1=381292&r2=381293&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractAggregateContext.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractAggregateContext.java Mon Feb 27 01:07:48 2006
@@ -120,7 +120,7 @@
 
     public AbstractAggregateContext() {
         scopeIndex = new ConcurrentHashMap();
-        //FIXME the factory should be injected
+        // FIXME the factory should be injected
         module = new AssemblyFactoryImpl().createModule();
     }
 
@@ -133,7 +133,7 @@
         this.monitorFactory = factory;
         scopeIndex = new ConcurrentHashMap();
         parentContext = parent;
-        //FIXME the factory should be injected
+        // FIXME the factory should be injected
         module = new AssemblyFactoryImpl().createModule();
     }
 
@@ -345,6 +345,52 @@
                     }
 
                 }
+                for (EntryPoint ep : newModule.getEntryPoints()) {
+                    RuntimeConfiguration<InstanceContext> config = (RuntimeConfiguration<InstanceContext>) ep
+                            .getConfiguredReference().getRuntimeConfiguration();
+                    wireSource(config);
+                    buildTarget(config);
+                    try {
+                        if (config.getSourceProxyFactories() != null) {
+                            for (ProxyFactory sourceProxyFactory : (Collection<ProxyFactory>) config.getSourceProxyFactories()
+                                    .values()) {
+                                sourceProxyFactory.initialize();
+                            }
+                        }
+                        if (config.getTargetProxyFactories() != null) {
+                            for (ProxyFactory targetProxyFactory : (Collection<ProxyFactory>) config.getTargetProxyFactories()
+                                    .values()) {
+                                targetProxyFactory.initialize();
+                            }
+                        }
+                    } catch (ProxyInitializationException e) {
+                        throw new ConfigurationException(e);
+                    }
+
+                }
+                for (ExternalService es : newModule.getExternalServices()) {
+                    RuntimeConfiguration<InstanceContext> config = (RuntimeConfiguration<InstanceContext>) es
+                            .getConfiguredService().getRuntimeConfiguration();
+                    buildTarget(config);
+                    try {
+                        if (config.getSourceProxyFactories() != null) {
+                            for (ProxyFactory sourceProxyFactory : (Collection<ProxyFactory>) config.getSourceProxyFactories()
+                                    .values()) {
+                                sourceProxyFactory.initialize();
+                            }
+                        }
+                        if (config.getTargetProxyFactories() != null) {
+                            for (ProxyFactory targetProxyFactory : (Collection<ProxyFactory>) config.getTargetProxyFactories()
+                                    .values()) {
+                                targetProxyFactory.initialize();
+                            }
+                        }
+                    } catch (ProxyInitializationException e) {
+                        throw new ConfigurationException(e);
+                    }
+
+                }
+
             }
             // merge existing module component assets
             module.getComponents().addAll(oldModule.getComponents());
@@ -544,13 +590,13 @@
                         .getPortName());
                 boolean downScope = scopeStrategy.downScopeReference(sourceScope, target.getScope());
                 configurationContext.wire(sourceFactory, targetFactory, target.getClass(), downScope, scopeContexts
-                        .get(sourceScope));
+                        .get(target.getScope()));
             }
         }
         // wire invokers when the proxy only contains the target chain
-        if(source.getTargetProxyFactories() != null){
+        if (source.getTargetProxyFactories() != null) {
             for (ProxyFactory targetFactory : ((Map<String, ProxyFactory>) source.getTargetProxyFactories()).values()) {
-                configurationContext.wire(targetFactory,source.getClass(),scopeContexts.get(sourceScope));
+                configurationContext.wire(targetFactory, source.getClass(), scopeContexts.get(sourceScope));
             }
         }
         source.prepare();

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/EntryPointContextImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/EntryPointContextImpl.java?rev=381293&r1=381292&r2=381293&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/EntryPointContextImpl.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/EntryPointContextImpl.java Mon Feb 27 01:07:48 2006
@@ -16,7 +16,6 @@
 import java.lang.reflect.InvocationHandler;
 
 import org.apache.tuscany.core.context.AbstractContext;
-import org.apache.tuscany.core.context.AggregateContext;
 import org.apache.tuscany.core.context.ContextInitException;
 import org.apache.tuscany.core.context.CoreRuntimeException;
 import org.apache.tuscany.core.context.EntryPointContext;
@@ -35,8 +34,6 @@
 
     private MessageFactory messageFactory;
 
-    private AggregateContext parentContext;
-
     private ProxyFactory proxyFactory;
 
     private Object target;
@@ -56,15 +53,15 @@
      * @param messageFactory a factory for generating invocation messages
      * @throws ContextInitException if an error occurs creating the entry point
      */
-    public EntryPointContextImpl(String name, ProxyFactory proxyFactory, AggregateContext parentContext,
-            MessageFactory messageFactory) throws ContextInitException {
+    public EntryPointContextImpl(String name, ProxyFactory proxyFactory, MessageFactory messageFactory)
+            throws ContextInitException {
         super(name);
         assert (proxyFactory != null) : "Proxy factory was null";
         assert (messageFactory != null) : "Message factory was null";
         this.proxyFactory = proxyFactory;
-        this.parentContext = parentContext;
         this.messageFactory = messageFactory;
-        invocationHandler = new JDKInvocationHandler(messageFactory,proxyFactory.getProxyConfiguration().getInvocationConfigurations());
+        invocationHandler = new JDKInvocationHandler(messageFactory, proxyFactory.getProxyConfiguration()
+                .getInvocationConfigurations());
     }
 
     // ----------------------------------