2 * Copyright (c) 2016 Ericsson India Global Services Pvt Ltd. 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.genius.mdsalutil;
10 import com.google.common.base.Optional;
11 import com.google.common.util.concurrent.FutureCallback;
12 import com.google.common.util.concurrent.Futures;
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;
21 public class MDSALDataStoreUtils {
23 public static <T extends DataObject> Optional<T> read(final DataBroker broker,final LogicalDatastoreType datastoreType,
24 InstanceIdentifier<T> path) {
26 ReadOnlyTransaction tx = broker.newReadOnlyTransaction();
28 Optional<T> result = Optional.absent();
30 result = tx.read(datastoreType, path).get();
31 } catch (Exception e) {
32 throw new RuntimeException(e);
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);
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);
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);