List of usage examples for com.google.gson.stream JsonReader beginObject
public void beginObject() throws IOException
From source file:com.replaymod.replaystudio.pathing.serialize.TimelineSerialization.java
License:MIT License
public Map<String, Timeline> deserialize(String serialized) throws IOException { JsonReader reader = new JsonReader(new StringReader(serialized)); Map<String, Timeline> timelines = new LinkedHashMap<>(); reader.beginObject(); while (reader.hasNext()) { Timeline timeline = registry.createTimeline(); timelines.put(reader.nextName(), timeline); reader.beginArray();// ww w . j av a 2s . c o m while (reader.hasNext()) { Path path = timeline.createPath(); reader.beginObject(); List<Integer> segments = new ArrayList<>(); List<Interpolator> interpolators = new ArrayList<>(); while (reader.hasNext()) { switch (reader.nextName()) { case "keyframes": reader.beginArray(); while (reader.hasNext()) { long time = 0; Map<Property, Object> properties = new HashMap<>(); reader.beginObject(); while (reader.hasNext()) { switch (reader.nextName()) { case "time": time = reader.nextLong(); break; case "properties": reader.beginObject(); while (reader.hasNext()) { String id = reader.nextName(); Property property = timeline.getProperty(id); if (property == null) { throw new IOException("Unknown property: " + id); } Object value = property.fromJson(reader); properties.put(property, value); } reader.endObject(); break; } } reader.endObject(); Keyframe keyframe = path.insert(time); for (Map.Entry<Property, Object> entry : properties.entrySet()) { keyframe.setValue(entry.getKey(), entry.getValue()); } } reader.endArray(); break; case "segments": reader.beginArray(); while (reader.hasNext()) { if (reader.peek() == JsonToken.NULL) { reader.nextNull(); segments.add(null); } else { segments.add(reader.nextInt()); } } reader.endArray(); break; case "interpolators": reader.beginArray(); while (reader.hasNext()) { reader.beginObject(); Interpolator interpolator = null; Set<String> properties = new HashSet<>(); while (reader.hasNext()) { switch (reader.nextName()) { case "type": interpolator = registry.deserializeInterpolator(reader); break; case "properties": reader.beginArray(); while (reader.hasNext()) { properties.add(reader.nextString()); } reader.endArray(); break; } } if (interpolator == null) { throw new IOException("Missing interpolator type"); } for (String propertyName : properties) { Property property = timeline.getProperty(propertyName); if (property == null) { throw new IOException("Timeline does not know property '" + propertyName + "'"); } interpolator.registerProperty(property); } interpolators.add(interpolator); reader.endObject(); } reader.endArray(); break; } } Iterator<Integer> iter = segments.iterator(); for (PathSegment segment : path.getSegments()) { Integer next = iter.next(); if (next != null) { segment.setInterpolator(interpolators.get(next)); } } reader.endObject(); } reader.endArray(); } reader.endObject(); return timelines; }
From source file:com.sap.core.odata.core.ep.consumer.JsonLinkConsumer.java
License:Apache License
/** * Reads single link with format <code>{"d":{"uri":"http://somelink"}}</code> * or <code>{"uri":"http://somelink"}</code>. * @param reader//from www. j a va2 s . c o m * @param entitySet * @return link as string object * @throws EntityProviderException */ public String readLink(final JsonReader reader, final EdmEntitySet entitySet) throws EntityProviderException { try { String result; reader.beginObject(); String nextName = reader.nextName(); final boolean wrapped = FormatJson.D.equals(nextName); if (wrapped) { reader.beginObject(); nextName = reader.nextName(); } if (FormatJson.URI.equals(nextName) && reader.peek() == JsonToken.STRING) { result = reader.nextString(); } else { throw new EntityProviderException(EntityProviderException.INVALID_CONTENT .addContent(FormatJson.D + " or " + FormatJson.URI).addContent(nextName)); } reader.endObject(); if (wrapped) { reader.endObject(); } reader.peek(); // to assert end of structure or document return result; } catch (final IOException e) { throw new EntityProviderException( EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass().getSimpleName()), e); } catch (final IllegalStateException e) { throw new EntityProviderException( EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass().getSimpleName()), e); } }
From source file:com.sap.core.odata.core.ep.consumer.JsonLinkConsumer.java
License:Apache License
/** * Reads a collection of links, optionally wrapped in a "d" object, * and optionally wrapped in an "results" object, where an additional "__count" * object could appear on the same level as the "results". * @param reader/*w ww. j av a2s . com*/ * @param entitySet * @return links as List of Strings * @throws EntityProviderException */ public List<String> readLinks(final JsonReader reader, final EdmEntitySet entitySet) throws EntityProviderException { List<String> links = null; int openedObjects = 0; try { String nextName; if (reader.peek() == JsonToken.BEGIN_ARRAY) { nextName = FormatJson.RESULTS; } else { reader.beginObject(); openedObjects++; nextName = reader.nextName(); } if (FormatJson.D.equals(nextName)) { if (reader.peek() == JsonToken.BEGIN_ARRAY) { nextName = FormatJson.RESULTS; } else { reader.beginObject(); openedObjects++; nextName = reader.nextName(); } } FeedMetadataImpl feedMetadata = new FeedMetadataImpl(); if (FormatJson.COUNT.equals(nextName)) { JsonFeedConsumer.readInlineCount(reader, feedMetadata); nextName = reader.nextName(); } if (FormatJson.RESULTS.equals(nextName)) { links = readLinksArray(reader); } else { throw new EntityProviderException(EntityProviderException.INVALID_CONTENT .addContent(FormatJson.RESULTS).addContent(nextName)); } if (reader.hasNext() && reader.peek() == JsonToken.NAME) { if (FormatJson.COUNT.equals(reader.nextName())) { JsonFeedConsumer.readInlineCount(reader, feedMetadata); } else { throw new EntityProviderException(EntityProviderException.INVALID_CONTENT .addContent(FormatJson.COUNT).addContent(nextName)); } } for (; openedObjects > 0; openedObjects--) { reader.endObject(); } reader.peek(); // to assert end of document } catch (final IOException e) { throw new EntityProviderException( EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass().getSimpleName()), e); } catch (final IllegalStateException e) { throw new EntityProviderException( EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass().getSimpleName()), e); } return links; }
From source file:com.sap.core.odata.core.ep.consumer.JsonLinkConsumer.java
License:Apache License
private List<String> readLinksArray(final JsonReader reader) throws IOException, EntityProviderException { List<String> links = new ArrayList<String>(); reader.beginArray();//w w w.j a v a 2s. c o m while (reader.hasNext()) { reader.beginObject(); String nextName = reader.nextName(); if (FormatJson.URI.equals(nextName) && reader.peek() == JsonToken.STRING) { links.add(reader.nextString()); } else { throw new EntityProviderException( EntityProviderException.INVALID_CONTENT.addContent(FormatJson.URI).addContent(nextName)); } reader.endObject(); } reader.endArray(); return links; }
From source file:com.sap.core.odata.core.ep.consumer.JsonPropertyConsumer.java
License:Apache License
public Map<String, Object> readPropertyStandalone(final JsonReader reader, final EdmProperty property, final EntityProviderReadProperties readProperties) throws EntityProviderException { try {/*from w w w . j a v a2 s . c om*/ EntityPropertyInfo entityPropertyInfo = EntityInfoAggregator.create(property); Map<String, Object> typeMappings = readProperties == null ? null : readProperties.getTypeMappings(); Map<String, Object> result = new HashMap<String, Object>(); reader.beginObject(); String nextName = reader.nextName(); if (FormatJson.D.equals(nextName)) { reader.beginObject(); nextName = reader.nextName(); handleName(reader, typeMappings, entityPropertyInfo, result, nextName); reader.endObject(); } else { handleName(reader, typeMappings, entityPropertyInfo, result, nextName); } reader.endObject(); if (reader.peek() != JsonToken.END_DOCUMENT) { throw new EntityProviderException( EntityProviderException.END_DOCUMENT_EXPECTED.addContent(reader.peek().toString())); } return result; } catch (final IOException e) { throw new EntityProviderException( EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass().getSimpleName()), e); } catch (final IllegalStateException e) { throw new EntityProviderException( EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass().getSimpleName()), e); } }
From source file:com.sap.core.odata.core.ep.consumer.JsonPropertyConsumer.java
License:Apache License
@SuppressWarnings("unchecked") private Object readComplexProperty(final JsonReader reader, final EntityComplexPropertyInfo complexPropertyInfo, final Object typeMapping) throws EdmException, EntityProviderException, IOException { if (reader.peek().equals(JsonToken.NULL)) { reader.nextNull();//from w w w . ja va 2 s. co m if (complexPropertyInfo.isMandatory()) { throw new EntityProviderException( EntityProviderException.INVALID_PROPERTY_VALUE.addContent(complexPropertyInfo.getName())); } return null; } reader.beginObject(); Map<String, Object> data = new HashMap<String, Object>(); Map<String, Object> mapping; if (typeMapping != null) { if (typeMapping instanceof Map) { mapping = (Map<String, Object>) typeMapping; } else { throw new EntityProviderException( EntityProviderException.INVALID_MAPPING.addContent(complexPropertyInfo.getName())); } } else { mapping = new HashMap<String, Object>(); } while (reader.hasNext()) { String childName = reader.nextName(); if (FormatJson.METADATA.equals(childName)) { reader.beginObject(); childName = reader.nextName(); if (!FormatJson.TYPE.equals(childName)) { throw new EntityProviderException(EntityProviderException.MISSING_ATTRIBUTE .addContent(FormatJson.TYPE).addContent(FormatJson.METADATA)); } String actualTypeName = reader.nextString(); String expectedTypeName = complexPropertyInfo.getType().getNamespace() + Edm.DELIMITER + complexPropertyInfo.getType().getName(); if (!expectedTypeName.equals(actualTypeName)) { throw new EntityProviderException(EntityProviderException.INVALID_ENTITYTYPE .addContent(expectedTypeName).addContent(actualTypeName)); } reader.endObject(); } else { EntityPropertyInfo childPropertyInfo = complexPropertyInfo.getPropertyInfo(childName); if (childPropertyInfo == null) { throw new EntityProviderException( EntityProviderException.INVALID_PROPERTY.addContent(childName)); } Object childData = readPropertyValue(reader, childPropertyInfo, mapping.get(childName)); if (data.containsKey(childName)) { throw new EntityProviderException( EntityProviderException.DOUBLE_PROPERTY.addContent(childName)); } data.put(childName, childData); } } reader.endObject(); return data; }
From source file:com.sap.core.odata.core.ep.consumer.JsonServiceDocumentConsumer.java
License:Apache License
private ServiceDocumentImpl readServiceDocument(final JsonReader reader) throws EntityProviderException { try {/* w w w . j a v a2s. c o m*/ reader.beginObject(); currentHandledObjectName = reader.nextName(); if (FormatJson.D.equals(currentHandledObjectName)) { reader.beginObject(); readContent(reader); reader.endObject(); } reader.endObject(); reader.peek(); reader.close(); } catch (final IOException e) { throw new EntityProviderException( EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass().getSimpleName()), e); } catch (final IllegalStateException e) { throw new EntityProviderException( EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass().getSimpleName()), e); } catch (final EdmException e) { throw new EntityProviderException( EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass().getSimpleName()), e); } return new ServiceDocumentImpl().setEntitySetsInfo(entitySets); }
From source file:com.sap.core.odata.core.ep.util.JsonUtils.java
License:Apache License
public static int startJson(final JsonReader reader) throws EntityProviderException { //The enclosing "d" and "results" are optional - so we cannot check for the presence //but we have to read over them in case they are present. JsonToken token;//from w w w. j a v a 2s .c o m try { token = reader.peek(); int openJsonObjects = 0; if (JsonToken.BEGIN_OBJECT == token) { reader.beginObject(); openJsonObjects++; token = reader.peek(); if (JsonToken.NAME == token) { String name = reader.nextName(); if (!("d".equals(name) ^ "results".equals(name))) { //TODO I18N throw new EntityProviderException(EntityProviderException.COMMON, name + " not expected, only d or results"); } } token = reader.peek(); if (JsonToken.BEGIN_OBJECT == token) { reader.beginObject(); openJsonObjects++; } else if (JsonToken.BEGIN_ARRAY == token) { //TODO I18N throw new EntityProviderException(EntityProviderException.COMMON, "Array not expected"); } } return openJsonObjects; } catch (IOException e) { //TODO I18N throw new EntityProviderException(EntityProviderException.COMMON, e); } }
From source file:com.seleritycorp.common.base.coreservices.RawCoreServiceClient.java
License:Apache License
private void pushToWriter(JsonReader reader, JsonWriter writer) throws IOException { int count = 0; boolean isObject = reader.peek() == JsonToken.BEGIN_OBJECT; do {/*from w w w.j av a2s . co m*/ JsonToken jsToken = reader.peek(); switch (jsToken) { case BEGIN_ARRAY: reader.beginArray(); writer.beginArray(); if (!isObject) { count++; } break; case END_ARRAY: reader.endArray(); writer.endArray(); if (!isObject) { count--; } break; case BEGIN_OBJECT: reader.beginObject(); writer.beginObject(); if (isObject) { count++; } break; case END_OBJECT: reader.endObject(); writer.endObject(); if (isObject) { count--; } break; case NAME: String name = reader.nextName(); writer.name(name); break; case STRING: String stringValue = reader.nextString(); writer.value(stringValue); break; case NUMBER: String numValue = reader.nextString(); writer.value(new BigDecimal(numValue)); break; case BOOLEAN: boolean boolValue = reader.nextBoolean(); writer.value(boolValue); break; case NULL: reader.nextNull(); writer.nullValue(); break; case END_DOCUMENT: return; default: return; } } while (count != 0); }
From source file:com.solidfire.jsvcgen.serialization.ApiServerExceptionTypeAdapter.java
License:Open Source License
/** * {@inheritDoc}/* w w w . j a v a 2 s .co m*/ */ @Override public ApiServerException read(JsonReader in) throws IOException { String name = null; String code = null; String message = null; in.beginObject(); while (in.hasNext()) { if (in.peek() != JsonToken.NAME) { in.skipValue(); continue; } switch (in.nextName()) { case "name": name = in.nextString(); break; case "code": code = in.nextString(); break; case "message": message = in.nextString(); break; } } in.endObject(); return new ApiServerException(name, code, message); }