CustomFeatureProvider.java
package pk.lucidxpo.ynami.spring.features;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
import org.togglz.core.Feature;
import org.togglz.core.metadata.FeatureMetaData;
import org.togglz.core.spi.FeatureProvider;
import java.util.Set;
import static java.util.Arrays.stream;
import static java.util.stream.Collectors.toSet;
import static pk.lucidxpo.ynami.spring.features.FeatureToggles.values;
@Component
@ConditionalOnProperty(name = "config.togglz.enabled", havingValue = "true")
class CustomFeatureProvider implements FeatureProvider {
private final Environment environment;
public CustomFeatureProvider(Environment environment) {
this.environment = environment;
}
@Override
public Set<Feature> getFeatures() {
return stream(values()).collect(toSet());
}
@Override
public FeatureMetaData getMetaData(Feature feature) {
return new EnvironmentFeatureMetaData(feature, environment);
}
}