Update NormalizedMetadata(StreamWriter) design 89/80689/2
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 5 Mar 2019 15:13:38 +0000 (16:13 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Tue, 5 Mar 2019 15:27:56 +0000 (16:27 +0100)
commit349f164c03b3788ac368b51a62e4185addf4ba3e
treeb5fb5ebe3b77cd9b0e70b1f57eb37bb8c3e1b859
parentdb38dd17189880dc001e4c174f2040a862a030c5
Update NormalizedMetadata(StreamWriter) design

While having a complete decomposition of metadata blocks would be
a nice design, it is not efficient for our current use:

- NormalizedMetadata has the block readily-available
- Both JSON and XML parsers fully assemble attributes before
  emitting them. Even if the implementation changes, both parsers
  can very easily assemble the full block, as XML encodes it just
  after the element and JSON uses dedicated objects.
- NETCONF edit-config processing requires metadata to be visible
  before it can decide how to process the node

This patch changes NormalizedMetadataStreamWriter have a single
metadata() event, which takes an ImmutableMap. This communicates
the intent quite clearly and allows for optimizations on both ends.

JIRA: YANGTOOLS-961
Change-Id: I638c78d5ab1d3a8b544ab53a84b872420b49d637
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
yang/rfc7952-data-api/src/main/java/org/opendaylight/yangtools/rfc7952/data/api/NormalizedMetadata.java
yang/rfc7952-data-api/src/main/java/org/opendaylight/yangtools/rfc7952/data/api/NormalizedMetadataStreamWriter.java
yang/rfc7952-data-util/src/main/java/org/opendaylight/yangtools/rfc7952/data/util/NormalizedNodeStreamWriterMetadataDecorator.java