From 9320e6220c2a7135e7a2ec16e0b90bb00d65cdc5 Mon Sep 17 00:00:00 2001 From: wjaniszewski Date: Fri, 6 Mar 2009 21:57:58 +0000 Subject: Service RPC updated by allowing to have more than one SCA-Erlang module on single SCA-Erlang node git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@751092 13f79535-47bb-0310-9956-ffa450edef68 --- .../erlang/impl/ErlangBindingProviderFactory.java | 84 +++++++++++++++------- 1 file changed, 57 insertions(+), 27 deletions(-) (limited to 'sandbox/wjaniszewski/binding-erlang-runtime/src/main/java/org/apache/tuscany/sca/binding/erlang/impl/ErlangBindingProviderFactory.java') diff --git a/sandbox/wjaniszewski/binding-erlang-runtime/src/main/java/org/apache/tuscany/sca/binding/erlang/impl/ErlangBindingProviderFactory.java b/sandbox/wjaniszewski/binding-erlang-runtime/src/main/java/org/apache/tuscany/sca/binding/erlang/impl/ErlangBindingProviderFactory.java index 8953112aaa..f823be2d8f 100644 --- a/sandbox/wjaniszewski/binding-erlang-runtime/src/main/java/org/apache/tuscany/sca/binding/erlang/impl/ErlangBindingProviderFactory.java +++ b/sandbox/wjaniszewski/binding-erlang-runtime/src/main/java/org/apache/tuscany/sca/binding/erlang/impl/ErlangBindingProviderFactory.java @@ -19,6 +19,9 @@ package org.apache.tuscany.sca.binding.erlang.impl; +import java.util.HashMap; +import java.util.Map; + import org.apache.tuscany.sca.binding.erlang.ErlangBinding; import org.apache.tuscany.sca.core.ExtensionPointRegistry; import org.apache.tuscany.sca.provider.BindingProviderFactory; @@ -31,34 +34,61 @@ import org.apache.tuscany.sca.runtime.RuntimeComponentService; /** * @version $Rev: $ $Date: $ */ -public class ErlangBindingProviderFactory implements BindingProviderFactory { - - public ErlangBindingProviderFactory(ExtensionPointRegistry registry) { - - } - /** - * @see org.apache.tuscany.sca.provider.BindingProviderFactory#createReferenceBindingProvider(org.apache.tuscany.sca.runtime.RuntimeComponent, org.apache.tuscany.sca.runtime.RuntimeComponentReference, org.apache.tuscany.sca.assembly.Binding) - */ - public ReferenceBindingProvider createReferenceBindingProvider(RuntimeComponent component, - RuntimeComponentReference reference, - ErlangBinding binding) { - return new ErlangReferenceBindingProvider(binding, reference); - } +public class ErlangBindingProviderFactory implements + BindingProviderFactory { + + private Map nodes = new HashMap(); + + public ErlangBindingProviderFactory(ExtensionPointRegistry registry) { + + } + + /** + * @see org.apache.tuscany.sca.provider.BindingProviderFactory#createReferenceBindingProvider(org.apache.tuscany.sca.runtime.RuntimeComponent, + * org.apache.tuscany.sca.runtime.RuntimeComponentReference, + * org.apache.tuscany.sca.assembly.Binding) + */ + public ReferenceBindingProvider createReferenceBindingProvider( + RuntimeComponent component, RuntimeComponentReference reference, + ErlangBinding binding) { + return new ErlangReferenceBindingProvider(binding, reference); + } + + /** + * @see org.apache.tuscany.sca.provider.BindingProviderFactory#createServiceBindingProvider(org.apache.tuscany.sca.runtime.RuntimeComponent, + * org.apache.tuscany.sca.runtime.RuntimeComponentService, + * org.apache.tuscany.sca.assembly.Binding) + */ + public ServiceBindingProvider createServiceBindingProvider( + RuntimeComponent component, RuntimeComponentService service, + ErlangBinding binding) { + ServiceBindingProvider provider = null; + try { + provider = new ErlangServiceBindingProvider(getErlangNode(binding + .getNode()), binding, service); + } catch (Exception e) { + // TODO: log, throw, do something with this error + e.printStackTrace(); + } + return provider; + } - /** - * @see org.apache.tuscany.sca.provider.BindingProviderFactory#createServiceBindingProvider(org.apache.tuscany.sca.runtime.RuntimeComponent, org.apache.tuscany.sca.runtime.RuntimeComponentService, org.apache.tuscany.sca.assembly.Binding) - */ - public ServiceBindingProvider createServiceBindingProvider(RuntimeComponent component, - RuntimeComponentService service, - ErlangBinding binding) { - return new ErlangServiceBindingProvider(binding, service); - } + /** + * @see org.apache.tuscany.sca.provider.ProviderFactory#getModelType() + */ + public Class getModelType() { + return ErlangBinding.class; + } - /** - * @see org.apache.tuscany.sca.provider.ProviderFactory#getModelType() - */ - public Class getModelType() { - return ErlangBinding.class; - } + private ErlangNode getErlangNode(String name) throws Exception { + ErlangNode result = null; + if (nodes.containsKey(name)) { + result = nodes.get(name); + } else { + result = new ErlangNode(name); + nodes.put(name, result); + } + return result; + } } -- cgit v1.2.3