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/15 00:42:43 UTC

svn commit: r377888 - in /incubator/tuscany/java/sca: container.java/src/test/java/org/apache/tuscany/container/java/integration/ core/src/main/java/org/apache/tuscany/core/context/impl/ core/src/main/java/org/apache/tuscany/core/invocation/

Author: jmarino
Date: Tue Feb 14 15:42:41 2006
New Revision: 377888

URL: http://svn.apache.org/viewcvs?rev=377888&view=rev
Log:
added code to build target side proxies to aggregate context

Modified:
    incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/JavaBuilderContextIntegrationTestCase.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/invocation/InvocationConfiguration.java

Modified: incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/JavaBuilderContextIntegrationTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/JavaBuilderContextIntegrationTestCase.java?rev=377888&r1=377887&r2=377888&view=diff
==============================================================================
--- incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/JavaBuilderContextIntegrationTestCase.java (original)
+++ incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/JavaBuilderContextIntegrationTestCase.java Tue Feb 14 15:42:41 2006
@@ -127,15 +127,61 @@
         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();
+    }
+
+    
+    public void testRefWithTargetInterceptorHandler() 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, false);
+        HierarchicalBuilder refBuilder = new HierarchicalBuilder();
+        refBuilder.addBuilder(interceptorBuilder);
+        MockHandler mockHandler = new MockHandler();
+        MockHandlerBuilder handlerBuilder = new MockHandlerBuilder(mockHandler,false,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);

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=377888&r1=377887&r2=377888&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 Tue Feb 14 15:42:41 2006
@@ -39,6 +39,7 @@
 import org.apache.tuscany.core.context.SimpleComponentContext;
 import org.apache.tuscany.core.context.TargetException;
 import org.apache.tuscany.core.context.scope.DefaultScopeStrategy;
+import org.apache.tuscany.core.invocation.InvocationConfiguration;
 import org.apache.tuscany.core.invocation.spi.ProxyFactory;
 import org.apache.tuscany.core.invocation.spi.ProxyInitializationException;
 import org.apache.tuscany.core.system.annotation.Autowire;
@@ -150,6 +151,7 @@
                         // FIXME scopes are defined at the interface level
                         int sourceScope = source.getScope();
                         wireSource(source);
+                        buildTarget(source);
                         scopeIndex.put(source.getName(), scopeContexts.get(sourceScope));
                         List<RuntimeConfiguration<SimpleComponentContext>> list = configurationsByScope.get(sourceScope);
                         if (list == null) {
@@ -319,6 +321,7 @@
                     RuntimeConfiguration<InstanceContext> config = (RuntimeConfiguration<InstanceContext>) component
                             .getComponentImplementation().getRuntimeConfiguration();
                     wireSource(config);
+                    buildTarget(config);
                     try {
                         if (config.getSourceProxyFactories() != null) {
                             for (ProxyFactory sourceProxyFactory : (Collection<ProxyFactory>) config.getSourceProxyFactories()
@@ -538,6 +541,19 @@
             }
         }
         source.prepare();
+    }
+
+    protected void buildTarget(RuntimeConfiguration target){
+        if (target.getTargetProxyFactories() != null) {
+            for (ProxyFactory targetFactory : ((Map<String, ProxyFactory>) target.getTargetProxyFactories()).values()) {
+                for (InvocationConfiguration iConfig : (Collection<InvocationConfiguration>) targetFactory
+                        .getProxyConfiguration().getInvocationConfigurations().values()) {
+                    
+                    iConfig.build();
+
+                }
+            }
+        }
     }
 
     protected void initializeProxies() throws ProxyInitializationException {

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/invocation/InvocationConfiguration.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/invocation/InvocationConfiguration.java?rev=377888&r1=377887&r2=377888&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/invocation/InvocationConfiguration.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/invocation/InvocationConfiguration.java Tue Feb 14 15:42:41 2006
@@ -61,12 +61,12 @@
     public OperationType getOperationType() {
         return operation;
     }
-    
-    public void addTargetRequestChannel(MessageChannel channel){
+
+    public void addTargetRequestChannel(MessageChannel channel) {
         targetRequestChannel = channel;
     }
 
-    public void addTargetResponseChannel(MessageChannel channel){
+    public void addTargetResponseChannel(MessageChannel channel) {
         targetResponseChannel = channel;
     }
 
@@ -118,26 +118,26 @@
         return targetInterceptorChainHead;
     }
 
-    public List<MessageHandler> getRequestHandlers(){
+    public List<MessageHandler> getRequestHandlers() {
         return requestHandlers;
     }
 
-    public List<MessageHandler> getResponseHandlers(){
+    public List<MessageHandler> getResponseHandlers() {
         return responseHandlers;
     }
-    
+
     /**
      * Build the configuration, link the interceptors and handlers together
      */
     public void build() {
 
-        // Connect request handler chain to target interceptor chain
+        // Connect source request handler chain directly to target interceptor chain
         if (requestHandlers != null && targetInterceptorChainHead != null) {
             MessageHandler messageDispatcher = new MessageDispatcher(targetInterceptorChainHead);
             requestHandlers.add(messageDispatcher);
         }
 
-        // Connect source interceptor chain to handler chain
+        // Connect source interceptor chain to source handler chain
         if (requestHandlers != null) {
             MessageChannel requestChannel = new MessageChannelImpl(requestHandlers);
             MessageChannel responseChannel = new MessageChannelImpl(responseHandlers);
@@ -156,7 +156,13 @@
             if (sourceInterceptorChainHead != null) {
                 sourceInterceptorChainTail.setNext(targetInterceptorChainHead);
             } else if (targetInterceptorChainHead != targetInvoker) {
-                sourceInterceptorChainHead = targetInterceptorChainHead;
+                if (targetInterceptorChainHead == null) {
+                    Interceptor channelInterceptor = new RequestResponseInterceptor(null, targetRequestChannel, null,
+                            targetResponseChannel);
+                    sourceInterceptorChainHead = channelInterceptor;
+                } else {
+                    sourceInterceptorChainHead = targetInterceptorChainHead;
+                }
             }
         }