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/14 21:43:18 UTC

svn commit: r377825 - in /incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java: builder/ integration/

Author: jmarino
Date: Tue Feb 14 12:43:17 2006
New Revision: 377825

URL: http://svn.apache.org/viewcvs?rev=377825&view=rev
Log:
more unit and integration tests for builders

Added:
    incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/builder/JavaComponentContextBuilderTestCase.java
    incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/builder/MockHandlerBuilder.java
    incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/builder/MockInterceptorBuilder.java
    incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/JavaBuilderContextIntegrationTestCase.java
Removed:
    incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/builder/JavaBuilderIntegrationTestCase.java

Added: incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/builder/JavaComponentContextBuilderTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/builder/JavaComponentContextBuilderTestCase.java?rev=377825&view=auto
==============================================================================
--- incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/builder/JavaComponentContextBuilderTestCase.java (added)
+++ incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/builder/JavaComponentContextBuilderTestCase.java Tue Feb 14 12:43:17 2006
@@ -0,0 +1,169 @@
+package org.apache.tuscany.container.java.builder;
+
+import java.lang.reflect.Method;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.apache.tuscany.common.monitor.impl.NullMonitorFactory;
+import org.apache.tuscany.container.java.assembly.pojo.PojoJavaOperationType;
+import org.apache.tuscany.container.java.invocation.mock.MockSyncInterceptor;
+import org.apache.tuscany.container.java.mock.MockAssemblyFactory;
+import org.apache.tuscany.container.java.mock.MockConfigContext;
+import org.apache.tuscany.container.java.mock.components.GenericComponent;
+import org.apache.tuscany.container.java.mock.components.ModuleScopeComponent;
+import org.apache.tuscany.container.java.mock.components.ModuleScopeComponentImpl;
+import org.apache.tuscany.core.builder.RuntimeConfiguration;
+import org.apache.tuscany.core.builder.impl.DefaultWireBuilder;
+import org.apache.tuscany.core.builder.impl.HierarchicalBuilder;
+import org.apache.tuscany.core.config.JavaIntrospectionHelper;
+import org.apache.tuscany.core.context.AggregateContext;
+import org.apache.tuscany.core.context.EventContext;
+import org.apache.tuscany.core.context.InstanceContext;
+import org.apache.tuscany.core.context.ScopeContext;
+import org.apache.tuscany.core.context.ScopeStrategy;
+import org.apache.tuscany.core.context.impl.AggregateContextImpl;
+import org.apache.tuscany.core.context.impl.EventContextImpl;
+import org.apache.tuscany.core.context.scope.DefaultScopeStrategy;
+import org.apache.tuscany.core.context.scope.ModuleScopeContext;
+import org.apache.tuscany.core.invocation.ProxyConfiguration;
+import org.apache.tuscany.core.invocation.jdk.JDKProxyFactoryFactory;
+import org.apache.tuscany.core.invocation.spi.ProxyFactory;
+import org.apache.tuscany.core.message.impl.PojoMessageFactory;
+import org.apache.tuscany.model.assembly.Component;
+import org.apache.tuscany.model.assembly.Module;
+import org.apache.tuscany.model.assembly.ScopeEnum;
+import org.apache.tuscany.model.assembly.pojo.PojoConfiguredReference;
+import org.apache.tuscany.model.assembly.pojo.PojoConfiguredService;
+import org.apache.tuscany.model.assembly.pojo.PojoInterface;
+import org.apache.tuscany.model.assembly.pojo.PojoInterfaceType;
+import org.apache.tuscany.model.assembly.pojo.PojoJavaInterface;
+import org.apache.tuscany.model.assembly.pojo.PojoModule;
+import org.apache.tuscany.model.assembly.pojo.PojoPort;
+import org.apache.tuscany.model.assembly.pojo.PojoReference;
+import org.apache.tuscany.model.assembly.pojo.PojoService;
+
+public class JavaComponentContextBuilderTestCase extends TestCase {
+
+    public JavaComponentContextBuilderTestCase() {
+    }
+
+    public void testBuilder() throws Exception {
+        JavaComponentContextBuilder2 builder = new JavaComponentContextBuilder2();
+        builder.setMessageFactory(new PojoMessageFactory());
+        HierarchicalBuilder refBuilder = new HierarchicalBuilder();
+        MockSyncInterceptor interceptor = new MockSyncInterceptor();
+        refBuilder.addBuilder(new MockInterceptorBuilder(interceptor, true));
+        builder.setReferenceBuilder(refBuilder);
+        AggregateContext ctx = createContext();
+        builder.setProxyFactoryFactory(new JDKProxyFactoryFactory());
+        JavaTargetWireBuilder javaWireBuilder = new JavaTargetWireBuilder();
+        ScopeStrategy strategy = new DefaultScopeStrategy();
+        DefaultWireBuilder wireBuilder = new DefaultWireBuilder();
+        wireBuilder.addWireBuilder(javaWireBuilder);
+        Module module = createModule();
+        EventContext eCtx = new EventContextImpl();
+        ScopeContext scopeContext = new ModuleScopeContext(eCtx);
+        scopeContext.start();
+        scopeContext.onEvent(EventContext.MODULE_START, null);
+        List<Component> components = module.getComponents();
+        Map<String, Component> compMap = new HashMap(components.size());
+
+        for (Component component : components) {
+            compMap.put(component.getName(), component);
+            builder.build(component, ctx);
+            RuntimeConfiguration config = (RuntimeConfiguration) component.getComponentImplementation().getRuntimeConfiguration();
+            Assert.assertNotNull(config);
+        }
+        for (Component component : components) {
+            RuntimeConfiguration source = (RuntimeConfiguration) component.getComponentImplementation().getRuntimeConfiguration();
+            Assert.assertNotNull(source);
+            for (ProxyFactory factory : (Collection<ProxyFactory>) source.getSourceProxyFactories().values()) {
+                ProxyConfiguration pConfig = factory.getProxyConfiguration();
+                Component target = compMap.get(pConfig.getTargetName().getPartName());
+
+                if (target != null) {
+                    RuntimeConfiguration targetConfig = (RuntimeConfiguration) target.getComponentImplementation()
+                            .getRuntimeConfiguration();
+                    boolean downScope = strategy.downScopeReference(source.getScope(), targetConfig.getScope());
+                    wireBuilder.wire(factory, targetConfig.getTargetProxyFactory(factory.getProxyConfiguration().getTargetName()
+                            .getPortName()), targetConfig.getClass(), downScope, scopeContext);
+                }
+                factory.initialize();
+            }
+
+            scopeContext.registerConfiguration(source);
+        }
+        for (Component component : components) {
+            RuntimeConfiguration config = (RuntimeConfiguration) component.getComponentImplementation().getRuntimeConfiguration();
+            InstanceContext context = (InstanceContext) config.createInstanceContext();
+            if ("source".equals(component.getName())) {
+                ModuleScopeComponent source = (ModuleScopeComponent) context.getInstance(null);
+                Assert.assertNotNull(source);
+                GenericComponent gComp = (GenericComponent) source.getGenericComponent();
+                gComp.getString();
+            }
+        }
+    }
+
+    public Module createModule() throws Exception {
+        Component sourceComponent = MockAssemblyFactory.createComponent("source", ModuleScopeComponentImpl.class,
+                ScopeEnum.MODULE_LITERAL);
+        Component targetComponent = MockAssemblyFactory.createComponent("target", ModuleScopeComponentImpl.class,
+                ScopeEnum.MODULE_LITERAL);
+        PojoReference ref = new PojoReference();
+        PojoConfiguredReference cref = new PojoConfiguredReference();
+        ref.setName("setGenericComponent");
+        PojoInterface inter = new PojoJavaInterface();
+        PojoInterfaceType type = new PojoInterfaceType();
+        type.setInstanceClass(GenericComponent.class);
+        PojoJavaOperationType oType = new PojoJavaOperationType();
+        oType.setName("getString");
+        oType.setJavaMethod((Method) JavaIntrospectionHelper.getBeanProperty(GenericComponent.class, "getString", null));
+        type.addOperationType(oType);
+        inter.setInterfaceType(type);
+        ref.setInterfaceContract(inter);
+        cref.setReference(ref);
+        cref.setPart(targetComponent);
+        PojoPort port = new PojoPort();
+        port.setName("GenericComponent");
+        cref.setPort(port);
+        sourceComponent.getConfiguredReferences().add(cref);
+        PojoService sourceService = new PojoService();
+        sourceService.setInterfaceContract(inter);
+        sourceService.setName("GenericComponent");
+        PojoConfiguredService cService = new PojoConfiguredService();
+        cService.setService(sourceService);
+        cService.setPart(sourceComponent);
+        cService.setPort(sourceService);
+
+        sourceComponent.getComponentImplementation().getServices().add(sourceService);
+        sourceComponent.getConfiguredServices().add(cService);
+
+        PojoService targetService = new PojoService();
+        targetService.setInterfaceContract(inter);
+        targetService.setName("GenericComponent");
+        PojoConfiguredService cTargetService = new PojoConfiguredService();
+        cTargetService.setService(targetService);
+        cTargetService.setPart(targetComponent);
+        cTargetService.setPort(targetService);
+        targetComponent.getComponentImplementation().getServices().add(targetService);
+        targetComponent.getConfiguredServices().add(cTargetService);
+
+        PojoModule module = new PojoModule();
+        module.setName("test.module");
+        module.addComponent(sourceComponent);
+        module.addComponent(targetComponent);
+        return module;
+    }
+
+    private static AggregateContext createContext() {
+        return new AggregateContextImpl("test.parent", null, new DefaultScopeStrategy(), new EventContextImpl(),
+                new MockConfigContext(null), new NullMonitorFactory());
+    }
+
+}

