package org.mafagafogigante.dungeon.io; import com.eclipsesource.json.Json; import com.eclipsesource.json.JsonObject; import org.jetbrains.annotations.NotNull; import java.io.IOException; import java.io.Reader; public class JsonObjectFactory { private static final String JSON_EXTENSION = ".json"; /** * Makes a new JsonObject from the resource file pointed to by the specified filename. * * @param filename the name of the JSON file, must end with .json, not null * @return a JsonObject that reads from the specified file * @throws IllegalFilenameExtensionException if the provided filename does not end with .json */ public static JsonObject makeJsonObject(@NotNull String filename) { if (!filename.endsWith(JSON_EXTENSION)) { throw new IllegalFilenameExtensionException("filename must end with " + JSON_EXTENSION + "."); } // Using a BufferedReader here does not improve performance as the library is already buffered. try (Reader reader = ResourceStreamFactory.getInputStreamReader(filename)) { return Json.parse(reader).asObject(); } catch (IOException fatal) { throw new RuntimeException(fatal); } } public static class IllegalFilenameExtensionException extends IllegalArgumentException { IllegalFilenameExtensionException(@NotNull String string) { super(string); } } }