Rework body formatting wiring 39/111339/3
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 8 Apr 2024 21:03:35 +0000 (23:03 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Tue, 9 Apr 2024 19:26:57 +0000 (21:26 +0200)
commit2bb148284126ce63c972814689bd3da46c5cd348
treea79b63bb3cd98a64da2d58620b765b6606a4eff4
parentdfdc06ff80f68824c7fe0157d1eca3ea607c4b4a
Rework body formatting wiring

Output formatting is a policy decision of a particular HTTP endpoint,
not of a RestconfServer implementation.

This patch performs some very invasive surgery to rehost this
information which minimizing method churn to express prepare the code
for fitting in access control.

FormatParameters are now a simple record encapsulating PrettyPrintParam.
These get routed by JaxRsRestconf through interpretation and
communicated to body writers without passing them directly to
RestconfServer.

ServerRequest is introduced and passed instead of QueryParameters or
QueryParams -- it exposes post-processed QueryParameters.

QueryParameters is turned into an immutable class instead of an
interface + record. This is a tad more convenient and easier to
understand.

Most notably we disconnect WriterParametes from FormatParameters, as
they serve different domains:
- FormatParameters are about formatting any particular content
- WriterParameters are about controlling how we iterate over a
  NormalizedNode (which in turn has two parts, but that's for later)

JIRA: NETCONF-773
Change-Id: I0848ff5deb5dc55ff3b45ef7155f04cfe3ab50f7
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
66 files changed:
protocol/restconf-api/src/main/java/org/opendaylight/restconf/api/FormatParameters.java
protocol/restconf-api/src/main/java/org/opendaylight/restconf/api/FormattableBody.java
protocol/restconf-api/src/main/java/org/opendaylight/restconf/api/ImmutableQueryParameters.java [deleted file]
protocol/restconf-api/src/main/java/org/opendaylight/restconf/api/QueryParameters.java
protocol/restconf-api/src/main/java/org/opendaylight/restconf/api/query/ContentParam.java
protocol/restconf-api/src/main/java/org/opendaylight/restconf/api/query/FieldsParam.java
protocol/restconf-api/src/main/java/org/opendaylight/restconf/api/query/PrettyPrintParam.java
protocol/restconf-api/src/main/java/org/opendaylight/restconf/api/query/WithDefaultsParam.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/jaxrs/FormattableBodyCallback.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/jaxrs/JaxRsFormattableBody.java [new file with mode: 0644]
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/jaxrs/JaxRsFormattableBodyWriter.java [moved from restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/jaxrs/FormattableBodyWriter.java with 65% similarity]
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/jaxrs/JaxRsRestconf.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/jaxrs/JsonJaxRsFormattableBodyWriter.java [moved from restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/jaxrs/JsonFormattableBody.java with 70% similarity]
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/jaxrs/XmlJaxRsFormattableBodyWriter.java [moved from restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/jaxrs/XmlFormattableBody.java with 71% similarity]
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/Insert.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/JaxRsNorthbound.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/OSGiNorthbound.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/AbstractNormalizedNodeBodyWriter.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/JsonNormalizedNodeBodyWriter.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/XmlNormalizedNodeBodyWriter.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/legacy/NormalizedNodePayload.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/legacy/WriterParameters.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/main/java/org/opendaylight/restconf/nb/rfc8040/streams/DefaultRestconfStreamServletFactory.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/RestconfStreamServletFactory.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/SSEStreamService.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/api/DataGetParams.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/api/DataYangPatchParams.java [deleted file]
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/api/DataYangPatchResult.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/api/DatabindFormattableBody.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/api/DatabindPathFormattableBody.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/api/EventStreamGetParams.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/api/FormatParametersHelper.java [deleted file]
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/api/InvokeParams.java [deleted file]
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/api/ModulesGetResult.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/api/QueryParams.java [deleted file]
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/api/RestconfServer.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/api/ServerRequest.java [new file with mode: 0644]
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/mdsal/MdsalRestconfServer.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/spi/AllOperations.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/spi/FailedHttpGetResource.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/spi/HttpGetResource.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/spi/NormalizedFormattableBody.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/spi/OneOperation.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/spi/OperationOutputBody.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/spi/OperationsBody.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/spi/OperationsResource.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/spi/RestconfServerConfiguration.java [deleted file]
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/spi/YangLibraryVersionResource.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/spi/YangPatchStatusBody.java
restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/jaxrs/AbstractRestconfTest.java
restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/jaxrs/Netconf799Test.java
restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/jaxrs/Netconf822Test.java
restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/jaxrs/RestconfDataPatchTest.java
restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/jaxrs/RestconfOperationsGetTest.java
restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/jaxrs/RestconfSchemaServiceMountTest.java
restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/jaxrs/RestconfSchemaServiceTest.java
restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/jaxrs/RestconfYangLibraryVersionGetTest.java
restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/rfc8040/AbstractJukeboxTest.java
restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/XmlNormalizedNodeBodyWriterTest.java
restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/transactions/AbstractRestconfStrategyTest.java
restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/transactions/NetconfRestconfStrategyTest.java
restconf/restconf-nb/src/test/java/org/opendaylight/restconf/server/api/ParamsTest.java
restconf/restconf-nb/src/test/java/org/opendaylight/restconf/server/spi/YangPatchStatusBodyTest.java