X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=netconf%2Fsal-netconf-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fnetconf%2Fsal%2Fconnect%2Fnetconf%2Fsal%2FNetconfDeviceDataBroker.java;h=fabc428331b00778778f35e73a4a82cb4952e885;hb=a0833fb27c69d919a4420c6ecbd11a3b2a1119cb;hp=421e52da71978af327083e7f39b83aa3262015a7;hpb=23227b40212de47e418ccdfe8b8212bfcde83b03;p=netconf.git diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceDataBroker.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceDataBroker.java index 421e52da71..fabc428331 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceDataBroker.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceDataBroker.java @@ -5,43 +5,41 @@ * 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.netconf.sal.connect.netconf.sal; import com.google.common.base.Preconditions; -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.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 com.google.common.collect.ClassToInstanceMap; +import com.google.common.collect.ImmutableClassToInstanceMap; +import org.opendaylight.mdsal.dom.api.DOMDataBroker; +import org.opendaylight.mdsal.dom.api.DOMDataBrokerExtension; +import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction; +import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction; +import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction; +import org.opendaylight.mdsal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.dom.api.DOMTransactionChain; +import org.opendaylight.mdsal.dom.api.DOMTransactionChainListener; import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfSessionPreferences; import org.opendaylight.netconf.sal.connect.netconf.sal.tx.ReadOnlyTx; import org.opendaylight.netconf.sal.connect.netconf.sal.tx.ReadWriteTx; +import org.opendaylight.netconf.sal.connect.netconf.sal.tx.TxChain; import org.opendaylight.netconf.sal.connect.netconf.sal.tx.WriteCandidateRunningTx; import org.opendaylight.netconf.sal.connect.netconf.sal.tx.WriteCandidateTx; import org.opendaylight.netconf.sal.connect.netconf.sal.tx.WriteRunningTx; import org.opendaylight.netconf.sal.connect.netconf.util.NetconfBaseOps; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; -import org.opendaylight.yangtools.concepts.ListenerRegistration; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.model.api.SchemaContext; public final class NetconfDeviceDataBroker implements DOMDataBroker { private final RemoteDeviceId id; private final NetconfBaseOps netconfOps; - private final boolean rollbackSupport; - private boolean candidateSupported; - private boolean runningWritable; + private final boolean candidateSupported; + private final boolean runningWritable; - public NetconfDeviceDataBroker(final RemoteDeviceId id, final SchemaContext schemaContext, final DOMRpcService rpc, final NetconfSessionPreferences netconfSessionPreferences) { + private boolean isLockAllowed = true; + + public NetconfDeviceDataBroker(final RemoteDeviceId id, final SchemaContext schemaContext, + final DOMRpcService rpc, final NetconfSessionPreferences netconfSessionPreferences) { this.id = id; this.netconfOps = new NetconfBaseOps(rpc, schemaContext); // get specific attributes from netconf preferences and get rid of it @@ -50,45 +48,45 @@ public final class NetconfDeviceDataBroker implements DOMDataBroker { runningWritable = netconfSessionPreferences.isRunningWritable(); rollbackSupport = netconfSessionPreferences.isRollbackSupported(); Preconditions.checkArgument(candidateSupported || runningWritable, - "Device %s has advertised neither :writable-running nor :candidate capability. At least one of these should be advertised. Failed to establish a session.", id.getName()); + "Device %s has advertised neither :writable-running nor :candidate capability." + + "At least one of these should be advertised. Failed to establish a session.", id.getName()); } @Override - public DOMDataReadOnlyTransaction newReadOnlyTransaction() { + public DOMDataTreeReadTransaction newReadOnlyTransaction() { return new ReadOnlyTx(netconfOps, id); } @Override - public DOMDataReadWriteTransaction newReadWriteTransaction() { + public DOMDataTreeReadWriteTransaction newReadWriteTransaction() { return new ReadWriteTx(newReadOnlyTransaction(), newWriteOnlyTransaction()); } @Override - public DOMDataWriteTransaction newWriteOnlyTransaction() { - if(candidateSupported) { - if(runningWritable) { - return new WriteCandidateRunningTx(id, netconfOps, rollbackSupport); + public DOMDataTreeWriteTransaction newWriteOnlyTransaction() { + if (candidateSupported) { + if (runningWritable) { + return new WriteCandidateRunningTx(id, netconfOps, rollbackSupport, isLockAllowed); } else { - return new WriteCandidateTx(id, netconfOps, rollbackSupport); + return new WriteCandidateTx(id, netconfOps, rollbackSupport, isLockAllowed); } } else { - return new WriteRunningTx(id, netconfOps, rollbackSupport); + return new WriteRunningTx(id, netconfOps, rollbackSupport, isLockAllowed); } } @Override - public ListenerRegistration registerDataChangeListener(final LogicalDatastoreType store, final YangInstanceIdentifier path, final DOMDataChangeListener listener, final DataChangeScope triggeringScope) { - throw new UnsupportedOperationException(id + ": Data change listeners not supported for netconf mount point"); + public DOMTransactionChain createTransactionChain(final DOMTransactionChainListener listener) { + return new TxChain(this, listener); } @Override - public DOMTransactionChain createTransactionChain(final TransactionChainListener listener) { - throw new UnsupportedOperationException(id + ": Transaction chains not supported for netconf mount point"); + public ClassToInstanceMap getExtensions() { + return ImmutableClassToInstanceMap.of(); } - @Override - public Map, DOMDataBrokerExtension> getSupportedExtensions() { - return Collections.emptyMap(); + void setLockAllowed(boolean isLockAllowedOrig) { + this.isLockAllowed = isLockAllowedOrig; } }