Fix missing location in error reports
[yangtools.git] / yang / yang-data-codec-xml / src / main / java / org / opendaylight / yangtools / yang / data / codec / xml / SchemalessXMLStreamNormalizedNodeStreamWriter.java
index cb1c4a7312f57ffe5b7909e4002d644f306eef8d..ff21106cd3d5f946a6a67e3389ddca791dab1163 100644 (file)
@@ -31,6 +31,7 @@ final class SchemalessXMLStreamNormalizedNodeStreamWriter extends XMLStreamNorma
         AUGMENTATION,
         SCALAR,
         ANY_XML,
+        ANYDATA,
     }
 
     private final Deque<NodeType> nodeTypeStack = new ArrayDeque<>();
@@ -78,15 +79,13 @@ final class SchemalessXMLStreamNormalizedNodeStreamWriter extends XMLStreamNorma
     }
 
     @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
@@ -113,8 +112,13 @@ final class SchemalessXMLStreamNormalizedNodeStreamWriter extends XMLStreamNorma
     @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
@@ -132,10 +136,16 @@ final class SchemalessXMLStreamNormalizedNodeStreamWriter extends XMLStreamNorma
             case LIST_ITEM:
             case SCALAR:
             case ANY_XML:
+            case ANYDATA:
                 endElement();
                 break;
             default:
                 break;
         }
     }
+
+    @Override
+    void startAnydata(final NodeIdentifier name) {
+        nodeTypeStack.push(NodeType.ANYDATA);
+    }
 }