Added: incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/builder/MockHandlerBuilder.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/builder/MockHandlerBuilder.java?rev=377825&view=auto
==============================================================================
--- incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/builder/MockHandlerBuilder.java (added)
+++ incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/builder/MockHandlerBuilder.java Tue Feb 14 12:43:17 2006
@@ -0,0 +1,86 @@
+/**
+ * 
+ * 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.builder;
+
+import org.apache.tuscany.core.builder.BuilderException;
+import org.apache.tuscany.core.builder.RuntimeConfigurationBuilder;
+import org.apache.tuscany.core.context.Context;
+import org.apache.tuscany.core.invocation.InvocationConfiguration;
+import org.apache.tuscany.core.invocation.spi.ProxyFactory;
+import org.apache.tuscany.core.message.handler.MessageHandler;
+import org.apache.tuscany.model.assembly.AssemblyModelObject;
+import org.apache.tuscany.model.assembly.ConfiguredReference;
+import org.apache.tuscany.model.assembly.ConfiguredService;
+
+/**
+ * Adds a handler to a source or target proxy configuration
+ * 
+ * @version $Rev$ $Date$
+ */
+public class MockHandlerBuilder implements RuntimeConfigurationBuilder {
+
+    private MessageHandler handler;
+
+    private boolean source;
+
+    private boolean request;
+
+    /**
+     * Creates the builder.
+     * 
+     * @param handler the handler to add to the source or target proxy configuration
+     * @param source true if the handler should be added on the source side; false if the handler should be added to the
+     *        target side
+     * @param request true if the handler is a request handler; false if the handler is a response handler
+     */
+    public MockHandlerBuilder(MessageHandler handler, boolean source, boolean request) {
+        this.handler = handler;
+        this.source = source;
+        this.request = request;
+    }
+
+    public void build(AssemblyModelObject modelObject, Context context) throws BuilderException {
+        if (source) {
+            if (!(modelObject instanceof ConfiguredReference)) {
+                return;
+            } else {
+                ConfiguredReference cref = (ConfiguredReference) modelObject;
+                ProxyFactory pFactory = (ProxyFactory) cref.getProxyFactory();
+                for (InvocationConfiguration config : pFactory.getProxyConfiguration().getInvocationConfigurations().values()) {
+                    if (request) {
+                        config.addRequestHandler(handler);
+                    } else {
+                        config.addResponseHandler(handler);
+                    }
+                }
+            }
+        } else {
+            if (!(modelObject instanceof ConfiguredService)) {
+                return;
+            } else {
+                ConfiguredService cservice = (ConfiguredService) modelObject;
+                ProxyFactory pFactory = (ProxyFactory) cservice.getProxyFactory();
+                for (InvocationConfiguration config : pFactory.getProxyConfiguration().getInvocationConfigurations().values()) {
+                    if (request) {
+                        config.addRequestHandler(handler);
+                    } else {
+                        config.addResponseHandler(handler);
+                    }
+                }
+            }
+
+        }
+    }
+
+}

