SubTypeTypeAdapterFactory class
Пакет: com.hypixel.hytale.server.npc.asset.builder.validators
Файл: com/hypixel/hytale/server/npc/asset/builder/validators/SubTypeTypeAdapterFactory.java
implements: TypeAdapterFactory
Поля (4)
| Модификаторы | Тип | Имя |
|---|---|---|
|
final Map |
var3 |
|
Entry |
var3x |
|
JsonObject |
var4 |
|
JsonObject |
var5 |
Методы (6)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
throw new |
IllegalArgumentExceptionthrow new IllegalArgumentException() |
abstract |
throw new |
RuntimeExceptionthrow new RuntimeException("Unsupported") |
|
|
if if(var3x == null) |
|
public T |
readpublic T read(JsonReader var1) |
|
|
return return(new TypeAdapter<T>() |
|
public void |
writepublic void write(JsonWriter var1, @Nonnull T var2x) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.asset.builder.validators;
class="kw">import com.google.gson.Gson;
class="kw">import com.google.gson.JsonElement;
class="kw">import com.google.gson.JsonObject;
class="kw">import com.google.gson.TypeAdapter;
class="kw">import com.google.gson.TypeAdapterFactory;
class="kw">import com.google.gson.internal.Streams;
class="kw">import com.google.gson.reflect.TypeToken;
class="kw">import com.google.gson.stream.JsonReader;
class="kw">import com.google.gson.stream.JsonWriter;
class="kw">import java.io.IOException;
class="kw">import java.util.HashMap;
class="kw">import java.util.Map;
class="kw">import java.util.Map.Entry;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class SubTypeTypeAdapterFactory class="kw">implements TypeAdapterFactory {
class="kw">private class="kw">final Class<?> baseClassType;
class="kw">private class="kw">final String typeFieldName;
class="kw">private class="kw">final Map<Class<?>, String> classToName = new HashMap<>();
class="kw">private SubTypeTypeAdapterFactory(Class<?> var1, String var2) {
this.baseClassType = var1;
this.typeFieldName = var2;
}
@Nonnull
class="kw">public class="kw">static SubTypeTypeAdapterFactory of(Class<?> var0, String var1) {
class="kw">return new SubTypeTypeAdapterFactory(var0, var1);
}
@Nonnull
class="kw">public SubTypeTypeAdapterFactory registerSubType(Class<?> var1, String var2) {
if (this.classToName.containsKey(var1)) {
throw new IllegalArgumentException();
}
if (this.classToName.containsValue(var2)) {
throw new IllegalArgumentException();
}
this.classToName.put(var1, var2);
class="kw">return this;
}
@Nullable
class="kw">public <T> TypeAdapter<T> create(@Nonnull Gson var1, @Nonnull TypeToken<T> var2) {
if (var2.getRawType() != this.baseClassType) {
class="kw">return null;
}
class="kw">final Map var3 = new HashMap<>();
this.classToName.forEach((var3x, var4) -> var3.put((Class<?>)var3x, Map.entry(var4, var1.getDelegateAdapter(this, TypeToken.get(var3x)))));
class="kw">return (new TypeAdapter<T>() {
class="kw">public void write(JsonWriter var1, @Nonnull T var2x) class="kw">throws IOException {
Entry var3x = var3.get(var2x.getClass());
if (var3x == null) {
throw new IllegalArgumentException();
}
JsonObject var4 = new JsonObject();
JsonObject var5 = var3x.getValue().toJsonTree(var2x).getAsJsonObject();
var4.addProperty(SubTypeTypeAdapterFactory.this.typeFieldName, var3x.getKey());
var5.entrySet().forEach(var1x -> var4.add((String)var1x.getKey(), (JsonElement)var1x.getValue()));
Streams.write(var4, var1);
}
class="kw">public T read(JsonReader var1) {
throw new RuntimeException("Unsupported");
}
}).nullSafe();
}
}