From 91703c4fc95f9451a36c6e27aaaeefa0d5a20f23 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 8 Jun 2021 23:20:47 -0700 Subject: [PATCH] rudimentary metaconfig API --- .../dfsek/terra/api/config/meta/MetaContext.java | 8 ++++++++ .../dfsek/terra/api/config/meta/MetaValue.java | 5 +++++ .../terra/api/config/meta/specific/MetaList.java | 8 ++++++++ .../terra/api/config/meta/specific/MetaMap.java | 8 ++++++++ .../terra/api/config/meta/specific/MetaSet.java | 8 ++++++++ .../terra/config/loaders/meta/MetaListLoader.java | 15 +++++++++++++++ .../terra/config/loaders/meta/MetaMapLoader.java | 15 +++++++++++++++ .../config/loaders/meta/MetaValueLoader.java | 8 ++++++++ 8 files changed, 75 insertions(+) create mode 100644 common/src/main/java/com/dfsek/terra/api/config/meta/MetaContext.java create mode 100644 common/src/main/java/com/dfsek/terra/api/config/meta/MetaValue.java create mode 100644 common/src/main/java/com/dfsek/terra/api/config/meta/specific/MetaList.java create mode 100644 common/src/main/java/com/dfsek/terra/api/config/meta/specific/MetaMap.java create mode 100644 common/src/main/java/com/dfsek/terra/api/config/meta/specific/MetaSet.java create mode 100644 common/src/main/java/com/dfsek/terra/config/loaders/meta/MetaListLoader.java create mode 100644 common/src/main/java/com/dfsek/terra/config/loaders/meta/MetaMapLoader.java create mode 100644 common/src/main/java/com/dfsek/terra/config/loaders/meta/MetaValueLoader.java diff --git a/common/src/main/java/com/dfsek/terra/api/config/meta/MetaContext.java b/common/src/main/java/com/dfsek/terra/api/config/meta/MetaContext.java new file mode 100644 index 000000000..cb5f2a7d2 --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/api/config/meta/MetaContext.java @@ -0,0 +1,8 @@ +package com.dfsek.terra.api.config.meta; + +/** + * Context from which to pull {@link MetaValue}s + */ +public interface MetaContext { + T load(); +} diff --git a/common/src/main/java/com/dfsek/terra/api/config/meta/MetaValue.java b/common/src/main/java/com/dfsek/terra/api/config/meta/MetaValue.java new file mode 100644 index 000000000..0e27efe24 --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/api/config/meta/MetaValue.java @@ -0,0 +1,5 @@ +package com.dfsek.terra.api.config.meta; + +public interface MetaValue { + T load(MetaContext context); +} diff --git a/common/src/main/java/com/dfsek/terra/api/config/meta/specific/MetaList.java b/common/src/main/java/com/dfsek/terra/api/config/meta/specific/MetaList.java new file mode 100644 index 000000000..145a6a865 --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/api/config/meta/specific/MetaList.java @@ -0,0 +1,8 @@ +package com.dfsek.terra.api.config.meta.specific; + +import com.dfsek.terra.api.config.meta.MetaValue; + +import java.util.List; + +public interface MetaList extends MetaValue> { +} diff --git a/common/src/main/java/com/dfsek/terra/api/config/meta/specific/MetaMap.java b/common/src/main/java/com/dfsek/terra/api/config/meta/specific/MetaMap.java new file mode 100644 index 000000000..9bc05cafc --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/api/config/meta/specific/MetaMap.java @@ -0,0 +1,8 @@ +package com.dfsek.terra.api.config.meta.specific; + +import com.dfsek.terra.api.config.meta.MetaValue; + +import java.util.Map; + +public interface MetaMap extends MetaValue> { +} diff --git a/common/src/main/java/com/dfsek/terra/api/config/meta/specific/MetaSet.java b/common/src/main/java/com/dfsek/terra/api/config/meta/specific/MetaSet.java new file mode 100644 index 000000000..538d88b63 --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/api/config/meta/specific/MetaSet.java @@ -0,0 +1,8 @@ +package com.dfsek.terra.api.config.meta.specific; + +import com.dfsek.terra.api.config.meta.MetaValue; + +import java.util.Set; + +public interface MetaSet extends MetaValue> { +} diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/meta/MetaListLoader.java b/common/src/main/java/com/dfsek/terra/config/loaders/meta/MetaListLoader.java new file mode 100644 index 000000000..00076e868 --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/config/loaders/meta/MetaListLoader.java @@ -0,0 +1,15 @@ +package com.dfsek.terra.config.loaders.meta; + +import com.dfsek.tectonic.exception.LoadException; +import com.dfsek.tectonic.loading.ConfigLoader; +import com.dfsek.tectonic.loading.TypeLoader; +import com.dfsek.terra.api.config.meta.specific.MetaList; + +import java.lang.reflect.Type; + +public class MetaListLoader implements TypeLoader> { + @Override + public MetaList load(Type t, Object c, ConfigLoader loader) throws LoadException { + return null; + } +} diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/meta/MetaMapLoader.java b/common/src/main/java/com/dfsek/terra/config/loaders/meta/MetaMapLoader.java new file mode 100644 index 000000000..3bdb5ad8c --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/config/loaders/meta/MetaMapLoader.java @@ -0,0 +1,15 @@ +package com.dfsek.terra.config.loaders.meta; + +import com.dfsek.tectonic.exception.LoadException; +import com.dfsek.tectonic.loading.ConfigLoader; +import com.dfsek.tectonic.loading.TypeLoader; +import com.dfsek.terra.api.config.meta.specific.MetaMap; + +import java.lang.reflect.Type; + +public class MetaMapLoader implements TypeLoader> { + @Override + public MetaMap load(Type t, Object c, ConfigLoader loader) throws LoadException { + return null; + } +} diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/meta/MetaValueLoader.java b/common/src/main/java/com/dfsek/terra/config/loaders/meta/MetaValueLoader.java new file mode 100644 index 000000000..dfa815a99 --- /dev/null +++ b/common/src/main/java/com/dfsek/terra/config/loaders/meta/MetaValueLoader.java @@ -0,0 +1,8 @@ +package com.dfsek.terra.config.loaders.meta; + +import com.dfsek.tectonic.loading.TypeLoader; +import com.dfsek.terra.api.config.meta.MetaValue; + +public abstract class MetaValueLoader, T> implements TypeLoader { + +}