summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/contrib/modules/binding-foo-runtime/src/main/java/org/apache
diff options
context:
space:
mode:
authorantelder <antelder@13f79535-47bb-0310-9956-ffa450edef68>2010-09-07 12:04:50 +0000
committerantelder <antelder@13f79535-47bb-0310-9956-ffa450edef68>2010-09-07 12:04:50 +0000
commit2e21b2bda5e30460cf232da817952c9d69d819f9 (patch)
treeafd9bfd3796e932823bc42fcbdb96e3d2c098fe7 /sca-java-2.x/contrib/modules/binding-foo-runtime/src/main/java/org/apache
parent9f671c86682d5289ec912e297d084b5f8bb655f4 (diff)
Update with an example of how to have a foo reference delegate the invocation to ths WS binding
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@993324 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x/contrib/modules/binding-foo-runtime/src/main/java/org/apache')
-rw-r--r--sca-java-2.x/contrib/modules/binding-foo-runtime/src/main/java/org/apache/tuscany/sca/binding/foo/runtime/FooBindingProviderFactory.java5
-rw-r--r--sca-java-2.x/contrib/modules/binding-foo-runtime/src/main/java/org/apache/tuscany/sca/binding/foo/runtime/FooReferenceBindingProvider.java43
2 files changed, 40 insertions, 8 deletions
diff --git a/sca-java-2.x/contrib/modules/binding-foo-runtime/src/main/java/org/apache/tuscany/sca/binding/foo/runtime/FooBindingProviderFactory.java b/sca-java-2.x/contrib/modules/binding-foo-runtime/src/main/java/org/apache/tuscany/sca/binding/foo/runtime/FooBindingProviderFactory.java
index e57b2437af..b59cd50684 100644
--- a/sca-java-2.x/contrib/modules/binding-foo-runtime/src/main/java/org/apache/tuscany/sca/binding/foo/runtime/FooBindingProviderFactory.java
+++ b/sca-java-2.x/contrib/modules/binding-foo-runtime/src/main/java/org/apache/tuscany/sca/binding/foo/runtime/FooBindingProviderFactory.java
@@ -29,7 +29,10 @@ import org.apache.tuscany.sca.runtime.RuntimeEndpointReference;
public class FooBindingProviderFactory implements BindingProviderFactory<FooBinding> {
+ private ExtensionPointRegistry extensionPoints;
+
public FooBindingProviderFactory(ExtensionPointRegistry extensionPoints) {
+ this.extensionPoints = extensionPoints;
}
public Class<FooBinding> getModelType() {
@@ -37,7 +40,7 @@ public class FooBindingProviderFactory implements BindingProviderFactory<FooBind
}
public ReferenceBindingProvider createReferenceBindingProvider(RuntimeEndpointReference endpoint) {
- return new FooReferenceBindingProvider(endpoint);
+ return new FooReferenceBindingProvider(extensionPoints, endpoint);
}
public ServiceBindingProvider createServiceBindingProvider(RuntimeEndpoint endpoint) {
diff --git a/sca-java-2.x/contrib/modules/binding-foo-runtime/src/main/java/org/apache/tuscany/sca/binding/foo/runtime/FooReferenceBindingProvider.java b/sca-java-2.x/contrib/modules/binding-foo-runtime/src/main/java/org/apache/tuscany/sca/binding/foo/runtime/FooReferenceBindingProvider.java
index a9f49eace5..128ee24aed 100644
--- a/sca-java-2.x/contrib/modules/binding-foo-runtime/src/main/java/org/apache/tuscany/sca/binding/foo/runtime/FooReferenceBindingProvider.java
+++ b/sca-java-2.x/contrib/modules/binding-foo-runtime/src/main/java/org/apache/tuscany/sca/binding/foo/runtime/FooReferenceBindingProvider.java
@@ -20,36 +20,65 @@
package org.apache.tuscany.sca.binding.foo.runtime;
import org.apache.tuscany.sca.assembly.EndpointReference;
+import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
+import org.apache.tuscany.sca.binding.ws.WebServiceBindingFactory;
+import org.apache.tuscany.sca.binding.ws.wsdlgen.BindingWSDLGenerator;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.FactoryExtensionPoint;
import org.apache.tuscany.sca.interfacedef.InterfaceContract;
import org.apache.tuscany.sca.interfacedef.Operation;
import org.apache.tuscany.sca.invocation.Invoker;
import org.apache.tuscany.sca.provider.ReferenceBindingProvider;
+import org.apache.tuscany.sca.runtime.RuntimeEndpointReference;
public class FooReferenceBindingProvider implements ReferenceBindingProvider {
- private EndpointReference endpoint;
- private InterfaceContract contract;
+ private ReferenceBindingProvider delegate;
- public FooReferenceBindingProvider(EndpointReference endpoint) {
- this.endpoint = endpoint;
+ public FooReferenceBindingProvider(ExtensionPointRegistry extensionPoints, EndpointReference endpointReference) {
+
+ initWSBindingDelegate(endpointReference, extensionPoints);
}
public Invoker createInvoker(Operation operation) {
- return new FooReferenceInvoker(operation, endpoint);
+ return delegate.createInvoker(operation);
+ }
+
+ private void initWSBindingDelegate(EndpointReference endpointReference, ExtensionPointRegistry extensionPoints) {
+ FactoryExtensionPoint modelFactories = extensionPoints.getExtensionPoint(FactoryExtensionPoint.class);
+ WebServiceBindingFactory wsBindingFactory = modelFactories.getFactory(WebServiceBindingFactory.class);
+ WebServiceBinding wsBinding = wsBindingFactory.createWebServiceBinding();
+
+ // FIXME: this url needs to be set from some programatic lookup
+ wsBinding.setURI("http://localhost:8085/HelloWorldComponent/HelloWorldService");
+
+ BindingWSDLGenerator.generateWSDL(endpointReference.getComponent(), endpointReference.getReference(), wsBinding, extensionPoints, null);
+
+ RuntimeEndpointReference clonedEPR;
+ try {
+ clonedEPR = (RuntimeEndpointReference)endpointReference.clone();
+ } catch (CloneNotSupportedException e) {
+ throw new RuntimeException(e);
+ }
+ clonedEPR.setBinding(wsBinding);
+ clonedEPR.setBindingProvider(null);
+ delegate = clonedEPR.getBindingProvider();
}
public void start() {
+ delegate.start();
}
public void stop() {
+ delegate.stop();
}
public InterfaceContract getBindingInterfaceContract() {
- return contract;
+ return delegate.getBindingInterfaceContract();
}
public boolean supportsOneWayInvocation() {
- return false;
+ return delegate.supportsOneWayInvocation();
}
}