X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-netconf-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fconnect%2Fnetconf%2Fsal%2FNetconfDeviceDataBroker.java;h=34e81339a3a9310ebf7cdf31c36857587349ef75;hp=87ca11de87462c253f9845b07dc609b624a27e5b;hb=071a641d7c12c0e6112d5ce0afe806b54f116ed2;hpb=bfd413d87f82ee3ffed67a141a980805950a0f06 diff --git a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/sal/NetconfDeviceDataBroker.java b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/sal/NetconfDeviceDataBroker.java index 87ca11de87..34e81339a3 100644 --- a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/sal/NetconfDeviceDataBroker.java +++ b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/sal/NetconfDeviceDataBroker.java @@ -3,29 +3,31 @@ * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html. + * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.controller.sal.connect.netconf.sal; +import java.util.Collections; +import java.util.Map; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.controller.md.sal.common.api.data.TransactionChainListener; -import org.opendaylight.controller.md.sal.common.impl.util.compat.DataNormalizer; import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; +import org.opendaylight.controller.md.sal.dom.api.DOMDataBrokerExtension; import org.opendaylight.controller.md.sal.dom.api.DOMDataChangeListener; import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction; import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction; import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction; +import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; import org.opendaylight.controller.md.sal.dom.api.DOMTransactionChain; import org.opendaylight.controller.sal.connect.netconf.listener.NetconfSessionPreferences; import org.opendaylight.controller.sal.connect.netconf.sal.tx.ReadOnlyTx; import org.opendaylight.controller.sal.connect.netconf.sal.tx.ReadWriteTx; -import org.opendaylight.controller.sal.connect.netconf.sal.tx.WriteCandidateTx; import org.opendaylight.controller.sal.connect.netconf.sal.tx.WriteCandidateRunningTx; +import org.opendaylight.controller.sal.connect.netconf.sal.tx.WriteCandidateTx; import org.opendaylight.controller.sal.connect.netconf.sal.tx.WriteRunningTx; import org.opendaylight.controller.sal.connect.netconf.util.NetconfBaseOps; import org.opendaylight.controller.sal.connect.util.RemoteDeviceId; -import org.opendaylight.controller.sal.core.api.RpcImplementation; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.model.api.SchemaContext; @@ -33,19 +35,26 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext; final class NetconfDeviceDataBroker implements DOMDataBroker { private final RemoteDeviceId id; private final NetconfBaseOps netconfOps; - private final NetconfSessionPreferences netconfSessionPreferences; - private final DataNormalizer normalizer; + private final long requestTimeoutMillis; + + private final boolean rollbackSupport; + private boolean candidateSupported; + private boolean runningWritable; - public NetconfDeviceDataBroker(final RemoteDeviceId id, final RpcImplementation rpc, final SchemaContext schemaContext, final NetconfSessionPreferences netconfSessionPreferences) { + public NetconfDeviceDataBroker(final RemoteDeviceId id, final SchemaContext schemaContext, final DOMRpcService rpc, final NetconfSessionPreferences netconfSessionPreferences, long requestTimeoutMillis) { this.id = id; - this.netconfOps = new NetconfBaseOps(rpc); - this.netconfSessionPreferences = netconfSessionPreferences; - normalizer = new DataNormalizer(schemaContext); + this.netconfOps = new NetconfBaseOps(rpc, schemaContext); + this.requestTimeoutMillis = requestTimeoutMillis; + // get specific attributes from netconf preferences and get rid of it + // no need to keep the entire preferences object, its quite big with all the capability QNames + candidateSupported = netconfSessionPreferences.isCandidateSupported(); + runningWritable = netconfSessionPreferences.isRunningWritable(); + rollbackSupport = netconfSessionPreferences.isRollbackSupported(); } @Override public DOMDataReadOnlyTransaction newReadOnlyTransaction() { - return new ReadOnlyTx(netconfOps, normalizer, id); + return new ReadOnlyTx(netconfOps, id); } @Override @@ -55,14 +64,14 @@ final class NetconfDeviceDataBroker implements DOMDataBroker { @Override public DOMDataWriteTransaction newWriteOnlyTransaction() { - if(netconfSessionPreferences.isCandidateSupported()) { - if(netconfSessionPreferences.isRunningWritable()) { - return new WriteCandidateRunningTx(id, netconfOps, normalizer, netconfSessionPreferences); + if(candidateSupported) { + if(runningWritable) { + return new WriteCandidateRunningTx(id, netconfOps, rollbackSupport, requestTimeoutMillis); } else { - return new WriteCandidateTx(id, netconfOps, normalizer, netconfSessionPreferences); + return new WriteCandidateTx(id, netconfOps, rollbackSupport, requestTimeoutMillis); } } else { - return new WriteRunningTx(id, netconfOps, normalizer, netconfSessionPreferences); + return new WriteRunningTx(id, netconfOps, rollbackSupport, requestTimeoutMillis); } } @@ -76,4 +85,9 @@ final class NetconfDeviceDataBroker implements DOMDataBroker { throw new UnsupportedOperationException(id + ": Transaction chains not supported for netconf mount point"); } + @Override + public Map, DOMDataBrokerExtension> getSupportedExtensions() { + return Collections.emptyMap(); + } + }