Author: jmarino
Date: Tue Feb 28 14:50:42 2006
New Revision: 381805

URL: http://svn.apache.org/viewcvs?rev=381805&view=rev
Log:
Fix wire building where source and target chains only contain two 
InvokerInterceptors

Modified:
    
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/EntryPointToJavaTestCase.java
    
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/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/DefaultWireBuilder.java
    
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/EntryPointRuntimeConfiguration.java
    
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/EntryPointContext.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/binding/EntryPointToJavaTestCase.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/EntryPointToJavaTestCase.java?rev=381805&r1=381804&r2=381805&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/EntryPointToJavaTestCase.java
 (original)
+++ 
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/EntryPointToJavaTestCase.java
 Tue Feb 28 14:50:42 2006
@@ -75,10 +75,6 @@
         javaBuilder.setProxyFactoryFactory(proxyFactoryFactory);
 
         MockSyncInterceptor mockInterceptor = new MockSyncInterceptor();
-//        MockInterceptorBuilder interceptorBuilder = new 
MockInterceptorBuilder(mockInterceptor, true);
-//        HierarchicalBuilder refBuilder = new HierarchicalBuilder();
-//        refBuilder.addBuilder(interceptorBuilder);
-//        javaBuilder.setPolicyBuilder(refBuilder);
         builders.add(javaBuilder);
 
         FooBindingBuilder fooBindingBuilder = new FooBindingBuilder();

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=381805&r1=381804&r2=381805&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
 Tue Feb 28 14:50:42 2006
@@ -108,7 +108,7 @@
         JavaServiceContract targetContract = 
factory.createJavaServiceContract();
         targetContract.setInterface(HelloWorldService.class);
         targetService.setServiceContract(targetContract);
-        targetService.setName("HelloWorld");
+        targetService.setName("HelloWorldService");
         ConfiguredService cTargetService = factory.createConfiguredService();
         cTargetService.setService(targetService);
         targetComponent.getConfiguredServices().add(cTargetService);

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=381805&r1=381804&r2=381805&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
 Tue Feb 28 14:50:42 2006
@@ -112,8 +112,6 @@
             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);
 

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=381805&r1=381804&r2=381805&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
 Tue Feb 28 14:50:42 2006
@@ -14,22 +14,14 @@
 
     public void connect(ProxyFactory sourceFactory, ProxyFactory 
targetFactory, Class targetType, boolean downScope,
             ScopeContext targetScopeContext) throws BuilderConfigException {
-        if 
(!(FooExternalServiceRuntimeConfiguration.class.isAssignableFrom(targetType) || 
FooEntryPointRuntimeConfiguration.class
-                .isAssignableFrom(targetType))) {
+        if 
(!FooExternalServiceRuntimeConfiguration.class.isAssignableFrom(targetType)) {
             return;
         }
         for (InvocationConfiguration sourceInvocationConfig : 
sourceFactory.getProxyConfiguration().getInvocationConfigurations()
                 .values()) {
-            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);
-
-            }
+            FooESTargetInvoker invoker = new 
FooESTargetInvoker(sourceFactory.getProxyConfiguration().getTargetName()
+                    .getPartName(), 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);

Modified: 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/DefaultWireBuilder.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/DefaultWireBuilder.java?rev=381805&r1=381804&r2=381805&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/DefaultWireBuilder.java
 (original)
+++ 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/DefaultWireBuilder.java
 Tue Feb 28 14:50:42 2006
@@ -24,6 +24,7 @@
 import org.apache.tuscany.core.context.QualifiedName;
 import org.apache.tuscany.core.context.ScopeContext;
 import org.apache.tuscany.core.invocation.InvocationConfiguration;
+import org.apache.tuscany.core.invocation.impl.InvokerInterceptor;
 import org.apache.tuscany.core.invocation.impl.MessageChannelImpl;
 import org.apache.tuscany.core.invocation.spi.ProxyFactory;
 
@@ -38,7 +39,6 @@
     // collection configured wire builders
     private List<WireBuilder> builders = new ArrayList();
 
-
     public DefaultWireBuilder() {
     }
 
@@ -52,14 +52,15 @@
     public void setWireBuilders(List<WireBuilder> builders) {
         builders.addAll(builders);
     }
-    
+
     public void connect(ProxyFactory sourceFactory, ProxyFactory 
targetFactory, Class targetType, boolean downScope,
             ScopeContext targetScopeContext) {
         QualifiedName targetName = 
sourceFactory.getProxyConfiguration().getTargetName();
         // get the proxy chain for the target
         if (targetFactory != null) {
             // if null, the target side has no interceptors or handlers
-            Map<Method, InvocationConfiguration> targetInvocationConfigs = 
targetFactory.getProxyConfiguration().getInvocationConfigurations();
+            Map<Method, InvocationConfiguration> targetInvocationConfigs = 
targetFactory.getProxyConfiguration()
+                    .getInvocationConfigurations();
             for (InvocationConfiguration sourceInvocationConfig : 
sourceFactory.getProxyConfiguration()
                     .getInvocationConfigurations().values()) {
                 // match invocation chains
@@ -77,7 +78,11 @@
                         
e.setIdentifier(targetInvocationConfig.getMethod().getName());
                         throw e;
                     }
-                    
sourceInvocationConfig.addTargetInterceptor(targetInvocationConfig.getTargetInterceptor());
+                    if (!(sourceInvocationConfig.getLastTargetInterceptor() 
instanceof InvokerInterceptor && targetInvocationConfig
+                            .getTargetInterceptor() instanceof 
InvokerInterceptor)) {
+                        // check that we do not have the case where the only 
interceptors are invokers since we just need one
+                        
sourceInvocationConfig.addTargetInterceptor(targetInvocationConfig.getTargetInterceptor());
+                    }
                 }
             }
         }

