Create MdsalRestconfServer 93/107893/10
authorRobert Varga <robert.varga@pantheon.tech>
Sat, 16 Sep 2023 09:24:35 +0000 (11:24 +0200)
committerRobert Varga <nite@hq.sk>
Fri, 29 Sep 2023 13:33:47 +0000 (13:33 +0000)
commite82bc31b6eb203446c174798fe8441f712fe7361
treed40a170aa93088fce197c8b66331c5ab3d899502
parent6b64fa9e2260e753b02c01c5fd365e00c995cb7d
Create MdsalRestconfServer

The actual binding to MD-SAL services is independent of other
concerns, just as JAX-RS binding.

Introduce MdsalRestconfServer to act as an intermediary. This allows us
to centralize data binding operations and later act as the central
implementation dispatch.

This reduces the number of callers to
InstanceIdentifierParser.toInstanceIdentifier(), as we have a proper
indirection to bind either the root or a non-empty identifier and can
provide the first cut of differentiated binding.

In RestconfOperationsServiceImpl this has the nice effect of bringing
together the two distinct invocation paths, leading to
OperationsContent.bodyFor(EffectiveModelContext) being redundant.

In RestconfDataServiceImpl we lose getRestconfStrategy(), which is now
invoked on the server. We also clarify variable names, so they have a
semantic meaning.

RestconfInvokeOperationsServiceImpl integration sees RestconfStrategy
grow awareness of DOMRpcService, providing a clean invocation interface
centered around RestconfFuture<Optional<ContainerNode>>. That
co-location of concerns also allow us to perform only a single error
mapping, we any DOMRpcResult's errors into a
RestconfDocumentedException.

JIRA: NETCONF-1157
Change-Id: I9ecefb2e065b4ad6ed8e4226713da851a1050619
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
20 files changed:
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/JaxRsNorthbound.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/RestconfApplication.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/CreateStreamUtil.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/MdsalRestconfServer.java [new file with mode: 0644]
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/OperationsContent.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RestconfDataServiceImpl.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RestconfInvokeOperationsServiceImpl.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RestconfOperationsServiceImpl.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/transactions/MdsalRestconfStrategy.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/transactions/NetconfRestconfStrategy.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/transactions/RestconfStrategy.java
restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/CreateStreamUtilTest.java
restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/MdsalRestconfServerTest.java [new file with mode: 0644]
restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/Netconf799Test.java
restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/Netconf822Test.java
restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RestconfDataServiceImplTest.java
restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RestconfInvokeOperationsServiceImplTest.java
restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RestconfOperationsServiceImplTest.java
restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/transactions/MdsalRestconfStrategyTest.java
restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/transactions/NetconfRestconfStrategyTest.java