package codeine.utils; import java.lang.reflect.Type; import javax.inject.Inject; import org.apache.log4j.Logger; import com.google.gson.Gson; import com.google.gson.JsonSyntaxException; public class JsonFileUtils { private static final Logger log = Logger.getLogger(JsonFileUtils.class); private Gson gson; @Inject public JsonFileUtils(Gson gson) { super(); this.gson = gson; } public <T> T getConfFromFile(String file, Class<T> clazz) { log.info("parsing file " + file); if (!FilesUtils.exists(file)) { return ReflectionUtils.newInstance(clazz); } return JsonUtils.fromJsonFromFile(file, clazz); } public <T> T getConfFromFile(String file, Type clazz, T defaultValue) { log.info("parsing file " + file); if (!FilesUtils.exists(file)) { return defaultValue; } T $ = null; try { $ = JsonUtils.fromJsonFromFile(file, clazz); } catch (JsonSyntaxException e) { e.printStackTrace(); } return $ == null ? defaultValue : $; } public <T> void setContent(String file, T json) { TextFileUtils.setContents(file, gson.toJson(json)); } @SuppressWarnings("unchecked") public <T> T getConfFromFile(String file, T defaultValue) { T $ = null; try { $ = (T) getConfFromFile(file, defaultValue.getClass()); } catch (Exception e) { log.info("could not get conf from file, will use default " + e.getMessage()); log.debug("e", e); } return $ == null ? defaultValue : $; } }