You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by jb...@apache.org on 2007/02/20 00:50:48 UTC

svn commit: r509386 - in /incubator/tuscany/java/sca: kernel/core/src/main/java/org/apache/tuscany/core/component/ kernel/core/src/main/java/org/apache/tuscany/core/implementation/ kernel/core/src/main/java/org/apache/tuscany/core/wire/jdk/ kernel/core...

Author: jboynes
Date: Mon Feb 19 15:50:47 2007
New Revision: 509386

URL: http://svn.apache.org/viewvc?view=rev&rev=509386
Log:
push ComponentContext#cast operation through to the WireService

Modified:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ComponentContextImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ComponentContextProvider.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/jdk/JDKWireService.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/ContractCompatibilityTestCase.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WireService.java
    incubator/tuscany/java/sca/runtime/webapp/webapp-host/src/main/java/org/apache/tuscany/runtime/webapp/implementation/webapp/WebappComponent.java

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ComponentContextImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ComponentContextImpl.java?view=diff&rev=509386&r1=509385&r2=509386
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ComponentContextImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ComponentContextImpl.java Mon Feb 19 15:50:47 2007
@@ -47,7 +47,11 @@
     }
 
     public <B, R extends CallableReference<B>> R cast(B target) throws IllegalArgumentException {
-        return null;
+        try {
+            return (R) component.cast(target);
+        } catch (TuscanyRuntimeException e) {
+            throw new ServiceRuntimeException(e.getMessage(), e);
+        }
     }
 
     public <B> B getService(Class<B> businessInterface, String referenceName) {

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ComponentContextProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ComponentContextProvider.java?view=diff&rev=509386&r1=509385&r2=509386
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ComponentContextProvider.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ComponentContextProvider.java Mon Feb 19 15:50:47 2007
@@ -22,6 +22,7 @@
 
 import org.osoa.sca.ComponentContext;
 import org.osoa.sca.ServiceReference;
+import org.osoa.sca.CallableReference;
 
 /**
  * Interface implemented by Component's that want to expose a ComponentContext.
@@ -38,4 +39,6 @@
     <B> ServiceReference<B> getServiceReference(Class<B> businessInterface, String referenceName);
 
     <B> B getProperty(Class<B> type, String propertyName);
+
+    <B, R extends CallableReference<B>> R cast(B target);
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java?view=diff&rev=509386&r1=509385&r2=509386
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java Mon Feb 19 15:50:47 2007
@@ -29,6 +29,7 @@
 
 import org.osoa.sca.ComponentContext;
 import org.osoa.sca.ServiceReference;
+import org.osoa.sca.CallableReference;
 
 import org.apache.tuscany.spi.CoreRuntimeException;
 import org.apache.tuscany.spi.ObjectCreationException;
@@ -389,6 +390,10 @@
             ObjectFactory<B> factory = createWireFactory(type, wire);
             return new ServiceReferenceImpl<B>(type, factory);
         }
+    }
+
+    public <B, R extends CallableReference<B>> R cast(B target) {
+        return (R) wireService.cast(target);
     }
 
     protected abstract <B> ObjectFactory<B> createWireFactory(Class<B> interfaze, Wire wire);

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/jdk/JDKWireService.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/jdk/JDKWireService.java?view=diff&rev=509386&r1=509385&r2=509386
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/jdk/JDKWireService.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/jdk/JDKWireService.java Mon Feb 19 15:50:47 2007
@@ -20,11 +20,13 @@
 
 import java.lang.reflect.Method;
 import java.lang.reflect.Proxy;
+import java.lang.reflect.InvocationHandler;
 import java.util.List;
 import java.util.Map;
 
 import org.osoa.sca.annotations.Constructor;
 import org.osoa.sca.annotations.EagerInit;
+import org.osoa.sca.CallableReference;
 
 import org.apache.tuscany.spi.annotation.Autowire;
 import org.apache.tuscany.spi.component.WorkContext;
@@ -76,4 +78,16 @@
         return interfaze.cast(Proxy.newProxyInstance(cl, new Class[]{interfaze}, handler));
     }
 
+    public <B, R extends CallableReference<B>> R cast(B target) throws IllegalArgumentException {
+        InvocationHandler handler = Proxy.getInvocationHandler(target);
+        if (handler instanceof JDKInvocationHandler) {
+            // TODO return a ServiceReference
+            throw new UnsupportedOperationException();
+        } else if (handler instanceof JDKCallbackInvocationHandler) {
+            // TODO return a CallbackReference
+            throw new UnsupportedOperationException();
+        } else {
+            throw new IllegalArgumentException("Not a Tuscany SCA proxy");
+        }
+    }
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/ContractCompatibilityTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/ContractCompatibilityTestCase.java?view=diff&rev=509386&r1=509385&r2=509386
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/ContractCompatibilityTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/ContractCompatibilityTestCase.java Mon Feb 19 15:50:47 2007
@@ -38,6 +38,7 @@
 import org.apache.tuscany.spi.wire.WireService;
 
 import junit.framework.TestCase;
+import org.osoa.sca.CallableReference;
 
 /**
  * TODO some tests commented out due to DataType.equals() needing to be strict
@@ -363,6 +364,9 @@
             throw new UnsupportedOperationException();
         }
 
+        public <B, R extends CallableReference<B>> R cast(B target) throws IllegalArgumentException {
+            throw new UnsupportedOperationException();
+        }
     }
 
 }

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WireService.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WireService.java?view=diff&rev=509386&r1=509385&r2=509386
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WireService.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WireService.java Mon Feb 19 15:50:47 2007
@@ -22,6 +22,8 @@
 import java.util.List;
 import java.util.Map;
 
+import org.osoa.sca.CallableReference;
+
 import org.apache.tuscany.spi.model.ServiceContract;
 
 /**
@@ -61,6 +63,15 @@
      * @throws ProxyCreationException
      */
     Object createCallbackProxy(Class<?> interfaze, List<Wire> wires) throws ProxyCreationException;
+
+    /**
+     * Cast a proxy to a CallableReference.
+     *
+     * @param target a proxy generated by this implementation
+     * @return a CallableReference (or subclass) equivalent to this prozy
+     * @throws IllegalArgumentException if the object supplied is not a proxy
+     */
+    <B, R extends CallableReference<B>> R cast(B target) throws IllegalArgumentException;
 
     /**
      * Check the compatiblity of the source and the target service contracts.<p> A wire may only connect a source to a

Modified: incubator/tuscany/java/sca/runtime/webapp/webapp-host/src/main/java/org/apache/tuscany/runtime/webapp/implementation/webapp/WebappComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/runtime/webapp/webapp-host/src/main/java/org/apache/tuscany/runtime/webapp/implementation/webapp/WebappComponent.java?view=diff&rev=509386&r1=509385&r2=509386
==============================================================================
--- incubator/tuscany/java/sca/runtime/webapp/webapp-host/src/main/java/org/apache/tuscany/runtime/webapp/implementation/webapp/WebappComponent.java (original)
+++ incubator/tuscany/java/sca/runtime/webapp/webapp-host/src/main/java/org/apache/tuscany/runtime/webapp/implementation/webapp/WebappComponent.java Mon Feb 19 15:50:47 2007
@@ -26,6 +26,7 @@
 
 import org.osoa.sca.ComponentContext;
 import org.osoa.sca.ServiceReference;
+import org.osoa.sca.CallableReference;
 
 import org.apache.tuscany.spi.ObjectCreationException;
 import org.apache.tuscany.spi.ObjectFactory;
@@ -148,5 +149,9 @@
         }
         ObjectFactory<B> factory = createWireFactory(type, wire);
         return new ServiceReferenceImpl<B>(type, factory);
+    }
+
+    public <B, R extends CallableReference<B>> R cast(B target) {
+        return (R) wireService.cast(target);
     }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org