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);


Reply via email to