View Javadoc
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  }