1 package org.opendaylight.controller.sal.restconf.impl
3 import javax.ws.rs.WebApplicationException
4 import javax.ws.rs.core.Response
5 import org.opendaylight.controller.md.sal.common.api.data.DataReader
6 import org.opendaylight.controller.sal.core.api.Broker.ConsumerSession
7 import org.opendaylight.controller.sal.core.api.data.DataBrokerService
8 import org.opendaylight.controller.sal.rest.impl.RestconfProvider
9 import org.opendaylight.yangtools.yang.common.QName
10 import org.opendaylight.yangtools.yang.common.RpcResult
11 import org.opendaylight.yangtools.yang.data.api.CompositeNode
12 import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier
14 class BrokerFacade implements DataReader<InstanceIdentifier, CompositeNode> {
16 val static BrokerFacade INSTANCE = new BrokerFacade
19 private ConsumerSession context;
22 private DataBrokerService dataService;
25 if (INSTANCE != null) {
26 throw new IllegalStateException("Already instantiated");
30 def static BrokerFacade getInstance() {
34 private def void checkPreconditions() {
35 if (context == null || dataService == null) {
36 throw new WebApplicationException(Response.status(Response.Status.SERVICE_UNAVAILABLE)
37 .entity(RestconfProvider::NOT_INITALIZED_MSG).build())
41 override readConfigurationData(InstanceIdentifier path) {
43 return dataService.readConfigurationData(path);
46 override readOperationalData(InstanceIdentifier path) {
48 return dataService.readOperationalData(path);
51 def RpcResult<CompositeNode> invokeRpc(QName type, CompositeNode payload) {
53 val future = context.rpc(type, payload);
57 def commitConfigurationDataPut(InstanceIdentifier path, CompositeNode payload) {
59 val transaction = dataService.beginTransaction;
60 transaction.putConfigurationData(path, payload);
61 return transaction.commit()
64 def commitOperationalDataPut(InstanceIdentifier path, CompositeNode payload) {
66 val transaction = dataService.beginTransaction;
67 transaction.putOperationalData(path, payload);
68 return transaction.commit()