95a71ea228d8f732b780c9ae077e31b0c1217df0
[genius.git] / mdsalutil / mdsalutil-api / src / main / java / org / opendaylight / genius / datastoreutils / listeners / AbstractDataTreeChangeListener.java
1 /*
2  * Copyright (c) 2017 Ericsson S.A. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.genius.datastoreutils.listeners;
9
10 import javax.inject.Inject;
11 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
12 import org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener;
13 import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
14 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
15 import org.opendaylight.yangtools.concepts.ListenerRegistration;
16 import org.opendaylight.yangtools.yang.binding.DataObject;
17 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
18
19 abstract class AbstractDataTreeChangeListener<T extends DataObject> implements DataTreeChangeListener<T>,
20         AutoCloseable {
21     private final DataBroker dataBroker;
22     private final ListenerRegistration<AbstractDataTreeChangeListener<T>> dataChangeListenerRegistration;
23
24     @Inject
25     AbstractDataTreeChangeListener(DataBroker dataBroker, DataTreeIdentifier<T> dataTreeIdentifier) {
26         this.dataBroker = dataBroker;
27         dataChangeListenerRegistration = dataBroker.registerDataTreeChangeListener(dataTreeIdentifier, this);
28     }
29
30     @Inject
31     AbstractDataTreeChangeListener(DataBroker dataBroker, LogicalDatastoreType datastoreType,
32                                    InstanceIdentifier<T> instanceIdentifier) {
33         this(dataBroker, new DataTreeIdentifier<>(datastoreType, instanceIdentifier));
34     }
35
36     public DataBroker getDataBroker() {
37         return dataBroker;
38     }
39
40     @Override
41     public void close() {
42         dataChangeListenerRegistration.close();
43     }
44 }
45