package restx.config;
import com.google.common.collect.ImmutableSet;
import restx.factory.BillOfMaterials;
import restx.factory.BoundlessComponentBox;
import restx.factory.Factory;
import restx.factory.Machine;
import restx.factory.Name;
import restx.factory.SatisfiedBOM;
import restx.factory.SingleNameFactoryMachine;
import restx.factory.StdMachineEngine;
/**
* Machine for {@link ConfigLoader}.
*/
@Machine
public class ConfigLoaderFactoryMachine extends SingleNameFactoryMachine<ConfigLoader> {
public static final Name<ConfigLoader> NAME = Name.of(ConfigLoader.class, "ConfigLoader");
public ConfigLoaderFactoryMachine() {
super(0, new StdMachineEngine<ConfigLoader>(NAME, 0, BoundlessComponentBox.FACTORY) {
private final Factory.Query<String> env = Factory.Query.byName(Name.of(String.class, "env")).optional();
@Override
public BillOfMaterials getBillOfMaterial() {
return new BillOfMaterials(ImmutableSet.<Factory.Query<?>>of(
env
));
}
@Override
protected ConfigLoader doNewComponent(SatisfiedBOM satisfiedBOM) {
return new ConfigLoader(
satisfiedBOM.getOneAsComponent(env)
);
}
});
}
}