From 5a85099357c31c087acce7a8de7af21947ac5995 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 10:02:10 -0700 Subject: [PATCH] metaset impl --- .../java/com/dfsek/terra/config/pack/ConfigPackImpl.java | 4 ++-- ...stPreprocessor.java => MetaListLikePreprocessor.java} | 9 +++++---- common/implementation/src/test/java/MetaTest.java | 6 +++--- 3 files changed, 10 insertions(+), 9 deletions(-) rename common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/{MetaListPreprocessor.java => MetaListLikePreprocessor.java} (82%) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 47aba330d..ca1796f8c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -41,7 +41,7 @@ import com.dfsek.terra.config.fileloaders.FolderLoader; import com.dfsek.terra.config.fileloaders.ZIPLoader; import com.dfsek.terra.config.loaders.GenericTemplateSupplierLoader; import com.dfsek.terra.config.loaders.config.BufferedImageLoader; -import com.dfsek.terra.config.preprocessor.MetaListPreprocessor; +import com.dfsek.terra.config.preprocessor.MetaListLikePreprocessor; import com.dfsek.terra.config.preprocessor.MetaValuePreprocessor; import com.dfsek.terra.config.prototype.ProtoConfig; import com.dfsek.terra.registry.CheckedRegistryImpl; @@ -245,7 +245,7 @@ public class ConfigPackImpl implements ConfigPack { selfLoader.registerPreprocessor(Meta.class, valuePreprocessor); abstractConfigLoader.registerPreprocessor(Meta.class, valuePreprocessor); - MetaListPreprocessor listPreprocessor = new MetaListPreprocessor(configurations); + MetaListLikePreprocessor listPreprocessor = new MetaListLikePreprocessor(configurations); selfLoader.registerPreprocessor(Meta.class, listPreprocessor); abstractConfigLoader.registerPreprocessor(Meta.class, listPreprocessor); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaListPreprocessor.java b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaListLikePreprocessor.java similarity index 82% rename from common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaListPreprocessor.java rename to common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaListLikePreprocessor.java index d2d50e3e4..828ad275d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaListPreprocessor.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaListLikePreprocessor.java @@ -12,9 +12,10 @@ import java.lang.reflect.ParameterizedType; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Set; -public class MetaListPreprocessor extends MetaPreprocessor { - public MetaListPreprocessor(Map configs) { +public class MetaListLikePreprocessor extends MetaPreprocessor { + public MetaListLikePreprocessor(Map configs) { super(configs); } @@ -26,7 +27,7 @@ public class MetaListPreprocessor extends MetaPreprocessor { if(parameterizedType.getRawType() instanceof Class) { // Should always be true but we check anyways Class baseClass = (Class) parameterizedType.getRawType(); - if(List.class.isAssignableFrom(baseClass) && c instanceof List) { // List metaconfig + if((List.class.isAssignableFrom(baseClass) || Set.class.isAssignableFrom(baseClass)) && c instanceof List) { // List or set metaconfig List list = (List) c; int offset = 0; @@ -42,7 +43,7 @@ public class MetaListPreprocessor extends MetaPreprocessor { Object metaValue = getMetaValue(meta); if(!(metaValue instanceof List)) { - throw new LoadException("MetaList injection candidate must be list, is type " + metaValue.getClass().getCanonicalName()); + throw new LoadException("MetaList/Set injection candidate must be list, is type " + metaValue.getClass().getCanonicalName()); } List metaList = (List) metaValue; diff --git a/common/implementation/src/test/java/MetaTest.java b/common/implementation/src/test/java/MetaTest.java index 90d549459..2d00657be 100644 --- a/common/implementation/src/test/java/MetaTest.java +++ b/common/implementation/src/test/java/MetaTest.java @@ -4,7 +4,7 @@ import com.dfsek.tectonic.config.Configuration; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.yaml.YamlConfiguration; import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.config.preprocessor.MetaListPreprocessor; +import com.dfsek.terra.config.preprocessor.MetaListLikePreprocessor; import com.dfsek.terra.config.preprocessor.MetaMapPreprocessor; import com.dfsek.terra.config.preprocessor.MetaValuePreprocessor; import org.junit.jupiter.api.Test; @@ -26,7 +26,7 @@ public class MetaTest { ConfigLoader loader = new ConfigLoader(); loader.registerPreprocessor(Meta.class, new MetaValuePreprocessor(configurationMap)); - loader.registerPreprocessor(Meta.class, new MetaListPreprocessor(configurationMap)); + loader.registerPreprocessor(Meta.class, new MetaListLikePreprocessor(configurationMap)); loader.registerPreprocessor(Meta.class, new MetaMapPreprocessor(configurationMap)); loader.load(new MetaListConfig(), meta).list.forEach(System.out::println); @@ -49,7 +49,7 @@ public class MetaTest { ConfigLoader loader = new ConfigLoader(); loader.registerPreprocessor(Meta.class, new MetaValuePreprocessor(configurationMap)); - loader.registerPreprocessor(Meta.class, new MetaListPreprocessor(configurationMap)); + loader.registerPreprocessor(Meta.class, new MetaListLikePreprocessor(configurationMap)); loader.registerPreprocessor(Meta.class, new MetaMapPreprocessor(configurationMap)); loader.load(new MetaMapConfig(), meta).map.forEach((k, v) -> System.out.println(k + ": " + v));