Added copyright and updated appropriate log levels
[vpnservice.git] / mdsalutil / mdsalutil-api / src / main / java / org / opendaylight / vpnservice / mdsalutil / MDSALDataStoreUtils.java
1 /*
2  * Copyright (c) 2015 Ericsson India Global Services Pvt Ltd. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.vpnservice.mdsalutil;
9
10 import com.google.common.base.Optional;
11 import com.google.common.util.concurrent.FutureCallback;
12 import com.google.common.util.concurrent.Futures;
13
14 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
15 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
16 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
17 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
18 import org.opendaylight.yangtools.yang.binding.DataObject;
19 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
20
21 public class MDSALDataStoreUtils {
22
23     public static <T extends DataObject> Optional<T> read(final DataBroker broker,final LogicalDatastoreType datastoreType,
24             InstanceIdentifier<T> path) {
25
26         ReadOnlyTransaction tx = broker.newReadOnlyTransaction();
27
28         Optional<T> result = Optional.absent();
29         try {
30             result = tx.read(datastoreType, path).get();
31         } catch (Exception e) {
32             throw new RuntimeException(e);
33         }
34
35         return result;
36     }
37
38    public static <T extends DataObject> void asyncWrite(final DataBroker broker, final LogicalDatastoreType datastoreType,
39        InstanceIdentifier<T> path, T data, FutureCallback<Void> callback) {
40        WriteTransaction tx = broker.newWriteOnlyTransaction();
41        tx.put(datastoreType, path, data, true);
42        Futures.addCallback(tx.submit(), callback);
43    }
44
45    public static <T extends DataObject> void asyncUpdate(final DataBroker broker,final LogicalDatastoreType datastoreType,
46        InstanceIdentifier<T> path, T data, FutureCallback<Void> callback) {
47        WriteTransaction tx = broker.newWriteOnlyTransaction();
48        tx.merge(datastoreType, path, data, true);
49        Futures.addCallback(tx.submit(), callback);
50    }
51
52    public static <T extends DataObject> void asyncRemove(final DataBroker broker,final LogicalDatastoreType datastoreType,
53        InstanceIdentifier<T> path, FutureCallback<Void> callback) {
54        WriteTransaction tx = broker.newWriteOnlyTransaction();
55        tx.delete(datastoreType, path);
56        Futures.addCallback(tx.submit(), callback);
57    }
58
59 }