- private void readOpaqueAnydataValue(final XMLStreamReader in, final OpaqueAnydataNodeDataWithSchema parent)
- throws XMLStreamException {
- final DefaultOpaqueAnydataStreamWriter opaqueWriter = new DefaultOpaqueAnydataStreamWriter();
- final Entry<OpaqueData, ImmutableNormalizedMetadata> result;
- while (true) {
- final int event = in.next();
- try {
- switch (event) {
- case XMLStreamConstants.START_ELEMENT:
- final String nsUri = in.getNamespaceURI();
- final QNameModule module = resolveXmlNamespace(nsUri).orElseGet(() -> rawXmlNamespace(nsUri));
- opaqueWriter.startOpaqueContainer(NodeIdentifier.create(QName.create(module,
- in.getLocalName())));
- break;
- case XMLStreamConstants.END_ELEMENT:
- opaqueWriter.endOpaqueNode();
- break;
- case XMLStreamConstants.CHARACTERS:
- opaqueWriter.opaqueValue(in.getText());
- break;
- default:
- LOG.debug("Ignoring event {}", event);
- continue;
- }
- } catch (IOException e) {
- throw new XMLStreamException("Inconsistent anydata stream", e);
- }
-
- final Entry<OpaqueData, ImmutableNormalizedMetadata> optResult = opaqueWriter.result();
- if (optResult != null) {
- result = optResult;
- break;
- }
- }
-
- setValue(parent, result.getKey(), in.getNamespaceContext());
- parent.setMetadata(result.getValue());
- }
-