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

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

Introduction

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

Prototype

public void nextNull() throws IOException 

Source Link

Document

Consumes the next token from the JSON stream and asserts that it is a literal null.

Usage

From source file:com.patloew.countries.util.JsonUtils.java

License:Apache License

public static Integer readNullSafeInteger(JsonReader reader) throws IOException {
    if (reader.peek() == JsonToken.NULL) {
        reader.nextNull();
        return null;
    } else {/*w ww.  jav a2s  .c o m*/
        return reader.nextInt();
    }
}

From source file:com.patloew.countries.util.JsonUtils.java

License:Apache License

public static Double readNullSafeDouble(JsonReader reader) throws IOException {
    if (reader.peek() == JsonToken.NULL) {
        reader.nextNull();
        return null;
    } else {/*from  w ww. j  a  v  a 2  s  .com*/
        return reader.nextDouble();
    }
}

From source file:com.patloew.countries.util.JsonUtils.java

License:Apache License

public static Float readNullSafeFloat(JsonReader reader) throws IOException {
    if (reader.peek() == JsonToken.NULL) {
        reader.nextNull();
        return null;
    } else {/*  w w  w .  j  a v  a2 s  .  co m*/
        return (float) reader.nextDouble();
    }
}

From source file:com.patloew.countries.util.JsonUtils.java

License:Apache License

public static Boolean readNullSafeBoolean(JsonReader reader) throws IOException {
    if (reader.peek() == JsonToken.NULL) {
        reader.nextNull();
        return null;
    } else {// w  w w  . j  a  v a 2  s .  co  m
        return reader.nextBoolean();
    }
}

From source file:com.patloew.countries.util.RealmStringListTypeAdapter.java

License:Apache License

@Override
public RealmList<RealmString> read(JsonReader in) throws IOException {
    RealmList<RealmString> realmStrings = new RealmList<>();

    in.beginArray();/*from w  w  w  .  j a v  a 2 s  .  com*/

    while (in.hasNext()) {
        if (in.peek() == JsonToken.NULL) {
            in.nextNull();
        } else {
            RealmString realmString = new RealmString();
            realmString.value = in.nextString();
            realmStrings.add(realmString);
        }
    }

    in.endArray();

    return realmStrings;
}

From source file:com.patloew.countries.util.RealmStringMapEntryListTypeAdapter.java

License:Apache License

@Override
public RealmList<RealmStringMapEntry> read(JsonReader in) throws IOException {
    RealmList<RealmStringMapEntry> mapEntries = new RealmList<>();

    in.beginObject();/*from   ww w .ja  v a  2 s  .c  om*/

    while (in.hasNext()) {
        RealmStringMapEntry realmStringMapEntry = new RealmStringMapEntry();
        realmStringMapEntry.key = in.nextName();

        if (in.peek() == JsonToken.NULL) {
            in.nextNull();
            realmStringMapEntry.value = null;
        } else {
            realmStringMapEntry.value = in.nextString();
        }

        mapEntries.add(realmStringMapEntry);
    }

    in.endObject();

    return mapEntries;
}

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.jav a2 s  .c  o 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.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;/*w w w .j  a v a2  s  . c om*/
    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();
        if (complexPropertyInfo.isMandatory()) {
            throw new EntityProviderException(
                    EntityProviderException.INVALID_PROPERTY_VALUE.addContent(complexPropertyInfo.getName()));
        }/*from ww  w  .ja  va2s .c  o m*/
        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.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 {//ww w. j a va2  s.c  o 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);
}