2 * Copyright (c) 2017 Pantheon Technologies, s.ro. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.mdsal.dom.spi.shard;
10 import static com.google.common.base.Preconditions.checkArgument;
11 import static java.util.Objects.requireNonNull;
13 import com.google.common.collect.ForwardingObject;
14 import java.util.Collection;
15 import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier;
16 import org.opendaylight.mdsal.dom.api.DOMDataTreeListener;
17 import org.opendaylight.mdsal.dom.api.DOMDataTreeShard;
18 import org.opendaylight.mdsal.dom.spi.store.DOMStoreTreeChangePublisher;
19 import org.opendaylight.yangtools.concepts.ListenerRegistration;
20 import org.slf4j.Logger;
21 import org.slf4j.LoggerFactory;
24 * Compatibility layer between {@link DOMStoreTreeChangePublisher} and {@link ListenableDOMDataTreeShard}. Required
25 * for migration purposes.
27 * @author Robert Varga
29 * @deprecated This class is scheduled for removal when we remove compatibility with dom.spi.store APIs.
31 @Deprecated(forRemoval = true)
32 public final class CompatListenableDOMDataTreeShard extends ForwardingObject implements ListenableDOMDataTreeShard {
33 private static final Logger LOG = LoggerFactory.getLogger(CompatListenableDOMDataTreeShard.class);
35 private final CompatDOMDataTreeListenerRegistry publisher;
36 private final DOMDataTreeShard delegate;
38 private CompatListenableDOMDataTreeShard(final DOMDataTreeShard delegate) {
39 this.delegate = requireNonNull(delegate);
40 checkArgument(delegate instanceof DOMStoreTreeChangePublisher);
41 this.publisher = new CompatDOMDataTreeListenerRegistry((DOMStoreTreeChangePublisher) delegate);
44 public static ListenableDOMDataTreeShard createIfNeeded(final DOMDataTreeShard delegate) {
45 if (delegate instanceof ListenableDOMDataTreeShard) {
46 return (ListenableDOMDataTreeShard) delegate;
49 LOG.debug("Using compatibility adaptor for {}", delegate);
50 return new CompatListenableDOMDataTreeShard(delegate);
54 protected DOMDataTreeShard delegate() {
59 public void onChildAttached(final DOMDataTreeIdentifier prefix, final DOMDataTreeShard child) {
60 delegate.onChildAttached(prefix, child);
64 public void onChildDetached(final DOMDataTreeIdentifier prefix, final DOMDataTreeShard child) {
65 delegate.onChildDetached(prefix, child);
69 public <L extends DOMDataTreeListener> ListenerRegistration<L> registerListener(final L listener,
70 final Collection<DOMDataTreeIdentifier> subtrees, final boolean allowRxMerges) {
71 return publisher.registerListener(listener, subtrees, allowRxMerges);