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 Object getIdentifier() {
78 return delegate.getIdentifier();
82 public synchronized DataObject readConfigurationData(InstanceIdentifier<? extends DataObject> path) {
83 return delegate.readConfigurationData(path);
87 public synchronized Future<RpcResult<TransactionStatus>> commit() {
88 return delegate.commit();
92 public synchronized void putOperationalData(InstanceIdentifier<? extends DataObject> path, DataObject data) {
93 delegate.putOperationalData(path, data);
97 public synchronized void putConfigurationData(InstanceIdentifier<? extends DataObject> path, DataObject data) {
98 delegate.putConfigurationData(path, data);
102 public synchronized Map<InstanceIdentifier<? extends DataObject>, DataObject> getUpdatedConfigurationData() {
103 return delegate.getUpdatedConfigurationData();
107 public synchronized void removeOperationalData(InstanceIdentifier<? extends DataObject> path) {
108 delegate.removeOperationalData(path);
112 public synchronized void removeConfigurationData(InstanceIdentifier<? extends DataObject> path) {
113 delegate.removeConfigurationData(path);
117 public synchronized Set<InstanceIdentifier<? extends DataObject>> getRemovedConfigurationData() {
118 return delegate.getRemovedConfigurationData();
122 public synchronized Set<InstanceIdentifier<? extends DataObject>> getRemovedOperationalData() {
123 return delegate.getRemovedOperationalData();
127 public synchronized Map<InstanceIdentifier<? extends DataObject>, DataObject> getOriginalConfigurationData() {
128 return delegate.getOriginalConfigurationData();
132 public synchronized ListenerRegistration<DataTransactionListener> registerListener(DataTransactionListener listener) {
133 return delegate.registerListener(listener);
137 public synchronized Map<InstanceIdentifier<? extends DataObject>, DataObject> getOriginalOperationalData() {
138 return delegate.getOriginalOperationalData();
142 public synchronized DataModificationTransaction getDelegate() {
147 public int hashCode() {
148 final int prime = 31;
150 result = prime * result + ((delegate == null) ? 0 : delegate.hashCode());
155 public boolean equals(Object obj) {
162 if (getClass() != obj.getClass()){
165 SynchronizedTransaction other = (SynchronizedTransaction) obj;
166 if (delegate == null) {
167 if (other.delegate != null) {
170 } else if (!delegate.equals(other.delegate)) {