2022-08-26 20:51:00 +02:00
|
|
|
package io.gitlab.jfronny.libjf.config.api.v1.dsl;
|
2022-08-21 22:34:55 +02:00
|
|
|
|
2022-08-26 20:51:00 +02:00
|
|
|
import io.gitlab.jfronny.libjf.config.api.v1.ConfigHolder;
|
|
|
|
import io.gitlab.jfronny.libjf.config.api.v1.ConfigInstance;
|
2022-08-21 22:34:55 +02:00
|
|
|
import io.gitlab.jfronny.libjf.config.impl.dsl.DSLImpl;
|
|
|
|
|
2022-08-27 20:17:13 +02:00
|
|
|
/**
|
|
|
|
* An interface to allow easy creation or registration of configs
|
|
|
|
*/
|
2022-08-21 22:34:55 +02:00
|
|
|
public interface DSL {
|
|
|
|
static DSL create() {
|
|
|
|
return new DSLImpl();
|
|
|
|
}
|
|
|
|
|
|
|
|
static DSL.Defaulted create(String defaultId) {
|
|
|
|
return new DSLImpl.Defaulted(defaultId);
|
|
|
|
}
|
|
|
|
|
|
|
|
ConfigInstance config(String configId, ConfigBuilder.ConfigBuilderFunction builder);
|
|
|
|
ConfigInstance register(String configId, ConfigBuilder.ConfigBuilderFunction builder);
|
|
|
|
ConfigInstance register(ConfigHolder config, String configId, ConfigBuilder.ConfigBuilderFunction builder);
|
|
|
|
|
2022-08-27 20:17:13 +02:00
|
|
|
/**
|
|
|
|
* A sub-interface of DSL with a default ID and override methods using said ID.
|
|
|
|
* Passed to entrypoints, so they don't need to specify their ID in code manually.
|
|
|
|
*/
|
2022-08-21 22:34:55 +02:00
|
|
|
interface Defaulted extends DSL {
|
|
|
|
ConfigInstance config(ConfigBuilder.ConfigBuilderFunction builder);
|
|
|
|
ConfigInstance register(ConfigBuilder.ConfigBuilderFunction builder);
|
|
|
|
ConfigInstance register(ConfigHolder config, ConfigBuilder.ConfigBuilderFunction builder);
|
|
|
|
}
|
|
|
|
}
|