Added: incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/builder/MockInterceptorBuilder.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/builder/MockInterceptorBuilder.java?rev=377825&view=auto
==============================================================================
--- incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/builder/MockInterceptorBuilder.java (added)
+++ incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/builder/MockInterceptorBuilder.java Tue Feb 14 12:43:17 2006
@@ -0,0 +1,74 @@
+/**
+ * 
+ * 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.builder;
+
+import org.apache.tuscany.core.builder.BuilderException;
+import org.apache.tuscany.core.builder.RuntimeConfigurationBuilder;
+import org.apache.tuscany.core.context.Context;
+import org.apache.tuscany.core.invocation.Interceptor;
+import org.apache.tuscany.core.invocation.InvocationConfiguration;
+import org.apache.tuscany.core.invocation.spi.ProxyFactory;
+import org.apache.tuscany.model.assembly.AssemblyModelObject;
+import org.apache.tuscany.model.assembly.ConfiguredReference;
+import org.apache.tuscany.model.assembly.ConfiguredService;
+
+/**
+ * Adds an interceptor to a source or target proxy configuration
+ * 
+ * @version $Rev$ $Date$
+ */
+public class MockInterceptorBuilder implements RuntimeConfigurationBuilder {
+
+    private Interceptor interceptor;
+
+    private boolean source;
+
+    /**
+     * Creates the builder
+     * 
+     * @param interceptor the interceptor ot add
+     * @param source true if the interceptor should be added to the source side; false if the interceptor should be
+     *        added to the target side
+     */
+    public MockInterceptorBuilder(Interceptor interceptor, boolean source) {
+        this.interceptor = interceptor;
+        this.source = source;
+    }
+
+    public void build(AssemblyModelObject modelObject, Context context) throws BuilderException {
+        if (source) {
+            if (!(modelObject instanceof ConfiguredReference)) {
+                return;
+            } else {
+                ConfiguredReference cref = (ConfiguredReference) modelObject;
+                ProxyFactory pFactory = (ProxyFactory) cref.getProxyFactory();
+                for (InvocationConfiguration config : pFactory.getProxyConfiguration().getInvocationConfigurations().values()) {
+                    config.addSourceInterceptor(interceptor);
+                }
+            }
+        } else {
+            if (!(modelObject instanceof ConfiguredService)) {
+                return;
+            } else {
+                ConfiguredService cservice = (ConfiguredService) modelObject;
+                ProxyFactory pFactory = (ProxyFactory) cservice.getProxyFactory();
+                for (InvocationConfiguration config : pFactory.getProxyConfiguration().getInvocationConfigurations().values()) {
+                    config.addTargetInterceptor(interceptor);
+                }
+            }
+
+        }
+    }
+
+}

