*/
package org.opendaylight.yangtools.yang.data.codec.xml;
+import static com.google.common.base.Verify.verify;
import static java.util.Objects.requireNonNull;
import com.google.common.base.Strings;
import java.io.IOException;
+import java.util.List;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import javax.xml.XMLConstants;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.common.XMLNamespace;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedAnydata;
-import org.opendaylight.yangtools.yang.data.util.SingleChildDataNodeContainer;
+import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
+import org.opendaylight.yangtools.yang.model.api.EffectiveStatementInference;
+import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
void emitNormalizedAnydata(final NormalizedAnydata anydata) throws XMLStreamException {
flushElement();
+
+ final EffectiveStatementInference inference = anydata.getInference();
+ final List<? extends EffectiveStatement<?, ?>> path = inference.statementPath();
+ final DataNodeContainer parent;
+ if (path.size() > 1) {
+ final EffectiveStatement<?, ?> stmt = path.get(path.size() - 2);
+ verify(stmt instanceof DataNodeContainer, "Unexpected statement %s", stmt);
+ parent = (DataNodeContainer) stmt;
+ } else {
+ parent = inference.getEffectiveModelContext();
+ }
+
try {
- anydata.writeTo(XMLStreamNormalizedNodeStreamWriter.create(writer, anydata.getEffectiveModelContext(),
- new SingleChildDataNodeContainer(anydata.getContextNode())));
+ anydata.writeTo(XMLStreamNormalizedNodeStreamWriter.create(writer, inference.getEffectiveModelContext(),
+ parent));
} catch (IOException e) {
throw new XMLStreamException("Failed to emit anydata " + anydata, e);
}