import java.util.Optional;
import java.util.Set;
import javax.xml.transform.dom.DOMSource;
-import org.opendaylight.restconf.nb.rfc8040.DepthParameter;
+import org.opendaylight.restconf.nb.rfc8040.DepthParam;
import org.opendaylight.restconf.nb.rfc8040.jersey.providers.api.RestconfNormalizedNodeWriter;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
+import org.opendaylight.yangtools.yang.data.api.schema.AnydataNode;
import org.opendaylight.yangtools.yang.data.api.schema.AnyxmlNode;
import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode;
import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode;
protected final List<Set<QName>> fields;
protected int currentDepth = 0;
- private ParameterAwareNormalizedNodeWriter(final NormalizedNodeStreamWriter writer, final DepthParameter depth,
+ private ParameterAwareNormalizedNodeWriter(final NormalizedNodeStreamWriter writer, final DepthParam depth,
final List<Set<QName>> fields) {
this.writer = requireNonNull(writer);
maxDepth = depth == null ? null : depth.value();
* @return A new instance.
*/
public static ParameterAwareNormalizedNodeWriter forStreamWriter(
- final NormalizedNodeStreamWriter writer, final DepthParameter maxDepth, final List<Set<QName>> fields) {
+ final NormalizedNodeStreamWriter writer, final DepthParam maxDepth, final List<Set<QName>> fields) {
return forStreamWriter(writer, true, maxDepth, fields);
}
/**
* Create a new writer backed by a {@link NormalizedNodeStreamWriter}. Unlike the simple
- * {@link #forStreamWriter(NormalizedNodeStreamWriter, DepthParameter, List)} method, this allows the caller to
+ * {@link #forStreamWriter(NormalizedNodeStreamWriter, DepthParam, List)} method, this allows the caller to
* switch off RFC6020 XML compliance, providing better throughput. The reason is that the XML mapping rules in
* RFC6020 require the encoding to emit leaf nodes which participate in a list's key first and in the order in which
* they are defined in the key. For JSON, this requirement is completely relaxed and leaves can be ordered in any
*/
public static ParameterAwareNormalizedNodeWriter forStreamWriter(final NormalizedNodeStreamWriter writer,
final boolean orderKeyLeaves,
- final DepthParameter depth,
+ final DepthParam depth,
final List<Set<QName>> fields) {
return orderKeyLeaves ? new OrderedParameterAwareNormalizedNodeWriter(writer, depth, fields)
: new ParameterAwareNormalizedNodeWriter(writer, depth, fields);
writer.scalarValue(anyxmlNode.body());
}
writer.endNode();
+ return true;
+ }
+ } else if (node instanceof AnydataNode) {
+ final AnydataNode<?> anydataNode = (AnydataNode<?>)node;
+ final Class<?> objectModel = anydataNode.bodyObjectModel();
+ if (writer.startAnydataNode(anydataNode.getIdentifier(), objectModel)) {
+ writer.scalarValue(anydataNode.body());
+ writer.endNode();
+ return true;
}
- return true;
}
return false;
write(child);
}
currentDepth--;
- processedAsCompositeNode = true;
}
+ processedAsCompositeNode = true;
}
} else if (node instanceof MapEntryNode) {
processedAsCompositeNode = writeMapEntryNode((MapEntryNode) node);
private static final class OrderedParameterAwareNormalizedNodeWriter extends ParameterAwareNormalizedNodeWriter {
private static final Logger LOG = LoggerFactory.getLogger(OrderedParameterAwareNormalizedNodeWriter.class);
- OrderedParameterAwareNormalizedNodeWriter(final NormalizedNodeStreamWriter writer, final DepthParameter depth,
+ OrderedParameterAwareNormalizedNodeWriter(final NormalizedNodeStreamWriter writer, final DepthParam depth,
final List<Set<QName>> fields) {
super(writer, depth, fields);
}