List of usage examples for com.google.gson.stream JsonReader hasNext
public boolean hasNext() throws IOException
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/*from ww w . j a v a2s .com*/ * @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:/* w w w . j a va 2 s .c om*/ 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 w w w . ja v a 2s . co m 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.openhab.core.automation.internal.parser.gson.RuleGSONParser.java
License:Open Source License
@Override public Set<Rule> parse(InputStreamReader reader) throws ParsingException { JsonReader jr = new JsonReader(reader); try {//from w w w.j av a 2 s.co m Set<Rule> rules = new HashSet<>(); if (jr.hasNext()) { JsonToken token = jr.peek(); if (JsonToken.BEGIN_ARRAY.equals(token)) { List<RuleDTO> ruleDtos = gson.fromJson(jr, new TypeToken<List<RuleDTO>>() { }.getType()); for (RuleDTO ruleDto : ruleDtos) { rules.add(RuleDTOMapper.map(ruleDto)); } } else { RuleDTO ruleDto = gson.fromJson(jr, RuleDTO.class); rules.add(RuleDTOMapper.map(ruleDto)); } return rules; } } catch (Exception e) { throw new ParsingException(new ParsingNestedException(ParsingNestedException.RULE, null, e)); } finally { try { jr.close(); } catch (IOException e) { } } return Collections.emptySet(); }
From source file:org.openhab.core.automation.internal.parser.gson.TemplateGSONParser.java
License:Open Source License
@Override public Set<Template> parse(InputStreamReader reader) throws ParsingException { JsonReader jr = new JsonReader(reader); try {// ww w . j a v a 2s . c om if (jr.hasNext()) { JsonToken token = jr.peek(); Set<Template> templates = new HashSet<>(); if (JsonToken.BEGIN_ARRAY.equals(token)) { List<RuleTemplateDTO> templateDtos = gson.fromJson(jr, new TypeToken<List<RuleTemplateDTO>>() { }.getType()); for (RuleTemplateDTO templateDto : templateDtos) { templates.add(RuleTemplateDTOMapper.map(templateDto)); } } else { RuleTemplateDTO template = gson.fromJson(jr, RuleTemplateDTO.class); templates.add(RuleTemplateDTOMapper.map(template)); } return templates; } } catch (Exception e) { throw new ParsingException(new ParsingNestedException(ParsingNestedException.TEMPLATE, null, e)); } finally { try { jr.close(); } catch (IOException e) { } } return Collections.emptySet(); }
From source file:org.openstreetmap.josm.plugins.openstreetcam.service.photo.adapter.PhotoTypeAdapter.java
License:LGPL
@Override public Photo read(final JsonReader reader) throws IOException { Double latitude = null;//from w w w .j a v a 2 s .c om Double longitude = null; final PhotoBuilder builder = new PhotoBuilder(); reader.beginObject(); while (reader.hasNext()) { switch (reader.nextName()) { case PHOTO_ID: builder.id(ReaderUtil.readLong(reader)); break; case PHOTO_SEQUENCE_ID: builder.sequenceId(ReaderUtil.readLong(reader)); break; case PHOTO_SEQUENCE_IDX: builder.sequenceIndex(ReaderUtil.readInt(reader)); break; case PHOTO_LATITUDE: latitude = ReaderUtil.readDouble(reader); break; case PHOTO_LONGITUDE: longitude = ReaderUtil.readDouble(reader); break; case PHOTO_NAME: builder.name(ReaderUtil.readString(reader)); break; case PHOTO_LTH_NAME: builder.largeThumbnailName(ReaderUtil.readString(reader)); break; case PHOTO_TH_NAME: builder.thumbnailName(ReaderUtil.readString(reader)); break; case PHOTO_ORI_NAME: builder.oriName(ReaderUtil.readString(reader)); break; case PHOTO_TIMESTAMP: builder.timestamp(ReaderUtil.readLong(reader)); break; case PHOTO_HEADING: final String value = ReaderUtil.readString(reader); final Double heading = value != null && !value.isEmpty() ? Double.parseDouble(value) : null; builder.heading(heading); break; case PHOTO_USERNAME: builder.username(ReaderUtil.readString(reader)); break; case WAY_ID: final String wayIdValue = ReaderUtil.readString(reader); final Long wayId = wayIdValue != null && !wayIdValue.isEmpty() ? Long.parseLong(wayIdValue) : null; builder.wayId(wayId); break; case PHOTO_SHOT_DATE: builder.shotDate(ReaderUtil.readString(reader)); break; default: reader.skipValue(); break; } } if (latitude != null && longitude != null) { builder.point(latitude, longitude); } reader.endObject(); return builder.build(); }
From source file:org.openstreetmap.josm.plugins.openstreetcam.service.photo.adapter.ReaderUtil.java
License:LGPL
/** * Reads a geometry that has the following format: [[lat1,lon1], [lat2,lon2],...[latn,lonn]]. * * @param reader a {@code JsonReader} object * @return a list of {@code LatLon} objects * @throws IOException if the read operation failed */// www.ja va 2 s . c o m static List<LatLon> readGeometry(final JsonReader reader) throws IOException { final List<LatLon> geometry = new ArrayList<>(); if (reader.peek() == JsonToken.NULL) { reader.nextNull(); } else { reader.beginArray(); while (reader.hasNext()) { reader.beginArray(); final Double lat = reader.nextDouble(); final Double lon = reader.nextDouble(); geometry.add(new LatLon(lat, lon)); reader.endArray(); } reader.endArray(); } return geometry; }
From source file:org.openstreetmap.josm.plugins.openstreetcam.service.photo.adapter.SegmentTypeAdapter.java
License:LGPL
@Override public Segment read(final JsonReader reader) throws IOException { final SegmentBuilder builder = new SegmentBuilder(); reader.beginObject();/* w w w . j a v a 2 s. c o m*/ while (reader.hasNext()) { switch (reader.nextName()) { case SEGMENT_ID: builder.id(ReaderUtil.readString(reader)); break; case SEGMENT_FROM: builder.from(ReaderUtil.readLong(reader)); break; case SEGMENT_TO: builder.to(ReaderUtil.readLong(reader)); break; case WAY_ID: builder.wayId(ReaderUtil.readLong(reader)); break; case SEGMENT_COVERAGE: builder.coverage(ReaderUtil.readInt(reader)); break; case SEGMENT_GEOMETRY: builder.geometry(ReaderUtil.readGeometry(reader)); break; default: reader.skipValue(); break; } } reader.endObject(); return builder.build(); }
From source file:org.openstreetmap.josm.plugins.openstreetcam.service.PhotoTypeAdapter.java
License:Apache License
@Override public Photo read(final JsonReader reader) throws IOException { Long id = null;//from w w w . ja v a2 s . c om Long sequenceId = null; Integer sequenceIdx = null; Double latitude = null; Double longitude = null; String name = null; String largeThumbnailName = null; String thumbnailName = null; Long timestamp = null; String headingVal = null; String username = null; reader.beginObject(); while (reader.hasNext()) { switch (reader.nextName()) { case ID: id = readLong(reader); break; case SEQUENCE_ID: sequenceId = readLong(reader); break; case SEQUENCE_IDX: sequenceIdx = readInt(reader); break; case LATITUDE: latitude = readDouble(reader); break; case LONGITUDE: longitude = readDouble(reader); break; case NAME: name = readString(reader); break; case LTH_NAME: largeThumbnailName = readString(reader); break; case TH_NAME: thumbnailName = readString(reader); break; case TIMESTAMP: timestamp = readLong(reader); break; case HEADING: headingVal = readString(reader); break; case USERNAME: username = readString(reader); break; default: reader.skipValue(); break; } } reader.endObject(); final Double heading = headingVal != null && !headingVal.isEmpty() ? Double.parseDouble(headingVal) : null; return new Photo(id, sequenceId, sequenceIdx, latitude, longitude, name, largeThumbnailName, thumbnailName, timestamp, heading, username); }
From source file:org.oscii.panlex.PanLexJSONParser.java
private <T> void parse(InputStream in, T record, Predicate<T> process) { int accepted = 0; Class type = record.getClass(); String name = type.getSimpleName(); Gson gson = new Gson(); log.info(String.format("Parsing %s records", name)); try {//from www . j av a 2 s . c o m JsonReader reader = new JsonReader(new InputStreamReader(in, "UTF-8")); reader.beginArray(); while (reader.hasNext()) { record = gson.fromJson(reader, type); if (process.test(record)) { accepted++; } } reader.close(); } catch (IOException e) { e.printStackTrace(); } log.info(String.format("Parsed %d %s records", accepted, name)); }