*/
package org.opendaylight.netconf.sal.connect.netconf;
+import static java.util.Objects.requireNonNull;
+
import com.google.common.annotations.VisibleForTesting;
import org.opendaylight.netconf.api.NetconfMessage;
import org.opendaylight.netconf.sal.connect.api.RemoteDevice;
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.sal.connect.netconf.schema.mapping.BaseNetconfSchemas;
import org.opendaylight.netconf.sal.connect.netconf.schema.mapping.BaseRpcSchemalessTransformer;
-import org.opendaylight.netconf.sal.connect.netconf.schema.mapping.BaseSchema;
import org.opendaylight.netconf.sal.connect.netconf.schema.mapping.SchemalessMessageTransformer;
import org.opendaylight.netconf.sal.connect.util.MessageCounter;
import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId;
-public class SchemalessNetconfDevice implements
- RemoteDevice<NetconfSessionPreferences, NetconfMessage, NetconfDeviceCommunicator> {
-
+public class SchemalessNetconfDevice
+ implements RemoteDevice<NetconfSessionPreferences, NetconfMessage, NetconfDeviceCommunicator> {
+ private final BaseNetconfSchemas baseSchemas;
private final RemoteDeviceId id;
private final RemoteDeviceHandler<NetconfSessionPreferences> salFacade;
private final SchemalessMessageTransformer messageTransformer;
private final BaseRpcSchemalessTransformer rpcTransformer;
- public SchemalessNetconfDevice(final RemoteDeviceId id,
+ public SchemalessNetconfDevice(final BaseNetconfSchemas baseSchemas, final RemoteDeviceId id,
final RemoteDeviceHandler<NetconfSessionPreferences> salFacade) {
+ this.baseSchemas = requireNonNull(baseSchemas);
this.id = id;
this.salFacade = salFacade;
final MessageCounter counter = new MessageCounter();
- rpcTransformer = new BaseRpcSchemalessTransformer(counter);
+ rpcTransformer = new BaseRpcSchemalessTransformer(baseSchemas, counter);
messageTransformer = new SchemalessMessageTransformer(counter);
}
@VisibleForTesting
- SchemalessNetconfDevice(final RemoteDeviceId id, final RemoteDeviceHandler<NetconfSessionPreferences> salFacade,
+ SchemalessNetconfDevice(final BaseNetconfSchemas baseSchemas, final RemoteDeviceId id,
+ final RemoteDeviceHandler<NetconfSessionPreferences> salFacade,
final SchemalessMessageTransformer messageTransformer) {
+ this.baseSchemas = requireNonNull(baseSchemas);
this.id = id;
this.salFacade = salFacade;
final MessageCounter counter = new MessageCounter();
- rpcTransformer = new BaseRpcSchemalessTransformer(counter);
+ rpcTransformer = new BaseRpcSchemalessTransformer(baseSchemas, counter);
this.messageTransformer = messageTransformer;
}
- @Override public void onRemoteSessionUp(final NetconfSessionPreferences remoteSessionCapabilities,
+ @Override
+ public void onRemoteSessionUp(final NetconfSessionPreferences remoteSessionCapabilities,
final NetconfDeviceCommunicator netconfDeviceCommunicator) {
final SchemalessNetconfDeviceRpc schemalessNetconfDeviceRpc = new SchemalessNetconfDeviceRpc(id,
netconfDeviceCommunicator, rpcTransformer, messageTransformer);
- salFacade.onDeviceConnected(BaseSchema.BASE_NETCONF_CTX.getMountPointContext(),
+ salFacade.onDeviceConnected(baseSchemas.getBaseSchema().getMountPointContext(),
remoteSessionCapabilities, schemalessNetconfDeviceRpc);
}
- @Override public void onRemoteSessionDown() {
+ @Override
+ public void onRemoteSessionDown() {
salFacade.onDeviceDisconnected();
}
- @Override public void onRemoteSessionFailed(final Throwable throwable) {
+ @Override
+ public void onRemoteSessionFailed(final Throwable throwable) {
salFacade.onDeviceFailed(throwable);
}
- @Override public void onNotification(final NetconfMessage notification) {
+ @Override
+ public void onNotification(final NetconfMessage notification) {
salFacade.onNotification(messageTransformer.toNotification(notification));
}
}