import java.net.URI;
import java.nio.charset.StandardCharsets;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import javax.ws.rs.Produces;
import javax.ws.rs.WebApplicationException;
import org.opendaylight.yangtools.yang.data.codec.gson.JSONNormalizedNodeStreamWriter;
import org.opendaylight.yangtools.yang.data.codec.gson.JsonWriterFactory;
import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ActionDefinition;
+import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.model.api.SchemaNode;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
jsonWriter.endObject();
jsonWriter.flush();
}
+
+ if (httpHeaders != null) {
+ for (final Map.Entry<String, Object> entry : context.getNewHeaders().entrySet()) {
+ httpHeaders.add(entry.getKey(), entry.getValue());
+ }
+ }
}
private static void writeNormalizedNode(final JsonWriter jsonWriter,
jsonWriter,
depth,
fields);
- jsonWriter.name("output");
+ final Module module = context.getSchemaContext().findModule(data.getNodeType().getModule()).get();
+ jsonWriter.name(module.getName() + ":output");
+ jsonWriter.beginObject();
+ writeChildren(nnWriter, (ContainerNode) data);
+ jsonWriter.endObject();
+ } else if (context.getSchemaNode() instanceof ActionDefinition) {
+ /*
+ * ActionDefinition is not supported as initial codec in JSONStreamWriter,
+ * so we need to emit initial output declaration..
+ */
+ nnWriter = createNormalizedNodeWriter(context,
+ ((ActionDefinition) context.getSchemaNode()).getOutput().getPath(), jsonWriter, depth, fields);
+ final Module module = context.getSchemaContext().findModule(data.getNodeType().getModule()).get();
+ jsonWriter.name(module.getName() + ":output");
jsonWriter.beginObject();
writeChildren(nnWriter, (ContainerNode) data);
jsonWriter.endObject();
final JSONCodecFactory codecs = getCodecFactory(context);
final NormalizedNodeStreamWriter streamWriter = JSONNormalizedNodeStreamWriter.createNestedWriter(
- codecs, path, initialNamespaceFor(schema, depth), jsonWriter);
+ codecs, path, initialNamespaceFor(schema), jsonWriter);
return ParameterAwareNormalizedNodeWriter.forStreamWriter(streamWriter, depth, fields);
}
- private static URI initialNamespaceFor(final SchemaNode schema, final Integer depth) {
+ private static URI initialNamespaceFor(final SchemaNode schema) {
if (schema instanceof RpcDefinition) {
return schema.getQName().getNamespace();
}
// For top-level elements we always want to use namespace prefix, hence use a null initial namespace
- if (depth == null || depth == 0 || schema instanceof SchemaContext) {
- return null;
- }
- return schema instanceof DataSchemaNode && !((DataSchemaNode)schema).isAugmenting()
- ? schema.getQName().getNamespace() : null;
+ return null;
}
private static JsonWriter createJsonWriter(final OutputStream entityStream, final boolean prettyPrint) {