From 6aaf954c5d7d3834e5ac06964707aa7ce0c19b1d Mon Sep 17 00:00:00 2001 From: Tom Pantelis Date: Tue, 18 Apr 2017 02:09:00 -0400 Subject: [PATCH] Simplify DelayedListenerRegistration functionality The DelayedListenerRegistration class is abstract with parameterized sub-classes for the 2 listener types which don't provide any additional functionality. Consequently AbstractDataListenerSupport is parameterized with the DelayedListenerRegistration type with an abstract method to instantiate the appropriate type. We can simplify AbstractDataListenerSupport by removing the type parameter and the abstract method and consequently remove the 2 DelayedListenerRegistration sub-classes. Change-Id: I04933753b59748a09c31e0ec5ed4de9666fea364 Signed-off-by: Tom Pantelis --- .../AbstractDataListenerSupport.java | 25 ++++++++--------- .../datastore/DataChangeListenerSupport.java | 9 +------ .../DataTreeChangeListenerSupport.java | 8 +----- ...DelayedDataChangeListenerRegistration.java | 23 ---------------- .../DelayedDataTreeListenerRegistration.java | 27 ------------------- .../DelayedListenerRegistration.java | 4 +-- 6 files changed, 17 insertions(+), 79 deletions(-) delete mode 100644 opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DelayedDataChangeListenerRegistration.java delete mode 100644 opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DelayedDataTreeListenerRegistration.java diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/AbstractDataListenerSupport.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/AbstractDataListenerSupport.java index ac7a9337d9..f9995a28b1 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/AbstractDataListenerSupport.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/AbstractDataListenerSupport.java @@ -19,12 +19,14 @@ import org.opendaylight.controller.cluster.datastore.messages.ListenerRegistrati import org.slf4j.Logger; import org.slf4j.LoggerFactory; -abstract class AbstractDataListenerSupport> extends LeaderLocalDelegateFactory { +abstract class AbstractDataListenerSupport + extends LeaderLocalDelegateFactory { private final Logger log = LoggerFactory.getLogger(getClass()); - private final Collection delayedListenerRegistrations = ConcurrentHashMap.newKeySet(); - private final Collection delayedListenerOnAllRegistrations = ConcurrentHashMap.newKeySet(); + private final Collection> delayedListenerRegistrations = + ConcurrentHashMap.newKeySet(); + private final Collection> delayedListenerOnAllRegistrations = + ConcurrentHashMap.newKeySet(); private final Collection leaderOnlyListenerActors = ConcurrentHashMap.newKeySet(); private final Collection allListenerActors = ConcurrentHashMap.newKeySet(); @@ -46,16 +48,16 @@ abstract class AbstractDataListenerSupport reg : delayedListenerOnAllRegistrations) { + reg.doRegistration(this); } delayedListenerOnAllRegistrations.clear(); } if (isLeader) { - for (D reg : delayedListenerRegistrations) { - reg.createDelegate(this); + for (DelayedListenerRegistration reg : delayedListenerRegistrations) { + reg.doRegistration(this); } delayedListenerRegistrations.clear(); @@ -73,8 +75,9 @@ abstract class AbstractDataListenerSupport delayedRegList; + DelayedListenerRegistration delayedReg = + new DelayedListenerRegistration<>(message, registrationActor); + Collection> delayedRegList; if (message.isRegisterOnAllInstances()) { delayedRegList = delayedListenerOnAllRegistrations; } else { @@ -120,8 +123,6 @@ abstract class AbstractDataListenerSupport>, RegisterChangeListener, - DelayedDataChangeListenerRegistration> { + AsyncDataChangeListener>, RegisterChangeListener> { DataChangeListenerSupport(final Shard shard) { super(shard); @@ -40,12 +39,6 @@ final class DataChangeListenerSupport extends AbstractDataListenerSupport< removeListenerActor(listenerActor)), ActorRef.noSender())); } - @Override - protected DelayedDataChangeListenerRegistration newDelayedListenerRegistration(RegisterChangeListener message, - ActorRef registrationActor) { - return new DelayedDataChangeListenerRegistration(message, registrationActor); - } - @Override protected Object newRegistrationReplyMessage(ActorRef registrationActor) { return new RegisterChangeListenerReply(registrationActor); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeChangeListenerSupport.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeChangeListenerSupport.java index 4f70327cb7..f250fb2904 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeChangeListenerSupport.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeChangeListenerSupport.java @@ -15,7 +15,7 @@ import org.opendaylight.controller.cluster.datastore.messages.RegisterDataTreeCh import org.opendaylight.controller.md.sal.dom.api.DOMDataTreeChangeListener; final class DataTreeChangeListenerSupport extends AbstractDataListenerSupport { + RegisterDataTreeChangeListener> { DataTreeChangeListenerSupport(final Shard shard) { super(shard); @@ -36,12 +36,6 @@ final class DataTreeChangeListenerSupport extends AbstractDataListenerSupport>, RegisterChangeListener> { - - DelayedDataChangeListenerRegistration(final RegisterChangeListener registerChangeListener, - final ActorRef registrationActor) { - super(registerChangeListener, registrationActor); - } -} diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DelayedDataTreeListenerRegistration.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DelayedDataTreeListenerRegistration.java deleted file mode 100644 index c67115a1f3..0000000000 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DelayedDataTreeListenerRegistration.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.controller.cluster.datastore; - -import akka.actor.ActorRef; -import org.opendaylight.controller.cluster.datastore.messages.RegisterDataTreeChangeListener; -import org.opendaylight.controller.md.sal.dom.api.DOMDataTreeChangeListener; - -/** - * Intermediate proxy registration returned to the user when we cannot - * instantiate the registration immediately. It provides a bridge to - * a real registration which may materialize at some point in the future. - */ -final class DelayedDataTreeListenerRegistration - extends DelayedListenerRegistration { - - DelayedDataTreeListenerRegistration(final RegisterDataTreeChangeListener registerTreeChangeListener, - final ActorRef registrationActor) { - super(registerTreeChangeListener, registrationActor); - } -} - diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DelayedListenerRegistration.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DelayedListenerRegistration.java index 18d23aa0cd..e1c9f0ba2c 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DelayedListenerRegistration.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DelayedListenerRegistration.java @@ -13,7 +13,7 @@ import javax.annotation.concurrent.GuardedBy; import org.opendaylight.controller.cluster.datastore.messages.ListenerRegistrationMessage; import org.opendaylight.yangtools.concepts.ListenerRegistration; -abstract class DelayedListenerRegistration +class DelayedListenerRegistration implements ListenerRegistration { private final M registrationMessage; private final ActorRef registrationActor; @@ -30,7 +30,7 @@ abstract class DelayedListenerRegistration support) { + synchronized void doRegistration(final AbstractDataListenerSupport support) { if (!closed) { support.doRegistration(registrationMessage, registrationActor); } -- 2.36.6