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;
}
}