ConfigSerializer.java 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package chylex.bettercontrols.config;
  2. import com.google.gson.Gson;
  3. import com.google.gson.GsonBuilder;
  4. import com.google.gson.JsonDeserializationContext;
  5. import com.google.gson.JsonDeserializer;
  6. import com.google.gson.JsonElement;
  7. import com.google.gson.JsonObject;
  8. import com.google.gson.JsonParseException;
  9. import com.google.gson.JsonSerializationContext;
  10. import com.google.gson.JsonSerializer;
  11. import com.google.gson.stream.JsonReader;
  12. import com.google.gson.stream.JsonWriter;
  13. import org.apache.logging.log4j.LogManager;
  14. import org.apache.logging.log4j.Logger;
  15. import java.io.FileNotFoundException;
  16. import java.io.IOException;
  17. import java.lang.reflect.Type;
  18. import java.nio.charset.StandardCharsets;
  19. import java.nio.file.Files;
  20. import java.nio.file.NoSuchFileException;
  21. import java.nio.file.Path;
  22. final class ConfigSerializer implements JsonSerializer<BetterControlsConfig>, JsonDeserializer<BetterControlsConfig>{
  23. private static final Logger logger = LogManager.getLogger();
  24. private static final Gson gson = new GsonBuilder().registerTypeAdapter(BetterControlsConfig.class, new ConfigSerializer()).setPrettyPrinting().create();
  25. private ConfigSerializer(){}
  26. @Override
  27. public JsonElement serialize(final BetterControlsConfig cfg, final Type typeOfSrc, final JsonSerializationContext context){
  28. final JsonObject obj = new JsonObject();
  29. return obj;
  30. }
  31. @Override
  32. public BetterControlsConfig deserialize(final JsonElement json, final Type typeOfT, final JsonDeserializationContext context) throws JsonParseException{
  33. final BetterControlsConfig cfg = new BetterControlsConfig();
  34. final JsonObject obj = json.getAsJsonObject();
  35. return cfg;
  36. }
  37. static void serialize(final Path path, final BetterControlsConfig config){
  38. try(final JsonWriter writer = gson.newJsonWriter(Files.newBufferedWriter(path, StandardCharsets.UTF_8))){
  39. gson.getAdapter(BetterControlsConfig.class).write(writer, config);
  40. }catch(final IOException e){
  41. logger.error("Error saving BetterControls configuration file!", e);
  42. }
  43. }
  44. static BetterControlsConfig deserialize(final Path path){
  45. try(final JsonReader jsonReader = new JsonReader(Files.newBufferedReader(path, StandardCharsets.UTF_8))){
  46. return gson.getAdapter(BetterControlsConfig.class).read(jsonReader);
  47. }catch(final FileNotFoundException | NoSuchFileException ignored){
  48. }catch(final IOException e){
  49. logger.error("Error reading BetterControls configuration file!", e);
  50. }
  51. return new BetterControlsConfig();
  52. }
  53. }