From fcb59ce32d84a40f993617ece0496c4d60d03bb7 Mon Sep 17 00:00:00 2001 From: Anastasia Chrysanthemum Date: Fri, 6 Feb 2026 06:46:27 +1100 Subject: [PATCH] refactor: I've given up on allowing this to work multithreaded. --- .../greenhouse/config/gradle/Properties.kt | 2 +- .../config/api/v3/GreenhouseConfigHolder.java | 8 +-- .../v3/GreenhouseInheritedConfigHolder.java | 8 +-- .../GreenhouseConfigDataFixerBuilder.java | 2 +- ...AbstractGreenhouseConfigPolyamoryLang.java | 26 +++------ .../v3/lang/GreenhouseConfigJsonCLang.java | 7 +-- .../api/v3/lang/GreenhouseConfigJsonLang.java | 13 ++--- .../api/v3/lang/GreenhouseConfigLang.java | 16 +----- .../config/impl/GreenhouseConfigImpl.java | 56 ++++++++----------- .../AbstractGreenhouseConfigHolderImpl.java | 16 +++--- .../config/GreenhouseConfigHolderImpl.java | 4 +- .../GreenhouseInheritedConfigHolderImpl.java | 2 +- ...ractGreenhouseConfigHolderBuilderImpl.java | 4 +- .../GreenhouseConfigHolderBuilderImpl.java | 2 +- ...houseInheritedConfigHolderBuilderImpl.java | 2 +- .../GreenhouseConfigDataFixerBuilderImpl.java | 6 +- .../util/GreenhouseConfigLangExecutor.java | 33 +++-------- 17 files changed, 76 insertions(+), 131 deletions(-) diff --git a/build_logic/src/main/kotlin/lgbt/greenhouse/config/gradle/Properties.kt b/build_logic/src/main/kotlin/lgbt/greenhouse/config/gradle/Properties.kt index a0c89f6..adaae2e 100644 --- a/build_logic/src/main/kotlin/lgbt/greenhouse/config/gradle/Properties.kt +++ b/build_logic/src/main/kotlin/lgbt/greenhouse/config/gradle/Properties.kt @@ -1,7 +1,7 @@ package lgbt.greenhouse.config.gradle object Properties { - const val MOD_VERSION = "3.0.0-alpha.5" + const val MOD_VERSION = "3.0.0-alpha.6" const val JAVA_VERSION = 21 const val GROUP = "lgbt.greenhouse.config" diff --git a/xplat/src/main/java/lgbt/greenhouse/config/api/v3/GreenhouseConfigHolder.java b/xplat/src/main/java/lgbt/greenhouse/config/api/v3/GreenhouseConfigHolder.java index f80a763..baf17d2 100644 --- a/xplat/src/main/java/lgbt/greenhouse/config/api/v3/GreenhouseConfigHolder.java +++ b/xplat/src/main/java/lgbt/greenhouse/config/api/v3/GreenhouseConfigHolder.java @@ -42,7 +42,7 @@ public interface GreenhouseConfigHolder { static GreenhouseConfigHolder register(Class clazz, String modId, int dataVersion, - GreenhouseConfigLang configLang, + GreenhouseConfigLang configLang, GreenhouseConfigSide side, Consumer> configBuilderConsumer) { return register(clazz, modId, dataVersion, configLang, side, configBuilderConsumer, fixerBuilderConsumer -> { @@ -71,7 +71,7 @@ public interface GreenhouseConfigHolder { static GreenhouseConfigHolder register(Class clazz, String modId, int dataVersion, - GreenhouseConfigLang configLang, + GreenhouseConfigLang configLang, GreenhouseConfigSide side, Consumer> configBuilderConsumer, Consumer fixerBuilderConsumer) { @@ -99,7 +99,7 @@ public interface GreenhouseConfigHolder { static GreenhouseConfigHolderBuilder builder(Class clazz, String modId, int dataVersion, - GreenhouseConfigLang configLang, + GreenhouseConfigLang configLang, Consumer> configBuilderConsumer) { return builder(clazz, modId, dataVersion, configLang, configBuilderConsumer, fixerBuilderConsumer -> { }); @@ -122,7 +122,7 @@ public interface GreenhouseConfigHolder { static GreenhouseConfigHolderBuilder builder(Class clazz, String modId, int schemaVersion, - GreenhouseConfigLang configLang, + GreenhouseConfigLang configLang, Consumer> configBuilderConsumer, Consumer fixerBuilderConsumer) { GreenhouseConfigDataFixerBuilderImpl fixerBuilder = new GreenhouseConfigDataFixerBuilderImpl(schemaVersion, modId); diff --git a/xplat/src/main/java/lgbt/greenhouse/config/api/v3/GreenhouseInheritedConfigHolder.java b/xplat/src/main/java/lgbt/greenhouse/config/api/v3/GreenhouseInheritedConfigHolder.java index 3cbacc6..98d650a 100644 --- a/xplat/src/main/java/lgbt/greenhouse/config/api/v3/GreenhouseInheritedConfigHolder.java +++ b/xplat/src/main/java/lgbt/greenhouse/config/api/v3/GreenhouseInheritedConfigHolder.java @@ -41,7 +41,7 @@ public interface GreenhouseInheritedConfigHolder extends Greenhouse static GreenhouseInheritedConfigHolder register(Class clazz, GreenhouseConfigHolder inheritedConfig, int dataVersion, - GreenhouseConfigLang configLang, + GreenhouseConfigLang configLang, GreenhouseConfigSide side, Consumer> configBuilderConsumer) { return register(clazz, inheritedConfig, dataVersion, configLang, side, configBuilderConsumer, fixerBuilderConsumer -> { @@ -69,7 +69,7 @@ public interface GreenhouseInheritedConfigHolder extends Greenhouse static GreenhouseInheritedConfigHolder register(Class clazz, GreenhouseConfigHolder inheritedConfig, int dataVersion, - GreenhouseConfigLang configLang, + GreenhouseConfigLang configLang, GreenhouseConfigSide side, Consumer> configBuilderConsumer, Consumer fixerBuilderConsumer) { @@ -99,7 +99,7 @@ public interface GreenhouseInheritedConfigHolder extends Greenhouse static GreenhouseInheritedConfigHolder register(Class clazz, GreenhouseConfigHolderBuilder inheritedConfig, int dataVersion, - GreenhouseConfigLang configLang, + GreenhouseConfigLang configLang, GreenhouseConfigSide side, Consumer> configBuilderConsumer) { return register(clazz, inheritedConfig, dataVersion, configLang, side, configBuilderConsumer, fixerBuilderConsumer -> { @@ -127,7 +127,7 @@ public interface GreenhouseInheritedConfigHolder extends Greenhouse static GreenhouseInheritedConfigHolder register(Class clazz, GreenhouseConfigHolderBuilder inheritedConfig, int dataVersion, - GreenhouseConfigLang configLang, + GreenhouseConfigLang configLang, GreenhouseConfigSide side, Consumer> configBuilderConsumer, Consumer fixerBuilderConsumer) { diff --git a/xplat/src/main/java/lgbt/greenhouse/config/api/v3/dfu/builder/GreenhouseConfigDataFixerBuilder.java b/xplat/src/main/java/lgbt/greenhouse/config/api/v3/dfu/builder/GreenhouseConfigDataFixerBuilder.java index 286ba7f..4428a40 100644 --- a/xplat/src/main/java/lgbt/greenhouse/config/api/v3/dfu/builder/GreenhouseConfigDataFixerBuilder.java +++ b/xplat/src/main/java/lgbt/greenhouse/config/api/v3/dfu/builder/GreenhouseConfigDataFixerBuilder.java @@ -37,7 +37,7 @@ public interface GreenhouseConfigDataFixerBuilder { * @param configLang The previous config lang class. * @return This builder. */ - GreenhouseConfigDataFixerBuilder withPreviousLang(int latestVersionKey, GreenhouseConfigLang configLang); + GreenhouseConfigDataFixerBuilder withPreviousLang(int latestVersionKey, GreenhouseConfigLang configLang); /** * Directly sets the {@link DataFixer} for this builder, avoiding the need to use the builder functionality. diff --git a/xplat/src/main/java/lgbt/greenhouse/config/api/v3/lang/AbstractGreenhouseConfigPolyamoryLang.java b/xplat/src/main/java/lgbt/greenhouse/config/api/v3/lang/AbstractGreenhouseConfigPolyamoryLang.java index 35e3e7e..49da1fe 100644 --- a/xplat/src/main/java/lgbt/greenhouse/config/api/v3/lang/AbstractGreenhouseConfigPolyamoryLang.java +++ b/xplat/src/main/java/lgbt/greenhouse/config/api/v3/lang/AbstractGreenhouseConfigPolyamoryLang.java @@ -3,16 +3,16 @@ package lgbt.greenhouse.config.api.v3.lang; import com.mojang.serialization.DynamicOps; import lgbt.greenhouse.polyamory.core.api.PolyamoryElement; import lgbt.greenhouse.polyamory.core.api.PolyamoryFormat; -import lgbt.greenhouse.polyamory.core.api.PolyamoryReader; -import lgbt.greenhouse.polyamory.core.api.PolyamoryWriter; import lgbt.greenhouse.polyamory.dfu.api.PolyamoryOps; import java.io.IOException; +import java.io.Reader; +import java.io.Writer; -public abstract class AbstractGreenhouseConfigPolyamoryLang, Writer extends PolyamoryWriter, Format extends PolyamoryFormat> implements GreenhouseConfigLang, Reader, Writer> { - private final PolyamoryOps ops; +public abstract class AbstractGreenhouseConfigPolyamoryLang implements GreenhouseConfigLang> { + private final PolyamoryOps ops; - protected AbstractGreenhouseConfigPolyamoryLang(PolyamoryOps ops) { + protected AbstractGreenhouseConfigPolyamoryLang(PolyamoryOps ops) { this.ops = ops; } @@ -21,7 +21,7 @@ public abstract class AbstractGreenhouseConfigPolyamoryLang getFormat() { return ops.getFormat(); } @@ -30,24 +30,14 @@ public abstract class AbstractGreenhouseConfigPolyamoryLang element) throws IOException { - writer.write(element); + ops.getFormat().write(writer, element); } @Override public PolyamoryElement read(Reader reader) throws IOException { - return reader.read(); + return ops.getFormat().read(reader); } @Override diff --git a/xplat/src/main/java/lgbt/greenhouse/config/api/v3/lang/GreenhouseConfigJsonCLang.java b/xplat/src/main/java/lgbt/greenhouse/config/api/v3/lang/GreenhouseConfigJsonCLang.java index 672c3c1..e3a7716 100644 --- a/xplat/src/main/java/lgbt/greenhouse/config/api/v3/lang/GreenhouseConfigJsonCLang.java +++ b/xplat/src/main/java/lgbt/greenhouse/config/api/v3/lang/GreenhouseConfigJsonCLang.java @@ -3,10 +3,7 @@ package lgbt.greenhouse.config.api.v3.lang; import lgbt.greenhouse.polyamory.core.api.PolyamoryElement; import lgbt.greenhouse.polyamory.core.api.builder.PolyamoryBooleanBuilder; import lgbt.greenhouse.polyamory.core.api.data.PolyamoryComment; -import lgbt.greenhouse.polyamory.lang.jsonc.api.JsonCFormat; import lgbt.greenhouse.polyamory.lang.jsonc.api.dfu.JsonCOps; -import lgbt.greenhouse.polyamory.lang.jsonc.impl.JsonCReader; -import lgbt.greenhouse.polyamory.lang.jsonc.impl.JsonCWriter; import java.io.IOException; import java.io.Reader; @@ -16,7 +13,7 @@ import java.util.List; /** * A JSONC language for Greenhouse Config. */ -public class GreenhouseConfigJsonCLang extends AbstractGreenhouseConfigPolyamoryLang { +public class GreenhouseConfigJsonCLang extends AbstractGreenhouseConfigPolyamoryLang { public static final GreenhouseConfigJsonCLang INSTANCE = new GreenhouseConfigJsonCLang(); protected GreenhouseConfigJsonCLang() { @@ -24,7 +21,7 @@ public class GreenhouseConfigJsonCLang extends AbstractGreenhouseConfigPolyamory } @Override - public PolyamoryElement read(JsonCReader reader) throws IOException { + public PolyamoryElement read(Reader reader) throws IOException { PolyamoryBooleanBuilder commmentSource = new PolyamoryBooleanBuilder(true); PolyamoryElement readElement = super.read(reader); diff --git a/xplat/src/main/java/lgbt/greenhouse/config/api/v3/lang/GreenhouseConfigJsonLang.java b/xplat/src/main/java/lgbt/greenhouse/config/api/v3/lang/GreenhouseConfigJsonLang.java index 91f62e8..98fe3fa 100644 --- a/xplat/src/main/java/lgbt/greenhouse/config/api/v3/lang/GreenhouseConfigJsonLang.java +++ b/xplat/src/main/java/lgbt/greenhouse/config/api/v3/lang/GreenhouseConfigJsonLang.java @@ -1,10 +1,8 @@ package lgbt.greenhouse.config.api.v3.lang; import lgbt.greenhouse.polyamory.core.api.PolyamoryElement; -import lgbt.greenhouse.polyamory.lang.jsonc.api.JsonCFormat; import lgbt.greenhouse.polyamory.lang.jsonc.api.dfu.JsonCOps; import lgbt.greenhouse.polyamory.lang.jsonc.impl.JsonCReader; -import lgbt.greenhouse.polyamory.lang.jsonc.impl.JsonCWriter; import java.io.IOException; import java.io.Reader; @@ -18,7 +16,7 @@ import java.io.Writer; * * @see GreenhouseConfigJsonCLang */ -public class GreenhouseConfigJsonLang extends AbstractGreenhouseConfigPolyamoryLang { +public class GreenhouseConfigJsonLang extends AbstractGreenhouseConfigPolyamoryLang { public static final GreenhouseConfigJsonLang INSTANCE = new GreenhouseConfigJsonLang(); protected GreenhouseConfigJsonLang() { @@ -31,13 +29,14 @@ public class GreenhouseConfigJsonLang extends AbstractGreenhouseConfigPolyamoryL } @Override - public PolyamoryElement read(JsonCReader reader) throws IOException { - reader.stripComments(); - return reader.read(); + public PolyamoryElement read(Reader reader) throws IOException { + JsonCReader jsonReader = new JsonCReader(reader); + jsonReader.stripComments(); + return jsonReader.read(); } @Override - public void write(JsonCWriter writer, PolyamoryElement element) throws IOException { + public void write(Writer writer, PolyamoryElement element) throws IOException { super.write(writer, element.toBuilder().clearComments().build()); } diff --git a/xplat/src/main/java/lgbt/greenhouse/config/api/v3/lang/GreenhouseConfigLang.java b/xplat/src/main/java/lgbt/greenhouse/config/api/v3/lang/GreenhouseConfigLang.java index 4995c76..3ff53d0 100644 --- a/xplat/src/main/java/lgbt/greenhouse/config/api/v3/lang/GreenhouseConfigLang.java +++ b/xplat/src/main/java/lgbt/greenhouse/config/api/v3/lang/GreenhouseConfigLang.java @@ -12,7 +12,7 @@ import java.io.Writer; * * @param > A Java class representation of any files that will be encoded/decoded to/from the actual config value. */ -public interface GreenhouseConfigLang { +public interface GreenhouseConfigLang { /** * The ops required for encoding/decoding the config using {@link com.mojang.serialization.Codec}s. * @@ -27,20 +27,6 @@ public interface GreenhouseConfigLang */ String getFileExtension(); - /** - * Returns a lang specific reader. - * - * @param reader The internal reader to read from. - */ - Reader reader(java.io.Reader reader); - - /** - * Returns a lang specific writer. - * - * @param writer The internal reader to read from. - */ - Writer writer(java.io.Writer writer); - /** * Writes a config object to a writer. * diff --git a/xplat/src/main/java/lgbt/greenhouse/config/impl/GreenhouseConfigImpl.java b/xplat/src/main/java/lgbt/greenhouse/config/impl/GreenhouseConfigImpl.java index 4e59c94..ede1d68 100644 --- a/xplat/src/main/java/lgbt/greenhouse/config/impl/GreenhouseConfigImpl.java +++ b/xplat/src/main/java/lgbt/greenhouse/config/impl/GreenhouseConfigImpl.java @@ -55,7 +55,7 @@ public class GreenhouseConfigImpl { private static final Map, Object> LOCAL_CONFIGS = new HashMap<>(); private static final Map, Object> NETWORKABLE_CONFIGS = new HashMap<>(); - private static final Map, GreenhouseConfigLangExecutor> EXECUTORS = new HashMap<>(); + private static final Map, GreenhouseConfigLangExecutor> EXECUTORS = new HashMap<>(); private static final String CONFIG_LANG_ERROR = "This is not a fault of the developer implementing the config, Please report this to https://git.greenhouse.lgbt/Modding/polyamory or wherever the repository of the config language they used is instead"; @@ -151,7 +151,7 @@ public class GreenhouseConfigImpl { saveConfig(holder, getLocalConfig(holder)); } - public static void saveConfig(GreenhouseConfigHolder holder, C value) { + public static void saveConfig(GreenhouseConfigHolder holder, Config value) { // Don't save the config if it is not the loaded config. if (!CONFIG_HOLDERS.containsValue(holder)) { CONFIG_SAVE_LOG.error("Attempted to save config '{}' on an unsupported side. If you are using a common config, save the side specific config instead.", holder.getModId()); @@ -161,7 +161,7 @@ public class GreenhouseConfigImpl { //noinspection unchecked AbstractGreenhouseConfigHolderImpl holderImpl = (AbstractGreenhouseConfigHolderImpl) holder; //noinspection unchecked - GreenhouseConfigLang lang = (GreenhouseConfigLang) holderImpl.getConfigLang(); + GreenhouseConfigLang lang = (GreenhouseConfigLang) holderImpl.getConfigLang(); File file = GreenhouseConfigConstants.getPlatformHelper() .getConfigDir() @@ -173,9 +173,9 @@ public class GreenhouseConfigImpl { try ( FileReader fileReader = new FileReader(file) ) { - GreenhouseConfigLangExecutor executor = (GreenhouseConfigLangExecutor)EXECUTORS + GreenhouseConfigLangExecutor executor = (GreenhouseConfigLangExecutor)EXECUTORS .computeIfAbsent(holder, (h) -> new GreenhouseConfigLangExecutor<>(lang)); - E contents = executor.read(fileReader); + Lang contents = executor.read(fileReader); commentedValue = holderImpl.getCommentedCodec() .parse(lang.getOps(), contents) .getOrThrow() @@ -186,7 +186,7 @@ public class GreenhouseConfigImpl { } try { - E element = commentedValue != null + Lang element = commentedValue != null ? holderImpl.getCommentedCodec().encodeStart(lang.getOps(), commentedValue).getOrThrow() : holderImpl.getCodec().encodeStart(lang.getOps(), value).getOrThrow(); saveConfigInternal(holder, lang, element, file); @@ -349,11 +349,11 @@ public class GreenhouseConfigImpl { } - private static Config loadConfigInternal(GreenhouseConfigHolder holder) { + private static Config loadConfigInternal(GreenhouseConfigHolder holder) { //noinspection DuplicatedCode AbstractGreenhouseConfigHolderImpl holderImpl = (AbstractGreenhouseConfigHolderImpl) holder; //noinspection unchecked - GreenhouseConfigLang lang = (GreenhouseConfigLang) holderImpl.getConfigLang(); + GreenhouseConfigLang lang = (GreenhouseConfigLang) holderImpl.getConfigLang(); String configFileName = holder.getModId() + "." + lang.getFileExtension(); File latestLangFile = GreenhouseConfigConstants.getPlatformHelper() @@ -381,14 +381,13 @@ public class GreenhouseConfigImpl { try { if (file.exists()) { - GreenhouseConfigLang oldLang = (GreenhouseConfigLang)holderImpl.getPreviousLang(schemaVersion); + GreenhouseConfigLang oldLang = holderImpl.getPreviousLang(schemaVersion); boolean shouldFix = true; - try ( - FileReader fileReader = new FileReader(file); - LangReader langReader = lang.reader(fileReader) - ) { + try (FileReader fileReader = new FileReader(file)) { if (schemaVersion == 0) { - Lang contents = lang.read(langReader); + GreenhouseConfigLangExecutor executor = (GreenhouseConfigLangExecutor)EXECUTORS + .computeIfAbsent(holder, (h) -> new GreenhouseConfigLangExecutor<>(lang)); + Lang contents = executor.read(fileReader); if (holderImpl.getCodec().decode(lang.getOps(), contents).isSuccess()) { shouldFix = false; } @@ -404,11 +403,8 @@ public class GreenhouseConfigImpl { } OldLang oldContents; - try ( - FileReader fileReader = new FileReader(file); - OldReader oldLangReader = oldLang.reader(fileReader) - ) { - oldContents = oldLang.read(oldLangReader); + try (FileReader fileReader = new FileReader(file)) { + oldContents = oldLang.read(fileReader); } try { @@ -419,10 +415,8 @@ public class GreenhouseConfigImpl { contents = oldLang.getOps().convertTo(lang.getOps(), oldContents); file = latestLangFile; } else { - try ( - FileReader fileReader = new FileReader(file); - ) { - GreenhouseConfigLangExecutor executor = (GreenhouseConfigLangExecutor)EXECUTORS + try (FileReader fileReader = new FileReader(file)) { + GreenhouseConfigLangExecutor executor = (GreenhouseConfigLangExecutor)EXECUTORS .computeIfAbsent(holder, (h) -> new GreenhouseConfigLangExecutor<>(lang)); contents = executor.read(fileReader); } @@ -465,10 +459,8 @@ public class GreenhouseConfigImpl { boolean commented = holderImpl.getCommentedCodec() != null; Lang contents; - try ( - FileReader fileReader = new FileReader(file); - ) { - GreenhouseConfigLangExecutor executor = (GreenhouseConfigLangExecutor)EXECUTORS + try (FileReader fileReader = new FileReader(file)) { + GreenhouseConfigLangExecutor executor = (GreenhouseConfigLangExecutor)EXECUTORS .computeIfAbsent(holder, (h) -> new GreenhouseConfigLangExecutor<>(lang)); contents = executor.read(fileReader); } @@ -529,10 +521,10 @@ public class GreenhouseConfigImpl { return holderImpl.getDefaultValue().get(); } - private static void saveConfigInternal(GreenhouseConfigHolder config, - GreenhouseConfigLang lang, - Lang element, - File file) throws IOException { + private static void saveConfigInternal(GreenhouseConfigHolder config, + GreenhouseConfigLang lang, + Lang element, + File file) throws IOException { if (!file.exists()) { Files.createDirectories(file.toPath().getParent()); if (!file.createNewFile()) { @@ -541,7 +533,7 @@ public class GreenhouseConfigImpl { } try (FileWriter writer = new FileWriter(file)) { - GreenhouseConfigLangExecutor executor = (GreenhouseConfigLangExecutor)EXECUTORS + GreenhouseConfigLangExecutor executor = (GreenhouseConfigLangExecutor)EXECUTORS .computeIfAbsent(config, (h) -> new GreenhouseConfigLangExecutor<>(lang)); executor.write(writer, element); } catch (Exception e) { diff --git a/xplat/src/main/java/lgbt/greenhouse/config/impl/config/AbstractGreenhouseConfigHolderImpl.java b/xplat/src/main/java/lgbt/greenhouse/config/impl/config/AbstractGreenhouseConfigHolderImpl.java index 1467126..7fc2638 100644 --- a/xplat/src/main/java/lgbt/greenhouse/config/impl/config/AbstractGreenhouseConfigHolderImpl.java +++ b/xplat/src/main/java/lgbt/greenhouse/config/impl/config/AbstractGreenhouseConfigHolderImpl.java @@ -25,9 +25,9 @@ public abstract class AbstractGreenhouseConfigHolderImpl configLang; + private final GreenhouseConfigLang configLang; - private final Int2ObjectSortedMap> previousLangs; + private final Int2ObjectSortedMap> previousLangs; private final Supplier defaultValue; @@ -46,12 +46,12 @@ public abstract class AbstractGreenhouseConfigHolderImpl clazz, int schemaVersion, String modId, - GreenhouseConfigLang configLang, + GreenhouseConfigLang configLang, Supplier defaultValue, Codec codec, @Nullable StreamCodec streamCodec, @Nullable DataFixer fixer, - Int2ObjectSortedMap> previousLangs, + Int2ObjectSortedMap> previousLangs, Map>> populationCallbacks, Map>> depopulationCallbacks) { this.clazz = clazz; @@ -86,7 +86,7 @@ public abstract class AbstractGreenhouseConfigHolderImpl getConfigLang() { + public GreenhouseConfigLang getConfigLang() { return configLang; } @@ -130,16 +130,16 @@ public abstract class AbstractGreenhouseConfigHolderImpl> getPreviousLangs() { + public Int2ObjectSortedMap> getPreviousLangs() { return previousLangs; } @Nullable - public GreenhouseConfigLang getPreviousLang(int schemaVersion) { + public GreenhouseConfigLang getPreviousLang(int schemaVersion) { var entry = previousLangs.subMap(schemaVersion, getSchemaVersion()).firstEntry(); if (entry != null) { //noinspection unchecked - return (GreenhouseConfigLang) entry.getValue(); + return (GreenhouseConfigLang) entry.getValue(); } return null; } diff --git a/xplat/src/main/java/lgbt/greenhouse/config/impl/config/GreenhouseConfigHolderImpl.java b/xplat/src/main/java/lgbt/greenhouse/config/impl/config/GreenhouseConfigHolderImpl.java index 03ac165..64a6b23 100644 --- a/xplat/src/main/java/lgbt/greenhouse/config/impl/config/GreenhouseConfigHolderImpl.java +++ b/xplat/src/main/java/lgbt/greenhouse/config/impl/config/GreenhouseConfigHolderImpl.java @@ -21,12 +21,12 @@ public class GreenhouseConfigHolderImpl extends AbstractGreenhouseConfig public GreenhouseConfigHolderImpl(Class clazz, int schemaVersion, String modId, - GreenhouseConfigLang configLang, + GreenhouseConfigLang configLang, Supplier defaultValue, Codec codec, @Nullable StreamCodec streamCodec, @Nullable DataFixer fixer, - Int2ObjectSortedMap> previousLangs, + Int2ObjectSortedMap> previousLangs, GreenhouseConfigHolderBuilderImpl builder, Map>> populationCallbacks, Map>> depopulationCallbacks) { diff --git a/xplat/src/main/java/lgbt/greenhouse/config/impl/config/GreenhouseInheritedConfigHolderImpl.java b/xplat/src/main/java/lgbt/greenhouse/config/impl/config/GreenhouseInheritedConfigHolderImpl.java index 1fb9f65..edd10c1 100644 --- a/xplat/src/main/java/lgbt/greenhouse/config/impl/config/GreenhouseInheritedConfigHolderImpl.java +++ b/xplat/src/main/java/lgbt/greenhouse/config/impl/config/GreenhouseInheritedConfigHolderImpl.java @@ -21,7 +21,7 @@ public class GreenhouseInheritedConfigHolderImpl extends Abstr public GreenhouseInheritedConfigHolderImpl(Class> clazz, int schemaVersion, String modId, - GreenhouseConfigLang configLang, + GreenhouseConfigLang configLang, Supplier> defaultValue, Codec> codec, @Nullable StreamCodec streamCodec, diff --git a/xplat/src/main/java/lgbt/greenhouse/config/impl/config/builder/AbstractGreenhouseConfigHolderBuilderImpl.java b/xplat/src/main/java/lgbt/greenhouse/config/impl/config/builder/AbstractGreenhouseConfigHolderBuilderImpl.java index f564e31..fd6c0ba 100644 --- a/xplat/src/main/java/lgbt/greenhouse/config/impl/config/builder/AbstractGreenhouseConfigHolderBuilderImpl.java +++ b/xplat/src/main/java/lgbt/greenhouse/config/impl/config/builder/AbstractGreenhouseConfigHolderBuilderImpl.java @@ -25,7 +25,7 @@ public abstract class AbstractGreenhouseConfigHolderBuilderImpl networkDataClazz; - protected final GreenhouseConfigLang configLang; + protected final GreenhouseConfigLang configLang; protected final int dataVersion; @@ -45,7 +45,7 @@ public abstract class AbstractGreenhouseConfigHolderBuilderImpl localDataClazz, Class networkDataClazz, - GreenhouseConfigLang configLang, + GreenhouseConfigLang configLang, GreenhouseConfigDataFixerBuilderImpl fixerBuilder, int dataVersion) { if (dataVersion < 1) { diff --git a/xplat/src/main/java/lgbt/greenhouse/config/impl/config/builder/GreenhouseConfigHolderBuilderImpl.java b/xplat/src/main/java/lgbt/greenhouse/config/impl/config/builder/GreenhouseConfigHolderBuilderImpl.java index 9ffc72a..2d84a15 100644 --- a/xplat/src/main/java/lgbt/greenhouse/config/impl/config/builder/GreenhouseConfigHolderBuilderImpl.java +++ b/xplat/src/main/java/lgbt/greenhouse/config/impl/config/builder/GreenhouseConfigHolderBuilderImpl.java @@ -34,7 +34,7 @@ public class GreenhouseConfigHolderBuilderImpl extends AbstractGreenhous public GreenhouseConfigHolderBuilderImpl(Class clazz, String modId, - GreenhouseConfigLang configLang, + GreenhouseConfigLang configLang, GreenhouseConfigDataFixerBuilderImpl fixerBuilder, int schemaVersion) { super(modId, clazz, clazz, configLang, fixerBuilder, schemaVersion); diff --git a/xplat/src/main/java/lgbt/greenhouse/config/impl/config/builder/GreenhouseInheritedConfigHolderBuilderImpl.java b/xplat/src/main/java/lgbt/greenhouse/config/impl/config/builder/GreenhouseInheritedConfigHolderBuilderImpl.java index 3ad5407..75bf12d 100644 --- a/xplat/src/main/java/lgbt/greenhouse/config/impl/config/builder/GreenhouseInheritedConfigHolderBuilderImpl.java +++ b/xplat/src/main/java/lgbt/greenhouse/config/impl/config/builder/GreenhouseInheritedConfigHolderBuilderImpl.java @@ -34,7 +34,7 @@ public final class GreenhouseInheritedConfigHolderBuilderImpl exten public GreenhouseInheritedConfigHolderBuilderImpl(GreenhouseConfigHolderBuilder inheritedConfig, Class extraClazz, - GreenhouseConfigLang configLang, + GreenhouseConfigLang configLang, GreenhouseConfigDataFixerBuilderImpl fixerBuilder, int dataVersion) { super(GreenhouseConfigImpl.getRecordBuilderData(inheritedConfig).modId(), extraClazz, ((GreenhouseConfigHolderBuilderImpl)inheritedConfig).localDataClazz, configLang, fixerBuilder, dataVersion); diff --git a/xplat/src/main/java/lgbt/greenhouse/config/impl/dfu/builder/GreenhouseConfigDataFixerBuilderImpl.java b/xplat/src/main/java/lgbt/greenhouse/config/impl/dfu/builder/GreenhouseConfigDataFixerBuilderImpl.java index 0963d00..f1ed361 100644 --- a/xplat/src/main/java/lgbt/greenhouse/config/impl/dfu/builder/GreenhouseConfigDataFixerBuilderImpl.java +++ b/xplat/src/main/java/lgbt/greenhouse/config/impl/dfu/builder/GreenhouseConfigDataFixerBuilderImpl.java @@ -23,7 +23,7 @@ public class GreenhouseConfigDataFixerBuilderImpl implements GreenhouseConfigDat private final Object2ObjectMap schemas = new Object2ObjectArrayMap<>(); private final Object2ObjectMap fixes = new Object2ObjectArrayMap<>(); - private final Int2ObjectSortedMap> previousLangs = new Int2ObjectAVLTreeMap<>(); + private final Int2ObjectSortedMap> previousLangs = new Int2ObjectAVLTreeMap<>(); @Nullable private DataFixer built = null; @@ -81,7 +81,7 @@ public class GreenhouseConfigDataFixerBuilderImpl implements GreenhouseConfigDat } @Override - public GreenhouseConfigDataFixerBuilderImpl withPreviousLang(int latestVersionKey, GreenhouseConfigLang configLang) { + public GreenhouseConfigDataFixerBuilderImpl withPreviousLang(int latestVersionKey, GreenhouseConfigLang configLang) { previousLangs.put(latestVersionKey, configLang); return this; } @@ -131,7 +131,7 @@ public class GreenhouseConfigDataFixerBuilderImpl implements GreenhouseConfigDat return built; } - public Int2ObjectSortedMap> getPreviousLangs() { + public Int2ObjectSortedMap> getPreviousLangs() { if (previousLangs.isEmpty()) { return Int2ObjectSortedMaps.emptyMap(); } diff --git a/xplat/src/main/java/lgbt/greenhouse/config/impl/util/GreenhouseConfigLangExecutor.java b/xplat/src/main/java/lgbt/greenhouse/config/impl/util/GreenhouseConfigLangExecutor.java index 739a849..74345ac 100644 --- a/xplat/src/main/java/lgbt/greenhouse/config/impl/util/GreenhouseConfigLangExecutor.java +++ b/xplat/src/main/java/lgbt/greenhouse/config/impl/util/GreenhouseConfigLangExecutor.java @@ -2,41 +2,22 @@ package lgbt.greenhouse.config.impl.util; import lgbt.greenhouse.config.api.v3.lang.GreenhouseConfigLang; -import java.io.Closeable; import java.io.IOException; import java.io.Reader; import java.io.Writer; -import java.util.concurrent.locks.ReadWriteLock; -import java.util.concurrent.locks.ReentrantReadWriteLock; -public class GreenhouseConfigLangExecutor { - private final GreenhouseConfigLang lang; +public class GreenhouseConfigLangExecutor { + private final GreenhouseConfigLang lang; - private final ReadWriteLock lock = new ReentrantReadWriteLock(); - - public GreenhouseConfigLangExecutor(GreenhouseConfigLang lang) { + public GreenhouseConfigLangExecutor(GreenhouseConfigLang lang) { this.lang = lang; } - public L read(Reader reader) throws IOException { - synchronized (lock.readLock()) { - lock.readLock().lock(); - try (R langReader = lang.reader(reader)) { - return lang.read(langReader); - } finally { - lock.readLock().unlock(); - } - } + public synchronized Element read(Reader reader) throws IOException { + return lang.read(reader); } - public void write(Writer writer, L element) throws IOException { - synchronized (lock.writeLock()) { - lock.writeLock().lock(); - try (W langWriter = lang.writer(writer)) { - lang.write(langWriter, element); - } finally { - lock.writeLock().unlock(); - } - } + public synchronized void write(Writer writer, Element element) throws IOException { + lang.write(writer, element); } } -- 2.51.2