@Override public final <L extends DOMDataTreeChangeListener> AbstractDOMDataTreeChangeListenerRegistration<L> registerTreeChangeListener(final YangInstanceIdentifier treeId, final L listener) { // Take the write lock takeLock(); try { final RegistrationTreeNode<AbstractDOMDataTreeChangeListenerRegistration<?>> node = findNodeFor(treeId.getPathArguments()); final AbstractDOMDataTreeChangeListenerRegistration<L> reg = new AbstractDOMDataTreeChangeListenerRegistration<L>(listener) { @Override protected void removeRegistration() { AbstractDOMStoreTreeChangePublisher.this.removeRegistration(node, this); registrationRemoved(this); } }; addRegistration(node, reg); return reg; } finally { // Always release the lock releaseLock(); } }
@Override public final <L extends DOMDataTreeChangeListener> AbstractDOMDataTreeChangeListenerRegistration<L> registerTreeChangeListener(final YangInstanceIdentifier treeId, final L listener) { // Take the write lock takeLock(); try { final RegistrationTreeNode<AbstractDOMDataTreeChangeListenerRegistration<?>> node = findNodeFor(treeId.getPathArguments()); final AbstractDOMDataTreeChangeListenerRegistration<L> reg = new AbstractDOMDataTreeChangeListenerRegistration<L>(listener) { @Override protected void removeRegistration() { AbstractDOMStoreTreeChangePublisher.this.removeRegistration(node, this); registrationRemoved(this); } }; addRegistration(node, reg); return reg; } finally { // Always release the lock releaseLock(); } }