Example usage for com.google.gson.stream JsonReader peek

List of usage examples for com.google.gson.stream JsonReader peek

Introduction

In this page you can find the example usage for com.google.gson.stream JsonReader peek.

Prototype

public JsonToken peek() throws IOException 

Source Link

Document

Returns the type of the next token without consuming it.

Usage

From source file:com.pcloud.sdk.internal.networking.serialization.DateTypeAdapter.java

License:Apache License

@Override
public Date read(JsonReader in) throws IOException {
    if (in.peek() == JsonToken.NUMBER) {
        return new Date(in.nextLong() * 1000);
    }/*from ww w.j a v  a  2s.com*/
    return null;
}

From source file:com.quarterfull.newsAndroid.reader.owncloud.OwnCloudReaderMethods.java

License:Open Source License

private static JSONObject getJSONObjectFromReader(JsonReader jsonReader) {
    JSONObject jObj = new JSONObject();
    JsonToken tokenInstance;/*from  w w  w.  j  a  v a  2 s  . com*/
    try {
        tokenInstance = jsonReader.peek();
        if (tokenInstance == JsonToken.BEGIN_OBJECT)
            jsonReader.beginObject();
        else if (tokenInstance == JsonToken.BEGIN_ARRAY)
            jsonReader.beginArray();

        while (jsonReader.hasNext()) {
            JsonToken token;
            String name;
            try {
                name = jsonReader.nextName();
                token = jsonReader.peek();

                //Log.d(TAG, token.toString());

                switch (token) {
                case NUMBER:
                    jObj.put(name, jsonReader.nextLong());
                    break;
                case NULL:
                    jsonReader.skipValue();
                    break;
                case BOOLEAN:
                    jObj.put(name, jsonReader.nextBoolean());
                    break;
                case BEGIN_OBJECT:
                    //jsonReader.beginObject();
                    jObj.put(name, getJSONObjectFromReader(jsonReader));
                    //jsonReader.endObject();
                    break;
                case BEGIN_ARRAY:
                    jsonReader.skipValue();
                    break;
                default:
                    jObj.put(name, jsonReader.nextString());
                }
            } catch (Exception ex) {
                ex.printStackTrace();
                jsonReader.skipValue();
            }
        }

        if (tokenInstance == JsonToken.BEGIN_OBJECT)
            jsonReader.endObject();
        else if (tokenInstance == JsonToken.BEGIN_ARRAY)
            jsonReader.endArray();

        return jObj;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

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();/*from ww w.j av a 2 s  . co m*/
    while (reader.hasNext()) {
        Timeline timeline = registry.createTimeline();
        timelines.put(reader.nextName(), timeline);
        reader.beginArray();
        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.JsonFeedConsumer.java

License:Apache License

protected static void readInlineCount(final JsonReader reader, final FeedMetadataImpl feedMetadata)
        throws IOException, EntityProviderException {
    if (reader.peek() == JsonToken.STRING && feedMetadata.getInlineCount() == null) {
        int inlineCount;
        try {// w  w w  .j  av  a2 s . c  o  m
            inlineCount = reader.nextInt();
        } catch (final NumberFormatException e) {
            throw new EntityProviderException(EntityProviderException.INLINECOUNT_INVALID.addContent(""), e);
        }
        if (inlineCount >= 0) {
            feedMetadata.setInlineCount(inlineCount);
        } else {
            throw new EntityProviderException(
                    EntityProviderException.INLINECOUNT_INVALID.addContent(inlineCount));
        }
    } else {
        throw new EntityProviderException(
                EntityProviderException.INLINECOUNT_INVALID.addContent(reader.peek()));
    }
}

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   w ww  .  j av  a2s  .  com*/
 * @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 w  w  .java2 s  .  c  o  m*/
 * @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();//  ww w.  j  a v a 2 s . c  om
    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 a 2s. c o m*/
        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

private Object readSimpleProperty(final JsonReader reader, final EntityPropertyInfo entityPropertyInfo,
        final Object typeMapping) throws EdmException, EntityProviderException, IOException {
    final EdmSimpleType type = (EdmSimpleType) entityPropertyInfo.getType();
    Object value = null;//from  w  w  w  . ja v a2 s .co  m
    final JsonToken tokenType = reader.peek();
    if (tokenType == JsonToken.NULL) {
        reader.nextNull();
    } else {
        switch (EdmSimpleTypeKind.valueOf(type.getName())) {
        case Boolean:
            if (tokenType == JsonToken.BOOLEAN) {
                value = reader.nextBoolean();
                value = value.toString();
            } else {
                throw new EntityProviderException(EntityProviderException.INVALID_PROPERTY_VALUE
                        .addContent(entityPropertyInfo.getName()));
            }
            break;
        case Byte:
        case SByte:
        case Int16:
        case Int32:
            if (tokenType == JsonToken.NUMBER) {
                value = reader.nextInt();
                value = value.toString();
            } else {
                throw new EntityProviderException(EntityProviderException.INVALID_PROPERTY_VALUE
                        .addContent(entityPropertyInfo.getName()));
            }
            break;
        default:
            if (tokenType == JsonToken.STRING) {
                value = reader.nextString();
            } else {
                throw new EntityProviderException(EntityProviderException.INVALID_PROPERTY_VALUE
                        .addContent(entityPropertyInfo.getName()));
            }
            break;
        }
    }

    final Class<?> typeMappingClass = typeMapping == null ? type.getDefaultType() : (Class<?>) typeMapping;
    return type.valueOfString((String) value, EdmLiteralKind.JSON, entityPropertyInfo.getFacets(),
            typeMappingClass);
}

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  . j  av a2  s  .  c  o  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;
}