Added: incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/JavaBuilderContextIntegrationTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/JavaBuilderContextIntegrationTestCase.java?rev=377825&view=auto
==============================================================================
--- incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/JavaBuilderContextIntegrationTestCase.java (added)
+++ incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/JavaBuilderContextIntegrationTestCase.java Tue Feb 14 12:43:17 2006
@@ -0,0 +1,161 @@
+/**
+ * 
+ * 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.integration;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.apache.tuscany.container.java.builder.JavaComponentContextBuilder2;
+import org.apache.tuscany.container.java.builder.JavaTargetWireBuilder;
+import org.apache.tuscany.container.java.builder.MockHandlerBuilder;
+import org.apache.tuscany.container.java.builder.MockInterceptorBuilder;
+import org.apache.tuscany.container.java.invocation.mock.MockHandler;
+import org.apache.tuscany.container.java.invocation.mock.MockSyncInterceptor;
+import org.apache.tuscany.container.java.mock.MockAssemblyFactory;
+import org.apache.tuscany.container.java.mock.MockModuleFactory;
+import org.apache.tuscany.container.java.mock.components.GenericComponent;
+import org.apache.tuscany.core.builder.RuntimeConfigurationBuilder;
+import org.apache.tuscany.core.builder.WireBuilder;
+import org.apache.tuscany.core.builder.impl.DefaultWireBuilder;
+import org.apache.tuscany.core.builder.impl.HierarchicalBuilder;
+import org.apache.tuscany.core.context.AggregateContext;
+import org.apache.tuscany.core.context.ContextConstants;
+import org.apache.tuscany.core.context.EventContext;
+import org.apache.tuscany.core.context.impl.AggregateContextImpl;
+import org.apache.tuscany.core.invocation.jdk.JDKProxyFactoryFactory;
+import org.apache.tuscany.core.message.MessageFactory;
+import org.apache.tuscany.core.message.impl.PojoMessageFactory;
+import org.apache.tuscany.core.runtime.RuntimeContext;
+import org.apache.tuscany.core.runtime.RuntimeContextImpl;
+import org.apache.tuscany.core.system.builder.SystemComponentContextBuilder;
+import org.apache.tuscany.core.system.builder.SystemEntryPointBuilder;
+import org.apache.tuscany.core.system.builder.SystemExternalServiceBuilder;
+
+/**
+ * Verifies that the aggregate context implementation and java component builders construct references properly
+ * 
+ * @version $Rev$ $Date$
+ */
+public class JavaBuilderContextIntegrationTestCase extends TestCase {
+
+    public JavaBuilderContextIntegrationTestCase(String arg0) {
+        super(arg0);
+    }
+
+    protected void setUp() throws Exception {
+        super.setUp();
+    }
+
+    protected void tearDown() throws Exception {
+        super.tearDown();
+    }
+
+    public void testRefWithSourceInterceptor() throws Exception {
+        MessageFactory msgFactory = new PojoMessageFactory();
+
+        List<RuntimeConfigurationBuilder> builders = new ArrayList();
+        builders.add((new SystemComponentContextBuilder()));
+        builders.add(new SystemEntryPointBuilder());
+        builders.add(new SystemExternalServiceBuilder());
+
+        JavaComponentContextBuilder2 javaBuilder = new JavaComponentContextBuilder2();
+        javaBuilder.setMessageFactory(msgFactory);
+        javaBuilder.setProxyFactoryFactory(new JDKProxyFactoryFactory());
+
+        MockSyncInterceptor mockInterceptor = new MockSyncInterceptor();
+        MockInterceptorBuilder interceptorBuilder = new MockInterceptorBuilder(mockInterceptor, true);
+        HierarchicalBuilder refBuilder = new HierarchicalBuilder();
+        refBuilder.addBuilder(interceptorBuilder);
+        javaBuilder.setReferenceBuilder(refBuilder);
+        builders.add(javaBuilder);
+
+        List<WireBuilder> wireBuilders = new ArrayList();
+        DefaultWireBuilder defaultWireBuilder = new DefaultWireBuilder();
+        defaultWireBuilder.addWireBuilder(new JavaTargetWireBuilder());
+
+        wireBuilders.add(defaultWireBuilder);
+
+        RuntimeContext runtime = new RuntimeContextImpl(null, builders, wireBuilders);
+        runtime.start();
+        runtime.getRootContext().registerModelObject(
+                MockAssemblyFactory.createSystemComponent("test.module", AggregateContextImpl.class.getName(),
+                        ContextConstants.AGGREGATE_SCOPE_ENUM));
+        AggregateContext child = (AggregateContext) runtime.getRootContext().getContext("test.module");
+        child.registerModelObject(MockModuleFactory.createModule());
+        child.fireEvent(EventContext.MODULE_START, null);
+        GenericComponent source = (GenericComponent) child.locateInstance("source");
+        Assert.assertNotNull(source);
+        source.getGenericComponent().getString();
+        Assert.assertEquals(1, mockInterceptor.getCount());
+        source.getGenericComponent().getString();
+        Assert.assertEquals(2, mockInterceptor.getCount());
+        child.fireEvent(EventContext.MODULE_STOP, null);
+        runtime.stop();
+    }
+
+    public void testRefWithSourceInterceptorHandler() throws Exception {
+        MessageFactory msgFactory = new PojoMessageFactory();
+
+        List<RuntimeConfigurationBuilder> builders = new ArrayList();
+        builders.add((new SystemComponentContextBuilder()));
+        builders.add(new SystemEntryPointBuilder());
+        builders.add(new SystemExternalServiceBuilder());
+
+        JavaComponentContextBuilder2 javaBuilder = new JavaComponentContextBuilder2();
+        javaBuilder.setMessageFactory(msgFactory);
+        javaBuilder.setProxyFactoryFactory(new JDKProxyFactoryFactory());
+
+        MockSyncInterceptor mockInterceptor = new MockSyncInterceptor();
+        MockInterceptorBuilder interceptorBuilder = new MockInterceptorBuilder(mockInterceptor, true);
+        HierarchicalBuilder refBuilder = new HierarchicalBuilder();
+        refBuilder.addBuilder(interceptorBuilder);
+        MockHandler mockHandler = new MockHandler();
+        MockHandlerBuilder handlerBuilder = new MockHandlerBuilder(mockHandler,true,true);
+        refBuilder.addBuilder(handlerBuilder);
+        
+        
+        
+        javaBuilder.setReferenceBuilder(refBuilder);
+        builders.add(javaBuilder);
+
+        List<WireBuilder> wireBuilders = new ArrayList();
+        DefaultWireBuilder defaultWireBuilder = new DefaultWireBuilder();
+        defaultWireBuilder.addWireBuilder(new JavaTargetWireBuilder());
+
+        wireBuilders.add(defaultWireBuilder);
+
+        RuntimeContext runtime = new RuntimeContextImpl(null, builders, wireBuilders);
+        runtime.start();
+        runtime.getRootContext().registerModelObject(
+                MockAssemblyFactory.createSystemComponent("test.module", AggregateContextImpl.class.getName(),
+                        ContextConstants.AGGREGATE_SCOPE_ENUM));
+        AggregateContext child = (AggregateContext) runtime.getRootContext().getContext("test.module");
+        child.registerModelObject(MockModuleFactory.createModule());
+        child.fireEvent(EventContext.MODULE_START, null);
+        GenericComponent source = (GenericComponent) child.locateInstance("source");
+        Assert.assertNotNull(source);
+        source.getGenericComponent().getString();
+        Assert.assertEquals(1, mockInterceptor.getCount());
+        Assert.assertEquals(1, mockHandler.getCount());
+        source.getGenericComponent().getString();
+        Assert.assertEquals(2, mockInterceptor.getCount());
+        Assert.assertEquals(2, mockHandler.getCount());
+        child.fireEvent(EventContext.MODULE_STOP, null);
+        runtime.stop();
+    }
+
+}