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:net.feed_the_beast.launcher.json.EnumAdaptorFactory.java

License:Apache License

@SuppressWarnings("unchecked")
@Override/*from   w w w .  j  av a  2 s.com*/
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
    if (!type.getRawType().isEnum()) {
        return null;
    }
    final Map<String, T> map = Maps.newHashMap();
    for (T c : (T[]) type.getRawType().getEnumConstants()) {
        map.put(c.toString().toLowerCase(Locale.US), c);
    }

    return new TypeAdapter<T>() {
        @Override
        public T read(JsonReader reader) throws IOException {
            if (reader.peek() == JsonToken.NULL) {
                reader.nextNull();
                return null;
            }
            String name = reader.nextString();
            if (name == null) {
                return null;
            }
            return map.get(name.toLowerCase(Locale.US));
        }

        @Override
        public void write(JsonWriter writer, T value) throws IOException {
            if (value == null) {
                writer.nullValue();
            } else {
                writer.value(value.toString().toLowerCase(Locale.US));
            }
        }
    };
}

From source file:net.friendscraft_2_launch.launcher.json.EnumAdaptorFactory.java

License:Apache License

@SuppressWarnings("unchecked")
@Override/*from   w w  w . j a v  a 2s . c o  m*/
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
    if (!type.getRawType().isEnum())
        return null;
    final Map<String, T> map = new HashMap<String, T>();
    for (T c : (T[]) type.getRawType().getEnumConstants()) {
        map.put(c.toString().toLowerCase(Locale.US), c);
    }

    return new TypeAdapter<T>() {
        @Override
        public T read(JsonReader reader) throws IOException {
            if (reader.peek() == JsonToken.NULL) {
                reader.nextNull();
                return null;
            }
            String name = reader.nextString();
            if (name == null)
                return null;
            return map.get(name.toLowerCase(Locale.US));
        }

        @Override
        public void write(JsonWriter writer, T value) throws IOException {
            if (value == null) {
                writer.nullValue();
            } else {
                writer.value(value.toString().toLowerCase(Locale.US));
            }
        }
    };
}

From source file:net.minecrell.workbench.tools.util.gson.LowerCaseEnumTypeAdapterFactory.java

License:Open Source License

@Override
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
    @SuppressWarnings("unchecked")
    Class<T> rawType = (Class<T>) type.getRawType();
    if (!rawType.isEnum()) {
        return null;
    }/*from  ww  w.j  ava2s  .c  o  m*/

    final Map<String, T> lookup = new HashMap<>();
    for (T constant : rawType.getEnumConstants()) {
        lookup.put(toLowerCase(constant), constant);
    }

    return new TypeAdapter<T>() {

        @Override
        public void write(JsonWriter out, T value) throws IOException {
            if (value == null) {
                out.nullValue();
            } else {
                out.value(toLowerCase(value));
            }
        }

        @Override
        public T read(JsonReader reader) throws IOException {
            if (reader.peek() == JsonToken.NULL) {
                reader.nextNull();
                return null;
            } else {
                return lookup.get(reader.nextString());
            }
        }
    };
}

From source file:net.oneandone.stool.configuration.adapter.ExtensionsAdapter.java

License:Apache License

@Override
public Extensions read(JsonReader in) throws IOException {
    Extensions extensions;//from  w w w  . j  ava 2 s  . co m
    String str;
    String name;
    Extension extension;
    Class<? extends Extension> clazz;

    extensions = new Extensions();
    in.beginObject();
    while (in.peek() == JsonToken.NAME) {
        str = in.nextName();
        name = str.substring(1);
        clazz = factory.type(name);
        if (clazz == null) {
            throw new IOException("extension not found: " + name);
        }
        extension = gson.fromJson(in, clazz);
        extensions.add(name, str.startsWith("+"), extension);
    }
    in.endObject();
    return extensions;
}

From source file:net.oneandone.stool.configuration.adapter.FileNodeTypeAdapter.java

License:Apache License

@Override
public FileNode read(JsonReader in) throws IOException {
    if (in.peek() == JsonToken.NULL) {
        in.nextNull();/*  ww  w. ja va 2  s.co m*/
        return null;
    }
    return world.file(in.nextString());
}

