X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=replicate%2Fmdsal-replicate-netty%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Freplicate%2Fnetty%2FNettyReplicationSource.java;h=eee974009781c61dea1bb38bade9ead3f9ae99eb;hb=refs%2Fchanges%2F49%2F109849%2F5;hp=f94a4717c6a49a297ea3416e8fb3bbb416a8ad52;hpb=7bcfd42b7843ff655435197d7f64584297de2633;p=mdsal.git diff --git a/replicate/mdsal-replicate-netty/src/main/java/org/opendaylight/mdsal/replicate/netty/NettyReplicationSource.java b/replicate/mdsal-replicate-netty/src/main/java/org/opendaylight/mdsal/replicate/netty/NettyReplicationSource.java index f94a4717c6..eee9740097 100644 --- a/replicate/mdsal-replicate-netty/src/main/java/org/opendaylight/mdsal/replicate/netty/NettyReplicationSource.java +++ b/replicate/mdsal-replicate-netty/src/main/java/org/opendaylight/mdsal/replicate/netty/NettyReplicationSource.java @@ -8,16 +8,17 @@ package org.opendaylight.mdsal.replicate.netty; import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Verify.verify; +import static com.google.common.base.Verify.verifyNotNull; +import com.google.common.annotations.VisibleForTesting; import java.time.Duration; import org.opendaylight.mdsal.dom.api.DOMDataBroker; -import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeService; +import org.opendaylight.mdsal.dom.api.DOMDataBroker.DataTreeChangeExtension; import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider; -import org.opendaylight.yangtools.concepts.AbstractRegistration; import org.opendaylight.yangtools.concepts.Registration; import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Deactivate; import org.osgi.service.component.annotations.Reference; import org.osgi.service.metatype.annotations.AttributeDefinition; import org.osgi.service.metatype.annotations.Designate; @@ -25,7 +26,7 @@ import org.osgi.service.metatype.annotations.ObjectClassDefinition; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -@Component(immediate = true, configurationPid = "org.opendaylight.mdsal.replicate.netty.source") +@Component(service = { }, configurationPid = "org.opendaylight.mdsal.replicate.netty.source") @Designate(ocd = NettyReplicationSource.Config.class) public final class NettyReplicationSource { private static final Logger LOG = LoggerFactory.getLogger(NettyReplicationSource.class); @@ -45,43 +46,31 @@ public final class NettyReplicationSource { int maxMissedKeepalives() default 5; } - @Reference - private BootstrapSupport bootstrapSupport; - - @Reference - private DOMDataBroker dataBroker; - - @Reference - private ClusterSingletonServiceProvider singletonService; - - private static final class Disabled extends AbstractRegistration { - @Override - protected void removeRegistration() { - // no-op - } - } - - private NettyReplicationSource() { - - } + private Registration reg; @Activate - void activate(final Config config) { - final Duration keepaliveInterval = Duration.ofSeconds(config.keepAliveIntervalSeconds()); + public NettyReplicationSource(@Reference final BootstrapSupport bootstrapSupport, + @Reference final DOMDataBroker dataBroker, + @Reference final ClusterSingletonServiceProvider singletonService, final Config config) { + reg = createSource(bootstrapSupport, dataBroker, singletonService, config.enabled(), config.listenPort(), + Duration.ofSeconds(config.keepAliveIntervalSeconds()), config.maxMissedKeepalives()); + } - createSource(bootstrapSupport, dataBroker, singletonService, config.enabled(), config.listenPort(), - keepaliveInterval, config.maxMissedKeepalives()); + @Deactivate + void deactivate() { + reg.close(); + reg = null; } + @VisibleForTesting static Registration createSource(final BootstrapSupport bootstrap, final DOMDataBroker broker, - final ClusterSingletonServiceProvider singleton, final boolean enabled, - final int listenPort, final Duration keepaliveInterval, - final int maxMissedKeepalives) { + final ClusterSingletonServiceProvider singleton, final boolean enabled, final int listenPort, + final Duration keepaliveInterval, final int maxMissedKeepalives) { LOG.debug("Source {}", enabled ? "enabled" : "disabled"); - final DOMDataTreeChangeService dtcs = broker.getExtensions().getInstance(DOMDataTreeChangeService.class); - verify(dtcs != null, "Missing DOMDataTreeChangeService in broker %s", broker); + final var dtcs = verifyNotNull(broker.extension(DataTreeChangeExtension.class), + "Missing DOMDataTreeChangeService in broker %s", broker); checkArgument(maxMissedKeepalives > 0, "max-missed-keepalives %s must be greater than 0", maxMissedKeepalives); return enabled ? singleton.registerClusterSingletonService(new SourceSingletonService(bootstrap, - dtcs, listenPort, keepaliveInterval, maxMissedKeepalives)) : new Disabled(); + dtcs, listenPort, keepaliveInterval, maxMissedKeepalives)) : new NoOpRegistration(); } }