JsonResourceLoader class

Пакет: com.hypixel.hytale.procedurallib.json

Файл: com/hypixel/hytale/procedurallib/json/JsonResourceLoader.java

implements: AssetLoader<T>

Поля (5)

МодификаторыТипИмя
final Class<T> type
JsonReader var2
JsonElement var3
JsonElement var4
var4

Методы (2)

МодификаторыВозвратСигнатура
abstract throw new IOExceptionthrow new IOException("Invalid JSON element: null")
if if(var3 == JsonNull.INSTANCE)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.procedurallib.json;

class="kw">import com.google.gson.JsonElement;
class="kw">import com.google.gson.JsonNull;
class="kw">import com.google.gson.JsonParser;
class="kw">import com.google.gson.Strictness;
class="kw">import com.google.gson.stream.JsonReader;
class="kw">import com.hypixel.hytale.procedurallib.file.AssetLoader;
class="kw">import java.io.BufferedReader;
class="kw">import java.io.IOException;
class="kw">import java.io.InputStream;
class="kw">import java.io.InputStreamReader;
class="kw">import java.nio.charset.StandardCharsets;
class="kw">import java.util.function.Function;
class="kw">import java.util.function.Predicate;
class="kw">import javax.annotation.Nonnull;

class="kw">public class JsonResourceLoader<T class="kw">extends JsonElement> class="kw">implements AssetLoader<T> {
   class="kw">private class="kw">final Class<T> type;
   class="kw">private class="kw">final Predicate<JsonElement> predicate;
   class="kw">private class="kw">final Function<JsonElement, T> mapper;

   class="kw">public JsonResourceLoader(@Nonnull Class<T> var1, @Nonnull Predicate<JsonElement> var2, @Nonnull Function<JsonElement, T> var3) {
      this.type = var1;
      this.predicate = var2;
      this.mapper = var3;
   }

   @Override
   class="kw">public Class<T> type() {
      class="kw">return this.type;
   }

   @Nonnull
   class="kw">public T load(@Nonnull InputStream var1) class="kw">throws IOException {
      JsonReader var2 = new JsonReader(new BufferedReader(new InputStreamReader(var1, StandardCharsets.UTF_8)));

      JsonElement var4;
      try {
         var2.setStrictness(Strictness.LENIENT);
         JsonElement var3 = JsonParser.parseReader(var2);
         if (var3 == JsonNull.INSTANCE) {
            throw new IOException("Invalid JSON element: null");
         }

         if (!this.predicate.test(var3)) {
            throw new IOException("Invalid JSON element type. Expected: " + this.type.getSimpleName());
         }

         var4 = this.mapper.apply(var3);
      } catch (Throwable var6) {
         try {
            var2.close();
         } catch (Throwable var5) {
            var6.addSuppressed(var5);
         }

         throw var6;
      }

      var2.close();
      class="kw">return (T)var4;
   }
}