Inject RPC input QName into LazySerializedContainerNode 82/100282/9
authorDominik Vrbovsky <dominik.vrbovsky@pantheon.tech>
Wed, 30 Mar 2022 17:53:53 +0000 (19:53 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Fri, 1 Apr 2022 20:33:43 +0000 (22:33 +0200)
commit7c1493fd2f93985c4b9a45e214cf7a6df9e53cf9
treec0804383bd3de7a47ead221fc3a4344642303982
parent9fe91a158e30e4022d2027a55027e1e5ae97640b
Inject RPC input QName into LazySerializedContainerNode

When ExecuteRpc message is sent with LazySerializedContainerNode
as 'input' parameter, during serialization is invoked its
getIdentifier() method that returns NodeIdentfier of rpc,
not input. So OpsInvoker receives the message with incorrect 'input'
parameter and  we get error downstream because of it.

We need to inject rpc input Qname into LazySerializedContainerNode
to get NodeIdentifier of rpc input from getIdentifier() method. While we
are at it, let's pass a NodeIdentifier, which saves us the cost of
NodeIdentifier.create() in the fast path.

JIRA: MDSAL-739
Change-Id: I77c870fe91a758037bd27e54607e778255d611fc
Signed-off-by: Dominik Vrbovsky <dominik.vrbovsky@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/LazySerializedContainerNode.java
binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/RpcServiceAdapter.java
binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/LazySerializedContainerNodeTest.java
binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/Mdsal739Test.java [new file with mode: 0644]