import static java.util.Objects.requireNonNull;
-import com.google.common.annotations.VisibleForTesting;
-import org.opendaylight.netconf.api.NetconfMessage;
-import org.opendaylight.netconf.client.mdsal.api.BaseNetconfSchemas;
+import org.opendaylight.netconf.api.messages.NetconfMessage;
+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;
import org.opendaylight.netconf.client.mdsal.api.RemoteDeviceId;
import org.opendaylight.netconf.client.mdsal.impl.BaseRpcSchemalessTransformer;
import org.opendaylight.netconf.client.mdsal.impl.MessageCounter;
import org.opendaylight.netconf.client.mdsal.impl.SchemalessMessageTransformer;
-import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfDeviceCapabilities;
-import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfDeviceCommunicator;
-import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfSessionPreferences;
-import org.opendaylight.netconf.sal.connect.netconf.sal.SchemalessNetconfDeviceRpc;
+import org.opendaylight.netconf.client.mdsal.spi.SchemalessNetconfDeviceRpc;
public class SchemalessNetconfDevice implements RemoteDevice<NetconfDeviceCommunicator> {
- 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();
- }
-
- @Override
- public void onRemoteSessionFailed(final Throwable throwable) {
- salFacade.onDeviceFailed(throwable);
+ messageTransformer = null;
}
@Override