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]

Reply via email to