Modified: 
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=381805&r1=381804&r2=381805&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/EntryPointRuntimeConfiguration.java
 (original)
+++ 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/EntryPointRuntimeConfiguration.java
 Tue Feb 28 14:50:42 2006
@@ -36,22 +36,22 @@
 
     private ProxyFactory proxyFactory;
 
-    private String epServiceName;
-    
-    private  MessageFactory msgFactory;
+    private String referenceName;
 
-    private Map<String,ProxyFactory> sourceProxyFactories;
+    private MessageFactory msgFactory;
 
-    public EntryPointRuntimeConfiguration(String name, String serviceName, 
MessageFactory msgFactory) {
+    private Map<String, ProxyFactory> sourceProxyFactories;
+
+    public EntryPointRuntimeConfiguration(String name, String referenceName, 
MessageFactory msgFactory) {
         assert (name != null) : "Entry point name was null";
         assert (msgFactory != null) : "Message factory was null";
         this.name = name;
-        this.epServiceName = serviceName;
+        this.referenceName = referenceName;
         this.msgFactory = msgFactory;
     }
 
     public EntryPointContext createInstanceContext() throws 
ContextCreationException {
-        return new EntryPointContextImpl(name,proxyFactory,msgFactory);
+        return new EntryPointContextImpl(name, proxyFactory, msgFactory);
     }
 
     public Scope getScope() {
@@ -66,36 +66,38 @@
     }
 
     public void addTargetProxyFactory(String serviceName, ProxyFactory 
factory) {
-        // no wires to an entry point from with an aggregate 
+        // no wires to an entry point from with an aggregate
     }
 
     public ProxyFactory getTargetProxyFactory(String serviceName) {
+        // no wires to an entry point from with an aggregate
         return null;
     }
 
-    public Map<String,ProxyFactory> getTargetProxyFactories() {
+    public Map<String, ProxyFactory> getTargetProxyFactories() {
+        // no wires to an entry point from with an aggregate
         return Collections.EMPTY_MAP;
     }
 
-    public void addSourceProxyFactory(String referenceName, ProxyFactory 
factory) {
-        assert (referenceName != null) : "No reference name specified";
+    public void addSourceProxyFactory(String refName, ProxyFactory factory) {
+        assert (refName != null) : "No reference name specified";
         assert (factory != null) : "Proxy factory was null";
-        this.epServiceName = referenceName; // entry points are configured 
with only one reference
+        this.referenceName = refName; // entry points are configured with only 
one reference
         this.proxyFactory = factory;
     }
 
-    public ProxyFactory getSourceProxyFactory(String referenceName) {
-        if (this.epServiceName.equals(referenceName)) {
+    public ProxyFactory getSourceProxyFactory(String refName) {
+        if (this.referenceName.equals(refName)) {
             return proxyFactory;
         } else {
             return null;
         }
     }
 
-    public Map<String,ProxyFactory> getSourceProxyFactories() {
+    public Map<String, ProxyFactory> getSourceProxyFactories() {
         if (sourceProxyFactories == null) {
             sourceProxyFactories = new HashMap(1);
-            sourceProxyFactories.put(epServiceName, proxyFactory);
+            sourceProxyFactories.put(referenceName, proxyFactory);
         }
         return sourceProxyFactories;
     }

Modified: 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/EntryPointContext.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/EntryPointContext.java?rev=381805&r1=381804&r2=381805&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/EntryPointContext.java
 (original)
+++ 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/EntryPointContext.java
 Tue Feb 28 14:50:42 2006
@@ -17,11 +17,30 @@
 package org.apache.tuscany.core.context;
 
 /**
- * Manages an entry point 
+ * The runtime artifact representing an entry point, 
<code>EntryPointContext</code> manages invocation handler
+ * instances that expose service operations offered by a component in the 
parent aggregate. The invocation handler
+ * instance is responsible for dispatching the request down an invocation 
chain to the target instance. The invocation
+ * chain may contain [EMAIL PROTECTED] 
org.apache.tuscany.core.invocation.Interceptor}s and
+ * [EMAIL PROTECTED] org.apache.tuscany.core.invocation.MessageHandler}s that 
implement policies or perform mediations on the
+ * invocation.
+ * <p>
+ * Entry point contexts are used by transport binding artifacts to invoke an 
operation on a service. The transport
+ * binding uses an [EMAIL PROTECTED] java.lang.reflect.InvocationHandler} 
instance obtained from the <code>EntryPointContext</code>
+ * to perform the invocation as in:
+ * 
+ * <pre>
+ *             AggregateContext aggregateContext = ...
+ *             EntryPointContext ctx = (EntryPointContext) 
aggregateContext.getContext(&quot;source&quot;);
+ *             Assert.assertNotNull(ctx);
+ *             InvocationHandler handler = (InvocationHandler) 
ctx.getInstance(null);
+ *             Object response = handler.invoke(null, operation, new Object[] 
{ param });
+ * </pre>
+ * 
+ * The <code>Proxy</code> instance passed to <code>InvocationHandler</code> 
may be null as the client is invoking
+ * directly on the handler.
  * 
  * @version $Rev$ $Date$
  */
 public interface EntryPointContext extends InstanceContext {
 
 }
-

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=381805&r1=381804&r2=381805&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 28 14:50:42 2006
@@ -203,6 +203,11 @@
     public Interceptor getTargetInterceptor() {
         return targetInterceptorChainHead;
     }
+    
+   
+    public Interceptor getLastTargetInterceptor() {
+        return targetInterceptorChainTail;
+    }
 
     /**
      * Sets the target invoker to pass down the invocation pipeline. When a 
service proxy represents a wire,


Reply via email to