package nl.us2.cloudpelican.stormprocessor; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; /** * Created by robin on 30/06/15. */ public class Settings implements Serializable { private static final long serialVersionUID = 7526472295622776147L; private static JsonObject data; private String _json; public void load(JsonObject data) { this.data = data; } public String get(String k) { if (data.has(k) && data.get(k).isJsonPrimitive()) { return data.get(k).getAsString(); } return null; } public String getOrDefault(String k, String d) { if (data.has(k) && data.get(k).isJsonPrimitive()) { return data.get(k).getAsString(); } return d; } /** * Always treat de-serialization as a full-blown constructor, by * validating the final state of the de-serialized object. */ private void readObject( ObjectInputStream aInputStream ) throws ClassNotFoundException, IOException { //always perform the default de-serialization first aInputStream.defaultReadObject(); // restore object JsonParser jp = new JsonParser(); this.data = jp.parse(_json).getAsJsonObject(); } private void writeObject( ObjectOutputStream aOutputStream ) throws IOException { //perform the default serialization for all non-transient, non-static fields _json = this.data.toString(); aOutputStream.defaultWriteObject(); } }