Author: slaws
Date: Wed Nov 24 11:54:23 2010
New Revision: 1038570
URL: http://svn.apache.org/viewvc?rev=1038570&view=rev
Log:
Changes to move toward supporting async operation in the sample implementation.
Won't compile until I get the infrastructure changes checked in.
Modified:
tuscany/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sample/api/WSDLReference.java
tuscany/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sample/impl/SampleWSDLProxy.java
tuscany/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncProvider.java
tuscany/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncProviderFactory.java
tuscany/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleWSDLInvoker.java
tuscany/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleWSDLProxy.java
Modified:
tuscany/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sample/api/WSDLReference.java
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sample/api/WSDLReference.java?rev=1038570&r1=1038569&r2=1038570&view=diff
==============================================================================
---
tuscany/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sample/api/WSDLReference.java
(original)
+++
tuscany/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sample/api/WSDLReference.java
Wed Nov 24 11:54:23 2010
@@ -24,5 +24,6 @@ import org.w3c.dom.Element;
public interface WSDLReference {
Element call(String op, Element e);
+ void callAsync(String op, Element e);
}
Modified:
tuscany/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sample/impl/SampleWSDLProxy.java
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sample/impl/SampleWSDLProxy.java?rev=1038570&r1=1038569&r2=1038570&view=diff
==============================================================================
---
tuscany/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sample/impl/SampleWSDLProxy.java
(original)
+++
tuscany/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sample/impl/SampleWSDLProxy.java
Wed Nov 24 11:54:23 2010
@@ -54,4 +54,9 @@ class SampleWSDLProxy implements WSDLRef
throw new RuntimeException(ex);
}
}
+
+ @Override
+ public void callAsync(String op, Element e) {
+ return;
+ }
}
Modified:
tuscany/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncProvider.java
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncProvider.java?rev=1038570&r1=1038569&r2=1038570&view=diff
==============================================================================
---
tuscany/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncProvider.java
(original)
+++
tuscany/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncProvider.java
Wed Nov 24 11:54:23 2010
@@ -22,6 +22,7 @@ package sampleasync.impl;
import java.lang.reflect.Field;
import org.apache.tuscany.sca.assembly.ComponentReference;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.core.invocation.ProxyFactory;
import org.apache.tuscany.sca.interfacedef.Interface;
import org.apache.tuscany.sca.interfacedef.Operation;
@@ -42,12 +43,14 @@ class SampleAsyncProvider implements Imp
final RuntimeComponent comp;
final SampleAsyncImplementation impl;
final ProxyFactory pxf;
+ final ExtensionPointRegistry ep;
Object instance;
- SampleAsyncProvider(final RuntimeComponent comp, final
SampleAsyncImplementation impl, ProxyFactory pf) {
+ SampleAsyncProvider(final RuntimeComponent comp, final
SampleAsyncImplementation impl, ProxyFactory pf, ExtensionPointRegistry ep) {
this.comp = comp;
this.impl = impl;
this.pxf = pf;
+ this.ep = ep;
}
public void start() {
@@ -63,7 +66,7 @@ class SampleAsyncProvider implements Imp
if(i instanceof JavaInterface)
f.set(instance,
pxf.createProxy(comp.getComponentContext().getServiceReference(f.getType(),
r.getName())));
else
- f.set(instance, new
SampleWSDLProxy(r.getEndpointReferences().get(0), i));
+ f.set(instance, new
SampleWSDLProxy(r.getEndpointReferences().get(0), i, ep));
}
} catch(Exception e) {
throw new RuntimeException(e);
Modified:
tuscany/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncProviderFactory.java
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncProviderFactory.java?rev=1038570&r1=1038569&r2=1038570&view=diff
==============================================================================
---
tuscany/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncProviderFactory.java
(original)
+++
tuscany/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleAsyncProviderFactory.java
Wed Nov 24 11:54:23 2010
@@ -33,13 +33,15 @@ import org.apache.tuscany.sca.runtime.Ru
*/
public class SampleAsyncProviderFactory implements
ImplementationProviderFactory<SampleAsyncImplementation> {
final ProxyFactory pxf;
+ final ExtensionPointRegistry ep;
public SampleAsyncProviderFactory(final ExtensionPointRegistry ep) {
+ this.ep = ep;
pxf = ExtensibleProxyFactory.getInstance(ep);
}
public ImplementationProvider createImplementationProvider(final
RuntimeComponent comp, final SampleAsyncImplementation impl) {
- return new SampleAsyncProvider(comp, impl, pxf);
+ return new SampleAsyncProvider(comp, impl, pxf, ep);
}
public Class<SampleAsyncImplementation> getModelType() {
Modified:
tuscany/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleWSDLInvoker.java
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleWSDLInvoker.java?rev=1038570&r1=1038569&r2=1038570&view=diff
==============================================================================
---
tuscany/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleWSDLInvoker.java
(original)
+++
tuscany/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleWSDLInvoker.java
Wed Nov 24 11:54:23 2010
@@ -45,6 +45,7 @@ class SampleWSDLInvoker implements Invok
public Message invoke(final Message msg) {
try {
+ //AsyncHeader asyncHeader = (String)
message.getHeaders().get("ASYNC-HEADER");
// Invoke the generic call method
msg.setBody(method.invoke(instance, name,
((Object[])msg.getBody())[0]));
} catch(Exception e) {
Modified:
tuscany/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleWSDLProxy.java
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleWSDLProxy.java?rev=1038570&r1=1038569&r2=1038570&view=diff
==============================================================================
---
tuscany/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleWSDLProxy.java
(original)
+++
tuscany/sca-java-2.x/trunk/unreleased/samples/implementation-sample-async/src/main/java/sampleasync/impl/SampleWSDLProxy.java
Wed Nov 24 11:54:23 2010
@@ -24,8 +24,12 @@ import java.util.HashMap;
import java.util.Map;
import org.apache.tuscany.sca.assembly.EndpointReference;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.invocation.Constants;
import org.apache.tuscany.sca.interfacedef.Interface;
import org.apache.tuscany.sca.interfacedef.Operation;
+import org.apache.tuscany.sca.invocation.Message;
+import org.apache.tuscany.sca.invocation.MessageFactory;
import org.apache.tuscany.sca.runtime.RuntimeEndpointReference;
import org.w3c.dom.Element;
@@ -37,14 +41,19 @@ import sample.api.WSDLReference;
class SampleWSDLProxy implements WSDLReference {
final RuntimeEndpointReference repr;
final Map<String, Operation> ops;
+ final ExtensionPointRegistry ep;
+ final MessageFactory mf;
- SampleWSDLProxy(EndpointReference epr, Interface wi) {
+ SampleWSDLProxy(EndpointReference epr, Interface wi,
ExtensionPointRegistry ep) {
+ this.ep = ep;
+ mf = ep.getExtensionPoint(MessageFactory.class);
+
repr = (RuntimeEndpointReference)epr;
ops = new HashMap<String, Operation>();
for(Operation o: wi.getOperations())
ops.put(o.getName(), o);
}
-
+
@Override
public Element call(String op, Element e) {
try {
@@ -54,4 +63,20 @@ class SampleWSDLProxy implements WSDLRef
throw new RuntimeException(ex);
}
}
+
+ @Override
+ public void callAsync(String op, Element e) {
+ // Asynchronously invoke the named operation on the endpoint reference
+ Message message = mf.createMessage();
+ message.setBody(message);
+
+ // We could add implementation specific headers here if required
+
+ repr.invokeAsync(ops.get(op), message);
+
+ String messageID = (String)
message.getHeaders().get(Constants.MESSAGE_ID);
+
+ // save the message id ready for when we process the response
+
+ }
}