X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=plugins%2Fnetconf-client-mdsal%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fnetconf%2Fclient%2Fmdsal%2FSchemalessNetconfDevice.java;h=2347c4ed5b4c60611df7a8937552fb187f2e2cf1;hb=HEAD;hp=33c5ccc7c7b0c31db4a97c0b0d819d1c10d47237;hpb=9a42076866ac48394163722b6ca95821a6cce876;p=netconf.git diff --git a/plugins/netconf-client-mdsal/src/main/java/org/opendaylight/netconf/client/mdsal/SchemalessNetconfDevice.java b/plugins/netconf-client-mdsal/src/main/java/org/opendaylight/netconf/client/mdsal/SchemalessNetconfDevice.java index 33c5ccc7c7..2347c4ed5b 100644 --- a/plugins/netconf-client-mdsal/src/main/java/org/opendaylight/netconf/client/mdsal/SchemalessNetconfDevice.java +++ b/plugins/netconf-client-mdsal/src/main/java/org/opendaylight/netconf/client/mdsal/SchemalessNetconfDevice.java @@ -9,9 +9,8 @@ package org.opendaylight.netconf.client.mdsal; import static java.util.Objects.requireNonNull; -import com.google.common.annotations.VisibleForTesting; import org.opendaylight.netconf.api.messages.NetconfMessage; -import org.opendaylight.netconf.client.mdsal.api.BaseNetconfSchemas; +import org.opendaylight.netconf.client.mdsal.api.BaseNetconfSchemaProvider; import org.opendaylight.netconf.client.mdsal.api.NetconfSessionPreferences; import org.opendaylight.netconf.client.mdsal.api.RemoteDevice; import org.opendaylight.netconf.client.mdsal.api.RemoteDeviceHandler; @@ -23,48 +22,41 @@ import org.opendaylight.netconf.client.mdsal.impl.SchemalessMessageTransformer; import org.opendaylight.netconf.client.mdsal.spi.SchemalessNetconfDeviceRpc; public class SchemalessNetconfDevice implements RemoteDevice { - private final BaseNetconfSchemas baseSchemas; + private final BaseNetconfSchemaProvider baseSchemas; private final RemoteDeviceId id; private final RemoteDeviceHandler salFacade; - private final SchemalessMessageTransformer messageTransformer; - private final BaseRpcSchemalessTransformer rpcTransformer; - public SchemalessNetconfDevice(final BaseNetconfSchemas baseSchemas, final RemoteDeviceId id, - final RemoteDeviceHandler salFacade) { - this.baseSchemas = requireNonNull(baseSchemas); - this.id = id; - this.salFacade = salFacade; - final MessageCounter counter = new MessageCounter(); - rpcTransformer = new BaseRpcSchemalessTransformer(baseSchemas, counter); - messageTransformer = new SchemalessMessageTransformer(counter); - } + private SchemalessMessageTransformer messageTransformer; - @VisibleForTesting - SchemalessNetconfDevice(final BaseNetconfSchemas baseSchemas, final RemoteDeviceId id, - final RemoteDeviceHandler salFacade, final SchemalessMessageTransformer messageTransformer) { + public SchemalessNetconfDevice(final BaseNetconfSchemaProvider baseSchemas, final RemoteDeviceId id, + final RemoteDeviceHandler salFacade) { this.baseSchemas = requireNonNull(baseSchemas); - this.id = id; - this.salFacade = salFacade; - final MessageCounter counter = new MessageCounter(); - rpcTransformer = new BaseRpcSchemalessTransformer(baseSchemas, counter); - this.messageTransformer = messageTransformer; + this.id = requireNonNull(id); + this.salFacade = requireNonNull(salFacade); } @Override public void onRemoteSessionUp(final NetconfSessionPreferences remoteSessionCapabilities, final NetconfDeviceCommunicator netconfDeviceCommunicator) { + final var baseSchema = baseSchemas.baseSchemaForCapabilities(remoteSessionCapabilities); + final var mountContext = baseSchema.mountPointContext(); + + final var counter = new MessageCounter(); + final var rpcTransformer = new BaseRpcSchemalessTransformer(baseSchema, counter); + messageTransformer = new SchemalessMessageTransformer(counter); + salFacade.onDeviceConnected( // FIXME: or bound from base schema rather? - new NetconfDeviceSchema(NetconfDeviceCapabilities.empty(), - baseSchemas.getBaseSchema().getMountPointContext()), - remoteSessionCapabilities, new RemoteDeviceServices( - new SchemalessNetconfDeviceRpc(id,netconfDeviceCommunicator, rpcTransformer, messageTransformer), + new NetconfDeviceSchema(NetconfDeviceCapabilities.empty(), mountContext), remoteSessionCapabilities, + new RemoteDeviceServices( + new SchemalessNetconfDeviceRpc(id, netconfDeviceCommunicator, rpcTransformer, messageTransformer), null)); } @Override public void onRemoteSessionDown() { salFacade.onDeviceDisconnected(); + messageTransformer = null; } @Override