AUGMENTATION,
SCALAR,
ANY_XML,
+ ANYDATA,
}
private final Deque<NodeType> nodeTypeStack = new ArrayDeque<>();
}
@Override
- public void startAnyxmlNode(final NodeIdentifier name) throws IOException {
- nodeTypeStack.push(NodeType.ANY_XML);
- startElement(name.getNodeType());
- }
-
- @Override
- public void startYangModeledAnyXmlNode(final NodeIdentifier name, final int childSizeHint) throws IOException {
- nodeTypeStack.push(NodeType.YANG_MODELED_ANY_XML);
- startElement(name.getNodeType());
+ public boolean startAnyxmlNode(final NodeIdentifier name, final Class<?> objectModel) throws IOException {
+ if (DOMSource.class.isAssignableFrom(objectModel)) {
+ nodeTypeStack.push(NodeType.ANY_XML);
+ startElement(name.getNodeType());
+ return true;
+ }
+ return false;
}
@Override
@Override
public void scalarValue(final Object value) throws IOException {
final NodeType type = nodeTypeStack.peek();
- checkState(type == NodeType.SCALAR, "Unexpected scalar %s in %s", value, type);
- writeValue(value, null);
+ if (type == NodeType.SCALAR) {
+ writeValue(value, null);
+ } else if (type == NodeType.ANYDATA) {
+ anydataValue(value);
+ } else {
+ throw new IllegalStateException("Unexpected scalar " + value + " in type " + type);
+ }
}
@Override
case LIST_ITEM:
case SCALAR:
case ANY_XML:
+ case ANYDATA:
endElement();
break;
default:
break;
}
}
+
+ @Override
+ void startAnydata(final NodeIdentifier name) {
+ nodeTypeStack.push(NodeType.ANYDATA);
+ }
}