X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-binding-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fbinding%2Fimpl%2FRpcProviderRegistryImpl.java;h=0949d3d7612dfb34a1f8890329653af7efebc35e;hp=f2e467038f003cbc3acaa9dad3f4d108b0df691c;hb=3591817114661bb7971d6d355186ff1b39636fcd;hpb=753af6de42f98637e83bc26b4b058f47840863a8 diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/impl/RpcProviderRegistryImpl.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/impl/RpcProviderRegistryImpl.java index f2e467038f..0949d3d761 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/impl/RpcProviderRegistryImpl.java +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/impl/RpcProviderRegistryImpl.java @@ -8,7 +8,13 @@ package org.opendaylight.controller.sal.binding.impl; import static com.google.common.base.Preconditions.checkState; - +import com.google.common.base.Preconditions; +import com.google.common.base.Throwables; +import com.google.common.cache.Cache; +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; +import com.google.common.util.concurrent.UncheckedExecutionException; import java.util.EventListener; import java.util.HashMap; import java.util.Map; @@ -17,7 +23,6 @@ import java.util.Set; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.atomic.AtomicBoolean; - import org.opendaylight.controller.md.sal.common.api.routing.RouteChange; import org.opendaylight.controller.md.sal.common.api.routing.RouteChangeListener; import org.opendaylight.controller.md.sal.common.api.routing.RouteChangePublisher; @@ -33,20 +38,13 @@ import org.opendaylight.controller.sal.binding.codegen.RuntimeCodeHelper; import org.opendaylight.controller.sal.binding.codegen.impl.SingletonHolder; import org.opendaylight.yangtools.concepts.AbstractObjectRegistration; import org.opendaylight.yangtools.concepts.ListenerRegistration; -import org.opendaylight.yangtools.concepts.util.ListenerRegistry; +import org.opendaylight.yangtools.util.ListenerRegistry; import org.opendaylight.yangtools.yang.binding.BaseIdentity; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.binding.RpcService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.base.Throwables; -import com.google.common.cache.Cache; -import com.google.common.cache.CacheBuilder; -import com.google.common.cache.CacheLoader; -import com.google.common.cache.LoadingCache; -import com.google.common.util.concurrent.UncheckedExecutionException; - public class RpcProviderRegistryImpl implements RpcProviderRegistry, RouteChangePublisher> { private RuntimeCodeGenerator rpcFactory = SingletonHolder.RPC_GENERATOR_IMPL; @@ -91,8 +89,7 @@ public class RpcProviderRegistryImpl implements RpcProviderRegistry, RouteChange } @Override - public final RpcRegistration addRpcImplementation(final Class type, final T implementation) - throws IllegalStateException { + public final RpcRegistration addRpcImplementation(final Class type, final T implementation) { // FIXME: This should be well documented - addRpcImplementation for // routed RPCs @@ -222,11 +219,10 @@ public class RpcProviderRegistryImpl implements RpcProviderRegistry, RouteChange } - private class RouteChangeForwarder implements RouteChangeListener, InstanceIdentifier> { - + private final class RouteChangeForwarder implements RouteChangeListener, InstanceIdentifier> { private final Class type; - public RouteChangeForwarder(final Class type) { + RouteChangeForwarder(final Class type) { this.type = type; } @@ -256,15 +252,14 @@ public class RpcProviderRegistryImpl implements RpcProviderRegistry, RouteChange } } - public static class RpcProxyRegistration extends AbstractObjectRegistration implements RpcRegistration { - + private static final class RpcProxyRegistration extends AbstractObjectRegistration implements RpcRegistration { + private final RpcProviderRegistryImpl registry; private final Class serviceType; - private RpcProviderRegistryImpl registry; - public RpcProxyRegistration(final Class type, final T service, final RpcProviderRegistryImpl registry) { + RpcProxyRegistration(final Class type, final T service, final RpcProviderRegistryImpl registry) { super(service); + this.registry = Preconditions.checkNotNull(registry); this.serviceType = type; - this.registry = registry; } @Override @@ -274,13 +269,10 @@ public class RpcProviderRegistryImpl implements RpcProviderRegistry, RouteChange @Override protected void removeRegistration() { - if (registry != null) { - T publicProxy = registry.getRpcService(serviceType); - RpcService currentDelegate = RuntimeCodeHelper.getDelegate(publicProxy); - if (currentDelegate == getInstance()) { - RuntimeCodeHelper.setDelegate(publicProxy, null); - } - registry = null; + T publicProxy = registry.getRpcService(serviceType); + RpcService currentDelegate = RuntimeCodeHelper.getDelegate(publicProxy); + if (currentDelegate == getInstance()) { + RuntimeCodeHelper.setDelegate(publicProxy, null); } } }