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=33457c37767ecb54fa9c61d2ab0448ad2513970b;hb=03a3788f519241cb41d1527040467137d8ad5595;hp=6d8f86a6302d0f8ceffd312f8307cf211358b02f;hpb=5415bc1b468216259a018aee981e76cf9ca5654e;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 6d8f86a630..33457c3776 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,10 +7,8 @@ */ 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.collect.ClassToInstanceMap; import com.google.common.collect.ImmutableSet; import java.util.Set; @@ -21,49 +19,35 @@ 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 { +public class BindingDOMRpcServiceAdapter + extends AbstractBindingLoadingAdapter, RpcServiceAdapter> + 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; - public BindingDOMRpcServiceAdapter(final DOMRpcService domService, final BindingToNormalizedNodeCodec codec) { - this.domService = domService; - this.codec = codec; + super(codec, 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, getCodec(), getDelegate()); + } + private static final class Builder extends BindingDOMAdapterBuilder { @Override protected RpcConsumerRegistry createInstance(final BindingToNormalizedNodeCodec codec, final ClassToInstanceMap delegates) { - final DOMRpcService domRpc = delegates.getInstance(DOMRpcService.class); + final DOMRpcService domRpc = delegates.getInstance(DOMRpcService.class); return new BindingDOMRpcServiceAdapter(domRpc , codec); } @@ -71,7 +55,5 @@ public class BindingDOMRpcServiceAdapter implements RpcConsumerRegistry { public Set> getRequiredDelegates() { return ImmutableSet.of(DOMRpcService.class); } - } - }