import org.opendaylight.mdsal.dom.api.DOMRpcIdentifier;
import org.opendaylight.mdsal.dom.api.DOMRpcImplementationNotAvailableException;
import org.opendaylight.mdsal.dom.api.DOMRpcResult;
-import org.opendaylight.mdsal.dom.api.DOMRpcService;
import org.opendaylight.mdsal.dom.api.DefaultDOMRpcException;
import org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult;
import org.opendaylight.netconf.api.NetconfMessage;
-import org.opendaylight.netconf.sal.connect.api.MessageTransformer;
import org.opendaylight.netconf.sal.connect.api.RemoteDeviceCommunicator;
+import org.opendaylight.netconf.sal.connect.api.RemoteDeviceServices.Rpcs;
+import org.opendaylight.netconf.sal.connect.api.RpcTransformer;
import org.opendaylight.yangtools.concepts.ListenerRegistration;
import org.opendaylight.yangtools.concepts.NoOpListenerRegistration;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
/**
- * Invokes RPC by sending netconf message via listener. Also transforms result from NetconfMessage to CompositeNode.
+ * Invokes RPC by sending netconf message via listener. Also transforms result from NetconfMessage to
+ * {@link NormalizedNode}.
*/
-public final class NetconfDeviceRpc implements DOMRpcService {
- private final RemoteDeviceCommunicator<NetconfMessage> communicator;
- private final MessageTransformer<NetconfMessage> transformer;
- private final SchemaContext schemaContext;
+public final class NetconfDeviceRpc implements Rpcs.Normalized {
+ private final RemoteDeviceCommunicator communicator;
+ private final RpcTransformer transformer;
+ private final EffectiveModelContext modelContext;
- public NetconfDeviceRpc(final SchemaContext schemaContext,
- final RemoteDeviceCommunicator<NetconfMessage> communicator,
- final MessageTransformer<NetconfMessage> transformer) {
+ public NetconfDeviceRpc(final EffectiveModelContext modelContext, final RemoteDeviceCommunicator communicator,
+ final RpcTransformer transformer) {
+ this.modelContext = requireNonNull(modelContext);
this.communicator = communicator;
this.transformer = transformer;
- this.schemaContext = requireNonNull(schemaContext);
}
@Override
@Override
public <T extends DOMRpcAvailabilityListener> ListenerRegistration<T> registerRpcListener(final T listener) {
- listener.onRpcAvailable(Collections2.transform(schemaContext.getOperations(),
+ listener.onRpcAvailable(Collections2.transform(modelContext.getOperations(),
input -> DOMRpcIdentifier.create(input.getQName())));
// NOOP, no rpcs appear and disappear in this implementation