1 package org.opendaylight.controller.sal.binding.impl;
3 import java.util.concurrent.Future;
5 import org.opendaylight.controller.md.sal.common.api.TransactionStatus;
6 import org.opendaylight.controller.md.sal.common.impl.AbstractDataModification;
7 import org.opendaylight.controller.md.sal.common.impl.ListenerRegistry;
8 import org.opendaylight.controller.sal.binding.api.data.DataModificationTransaction;
9 import org.opendaylight.yangtools.concepts.ListenerRegistration;
10 import org.opendaylight.yangtools.yang.binding.DataObject;
11 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
12 import org.opendaylight.yangtools.yang.common.RpcResult;
14 public class DataTransactionImpl extends AbstractDataModification<InstanceIdentifier<? extends DataObject>, DataObject>
15 implements DataModificationTransaction {
17 private final Object identifier;
19 private TransactionStatus status;
20 private ListenerRegistry<DataTransactionListener> listeners;
22 final DataBrokerImpl broker;
24 public DataTransactionImpl(DataBrokerImpl dataBroker) {
25 identifier = new Object();
27 status = TransactionStatus.NEW;
28 listeners = new ListenerRegistry<>();
32 public Future<RpcResult<TransactionStatus>> commit() {
33 return broker.commit(this);
37 public DataObject readConfigurationData(
38 org.opendaylight.yangtools.yang.binding.InstanceIdentifier<? extends DataObject> path) {
39 return broker.readConfigurationData(path);
43 public DataObject readOperationalData(InstanceIdentifier<? extends DataObject> path) {
44 return broker.readOperationalData(path);
48 public int hashCode() {
51 result = prime * result + ((broker == null) ? 0 : broker.hashCode());
52 result = prime * result + ((identifier == null) ? 0 : identifier.hashCode());
57 public boolean equals(Object obj) {
62 if (getClass() != obj.getClass())
64 DataTransactionImpl other = (DataTransactionImpl) obj;
66 if (other.broker != null)
68 } else if (!broker.equals(other.broker))
70 if (identifier == null) {
71 if (other.identifier != null)
73 } else if (!identifier.equals(other.identifier))
79 public TransactionStatus getStatus() {
84 public Object getIdentifier() {
89 public ListenerRegistration<DataTransactionListener> registerListener(DataTransactionListener listener) {
90 return listeners.register(listener);
93 public void changeStatus(TransactionStatus status) {
95 Iterable<ListenerRegistration<DataTransactionListener>> listenersToNotify = listeners.getListeners();
96 for (ListenerRegistration<DataTransactionListener> listenerRegistration : listenersToNotify) {
97 listenerRegistration.getInstance().onStatusUpdated(this, status);