2 * Copyright (c) 2014 Cisco Systems, Inc. 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.controller.sal.binding.api.data;
12 import java.util.concurrent.Future;
14 import org.opendaylight.controller.md.sal.common.api.TransactionStatus;
15 import org.opendaylight.yangtools.concepts.Delegator;
16 import org.opendaylight.yangtools.concepts.ListenerRegistration;
17 import org.opendaylight.yangtools.yang.binding.DataObject;
18 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
19 import org.opendaylight.yangtools.yang.common.RpcResult;
21 import com.google.common.base.Preconditions;
24 * Synchronized wrapper for DataModificationTransaction.
26 * To get instance of synchronized wrapper use {@link #from(DataModificationTransaction)}
29 public final class SynchronizedTransaction implements DataModificationTransaction,Delegator<DataModificationTransaction> {
31 private final DataModificationTransaction delegate;
33 private SynchronizedTransaction(DataModificationTransaction delegate) {
34 this.delegate = delegate;
38 * Returns synchronized wrapper on supplied transaction.
40 * @param transaction Transaction for which synchronized wrapper should be created.
41 * @return Synchronized wrapper over transaction.
43 public static final SynchronizedTransaction from(DataModificationTransaction transaction) {
44 Preconditions.checkArgument(transaction != null, "Transaction must not be null.");
45 if (transaction instanceof SynchronizedTransaction) {
46 return (SynchronizedTransaction) transaction;
48 return new SynchronizedTransaction(transaction);
52 public synchronized Map<InstanceIdentifier<? extends DataObject>, DataObject> getCreatedOperationalData() {
53 return delegate.getCreatedOperationalData();
57 public synchronized Map<InstanceIdentifier<? extends DataObject>, DataObject> getCreatedConfigurationData() {
58 return delegate.getCreatedConfigurationData();
62 public synchronized DataObject readOperationalData(InstanceIdentifier<? extends DataObject> path) {
63 return delegate.readOperationalData(path);
67 public synchronized TransactionStatus getStatus() {
68 return delegate.getStatus();
72 public synchronized Map<InstanceIdentifier<? extends DataObject>, DataObject> getUpdatedOperationalData() {
73 return delegate.getUpdatedOperationalData();
77 public synchronized void putRuntimeData(InstanceIdentifier<? extends DataObject> path, DataObject data) {
78 delegate.putRuntimeData(path, data);
82 public synchronized Object getIdentifier() {
83 return delegate.getIdentifier();
87 public synchronized DataObject readConfigurationData(InstanceIdentifier<? extends DataObject> path) {
88 return delegate.readConfigurationData(path);
92 public synchronized Future<RpcResult<TransactionStatus>> commit() {
93 return delegate.commit();
97 public synchronized void putOperationalData(InstanceIdentifier<? extends DataObject> path, DataObject data) {
98 delegate.putOperationalData(path, data);
102 public synchronized void putConfigurationData(InstanceIdentifier<? extends DataObject> path, DataObject data) {
103 delegate.putConfigurationData(path, data);
107 public synchronized Map<InstanceIdentifier<? extends DataObject>, DataObject> getUpdatedConfigurationData() {
108 return delegate.getUpdatedConfigurationData();
112 public synchronized void removeRuntimeData(InstanceIdentifier<? extends DataObject> path) {
113 delegate.removeRuntimeData(path);
117 public synchronized void removeOperationalData(InstanceIdentifier<? extends DataObject> path) {
118 delegate.removeOperationalData(path);
122 public synchronized void removeConfigurationData(InstanceIdentifier<? extends DataObject> path) {
123 delegate.removeConfigurationData(path);
127 public synchronized Set<InstanceIdentifier<? extends DataObject>> getRemovedConfigurationData() {
128 return delegate.getRemovedConfigurationData();
132 public synchronized Set<InstanceIdentifier<? extends DataObject>> getRemovedOperationalData() {
133 return delegate.getRemovedOperationalData();
137 public synchronized Map<InstanceIdentifier<? extends DataObject>, DataObject> getOriginalConfigurationData() {
138 return delegate.getOriginalConfigurationData();
142 public synchronized ListenerRegistration<DataTransactionListener> registerListener(DataTransactionListener listener) {
143 return delegate.registerListener(listener);
147 public synchronized Map<InstanceIdentifier<? extends DataObject>, DataObject> getOriginalOperationalData() {
148 return delegate.getOriginalOperationalData();
152 public synchronized DataModificationTransaction getDelegate() {
157 public int hashCode() {
158 final int prime = 31;
160 result = prime * result + ((delegate == null) ? 0 : delegate.hashCode());
165 public boolean equals(Object obj) {
172 if (getClass() != obj.getClass()){
175 SynchronizedTransaction other = (SynchronizedTransaction) obj;
176 if (delegate == null) {
177 if (other.delegate != null) {
180 } else if (!delegate.equals(other.delegate)) {