List of usage examples for com.google.gson.stream JsonReader peek
public JsonToken peek() throws IOException
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; }