From source file:net.technicpack.launchercore.util.LowerCaseEnumTypeAdapterFactory.java

License:Open Source License

@SuppressWarnings("unchecked")
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
    Class rawType = type.getRawType();
    if (!rawType.isEnum()) {
        return null;
    }/*from   ww w  .  ja v  a2 s  . c om*/

    final Map<String, T> lowercaseToConstant = new HashMap<String, T>();
    for (Object constant : rawType.getEnumConstants()) {
        lowercaseToConstant.put(toLowercase(constant), (T) constant);
    }

    return new TypeAdapter<T>() {
        public void write(JsonWriter out, T value) throws IOException {
            if (value == null)
                out.nullValue();
            else
                out.value(LowerCaseEnumTypeAdapterFactory.this.toLowercase(value));
        }

        public T read(JsonReader reader) throws IOException {
            if (reader.peek() == JsonToken.NULL) {
                reader.nextNull();
                return null;
            }
            return lowercaseToConstant.get(reader.nextString());
        }
    };
}

From source file:ninja.leaping.configurate.gson.GsonConfigurationLoader.java

License:Apache License

private void parseValue(JsonReader parser, ConfigurationNode node) throws IOException {
    JsonToken token = parser.peek();
    switch (token) {
    case BEGIN_OBJECT:
        parseObject(parser, node);//from   w ww  .  j  av  a 2  s . co  m
        break;
    case BEGIN_ARRAY:
        parseArray(parser, node);
        break;
    case NUMBER:
        double nextDouble = parser.nextDouble();
        int nextInt = (int) nextDouble;
        long nextLong = (long) nextDouble;
        if (nextInt == nextDouble) {
            node.setValue(nextInt); // They don't do much for us here in Gsonland
        } else if (nextLong == nextDouble) {
            node.setValue(nextLong);
        } else {
            node.setValue(nextDouble);
        }
        break;
    case STRING:
        node.setValue(parser.nextString());
        break;
    case BOOLEAN:
        node.setValue(parser.nextBoolean());
        break;
    case NULL: // Ignored values
    case NAME:
        break;
    default:
        throw new IOException("Unsupported token type: " + token);
    }
}

From source file:ninja.leaping.configurate.gson.GsonConfigurationLoader.java

License:Apache License

private void parseArray(JsonReader parser, ConfigurationNode node) throws IOException {
    parser.beginArray();/*from w  w  w .  j av a 2  s. com*/
    JsonToken token;
    while ((token = parser.peek()) != null) {
        switch (token) {
        case END_ARRAY:
            parser.endArray();
            return;
        default:
            parseValue(parser, node.getAppendedNode());
        }
    }
    throw new JsonParseException("Reached end of stream with unclosed array at!");

}

From source file:ninja.leaping.configurate.gson.GsonConfigurationLoader.java

License:Apache License

private void parseObject(JsonReader parser, ConfigurationNode node) throws IOException {
    parser.beginObject();// ww  w  .  ja  v a  2 s.c  o  m
    JsonToken token;
    while ((token = parser.peek()) != null) {
        switch (token) {
        case END_OBJECT:
        case END_DOCUMENT:
            parser.endObject();
            return;
        case NAME:
            parseValue(parser, node.getNode(parser.nextName()));
            break;
        default:
            throw new JsonParseException("Received improper object value " + token);
        }
    }
    throw new JsonParseException("Reached end of stream with unclosed object!");
}

From source file:nz.ac.otago.psyanlab.common.model.util.LongSparseArrayGsonAdapter.java

License:Open Source License

@Override
public LongSparseArray<T> read(JsonReader in) throws IOException {
    if (in.peek() == JsonToken.NULL) {
        in.nextNull();//from   www . ja v  a  2 s.  c o  m
        return null;
    }
    LongSparseArray<Object> temp = mGson.fromJson(in, mTypeOfLongSparseArrayOfObject);
    LongSparseArray<T> result = new LongSparseArray<T>(temp.size());
    long key;
    JsonElement tElement;
    for (int i = 0; i < temp.size(); i++) {
        key = temp.keyAt(i);
        tElement = mGson.toJsonTree(temp.get(key), new TypeToken<T>() {
        }.getType());
        result.put(key, mGson.fromJson(tElement, mTClazz));
    }
    return result;
}