@Override public void serialize(TypeToken<?> type, Text obj, ConfigurationNode value) throws ObjectMappingException { String json = (String) obj.toContainer().get(Queries.JSON).get(); GsonConfigurationLoader gsonLoader = GsonConfigurationLoader.builder() .setSource(() -> new BufferedReader(new StringReader(json))) .build(); try { value.setValue(gsonLoader.load()); } catch (IOException e) { throw new ObjectMappingException(e); } }
@Override public Text deserialize(TypeToken<?> type, ConfigurationNode value) throws ObjectMappingException { StringWriter writer = new StringWriter(); GsonConfigurationLoader gsonLoader = GsonConfigurationLoader.builder() .setIndent(0) .setSink(() -> new BufferedWriter(writer)) .setHeaderMode(HeaderMode.NONE) .build(); try { gsonLoader.save(value); } catch (IOException e) { throw new ObjectMappingException(e); } return Sponge.getDataManager().deserialize(Text.class, DataContainer.createNew().set(Queries.JSON, writer.toString())).get(); }
private static void generateValue(JsonWriter generator, ConfigurationNode node) throws IOException { if (node.hasMapChildren()) { generateObject(generator, node); } else if (node.hasListChildren()) { generateArray(generator, node); } else if (node.getKey() == null && node.getValue() == null) { generator.beginObject(); generator.endObject(); } else { Object value = node.getValue(); if (value instanceof Double) { generator.value((Double) value); } else if (value instanceof Float) { generator.value((Float) value); } else if (value instanceof Long) { generator.value((Long) value); } else if (value instanceof Integer) { generator.value((Integer) value); } else if (value instanceof Boolean) { generator.value((Boolean) value); } else { generator.value(value.toString()); } } }
switch (token) { case BEGIN_OBJECT: parseObject(parser, node); break; case BEGIN_ARRAY: parseArray(parser, node); break; case NUMBER:
private ConfigurationLoader<? extends ConfigurationNode> createLoader(Path file) { return GsonConfigurationLoader.builder() .setPath(file) .setIndent(4) .setLenient(true) .build(); }
@Override protected void loadInternal(ConfigurationNode node, BufferedReader reader) throws IOException { reader.mark(1); if (reader.read() == -1) { return; } reader.reset(); try (JsonReader parser = new JsonReader(reader)) { parser.setLenient(lenient); parseValue(parser, node); } }
private void generateObject(JsonWriter generator, ConfigurationNode node) throws IOException { if (!node.hasMapChildren()) { throw new IOException("Node passed to generateObject does not have map children!"); } generator.beginObject(); for (Map.Entry<Object, ? extends ConfigurationNode> ent : node.getChildrenMap().entrySet()) { generator.name(ent.getKey().toString()); generateValue(generator, ent.getValue()); } generator.endObject(); }
@Override public GsonConfigurationLoader build() { return new GsonConfigurationLoader(this); } }
private static void generateValue(JsonWriter generator, ConfigurationNode node) throws IOException { if (node.hasMapChildren()) { generateObject(generator, node); } else if (node.hasListChildren()) { generateArray(generator, node); } else if (node.getKey() == null && node.getValue() == null) { generator.beginObject(); generator.endObject(); } else { Object value = node.getValue(); if (value instanceof Double) { generator.value((Double) value); } else if (value instanceof Float) { generator.value((Float) value); } else if (value instanceof Long) { generator.value((Long) value); } else if (value instanceof Integer) { generator.value((Integer) value); } else if (value instanceof Boolean) { generator.value((Boolean) value); } else { generator.value(value.toString()); } } }
switch (token) { case BEGIN_OBJECT: parseObject(parser, node); break; case BEGIN_ARRAY: parseArray(parser, node); break; case NUMBER:
@Test public void testLoadingEmptyFile(@TempDirectory.TempDir Path tempDir) throws IOException { final File tempFile = tempDir.resolve("text3.txt").toFile(); tempFile.createNewFile(); ConfigurationLoader<ConfigurationNode> loader = GsonConfigurationLoader.builder() .setFile(tempFile) .build(); loader.load(); }
@Override protected void loadInternal(ConfigurationNode node, BufferedReader reader) throws IOException { reader.mark(1); if (reader.read() == -1) { return; } reader.reset(); try (JsonReader parser = new JsonReader(reader)) { parser.setLenient(lenient); parseValue(parser, node); } }
private static void generateObject(JsonWriter generator, ConfigurationNode node) throws IOException { if (!node.hasMapChildren()) { throw new IOException("Node passed to generateObject does not have map children!"); } generator.beginObject(); for (Map.Entry<Object, ? extends ConfigurationNode> ent : node.getChildrenMap().entrySet()) { generator.name(ent.getKey().toString()); generateValue(generator, ent.getValue()); } generator.endObject(); }
@NonNull @Override public GsonConfigurationLoader build() { return new GsonConfigurationLoader(this); } }
private void generateValue(JsonWriter generator, ConfigurationNode node) throws IOException { if (node.hasMapChildren()) { generateObject(generator, node); } else if (node.hasListChildren()) { generateArray(generator, node); } else if (node.getKey() == null && node.getValue() == null) { generator.beginObject(); generator.endObject(); } else { Object value = node.getValue(); if (value instanceof Double) { generator.value((Double) value); } else if (value instanceof Float) { generator.value((Float) value); } else if (value instanceof Long) { generator.value((Long) value); } else if (value instanceof Integer) { generator.value((Integer) value); } else if (value instanceof Boolean) { generator.value((Boolean) value); } else if (value instanceof byte[]) { //generator.value((byte[]) value); } else { generator.value(value.toString()); } } }
switch (token) { case BEGIN_OBJECT: parseObject(parser, node); break; case BEGIN_ARRAY: parseArray(parser, node); break; case NUMBER:
@Test public void testSavingEmptyFile(@TempDirectory.TempDir Path tempDir) throws IOException { final File tempFile = tempDir.resolve("text2.txt").toFile(); tempFile.createNewFile(); ConfigurationLoader<ConfigurationNode> loader = GsonConfigurationLoader.builder() .setFile(tempFile) .build(); ConfigurationNode n = SimpleConfigurationNode.root(); loader.save(n); }
@Override protected void loadInternal(ConfigurationNode node, BufferedReader reader) throws IOException { reader.mark(1); if (reader.read() == -1) { return; } reader.reset(); try (JsonReader parser = new JsonReader(reader)) { parser.setLenient(lenient); parseValue(parser, node); } }
private static void generateObject(JsonWriter generator, ConfigurationNode node) throws IOException { if (!node.hasMapChildren()) { throw new IOException("Node passed to generateObject does not have map children!"); } generator.beginObject(); for (Map.Entry<Object, ? extends ConfigurationNode> ent : node.getChildrenMap().entrySet()) { generator.name(ent.getKey().toString()); generateValue(generator, ent.getValue()); } generator.endObject(); }
@Override public void serialize(TypeToken<?> type, Text obj, ConfigurationNode value) throws ObjectMappingException { String json = (String) obj.toContainer().get(Queries.JSON).get(); GsonConfigurationLoader gsonLoader = GsonConfigurationLoader.builder() .setSource(() -> new BufferedReader(new StringReader(json))) .build(); try { value.setValue(gsonLoader.load()); } catch (IOException e) { throw new ObjectMappingException(e); } }