* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
+
package org.opendaylight.restconf;
import com.google.common.base.Preconditions;
import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker;
import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService;
import org.opendaylight.controller.md.sal.dom.api.DOMRpcService;
-import org.opendaylight.controller.md.sal.dom.api.DOMTransactionChain;
import org.opendaylight.controller.sal.core.api.Broker.ProviderSession;
import org.opendaylight.controller.sal.core.api.Provider;
import org.opendaylight.controller.sal.core.api.model.SchemaService;
import org.opendaylight.netconf.sal.rest.api.RestConnector;
import org.opendaylight.netconf.sal.restconf.impl.RestconfDocumentedException;
-import org.opendaylight.restconf.common.wrapper.services.Draft15ServicesWrapperImpl;
+import org.opendaylight.restconf.common.wrapper.services.Draft16ServicesWrapperImpl;
import org.opendaylight.restconf.handlers.DOMDataBrokerHandler;
import org.opendaylight.restconf.handlers.DOMMountPointServiceHandler;
import org.opendaylight.restconf.handlers.RpcServiceHandler;
import org.slf4j.LoggerFactory;
/**
- * Provider for restconf draft15.
+ * Provider for restconf draft16.
*
*/
public class RestConnectorProvider implements Provider, RestConnector, AutoCloseable {
};
private ListenerRegistration<SchemaContextListener> listenerRegistration;
+ private static TransactionChainHandler transactionChainHandler;
private static DOMDataBroker dataBroker;
- private static DOMTransactionChain transactionChain;
@Override
public void onSessionInitiated(final ProviderSession session) {
final SchemaService schemaService = Preconditions.checkNotNull(session.getService(SchemaService.class));
- final Draft15ServicesWrapperImpl wrapperServices = Draft15ServicesWrapperImpl.getInstance();
+ final Draft16ServicesWrapperImpl wrapperServices = Draft16ServicesWrapperImpl.getInstance();
final SchemaContextHandler schemaCtxHandler = new SchemaContextHandler();
this.listenerRegistration = schemaService.registerSchemaContextListener(schemaCtxHandler);
final DOMMountPointServiceHandler domMountPointServiceHandler = new DOMMountPointServiceHandler(
session.getService(DOMMountPointService.class));
- dataBroker = session.getService(DOMDataBroker.class);
- final DOMDataBrokerHandler brokerHandler = new DOMDataBrokerHandler(dataBroker);
+ RestConnectorProvider.dataBroker = session.getService(DOMDataBroker.class);
+ final DOMDataBrokerHandler brokerHandler = new DOMDataBrokerHandler(RestConnectorProvider.dataBroker);
- transactionChain = dataBroker.createTransactionChain(transactionListener);
- final TransactionChainHandler transactionChainHandler = new TransactionChainHandler(transactionChain);
+ RestConnectorProvider.transactionChainHandler = new TransactionChainHandler(RestConnectorProvider.dataBroker
+ .createTransactionChain(RestConnectorProvider.transactionListener));
final DOMRpcService rpcService = session.getService(DOMRpcService.class);
final RpcServiceHandler rpcServiceHandler = new RpcServiceHandler(rpcService);
- wrapperServices.setHandlers(schemaCtxHandler, domMountPointServiceHandler, transactionChainHandler,
- brokerHandler, rpcServiceHandler);
+ wrapperServices.setHandlers(schemaCtxHandler, domMountPointServiceHandler,
+ RestConnectorProvider.transactionChainHandler, brokerHandler, rpcServiceHandler);
}
/**
- * After {@link TransactionChain} failed, this is creating new transaction
- * with listener.
+ * After {@link TransactionChain} failed, this updates {@link TransactionChainHandler} with new transaction chain.
*
* @param chain
* - old {@link TransactionChain}
*/
public static void resetTransactionChainForAdapaters(final TransactionChain<?, ?> chain) {
- LOG.trace("Resetting TransactionChain({}) to {}", chain, transactionChain);
+ LOG.trace("Resetting TransactionChain({})", chain);
chain.close();
- transactionChain = Preconditions.checkNotNull(dataBroker).createTransactionChain(transactionListener);
+ RestConnectorProvider.transactionChainHandler.update(
+ Preconditions.checkNotNull(RestConnectorProvider.dataBroker).createTransactionChain(
+ RestConnectorProvider.transactionListener)
+ );
}
@Override
@Override
public void close() throws Exception {
+ // close registration
if (this.listenerRegistration != null) {
this.listenerRegistration.close();
}
- if (transactionChain != null) {
- transactionChain.close();
+
+ // close transaction chain
+ if ((transactionChainHandler != null) && (transactionChainHandler.get() != null)) {
+ transactionChainHandler.get().close();
}
}
}