start working on meta loaders

This commit is contained in:
dfsek
2021-06-08 23:50:03 -07:00
parent 91703c4fc9
commit d95239a5dd
4 changed files with 37 additions and 8 deletions

View File

@@ -4,5 +4,5 @@ package com.dfsek.terra.api.config.meta;
* Context from which to pull {@link MetaValue}s
*/
public interface MetaContext {
<T> T load();
<T> T load(Object metaCandidate);
}

View File

@@ -2,14 +2,25 @@ 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.MetaContext;
import com.dfsek.terra.api.config.meta.specific.MetaList;
import com.dfsek.terra.api.util.GlueList;
import java.lang.reflect.Type;
import java.util.List;
public class MetaListLoader extends MetaValueLoader<MetaList<Object>, List<Object>> {
protected MetaListLoader(MetaContext context) {
super(context);
}
public class MetaListLoader implements TypeLoader<MetaList<?>> {
@Override
public MetaList<?> load(Type t, Object c, ConfigLoader loader) throws LoadException {
public MetaList<Object> load(Type t, Object c, ConfigLoader loader) throws LoadException {
return null;
}
@Override
public List<Object> get() {
return new GlueList<>();
}
}

View File

@@ -2,14 +2,25 @@ 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.MetaContext;
import com.dfsek.terra.api.config.meta.specific.MetaMap;
import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.Map;
public class MetaMapLoader extends MetaValueLoader<MetaMap<Object, Object>, Map<Object, Object>> {
public MetaMapLoader(MetaContext context) {
super(context);
}
public class MetaMapLoader implements TypeLoader<MetaMap<?, ?>> {
@Override
public MetaMap<?, ?> load(Type t, Object c, ConfigLoader loader) throws LoadException {
public MetaMap<Object, Object> load(Type t, Object c, ConfigLoader loader) throws LoadException {
return null;
}
@Override
public Map<Object, Object> get() {
return new HashMap<>();
}
}

View File

@@ -1,8 +1,15 @@
package com.dfsek.terra.config.loaders.meta;
import com.dfsek.tectonic.loading.TypeLoader;
import com.dfsek.terra.api.config.meta.MetaContext;
import com.dfsek.terra.api.config.meta.MetaValue;
public abstract class MetaValueLoader<M extends MetaValue<T>, T> implements TypeLoader<T> {
import java.util.function.Supplier;
public abstract class MetaValueLoader<M extends MetaValue<T>, T> implements TypeLoader<M>, Supplier<T> {
private final MetaContext context;
protected MetaValueLoader(MetaContext context) {
this.context = context;
}
}