X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=binding%2Fmdsal-binding-dom-adapter%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Fbinding%2Fdom%2Fadapter%2FBindingDOMRpcServiceAdapter.java;h=e9dfe32d3dfd4013a98edc14589ba9ea553d5688;hb=191052b2c293127f62f39802da76151653cf369b;hp=991abdb061785f7557c43e6e3e66f2359fba5e77;hpb=3e577f99de723d2e6dce97d95d1cd0a19f097fe4;p=mdsal.git diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMRpcServiceAdapter.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMRpcServiceAdapter.java index 991abdb061..e9dfe32d3d 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMRpcServiceAdapter.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMRpcServiceAdapter.java @@ -7,65 +7,46 @@ */ package org.opendaylight.mdsal.binding.dom.adapter; -import com.google.common.base.Preconditions; -import com.google.common.cache.CacheBuilder; -import com.google.common.cache.CacheLoader; -import com.google.common.cache.LoadingCache; +import static com.google.common.base.Preconditions.checkArgument; + +import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ClassToInstanceMap; import com.google.common.collect.ImmutableSet; import java.util.Set; import org.opendaylight.mdsal.binding.api.RpcConsumerRegistry; import org.opendaylight.mdsal.binding.dom.adapter.BindingDOMAdapterBuilder.Factory; +import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections; import org.opendaylight.mdsal.dom.api.DOMRpcService; import org.opendaylight.mdsal.dom.api.DOMService; import org.opendaylight.yangtools.yang.binding.RpcService; -import org.opendaylight.yangtools.yang.binding.util.BindingReflections; - - -public class BindingDOMRpcServiceAdapter implements RpcConsumerRegistry { - - protected static final Factory BUILDER_FACTORY = Builder::new; - - private final LoadingCache, RpcServiceAdapter> proxies = CacheBuilder.newBuilder() - .weakKeys() - .build(new CacheLoader, RpcServiceAdapter>() { - - private RpcServiceAdapter createProxy(final Class key) { - Preconditions.checkArgument(BindingReflections.isBindingClass(key)); - Preconditions.checkArgument(key.isInterface(), "Supplied RPC service type must be interface."); - return new RpcServiceAdapter(key, codec, domService); - } - - @Override - public RpcServiceAdapter load(final Class key) throws Exception { - return createProxy(key); - } - - }); - private final DOMRpcService domService; - private final BindingToNormalizedNodeCodec codec; +@VisibleForTesting +public class BindingDOMRpcServiceAdapter + extends AbstractBindingLoadingAdapter, RpcServiceAdapter> + implements RpcConsumerRegistry { + static final Factory BUILDER_FACTORY = Builder::new; - public BindingDOMRpcServiceAdapter(final DOMRpcService domService, final BindingToNormalizedNodeCodec codec) { - super(); - this.domService = domService; - this.codec = codec; + public BindingDOMRpcServiceAdapter(final AdapterContext adapterContext, final DOMRpcService domService) { + super(adapterContext, domService); } @SuppressWarnings("unchecked") @Override public T getRpcService(final Class rpcService) { - Preconditions.checkArgument(rpcService != null, "Rpc Service needs to be specied."); - return (T) proxies.getUnchecked(rpcService).getProxy(); + checkArgument(rpcService != null, "Rpc Service needs to be specied."); + return (T) getAdapter(rpcService).getProxy(); } - private static final class Builder extends BindingDOMAdapterBuilder { + @Override + RpcServiceAdapter loadAdapter(final Class key) { + checkArgument(BindingReflections.isBindingClass(key)); + checkArgument(key.isInterface(), "Supplied RPC service type must be interface."); + return new RpcServiceAdapter(key, adapterContext(), getDelegate()); + } - @Override - protected RpcConsumerRegistry createInstance(final BindingToNormalizedNodeCodec codec, - final ClassToInstanceMap delegates) { - final DOMRpcService domRpc = delegates.getInstance(DOMRpcService.class); - return new BindingDOMRpcServiceAdapter(domRpc , codec); + private static final class Builder extends BindingDOMAdapterBuilder { + Builder(final AdapterContext adapterContext) { + super(adapterContext); } @Override @@ -73,6 +54,9 @@ public class BindingDOMRpcServiceAdapter implements RpcConsumerRegistry { return ImmutableSet.of(DOMRpcService.class); } + @Override + protected RpcConsumerRegistry createInstance(final ClassToInstanceMap delegates) { + return new BindingDOMRpcServiceAdapter(adapterContext(), delegates.getInstance(DOMRpcService.class)); + } } - }