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%2FSchemalessNetconfDevice.java;h=5a7e64c0f58aa54f489eb3b6fd38af2e44c2d95b;hb=32fbbabc0b941b903fef8736623c2adbc8845010;hp=74e64354e10475d9710e81ff86c588e2c0cdad04;hpb=433a4e027d11f43358321c9d75d2ffddacb90c05;p=netconf.git diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/SchemalessNetconfDevice.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/SchemalessNetconfDevice.java index 74e64354e1..5a7e64c0f5 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/SchemalessNetconfDevice.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/SchemalessNetconfDevice.java @@ -7,13 +7,17 @@ */ package org.opendaylight.netconf.sal.connect.netconf; +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.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.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 @@ -21,18 +25,32 @@ public class SchemalessNetconfDevice implements private RemoteDeviceId id; private RemoteDeviceHandler salFacade; + private final SchemalessMessageTransformer messageTransformer; + private final BaseRpcSchemalessTransformer rpcTransformer; public SchemalessNetconfDevice(final RemoteDeviceId id, final RemoteDeviceHandler salFacade) { this.id = id; this.salFacade = salFacade; + final MessageCounter counter = new MessageCounter(); + rpcTransformer = new BaseRpcSchemalessTransformer(counter); + messageTransformer = new SchemalessMessageTransformer(counter); + } + + @VisibleForTesting + SchemalessNetconfDevice(final RemoteDeviceId id, final RemoteDeviceHandler salFacade, + final SchemalessMessageTransformer messageTransformer) { + this.id = id; + this.salFacade = salFacade; + final MessageCounter counter = new MessageCounter(); + rpcTransformer = new BaseRpcSchemalessTransformer(counter); + this.messageTransformer = messageTransformer; } @Override public void onRemoteSessionUp(final NetconfSessionPreferences remoteSessionCapabilities, final NetconfDeviceCommunicator netconfDeviceCommunicator) { - final SchemalessNetconfDeviceRpc schemalessNetconfDeviceRpc = new SchemalessNetconfDeviceRpc(id, - netconfDeviceCommunicator); + netconfDeviceCommunicator, rpcTransformer, messageTransformer); salFacade.onDeviceConnected(BaseSchema.BASE_NETCONF_CTX.getSchemaContext(), remoteSessionCapabilities, schemalessNetconfDeviceRpc); @@ -48,6 +66,6 @@ public class SchemalessNetconfDevice implements } @Override public void onNotification(final NetconfMessage notification) { - // TODO support for notifications + salFacade.onNotification(messageTransformer.toNotification(notification)); } }