1 package pk.lucidxpo.ynami.spring.features; 2 3 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; 4 import org.springframework.core.env.Environment; 5 import org.springframework.stereotype.Component; 6 import org.togglz.core.Feature; 7 import org.togglz.core.metadata.FeatureMetaData; 8 import org.togglz.core.spi.FeatureProvider; 9 10 import java.util.Set; 11 12 import static java.util.Arrays.stream; 13 import static java.util.stream.Collectors.toSet; 14 import static pk.lucidxpo.ynami.spring.features.FeatureToggles.values; 15 16 @Component 17 @ConditionalOnProperty(name = "config.togglz.enabled", havingValue = "true") 18 class CustomFeatureProvider implements FeatureProvider { 19 20 private final Environment environment; 21 22 public CustomFeatureProvider(Environment environment) { 23 this.environment = environment; 24 } 25 26 @Override 27 public Set<Feature> getFeatures() { 28 return stream(values()).collect(toSet()); 29 } 30 31 @Override 32 public FeatureMetaData getMetaData(Feature feature) { 33 return new EnvironmentFeatureMetaData(feature, environment); 34 } 35 }