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