List of usage examples for com.google.gson.stream JsonReader nextString
public String nextString() throws IOException
From source file:org.opendaylight.netconf.sal.rest.impl.JsonToPATCHBodyReader.java
License:Open Source License
private List<PATCHEntity> read(final JsonReader in, InstanceIdentifierContext path) throws IOException { boolean inEdit = false; boolean inValue = false; String operation = null;/*w w w. ja v a 2s.co m*/ String target = null; String editId = null; List<PATCHEntity> resultCollection = new ArrayList<>(); while (in.hasNext()) { switch (in.peek()) { case STRING: case NUMBER: in.nextString(); break; case BOOLEAN: Boolean.toString(in.nextBoolean()); break; case NULL: in.nextNull(); break; case BEGIN_ARRAY: in.beginArray(); break; case BEGIN_OBJECT: if (inEdit && operation != null & target != null & inValue) { //let's do the stuff - find out target node // StringInstanceIdentifierCodec codec = new StringInstanceIdentifierCodec(path // .getSchemaContext()); // if (path.getInstanceIdentifier().toString().equals("/")) { // final YangInstanceIdentifier deserialized = codec.deserialize(target); // } DataSchemaNode targetNode = ((DataNodeContainer) (path.getSchemaNode())) .getDataChildByName(target.replace("/", "")); if (targetNode == null) { LOG.debug("Target node {} not found in path {} ", target, path.getSchemaNode()); throw new RestconfDocumentedException("Error parsing input", ErrorType.PROTOCOL, ErrorTag.MALFORMED_MESSAGE); } else { final NormalizedNodeResult resultHolder = new NormalizedNodeResult(); final NormalizedNodeStreamWriter writer = ImmutableNormalizedNodeStreamWriter .from(resultHolder); //keep on parsing json from place where target points final JsonParserStream jsonParser = JsonParserStream.create(writer, path.getSchemaContext(), path.getSchemaNode()); jsonParser.parse(in); final YangInstanceIdentifier targetII = path.getInstanceIdentifier() .node(targetNode.getQName()); resultCollection .add(new PATCHEntity(editId, operation, targetII, resultHolder.getResult())); inValue = false; operation = null; target = null; } in.endObject(); } else { in.beginObject(); } break; case END_DOCUMENT: break; case NAME: final String name = in.nextName(); switch (name) { case "edit": inEdit = true; break; case "operation": operation = in.nextString(); break; case "target": target = in.nextString(); break; case "value": inValue = true; break; case "patch-id": patchId = in.nextString(); break; case "edit-id": editId = in.nextString(); break; } break; case END_OBJECT: in.endObject(); break; case END_ARRAY: in.endArray(); break; default: break; } } return ImmutableList.copyOf(resultCollection); }
From source file:org.opendaylight.restconf.jersey.providers.JsonToPATCHBodyReader.java
License:Open Source License
private List<PATCHEntity> read(final JsonReader in, final InstanceIdentifierContext path) throws IOException { final List<PATCHEntity> resultCollection = new ArrayList<>(); final StringModuleInstanceIdentifierCodec codec = new StringModuleInstanceIdentifierCodec( path.getSchemaContext());/*from w w w.j a v a2 s .c o m*/ final JsonToPATCHBodyReader.PatchEdit edit = new JsonToPATCHBodyReader.PatchEdit(); while (in.hasNext()) { switch (in.peek()) { case STRING: case NUMBER: in.nextString(); break; case BOOLEAN: Boolean.toString(in.nextBoolean()); break; case NULL: in.nextNull(); break; case BEGIN_ARRAY: in.beginArray(); break; case BEGIN_OBJECT: in.beginObject(); break; case END_DOCUMENT: break; case NAME: parseByName(in.nextName(), edit, in, path, codec, resultCollection); break; case END_OBJECT: in.endObject(); break; case END_ARRAY: in.endArray(); break; default: break; } } return ImmutableList.copyOf(resultCollection); }
From source file:org.opendaylight.restconf.jersey.providers.JsonToPATCHBodyReader.java
License:Open Source License
/** * Switch value of parsed JsonToken.NAME and read edit definition or patch id * @param name value of token// ww w . j a v a2 s . c om * @param edit PatchEdit instance * @param in JsonReader reader * @param path InstanceIdentifierContext context * @param codec Draft11StringModuleInstanceIdentifierCodec codec * @param resultCollection collection of parsed edits * @throws IOException */ private void parseByName(@Nonnull final String name, @Nonnull final PatchEdit edit, @Nonnull final JsonReader in, @Nonnull final InstanceIdentifierContext path, @Nonnull final StringModuleInstanceIdentifierCodec codec, @Nonnull final List<PATCHEntity> resultCollection) throws IOException { switch (name) { case "edit": if (in.peek() == JsonToken.BEGIN_ARRAY) { in.beginArray(); while (in.hasNext()) { readEditDefinition(edit, in, path, codec); resultCollection.add(prepareEditOperation(edit)); edit.clear(); } in.endArray(); } else { readEditDefinition(edit, in, path, codec); resultCollection.add(prepareEditOperation(edit)); edit.clear(); } break; case "patch-id": this.patchId = in.nextString(); break; default: break; } }
From source file:org.opendaylight.restconf.jersey.providers.JsonToPATCHBodyReader.java
License:Open Source License
/** * Read one patch edit object from Json input * @param edit PatchEdit instance to be filled with read data * @param in JsonReader reader/*from w ww.j av a2 s.c o m*/ * @param path InstanceIdentifierContext path context * @param codec Draft11StringModuleInstanceIdentifierCodec codec * @throws IOException */ private void readEditDefinition(@Nonnull final PatchEdit edit, @Nonnull final JsonReader in, @Nonnull final InstanceIdentifierContext path, @Nonnull final StringModuleInstanceIdentifierCodec codec) throws IOException { final StringBuffer value = new StringBuffer(); in.beginObject(); while (in.hasNext()) { final String editDefinition = in.nextName(); switch (editDefinition) { case "edit-id": edit.setId(in.nextString()); break; case "operation": edit.setOperation(in.nextString()); break; case "target": // target can be specified completely in request URI final String target = in.nextString(); if (target.equals("/")) { edit.setTarget(path.getInstanceIdentifier()); edit.setTargetSchemaNode(path.getSchemaContext()); } else { edit.setTarget(codec.deserialize(codec.serialize(path.getInstanceIdentifier()).concat(target))); edit.setTargetSchemaNode( SchemaContextUtil.findDataSchemaNode(path.getSchemaContext(), codec.getDataContextTree() .getChild(edit.getTarget()).getDataSchemaNode().getPath().getParent())); } break; case "value": // save data defined in value node for next (later) processing, because target needs to be read // always first and there is no ordering in Json input readValueNode(value, in); break; default: break; } } in.endObject(); // read saved data to normalized node when target schema is already known edit.setData( readEditData(new JsonReader(new StringReader(value.toString())), edit.getTargetSchemaNode(), path)); }
From source file:org.opendaylight.restconf.jersey.providers.JsonToPATCHBodyReader.java
License:Open Source License
/** * Parse one value object of data and saves it to buffer * @param value Buffer to read value object * @param in JsonReader reader// ww w.j a v a 2 s.co m * @throws IOException */ private void readValueObject(@Nonnull final StringBuffer value, @Nonnull final JsonReader in) throws IOException { in.beginObject(); value.append("{"); while (in.hasNext()) { value.append("\"" + in.nextName() + "\""); value.append(":"); if (in.peek() == JsonToken.STRING) { value.append("\"" + in.nextString() + "\""); } else { if (in.peek() == JsonToken.BEGIN_ARRAY) { in.beginArray(); value.append("["); while (in.hasNext()) { readValueObject(value, in); if (in.peek() != JsonToken.END_ARRAY) { value.append(","); } } in.endArray(); value.append("]"); } else { readValueObject(value, in); } } if (in.peek() != JsonToken.END_OBJECT) { value.append(","); } } in.endObject(); value.append("}"); }
From source file:org.opendaylight.yangtools.yang.data.codec.gson.JsonParserStream.java
License:Open Source License
private void traverseAnyXmlValue(final JsonReader in, final Document doc, final Element parentElement) throws IOException { switch (in.peek()) { case STRING:/*from ww w. j a v a 2 s . co m*/ case NUMBER: Text textNode = doc.createTextNode(in.nextString()); parentElement.appendChild(textNode); break; case BOOLEAN: textNode = doc.createTextNode(Boolean.toString(in.nextBoolean())); parentElement.appendChild(textNode); break; case NULL: in.nextNull(); textNode = doc.createTextNode("null"); parentElement.appendChild(textNode); break; case BEGIN_ARRAY: in.beginArray(); while (in.hasNext()) { final Element childElement = doc.createElement(ANYXML_ARRAY_ELEMENT_ID); parentElement.appendChild(childElement); traverseAnyXmlValue(in, doc, childElement); } in.endArray(); break; case BEGIN_OBJECT: in.beginObject(); while (in.hasNext()) { final Element childElement = doc.createElement(in.nextName()); parentElement.appendChild(childElement); traverseAnyXmlValue(in, doc, childElement); } in.endObject(); case END_DOCUMENT: case NAME: case END_OBJECT: case END_ARRAY: break; } }
From source file:org.opendaylight.yangtools.yang.data.codec.gson.JsonParserStream.java
License:Open Source License
public void read(final JsonReader in, AbstractNodeDataWithSchema parent) throws IOException { switch (in.peek()) { case STRING://from ww w. j av a 2 s . c om case NUMBER: setValue(parent, in.nextString()); break; case BOOLEAN: setValue(parent, Boolean.toString(in.nextBoolean())); break; case NULL: in.nextNull(); setValue(parent, null); break; case BEGIN_ARRAY: in.beginArray(); while (in.hasNext()) { if (parent instanceof LeafNodeDataWithSchema) { read(in, parent); } else { final AbstractNodeDataWithSchema newChild = newArrayEntry(parent); read(in, newChild); } } in.endArray(); return; case BEGIN_OBJECT: final Set<String> namesakes = new HashSet<>(); in.beginObject(); /* * This allows parsing of incorrectly /as showcased/ * in testconf nesting of list items - eg. * lists with one value are sometimes serialized * without wrapping array. * */ if (isArray(parent)) { parent = newArrayEntry(parent); } while (in.hasNext()) { final String jsonElementName = in.nextName(); DataSchemaNode parentSchema = parent.getSchema(); if (parentSchema instanceof YangModeledAnyXmlSchemaNode) { parentSchema = ((YangModeledAnyXmlSchemaNode) parentSchema).getSchemaOfAnyXmlData(); } final NamespaceAndName namespaceAndName = resolveNamespace(jsonElementName, parentSchema); final String localName = namespaceAndName.getName(); addNamespace(namespaceAndName.getUri()); if (namesakes.contains(jsonElementName)) { throw new JsonSyntaxException("Duplicate name " + jsonElementName + " in JSON input."); } namesakes.add(jsonElementName); final Deque<DataSchemaNode> childDataSchemaNodes = ParserStreamUtils .findSchemaNodeByNameAndNamespace(parentSchema, localName, getCurrentNamespace()); if (childDataSchemaNodes.isEmpty()) { throw new IllegalStateException("Schema for node with name " + localName + " and namespace " + getCurrentNamespace() + " doesn't exist."); } final AbstractNodeDataWithSchema newChild = ((CompositeNodeDataWithSchema) parent) .addChild(childDataSchemaNodes); if (newChild instanceof AnyXmlNodeDataWithSchema) { readAnyXmlValue(in, (AnyXmlNodeDataWithSchema) newChild, jsonElementName); } else { read(in, newChild); } removeNamespace(); } in.endObject(); return; case END_DOCUMENT: case NAME: case END_OBJECT: case END_ARRAY: break; } }
From source file:org.openqa.selenium.json.Json.java
License:Apache License
private static Object readValue(JsonReader in, Gson gson) throws IOException { switch (in.peek()) { case BEGIN_ARRAY: case BEGIN_OBJECT: case BOOLEAN: case NULL:/* w w w. j a v a 2 s . co m*/ case STRING: return gson.fromJson(in, Object.class); case NUMBER: String number = in.nextString(); if (number.indexOf('.') != -1) { return Double.parseDouble(number); } return Long.parseLong(number); default: throw new JsonParseException("Unexpected type: " + in.peek()); } }
From source file:org.openstreetmap.josm.plugins.openstreetcam.service.photo.adapter.ReaderUtil.java
License:LGPL
static String readString(final JsonReader reader) throws IOException { String value = null;//from w ww . j a v a 2 s . c o m if (reader.peek() == JsonToken.NULL) { reader.nextNull(); } else { value = reader.nextString(); } return value; }