Author: antelder
Date: Thu Mar 13 11:19:27 2008
New Revision: 636817
URL: http://svn.apache.org/viewvc?rev=636817&view=rev
Log:
Fix dwr binding to avoid createSelfReference creating dulicate services in the
scadomain script
Modified:
incubator/tuscany/java/sca/modules/binding-dwr/src/main/java/org/apache/tuscany/sca/binding/dwr/DWRService.java
Modified:
incubator/tuscany/java/sca/modules/binding-dwr/src/main/java/org/apache/tuscany/sca/binding/dwr/DWRService.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-dwr/src/main/java/org/apache/tuscany/sca/binding/dwr/DWRService.java?rev=636817&r1=636816&r2=636817&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/binding-dwr/src/main/java/org/apache/tuscany/sca/binding/dwr/DWRService.java
(original)
+++
incubator/tuscany/java/sca/modules/binding-dwr/src/main/java/org/apache/tuscany/sca/binding/dwr/DWRService.java
Thu Mar 13 11:19:27 2008
@@ -19,14 +19,19 @@
package org.apache.tuscany.sca.binding.dwr;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+
import org.apache.tuscany.sca.assembly.Binding;
-import org.apache.tuscany.sca.core.invocation.JDKProxyFactory;
-import org.apache.tuscany.sca.core.invocation.ProxyFactory;
import org.apache.tuscany.sca.extension.helper.ComponentLifecycle;
import org.apache.tuscany.sca.host.http.ServletHost;
+import org.apache.tuscany.sca.interfacedef.Operation;
import org.apache.tuscany.sca.interfacedef.java.JavaInterface;
+import org.apache.tuscany.sca.interfacedef.java.impl.JavaInterfaceUtil;
import org.apache.tuscany.sca.runtime.RuntimeComponent;
import org.apache.tuscany.sca.runtime.RuntimeComponentService;
+import org.apache.tuscany.sca.runtime.RuntimeWire;
public class DWRService implements ComponentLifecycle {
@@ -52,10 +57,14 @@
servletHost.addServletMapping(SERVLET_PATH, servlet);
}
- Class<?> type =
((JavaInterface)rcs.getInterfaceContract().getInterface()).getJavaClass();
-
// Create a Java proxy to the target service
- Object proxy =
rc.getComponentContext().createSelfReference(type, rcs).getService();
+ Class<?> type =
((JavaInterface)rcs.getInterfaceContract().getInterface()).getJavaClass();
+ Object proxy = Proxy.newProxyInstance(type.getClassLoader(), new
Class[]{type}, new InvocationHandler() {
+ public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
+ RuntimeWire wire = rcs.getRuntimeWire(binding);
+ Operation op = JavaInterfaceUtil.findOperation(method,
rcs.getInterfaceContract().getInterface().getOperations());
+ return wire.invoke(op, args);
+ }});
servlet.addService(binding.getName(), type, proxy);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]