From d081a6ee92db02408eb23001a2c952dbb40a9ada Mon Sep 17 00:00:00 2001 From: yushijinhun Date: Sun, 18 Feb 2018 15:28:48 +0800 Subject: [PATCH] Remove Lang.requireJsonNonNull(), use JsonUtils.fromNonNullJson() instead --- .../jackhuang/hmcl/game/HMCLModpackManager.java | 7 +++---- .../auth/yggdrasil/AuthlibInjectorBuildInfo.java | 5 ++--- .../org/jackhuang/hmcl/mod/CurseManifest.java | 6 ++---- .../java/org/jackhuang/hmcl/util/JsonUtils.java | 15 +++++++++++++++ .../main/java/org/jackhuang/hmcl/util/Lang.java | 12 ------------ 5 files changed, 22 insertions(+), 23 deletions(-) create mode 100644 HMCLCore/src/main/java/org/jackhuang/hmcl/util/JsonUtils.java diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLModpackManager.java b/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLModpackManager.java index cc4d38111..b247a2c01 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLModpackManager.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/game/HMCLModpackManager.java @@ -20,8 +20,7 @@ package org.jackhuang.hmcl.game; import com.google.gson.JsonParseException; import org.jackhuang.hmcl.mod.Modpack; import org.jackhuang.hmcl.util.CompressingUtils; -import org.jackhuang.hmcl.util.Constants; -import org.jackhuang.hmcl.util.Lang; +import org.jackhuang.hmcl.util.JsonUtils; import org.jackhuang.hmcl.util.StringUtils; import java.io.File; @@ -82,9 +81,9 @@ public final class HMCLModpackManager { */ public static Modpack readHMCLModpackManifest(File file) throws IOException, JsonParseException { String manifestJson = CompressingUtils.readTextZipEntry(file, "modpack.json"); - Modpack manifest = Lang.requireJsonNonNull(Constants.GSON.fromJson(manifestJson, Modpack.class)); + Modpack manifest = JsonUtils.fromNonNullJson(manifestJson, Modpack.class); String gameJson = CompressingUtils.readTextZipEntry(file, "minecraft/pack.json"); - Version game = Lang.requireJsonNonNull(Constants.GSON.fromJson(gameJson, Version.class)); + Version game = JsonUtils.fromNonNullJson(gameJson, Version.class); if (game.getJar() == null) if (StringUtils.isBlank(manifest.getVersion())) throw new JsonParseException("Cannot recognize the game version of modpack " + file + "."); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/yggdrasil/AuthlibInjectorBuildInfo.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/yggdrasil/AuthlibInjectorBuildInfo.java index f27b9650b..0d3ed21f8 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/yggdrasil/AuthlibInjectorBuildInfo.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/yggdrasil/AuthlibInjectorBuildInfo.java @@ -1,9 +1,8 @@ package org.jackhuang.hmcl.auth.yggdrasil; import com.google.gson.JsonParseException; -import org.jackhuang.hmcl.util.Constants; import org.jackhuang.hmcl.util.Immutable; -import org.jackhuang.hmcl.util.Lang; +import org.jackhuang.hmcl.util.JsonUtils; import org.jackhuang.hmcl.util.NetworkUtils; import java.io.IOException; @@ -36,7 +35,7 @@ public final class AuthlibInjectorBuildInfo { } public static AuthlibInjectorBuildInfo requestBuildInfo(String updateUrl) throws IOException, JsonParseException { - return Lang.requireJsonNonNull(Constants.GSON.fromJson(NetworkUtils.doGet(NetworkUtils.toURL(updateUrl)), AuthlibInjectorBuildInfo.class)); + return JsonUtils.fromNonNullJson(NetworkUtils.doGet(NetworkUtils.toURL(updateUrl)), AuthlibInjectorBuildInfo.class); } public static final String UPDATE_URL = "https://authlib-injector.to2mbn.org/api/buildInfo"; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/CurseManifest.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/CurseManifest.java index 90b9ecab6..1e013dbaf 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/CurseManifest.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/CurseManifest.java @@ -20,15 +20,13 @@ package org.jackhuang.hmcl.mod; import com.google.gson.JsonParseException; import com.google.gson.annotations.SerializedName; import org.jackhuang.hmcl.util.CompressingUtils; -import org.jackhuang.hmcl.util.Constants; import org.jackhuang.hmcl.util.Immutable; -import org.jackhuang.hmcl.util.Lang; +import org.jackhuang.hmcl.util.JsonUtils; import java.io.File; import java.io.IOException; import java.util.Collections; import java.util.List; -import java.util.Optional; /** * @@ -120,7 +118,7 @@ public final class CurseManifest { */ public static Modpack readCurseForgeModpackManifest(File f) throws IOException, JsonParseException { String json = CompressingUtils.readTextZipEntry(f, "manifest.json"); - CurseManifest manifest = Lang.requireJsonNonNull(Constants.GSON.fromJson(json, CurseManifest.class)); + CurseManifest manifest = JsonUtils.fromNonNullJson(json, CurseManifest.class); return new Modpack(manifest.getName(), manifest.getAuthor(), manifest.getVersion(), manifest.getMinecraft().getGameVersion(), CompressingUtils.readTextZipEntryQuietly(f, "modlist.html").orElse( "No description"), manifest); } diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/JsonUtils.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/JsonUtils.java new file mode 100644 index 000000000..de5fe0a0b --- /dev/null +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/JsonUtils.java @@ -0,0 +1,15 @@ +package org.jackhuang.hmcl.util; + +import com.google.gson.JsonParseException; + +public final class JsonUtils { + + private JsonUtils() {} + + public static T fromNonNullJson(String json, Class classOfT) throws JsonParseException { + T parsed = Constants.GSON.fromJson(json, classOfT); + if (parsed == null) + throw new JsonParseException("Json object cannot be null."); + return parsed; + } +} diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java index 96486d321..57e08b095 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Lang.java @@ -5,8 +5,6 @@ */ package org.jackhuang.hmcl.util; -import com.google.gson.JsonParseException; - import java.util.*; import java.util.concurrent.TimeUnit; import java.util.function.Consumer; @@ -22,16 +20,6 @@ public final class Lang { private Lang() { } - public static T requireJsonNonNull(T obj) throws JsonParseException { - return requireJsonNonNull(obj, "Json object cannot be null."); - } - - public static T requireJsonNonNull(T obj, String message) throws JsonParseException { - if (obj == null) - throw new JsonParseException(message); - return obj; - } - @SafeVarargs public static Map mapOf(Pair... pairs) { HashMap map = new HashMap<>();