1 package org.opendaylight.vpnservice.mdsalutil;
3 import com.google.common.base.Optional;
4 import com.google.common.util.concurrent.FutureCallback;
5 import com.google.common.util.concurrent.Futures;
7 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
8 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
9 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
10 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
11 import org.opendaylight.yangtools.yang.binding.DataObject;
12 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
14 public class MDSALDataStoreUtils {
16 public static <T extends DataObject> Optional<T> read(final DataBroker broker,final LogicalDatastoreType datastoreType,
17 InstanceIdentifier<T> path) {
19 ReadOnlyTransaction tx = broker.newReadOnlyTransaction();
21 Optional<T> result = Optional.absent();
23 result = tx.read(datastoreType, path).get();
24 } catch (Exception e) {
25 throw new RuntimeException(e);
31 public static <T extends DataObject> void asyncWrite(final DataBroker broker, final LogicalDatastoreType datastoreType,
32 InstanceIdentifier<T> path, T data, FutureCallback<Void> callback) {
33 WriteTransaction tx = broker.newWriteOnlyTransaction();
34 tx.put(datastoreType, path, data, true);
35 Futures.addCallback(tx.submit(), callback);
38 public static <T extends DataObject> void asyncUpdate(final DataBroker broker,final LogicalDatastoreType datastoreType,
39 InstanceIdentifier<T> path, T data, FutureCallback<Void> callback) {
40 WriteTransaction tx = broker.newWriteOnlyTransaction();
41 tx.merge(datastoreType, path, data, true);
42 Futures.addCallback(tx.submit(), callback);
45 public static <T extends DataObject> void asyncRemove(final DataBroker broker,final LogicalDatastoreType datastoreType,
46 InstanceIdentifier<T> path, FutureCallback<Void> callback) {
47 WriteTransaction tx = broker.newWriteOnlyTransaction();
48 tx.delete(datastoreType, path);
49 Futures.addCallback(tx.submit(), callback);