From: Robert Varga Date: Sun, 14 Dec 2014 17:21:25 +0000 (+0100) Subject: Registry instance cannot be null in RpcProxyRegistration X-Git-Tag: release/lithium~763^2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=858a0b24590e30ebb8f2f788bc3580ee64bab991 Registry instance cannot be null in RpcProxyRegistration removeRegistration() is guaranteed to be invoked at most once, and registry cannot be null. Make it final and remove the safety check. Change-Id: Ie8f2da7430c076d0bec71eb8b58a4adc2af25adf Signed-off-by: Robert Varga --- 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 13a9f1cc10..de28ae81fc 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; @@ -40,13 +45,6 @@ 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; @@ -222,11 +220,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 +253,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 +270,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); } } }