X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-inmemory-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fdom%2Fstore%2Fimpl%2Ftree%2FListenerNode.java;h=578320ea9057988e58b97c85647964886d0b321f;hb=f84f3b8fb24b1ee2074fbbb3f5c64e3ba3191e3e;hp=0aef1429c4eaa19a22c578da74dc72dc4281a99d;hpb=d042a4bad5c1cd4a8907529677425573039fc04f;p=controller.git diff --git a/opendaylight/md-sal/sal-inmemory-datastore/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/tree/ListenerNode.java b/opendaylight/md-sal/sal-inmemory-datastore/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/tree/ListenerNode.java index 0aef1429c4..578320ea90 100644 --- a/opendaylight/md-sal/sal-inmemory-datastore/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/tree/ListenerNode.java +++ b/opendaylight/md-sal/sal-inmemory-datastore/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/tree/ListenerNode.java @@ -8,19 +8,13 @@ package org.opendaylight.controller.md.sal.dom.store.impl.tree; import com.google.common.base.Optional; -import java.lang.ref.Reference; -import java.lang.ref.WeakReference; -import java.util.ArrayList; +import com.google.common.base.Preconditions; import java.util.Collection; -import java.util.HashMap; -import java.util.Map; +import org.opendaylight.controller.md.sal.dom.spi.RegistrationTreeNode; import org.opendaylight.controller.md.sal.dom.store.impl.DataChangeListenerRegistration; -import org.opendaylight.controller.md.sal.dom.store.impl.tree.ListenerTree.DataChangeListenerRegistrationImpl; import org.opendaylight.yangtools.concepts.Identifiable; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.api.schema.tree.StoreTreeNode; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * This is a single node within the listener tree. Note that the data returned from @@ -29,29 +23,30 @@ import org.slf4j.LoggerFactory; * unclosed. * * @author Robert Varga + * + * @deprecated Use {@link RegistrationTreeNode} instead. */ +@Deprecated public class ListenerNode implements StoreTreeNode, Identifiable { + final RegistrationTreeNode> delegate; - private static final Logger LOG = LoggerFactory.getLogger(ListenerNode.class); - - private final Collection> listeners = new ArrayList<>(); - private final Map children = new HashMap<>(); - private final PathArgument identifier; - private final Reference parent; - - ListenerNode(final ListenerNode parent, final PathArgument identifier) { - this.parent = new WeakReference<>(parent); - this.identifier = identifier; + ListenerNode(final RegistrationTreeNode> delegate) { + this.delegate = Preconditions.checkNotNull(delegate); } @Override public PathArgument getIdentifier() { - return identifier; + return delegate.getIdentifier(); } @Override public Optional getChild(final PathArgument child) { - return Optional.fromNullable(children.get(child)); + final RegistrationTreeNode> c = delegate.getExactChild(child); + if (c == null) { + return Optional.absent(); + } + + return Optional.of(new ListenerNode(c)); } /** @@ -62,45 +57,21 @@ public class ListenerNode implements StoreTreeNode, Identifiable

> getListeners() { - return listeners; - } - - ListenerNode ensureChild(final PathArgument child) { - ListenerNode potential = children.get(child); - if (potential == null) { - potential = new ListenerNode(this, child); - children.put(child, potential); - } - return potential; + return delegate.getRegistrations(); } - void addListener(final DataChangeListenerRegistration listener) { - listeners.add(listener); - LOG.debug("Listener {} registered", listener); - } - - void removeListener(final DataChangeListenerRegistrationImpl listener) { - listeners.remove(listener); - LOG.debug("Listener {} unregistered", listener); - - // We have been called with the write-lock held, so we can perform some cleanup. - removeThisIfUnused(); - } - - private void removeThisIfUnused() { - final ListenerNode p = parent.get(); - if (p != null && listeners.isEmpty() && children.isEmpty()) { - p.removeChild(identifier); - } + @Override + public int hashCode() { + return delegate.hashCode(); } - private void removeChild(final PathArgument arg) { - children.remove(arg); - removeThisIfUnused(); + @Override + public boolean equals(final Object obj) { + return delegate.equals(obj); } @Override public String toString() { - return "Node [identifier=" + identifier + ", listeners=" + listeners.size() + ", children=" + children.size() + "]"; + return delegate.toString(); } }