[base] Allow specifying custom adapters
This commit is contained in:
parent
e0fa641ac3
commit
2e3d0f0e70
|
@ -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())
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
package io.gitlab.jfronny.libjf.gson;
|
||||
|
||||
import com.google.gson.GsonBuilder;
|
||||
|
||||
public interface GsonAdapter {
|
||||
GsonBuilder apply(GsonBuilder builder);
|
||||
}
|
Loading…
Reference in New Issue