- @SuppressWarnings("static-method")
- @NonNull InstanceIdentifierContext bindRequestRoot(final DatabindContext databind) {
- return InstanceIdentifierContext.ofLocalRoot(databind.modelContext());
+ @Override
+ public RestconfFuture<OperationOutput> invokeRpc(final URI restconfURI, final String apiPath,
+ final OperationInputBody body) {
+ final var currentContext = databindProvider.currentContext();
+ final var reqPath = bindRequestPath(currentContext, apiPath);
+ final var inference = reqPath.inference();
+ final ContainerNode input;
+ try {
+ input = body.toContainerNode(inference);
+ } catch (IOException e) {
+ LOG.debug("Error reading input", e);
+ return RestconfFuture.failed(new RestconfDocumentedException("Error parsing input: " + e.getMessage(),
+ ErrorType.PROTOCOL, ErrorTag.MALFORMED_MESSAGE, e));
+ }
+
+ return getRestconfStrategy(reqPath.getSchemaContext(), reqPath.getMountPoint())
+ .invokeRpc(restconfURI, reqPath.getSchemaNode().getQName(),
+ new OperationInput(currentContext, inference, input));
+ }
+
+ @NonNull InstanceIdentifierContext bindRequestRoot() {
+ return InstanceIdentifierContext.ofLocalRoot(databindProvider.currentContext().modelContext());