import org.opendaylight.netconf.sal.restconf.impl.RestconfDocumentedException;
import org.opendaylight.netconf.sal.restconf.impl.RestconfError;
import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
+import org.opendaylight.yangtools.yang.data.api.schema.stream.ForwardingNormalizedNodeStreamWriter;
import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter;
import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactory;
// stream writer validates the node type against the schema and thus will expect a LeafSchemaNode but
// the schema has a ContainerSchemaNode so, to avoid an error, we override the leafNode behavior
// for error-info.
- final NormalizedNodeStreamWriter streamWriter = new DelegatingNormalizedNodeStreamWriter(jsonStreamWriter) {
+ final NormalizedNodeStreamWriter streamWriter = new ForwardingNormalizedNodeStreamWriter() {
+ @Override
+ protected NormalizedNodeStreamWriter delegate() {
+ return jsonStreamWriter;
+ }
+
@Override
public void leafNode(final NodeIdentifier name, final Object value) throws IOException {
if(name.getNodeType().equals(Draft02.RestConfModule.ERROR_INFO_QNAME)) {
// stream writer validates the node type against the schema and thus will expect a LeafSchemaNode but
// the schema has a ContainerSchemaNode so, to avoid an error, we override the leafNode behavior
// for error-info.
- final NormalizedNodeStreamWriter streamWriter = new DelegatingNormalizedNodeStreamWriter(xmlStreamWriter) {
+ final NormalizedNodeStreamWriter streamWriter = new ForwardingNormalizedNodeStreamWriter() {
+ @Override
+ protected NormalizedNodeStreamWriter delegate() {
+ return xmlStreamWriter;
+ }
+
@Override
public void leafNode(final NodeIdentifier name, final Object value) throws IOException {
if(name.getNodeType().equals(Draft02.RestConfModule.ERROR_INFO_QNAME)) {
nnWriter.flush();
}
}
-
- private static class DelegatingNormalizedNodeStreamWriter implements NormalizedNodeStreamWriter {
- private final NormalizedNodeStreamWriter delegate;
-
- DelegatingNormalizedNodeStreamWriter(NormalizedNodeStreamWriter delegate) {
- this.delegate = delegate;
- }
-
- @Override
- public void leafNode(NodeIdentifier name, Object value) throws IOException, IllegalArgumentException {
- delegate.leafNode(name, value);
- }
-
- @Override
- public void startLeafSet(NodeIdentifier name, int childSizeHint) throws IOException, IllegalArgumentException {
- delegate.startLeafSet(name, childSizeHint);
- }
-
- @Override
- public void leafSetEntryNode(Object value) throws IOException, IllegalArgumentException {
- delegate.leafSetEntryNode(value);
- }
-
- @Override
- public void startContainerNode(NodeIdentifier name, int childSizeHint) throws IOException,
- IllegalArgumentException {
- delegate.startContainerNode(name, childSizeHint);
- }
-
- @Override
- public void startUnkeyedList(NodeIdentifier name, int childSizeHint) throws IOException,
- IllegalArgumentException {
- delegate.startUnkeyedList(name, childSizeHint);
- }
-
- @Override
- public void startUnkeyedListItem(NodeIdentifier name, int childSizeHint) throws IOException,
- IllegalStateException {
- delegate.startUnkeyedListItem(name, childSizeHint);
- }
-
- @Override
- public void startMapNode(NodeIdentifier name, int childSizeHint) throws IOException, IllegalArgumentException {
- delegate.startMapNode(name, childSizeHint);
- }
-
- @Override
- public void startMapEntryNode(NodeIdentifierWithPredicates identifier, int childSizeHint) throws IOException,
- IllegalArgumentException {
- delegate.startMapEntryNode(identifier, childSizeHint);
- }
-
- @Override
- public void startOrderedMapNode(NodeIdentifier name, int childSizeHint) throws IOException,
- IllegalArgumentException {
- delegate.startOrderedMapNode(name, childSizeHint);
- }
-
- @Override
- public void startChoiceNode(NodeIdentifier name, int childSizeHint) throws IOException,
- IllegalArgumentException {
- delegate.startChoiceNode(name, childSizeHint);
- }
-
- @Override
- public void startAugmentationNode(AugmentationIdentifier identifier) throws IOException,
- IllegalArgumentException {
- delegate.startAugmentationNode(identifier);
- }
-
- @Override
- public void anyxmlNode(NodeIdentifier name, Object value) throws IOException, IllegalArgumentException {
- delegate.anyxmlNode(name, value);
- }
-
- @Override
- public void startYangModeledAnyXmlNode(NodeIdentifier name, int childSizeHint) throws IOException {
- delegate.startYangModeledAnyXmlNode(name, childSizeHint);
- }
-
- @Override
- public void endNode() throws IOException, IllegalStateException {
- delegate.endNode();
- }
-
- @Override
- public void close() throws IOException {
- delegate.close();
- }
-
- @Override
- public void flush() throws IOException {
- delegate.flush();
- }
- }
}