summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ServiceReferenceImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ServiceReferenceImpl.java')
-rw-r--r--sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ServiceReferenceImpl.java29
1 files changed, 28 insertions, 1 deletions
diff --git a/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ServiceReferenceImpl.java b/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ServiceReferenceImpl.java
index 6fa53dcea2..de33a5b140 100644
--- a/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ServiceReferenceImpl.java
+++ b/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ServiceReferenceImpl.java
@@ -52,15 +52,21 @@ import org.apache.tuscany.sca.core.context.ServiceReferenceExt;
import org.apache.tuscany.sca.core.factory.ObjectCreationException;
import org.apache.tuscany.sca.core.invocation.ExtensibleProxyFactory;
import org.apache.tuscany.sca.core.invocation.ProxyFactory;
+import org.apache.tuscany.sca.core.invocation.impl.AsyncJDKInvocationHandler;
+import org.apache.tuscany.sca.core.invocation.impl.DOMInvokerImpl;
import org.apache.tuscany.sca.interfacedef.Interface;
+import org.apache.tuscany.sca.interfacedef.InterfaceContract;
import org.apache.tuscany.sca.interfacedef.InvalidInterfaceException;
import org.apache.tuscany.sca.interfacedef.java.JavaInterface;
import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory;
+import org.apache.tuscany.sca.invocation.MessageFactory;
+import org.apache.tuscany.sca.runtime.DOMInvoker;
import org.apache.tuscany.sca.runtime.Invocable;
import org.apache.tuscany.sca.runtime.RuntimeComponent;
import org.apache.tuscany.sca.runtime.RuntimeComponentReference;
import org.apache.tuscany.sca.runtime.RuntimeEndpointReference;
import org.oasisopen.sca.ServiceRuntimeException;
+import org.w3c.dom.Node;
/**
* Default implementation of a ServiceReference.
@@ -93,6 +99,8 @@ public class ServiceReferenceImpl<B> implements ServiceReferenceExt<B> {
protected XMLOutputFactory xmlOutputFactory;
protected BuilderExtensionPoint builders;
+ private MessageFactory messageFactory;
+
/*
* Public constructor for Externalizable serialization/deserialization
*/
@@ -127,6 +135,8 @@ public class ServiceReferenceImpl<B> implements ServiceReferenceExt<B> {
this.staxProcessor = staxProcessors.getProcessor(EndpointReference.class);
this.builders = registry.getExtensionPoint(BuilderExtensionPoint.class);
this.proxyFactory = ExtensibleProxyFactory.getInstance(registry);
+ FactoryExtensionPoint modelFactories = registry.getExtensionPoint(FactoryExtensionPoint.class);
+ this.messageFactory = modelFactories.getFactory(MessageFactory.class);
}
public RuntimeEndpointReference getEndpointReference() {
@@ -426,5 +436,22 @@ public class ServiceReferenceImpl<B> implements ServiceReferenceExt<B> {
public void setBindingURI(String uri) {
((RuntimeEndpointReferenceImpl)endpointReference).setBindingURI(uri);
}
-
+
+ public DOMInvoker getDOMInvoker() {
+
+ RuntimeEndpointReference epr = getEndpointReference();
+ InterfaceContract ic;
+ try {
+ ic = (InterfaceContract)epr.getGeneratedWSDLContract(epr.getBindingInterfaceContract()).clone();
+ } catch (CloneNotSupportedException e) {
+ throw new RuntimeException(e);
+ }
+ ic.getInterface().resetDataBinding(Node.class.getName());
+
+ ((RuntimeEndpointReferenceImpl)epr).setreferenceInterfaceContract(ic);
+ epr.rebuild();
+
+ AsyncJDKInvocationHandler handler = new AsyncJDKInvocationHandler(registry, messageFactory, this);
+ return new DOMInvokerImpl(handler);
+ }
}