diff --git a/gradle.properties b/gradle.properties index 33e4149..5e51313 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,7 +15,7 @@ curseforge_id=482600 curseforge_optional_dependencies=fabric-api fabric_version=0.60.0+1.19.2 -commons_version=2022.9.15+12-51-21 +commons_version=2022.9.25+10-22-41 modmenu_version=4.0.6 asm_version=9.3 diff --git a/libjf-base/src/main/java/io/gitlab/jfronny/libjf/HttpUtils.java b/libjf-base/src/main/java/io/gitlab/jfronny/libjf/HttpUtils.java index 075f970..edd417d 100644 --- a/libjf-base/src/main/java/io/gitlab/jfronny/libjf/HttpUtils.java +++ b/libjf-base/src/main/java/io/gitlab/jfronny/libjf/HttpUtils.java @@ -1,25 +1,22 @@ package io.gitlab.jfronny.libjf; -import io.gitlab.jfronny.commons.serialize.gson.api.*; +import io.gitlab.jfronny.commons.serialize.gson.api.v1.GsonHolders; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; +import java.io.*; import java.lang.reflect.Type; -import java.net.URI; -import java.net.URISyntaxException; -import java.net.URLEncoder; -import java.net.http.HttpClient; -import java.net.http.HttpRequest; -import java.net.http.HttpResponse; +import java.net.*; +import java.net.http.*; import java.nio.charset.StandardCharsets; -import java.util.List; import java.util.Map; import java.util.Optional; import java.util.regex.Pattern; import java.util.stream.Collectors; import java.util.stream.Stream; +/** + * @deprecated User the commons HttpUtils instead + */ +@Deprecated public class HttpUtils { private static final HttpClient CLIENT = HttpClient.newBuilder().followRedirects(HttpClient.Redirect.ALWAYS).build(); @@ -86,7 +83,7 @@ public class HttpUtils { public Request bodyJson(Object object) { builder.header("Content-Type", "application/json"); - builder.method(method.name(), HttpRequest.BodyPublishers.ofString(GsonHolder.getGson().toJson(object))); + builder.method(method.name(), HttpRequest.BodyPublishers.ofString(GsonHolders.API.getGson().toJson(object))); method = null; return this; @@ -144,7 +141,7 @@ public class HttpUtils { public T sendJson(Type type) throws IOException { InputStream in = _send("application/json", HttpResponse.BodyHandlers.ofInputStream()); - return in == null ? null : GsonHolder.getGson().fromJson(new InputStreamReader(in), type); + return in == null ? null : GsonHolders.API.getGson().fromJson(new InputStreamReader(in), type); } private String getString(Object a) throws IOException { diff --git a/libjf-base/src/main/java/io/gitlab/jfronny/libjf/LibJf.java b/libjf-base/src/main/java/io/gitlab/jfronny/libjf/LibJf.java index f274c9f..03c713e 100644 --- a/libjf-base/src/main/java/io/gitlab/jfronny/libjf/LibJf.java +++ b/libjf-base/src/main/java/io/gitlab/jfronny/libjf/LibJf.java @@ -1,26 +1,29 @@ package io.gitlab.jfronny.libjf; import io.gitlab.jfronny.commons.log.*; -import io.gitlab.jfronny.commons.serialize.gson.api.GsonHolder; +import io.gitlab.jfronny.commons.serialize.gson.api.v1.GsonHolders; import io.gitlab.jfronny.libjf.gson.GsonAdapter; import io.gitlab.jfronny.libjf.gson.HiddenAnnotationExclusionStrategy; import net.fabricmc.api.ModInitializer; import net.fabricmc.loader.api.FabricLoader; +import net.fabricmc.loader.api.entrypoint.EntrypointContainer; +import net.fabricmc.loader.api.metadata.ModMetadata; public class LibJf implements ModInitializer { public static final String MOD_ID = "libjf"; public static final Logger LOGGER = Logger.forName(MOD_ID); static { - GsonHolder.modifyBuilder(builder -> { - builder.serializeSpecialFloatingPointValues(); - builder.setOmitQuotes(); - for (GsonAdapter adapter : FabricLoader.getInstance().getEntrypoints(MOD_ID + ":gson_adapter", GsonAdapter.class)) { - adapter.apply(builder); + //TODO remove all uses of this from dependents, then remove this + GsonHolders.modifyBuilder(builder -> { + for (EntrypointContainer container : FabricLoader.getInstance().getEntrypointContainers(MOD_ID + ":gson_adapter", GsonAdapter.class)) { + ModMetadata meta = container.getProvider().getMetadata(); + LOGGER.warn("Mod " + meta.getName() + " (" + meta.getId() + ") uses the now deprecated libjf:gson_adapter. Please update!"); + container.getEntrypoint().apply(builder); } }); HiddenAnnotationExclusionStrategy.register(); - GsonHolder.register(); + GsonHolders.registerSerializer(); } @Override diff --git a/libjf-base/src/main/java/io/gitlab/jfronny/libjf/gson/HiddenAnnotationExclusionStrategy.java b/libjf-base/src/main/java/io/gitlab/jfronny/libjf/gson/HiddenAnnotationExclusionStrategy.java index 1894cad..d8559d5 100644 --- a/libjf-base/src/main/java/io/gitlab/jfronny/libjf/gson/HiddenAnnotationExclusionStrategy.java +++ b/libjf-base/src/main/java/io/gitlab/jfronny/libjf/gson/HiddenAnnotationExclusionStrategy.java @@ -1,6 +1,6 @@ package io.gitlab.jfronny.libjf.gson; -import io.gitlab.jfronny.commons.serialize.gson.api.GsonHolder; +import io.gitlab.jfronny.commons.serialize.gson.api.v1.GsonHolders; import io.gitlab.jfronny.gson.ExclusionStrategy; import io.gitlab.jfronny.gson.FieldAttributes; import net.fabricmc.api.EnvType; @@ -17,6 +17,6 @@ public class HiddenAnnotationExclusionStrategy implements ExclusionStrategy { } public static void register() { - GsonHolder.modifyBuilder(builder -> builder.setExclusionStrategies(new HiddenAnnotationExclusionStrategy())); + GsonHolders.modifyBuilder(builder -> builder.setExclusionStrategies(new HiddenAnnotationExclusionStrategy())); } } diff --git a/libjf-config-core-v1/src/main/java/io/gitlab/jfronny/libjf/config/impl/AuxiliaryMetadata.java b/libjf-config-core-v1/src/main/java/io/gitlab/jfronny/libjf/config/impl/AuxiliaryMetadata.java index 06af86a..854eebb 100644 --- a/libjf-config-core-v1/src/main/java/io/gitlab/jfronny/libjf/config/impl/AuxiliaryMetadata.java +++ b/libjf-config-core-v1/src/main/java/io/gitlab/jfronny/libjf/config/impl/AuxiliaryMetadata.java @@ -1,7 +1,6 @@ package io.gitlab.jfronny.libjf.config.impl; -import io.gitlab.jfronny.commons.serialize.gson.api.GsonHolder; -import io.gitlab.jfronny.libjf.LibJf; +import io.gitlab.jfronny.commons.serialize.gson.api.v1.GsonHolders; import io.gitlab.jfronny.libjf.config.api.v1.Category; import io.gitlab.jfronny.libjf.config.api.v1.JfConfig; import io.gitlab.jfronny.libjf.config.api.v1.dsl.CategoryBuilder; @@ -44,7 +43,7 @@ public class AuxiliaryMetadata { cv = cv.getAsObject().get("config"); } } - if (cv != null) metaRef.meta = GsonHolder.getGson().fromJson(FabricLoaderGsonGenerator.toGson(cv), AuxiliaryMetadata.class); + if (cv != null) metaRef.meta = GsonHolders.API.getGson().fromJson(FabricLoaderGsonGenerator.toGson(cv), AuxiliaryMetadata.class); }); return metaRef.meta; } diff --git a/libjf-config-core-v1/src/main/java/io/gitlab/jfronny/libjf/config/impl/dsl/ConfigBuilderImpl.java b/libjf-config-core-v1/src/main/java/io/gitlab/jfronny/libjf/config/impl/dsl/ConfigBuilderImpl.java index c902fba..36b48a0 100644 --- a/libjf-config-core-v1/src/main/java/io/gitlab/jfronny/libjf/config/impl/dsl/ConfigBuilderImpl.java +++ b/libjf-config-core-v1/src/main/java/io/gitlab/jfronny/libjf/config/impl/dsl/ConfigBuilderImpl.java @@ -1,11 +1,10 @@ package io.gitlab.jfronny.libjf.config.impl.dsl; -import io.gitlab.jfronny.commons.serialize.gson.api.GsonHolder; +import io.gitlab.jfronny.commons.serialize.gson.api.v1.GsonHolders; import io.gitlab.jfronny.gson.*; import io.gitlab.jfronny.gson.stream.JsonWriter; import io.gitlab.jfronny.libjf.LibJf; import io.gitlab.jfronny.libjf.config.api.v1.*; -import io.gitlab.jfronny.libjf.config.api.v1.dsl.CategoryBuilder; import io.gitlab.jfronny.libjf.config.api.v1.dsl.ConfigBuilder; import io.gitlab.jfronny.libjf.config.impl.JfConfigWatchService; import io.gitlab.jfronny.libjf.config.impl.entrypoint.JfConfigSafe; @@ -15,10 +14,7 @@ import java.io.*; import java.nio.file.Files; import java.nio.file.Path; import java.util.Map; -import java.util.Optional; import java.util.function.Consumer; -import java.util.function.Supplier; -import java.util.stream.Collectors; public class ConfigBuilderImpl extends CategoryBuilderImpl implements ConfigBuilder { public DslConfigInstance built; @@ -45,7 +41,7 @@ public class ConfigBuilderImpl extends CategoryBuilderImpl im write = c -> { c.getFilePath().ifPresent(path -> JfConfigWatchService.lock(path, () -> { try (BufferedWriter bw = Files.newBufferedWriter(path); - JsonWriter jw = GsonHolder.getGson().newJsonWriter(bw)) { + JsonWriter jw = GsonHolders.CONFIG.getGson().newJsonWriter(bw)) { writeTo(jw, c); } catch (Exception e) { LibJf.LOGGER.error("Could not write config for " + id, e); diff --git a/libjf-config-core-v1/src/main/java/io/gitlab/jfronny/libjf/config/impl/dsl/DslEntryInfo.java b/libjf-config-core-v1/src/main/java/io/gitlab/jfronny/libjf/config/impl/dsl/DslEntryInfo.java index 9bddaa0..02bf342 100644 --- a/libjf-config-core-v1/src/main/java/io/gitlab/jfronny/libjf/config/impl/dsl/DslEntryInfo.java +++ b/libjf-config-core-v1/src/main/java/io/gitlab/jfronny/libjf/config/impl/dsl/DslEntryInfo.java @@ -1,6 +1,6 @@ package io.gitlab.jfronny.libjf.config.impl.dsl; -import io.gitlab.jfronny.commons.serialize.gson.api.GsonHolder; +import io.gitlab.jfronny.commons.serialize.gson.api.v1.GsonHolders; import io.gitlab.jfronny.commons.throwable.ThrowingConsumer; import io.gitlab.jfronny.commons.throwable.ThrowingSupplier; import io.gitlab.jfronny.gson.JsonElement; @@ -159,7 +159,7 @@ public class DslEntryInfo implements EntryInfo { setUnchecked(e.optionForString(element.getAsString())); } } else { - setValue(GsonHolder.getGson().fromJson(element, type.asClass())); + setValue(GsonHolders.CONFIG.getGson().fromJson(element, type.asClass())); } } @@ -180,7 +180,7 @@ public class DslEntryInfo implements EntryInfo { writer.comment("Valid: [" + Arrays.stream(((Type.TEnum)type).options()).map(Objects::toString).collect(Collectors.joining(", ")) + "]"); } writer.name(name); - GsonHolder.getGson().toJson(value, Objects.requireNonNullElse(type.asClass(), String.class), writer); + GsonHolders.CONFIG.getGson().toJson(value, Objects.requireNonNullElse(type.asClass(), String.class), writer); } @Override