X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-rest-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Frestconf%2Fimpl%2FBrokerFacade.xtend;h=df6b58c8971331b74c89418a6e1ee039e1fcdf10;hb=de12565a7795af98788f8150eb0072f9c985f4a1;hp=e4cff4d6b14d54c93a80509d70fd386fc8477018;hpb=ec885a4eba20a0b75fb74f93535398da75d43e48;p=controller.git diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/BrokerFacade.xtend b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/BrokerFacade.xtend index e4cff4d6b1..df6b58c897 100644 --- a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/BrokerFacade.xtend +++ b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/BrokerFacade.xtend @@ -1,43 +1,73 @@ package org.opendaylight.controller.sal.restconf.impl +import javax.ws.rs.core.Response import org.opendaylight.controller.md.sal.common.api.data.DataReader import org.opendaylight.controller.sal.core.api.Broker.ConsumerSession import org.opendaylight.controller.sal.core.api.data.DataBrokerService +import org.opendaylight.controller.sal.rest.impl.RestconfProvider import org.opendaylight.yangtools.yang.common.QName import org.opendaylight.yangtools.yang.common.RpcResult import org.opendaylight.yangtools.yang.data.api.CompositeNode import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier +import org.slf4j.LoggerFactory class BrokerFacade implements DataReader { + + val static LOG = LoggerFactory.getLogger(BrokerFacade) + val static BrokerFacade INSTANCE = new BrokerFacade + @Property private ConsumerSession context; - + @Property private DataBrokerService dataService; + private new() { + if (INSTANCE !== null) { + throw new IllegalStateException("Already instantiated"); + } + } + + def static BrokerFacade getInstance() { + return INSTANCE + } + + private def void checkPreconditions() { + if (context === null || dataService === null) { + throw new ResponseException(Response.Status.SERVICE_UNAVAILABLE, RestconfProvider::NOT_INITALIZED_MSG) + } + } + override readConfigurationData(InstanceIdentifier path) { + checkPreconditions + LOG.info("Read Configuration via Restconf: {}",path) return dataService.readConfigurationData(path); } override readOperationalData(InstanceIdentifier path) { + checkPreconditions + LOG.info("Read Operational via Restconf: {}",path) return dataService.readOperationalData(path); } - + def RpcResult invokeRpc(QName type, CompositeNode payload) { + checkPreconditions val future = context.rpc(type, payload); return future.get; } - - def commitConfigurationDataUpdate(InstanceIdentifier path, CompositeNode payload) { + + def commitConfigurationDataPut(InstanceIdentifier path, CompositeNode payload) { + checkPreconditions val transaction = dataService.beginTransaction; transaction.putConfigurationData(path, payload); return transaction.commit() } - - def commitConfigurationDataCreate(InstanceIdentifier path, CompositeNode payload) { + + def commitOperationalDataPut(InstanceIdentifier path, CompositeNode payload) { + checkPreconditions val transaction = dataService.beginTransaction; - transaction.putConfigurationData(path, payload); + transaction.putOperationalData(path, payload); return transaction.commit() }