You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by js...@apache.org on 2006/02/28 09:18:29 UTC

svn commit: r381588 - in /incubator/tuscany/java/sca/container.java/src/main/java/org/apache/tuscany/container/java: builder/JavaComponentContextBuilder.java handler/AbstractJavaComponentInvoker.java

Author: jsdelfino
Date: Tue Feb 28 00:18:27 2006
New Revision: 381588

URL: http://svn.apache.org/viewcvs?rev=381588&view=rev
Log:
web service entry point bringup - make sure that proxies are created with the correct classloader, and make sure that the correct method is used to dispatch a call to a POJO component implementation

Modified:
    incubator/tuscany/java/sca/container.java/src/main/java/org/apache/tuscany/container/java/builder/JavaComponentContextBuilder.java
    incubator/tuscany/java/sca/container.java/src/main/java/org/apache/tuscany/container/java/handler/AbstractJavaComponentInvoker.java

Modified: incubator/tuscany/java/sca/container.java/src/main/java/org/apache/tuscany/container/java/builder/JavaComponentContextBuilder.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/main/java/org/apache/tuscany/container/java/builder/JavaComponentContextBuilder.java?rev=381588&r1=381587&r2=381588&view=diff
==============================================================================
--- incubator/tuscany/java/sca/container.java/src/main/java/org/apache/tuscany/container/java/builder/JavaComponentContextBuilder.java (original)
+++ incubator/tuscany/java/sca/container.java/src/main/java/org/apache/tuscany/container/java/builder/JavaComponentContextBuilder.java Tue Feb 28 00:18:27 2006
@@ -215,7 +215,7 @@
                         iConfigMap.put(method, iConfig);
                     }
                     QualifiedName qName = new QualifiedName(component.getName() + "/" + service.getName());
-                    ProxyConfiguration pConfiguration = new ProxyConfiguration(qName, iConfigMap, null, messageFactory);
+                    ProxyConfiguration pConfiguration = new ProxyConfiguration(qName, iConfigMap, serviceContract.getInterface().getClassLoader(), messageFactory);
                     proxyFactory.setBusinessInterface(serviceContract.getInterface());
                     proxyFactory.setProxyConfiguration(pConfiguration);
                     config.addTargetProxyFactory(service.getName(), proxyFactory);

Modified: incubator/tuscany/java/sca/container.java/src/main/java/org/apache/tuscany/container/java/handler/AbstractJavaComponentInvoker.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/main/java/org/apache/tuscany/container/java/handler/AbstractJavaComponentInvoker.java?rev=381588&r1=381587&r2=381588&view=diff
==============================================================================
--- incubator/tuscany/java/sca/container.java/src/main/java/org/apache/tuscany/container/java/handler/AbstractJavaComponentInvoker.java (original)
+++ incubator/tuscany/java/sca/container.java/src/main/java/org/apache/tuscany/container/java/handler/AbstractJavaComponentInvoker.java Tue Feb 28 00:18:27 2006
@@ -18,7 +18,9 @@
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import java.util.Set;
 
+import org.apache.tuscany.core.config.JavaIntrospectionHelper;
 import org.apache.tuscany.core.context.TargetException;
 import org.apache.tuscany.core.invocation.Interceptor;
 import org.apache.tuscany.core.invocation.InvocationRuntimeException;
@@ -42,10 +44,17 @@
 
     public Object invokeTarget(Object payload) throws InvocationTargetException {
         try {
+            Object instance=getInstance();
+            if (!operation.getDeclaringClass().isInstance(instance)) {
+                Set methods=JavaIntrospectionHelper.getAllUniqueMethods(instance.getClass());
+                Method newOperation=JavaIntrospectionHelper.findClosestMatchingMethod(operation.getName(), operation.getParameterTypes(), methods);
+                if (newOperation!=null)
+                    operation=newOperation;
+            }
             if (payload != null && !payload.getClass().isArray()) {
-                return operation.invoke(getInstance(), payload);
+                return operation.invoke(instance, payload);
             } else {
-                return operation.invoke(getInstance(), (Object[]) payload);
+                return operation.invoke(instance, (Object[]) payload);
             }
         } catch (IllegalAccessException e) {
             throw new InvocationRuntimeException(e);