Further rework of base schemas
[netconf.git] / netconf / sal-netconf-connector / src / main / java / org / opendaylight / netconf / sal / connect / netconf / SchemalessNetconfDevice.java
index 310f5a90687594cabd6cb7e3416a48374f1f3c9e..2d2d0e29bdc5210303e96c4cb2816d82cdf34465 100644 (file)
@@ -7,6 +7,8 @@
  */
 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;
@@ -14,58 +16,65 @@ import org.opendaylight.netconf.sal.connect.api.RemoteDeviceHandler;
 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));
     }
 }