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