1 package org.opendaylight.controller.sal.restconf.impl
3 import javax.ws.rs.core.Response
4 import org.opendaylight.controller.md.sal.common.api.data.DataReader
5 import org.opendaylight.controller.sal.core.api.Broker.ConsumerSession
6 import org.opendaylight.controller.sal.core.api.data.DataBrokerService
7 import org.opendaylight.controller.sal.rest.impl.RestconfProvider
8 import org.opendaylight.yangtools.yang.common.QName
9 import org.opendaylight.yangtools.yang.common.RpcResult
10 import org.opendaylight.yangtools.yang.data.api.CompositeNode
11 import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier
13 class BrokerFacade implements DataReader<InstanceIdentifier, CompositeNode> {
15 val static BrokerFacade INSTANCE = new BrokerFacade
18 private ConsumerSession context;
21 private DataBrokerService dataService;
24 if (INSTANCE !== null) {
25 throw new IllegalStateException("Already instantiated");
29 def static BrokerFacade getInstance() {
33 private def void checkPreconditions() {
34 if (context === null || dataService === null) {
35 throw new ResponseException(Response.Status.SERVICE_UNAVAILABLE, RestconfProvider::NOT_INITALIZED_MSG)
39 override readConfigurationData(InstanceIdentifier path) {
41 return dataService.readConfigurationData(path);
44 override readOperationalData(InstanceIdentifier path) {
46 return dataService.readOperationalData(path);
49 def RpcResult<CompositeNode> invokeRpc(QName type, CompositeNode payload) {
51 val future = context.rpc(type, payload);
55 def commitConfigurationDataPut(InstanceIdentifier path, CompositeNode payload) {
57 val transaction = dataService.beginTransaction;
58 transaction.putConfigurationData(path, payload);
59 return transaction.commit()
62 def commitOperationalDataPut(InstanceIdentifier path, CompositeNode payload) {
64 val transaction = dataService.beginTransaction;
65 transaction.putOperationalData(path, payload);
66 return transaction.commit()