bf90fd8c0087a9d8b639e0b570671ac0e77683ba
[vpnservice.git] / mdsalutil / mdsalutil-api / src / main / java / org / opendaylight / vpnservice / mdsalutil / MDSALDataStoreUtils.java
1 package org.opendaylight.vpnservice.mdsalutil;
2
3 import com.google.common.base.Optional;
4 import com.google.common.util.concurrent.FutureCallback;
5 import com.google.common.util.concurrent.Futures;
6
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;
13
14 public class MDSALDataStoreUtils {
15
16     public static <T extends DataObject> Optional<T> read(final DataBroker broker,final LogicalDatastoreType datastoreType,
17             InstanceIdentifier<T> path) {
18
19         ReadOnlyTransaction tx = broker.newReadOnlyTransaction();
20
21         Optional<T> result = Optional.absent();
22         try {
23             result = tx.read(datastoreType, path).get();
24         } catch (Exception e) {
25             throw new RuntimeException(e);
26         }
27
28         return result;
29     }
30
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);
36    }
37
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);
43    }
44
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);
50    }
51
52 }