[base] Allow specifying custom adapters

This commit is contained in:
Johannes Frohnmeyer 2022-03-30 21:27:43 +02:00
parent e0fa641ac3
commit 2e3d0f0e70
Signed by: Johannes
GPG Key ID: E76429612C2929F4
2 changed files with 14 additions and 1 deletions

View File

@ -3,6 +3,8 @@ package io.gitlab.jfronny.libjf;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import io.gitlab.jfronny.libjf.gson.HiddenAnnotationExclusionStrategy;
import io.gitlab.jfronny.libjf.gson.GsonAdapter;
import net.fabricmc.loader.api.FabricLoader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -13,7 +15,11 @@ public class LibJf {
}
public static final String MOD_ID = "libjf";
public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID);
public static final Gson GSON = new GsonBuilder()
public static final Gson GSON = FabricLoader.getInstance()
.getEntrypoints(MOD_ID + ":gson_adapter", GsonAdapter.class)
.stream()
.reduce(adapter -> adapter, (left, right) -> adapter -> left.apply(right.apply(adapter)))
.apply(new GsonBuilder())
.excludeFieldsWithModifiers(Modifier.TRANSIENT)
.excludeFieldsWithModifiers(Modifier.PRIVATE)
.addSerializationExclusionStrategy(new HiddenAnnotationExclusionStrategy())

View File

@ -0,0 +1,7 @@
package io.gitlab.jfronny.libjf.gson;
import com.google.gson.GsonBuilder;
public interface GsonAdapter {
GsonBuilder apply(GsonBuilder builder);
}