View Javadoc
1   package pk.lucidxpo.ynami.spring.features;
2   
3   import org.springframework.core.env.Environment;
4   import org.togglz.core.Feature;
5   import org.togglz.core.metadata.FeatureGroup;
6   import org.togglz.core.metadata.FeatureMetaData;
7   import org.togglz.core.metadata.SimpleFeatureGroup;
8   import org.togglz.core.repository.FeatureState;
9   
10  import java.util.Map;
11  import java.util.Set;
12  
13  import static java.util.Collections.emptyMap;
14  import static java.util.Collections.emptySet;
15  import static java.util.stream.Collectors.toSet;
16  
17  class EnvironmentFeatureMetaData implements FeatureMetaData {
18      private static final String TOGGLZ_FEATURES = "togglz.features.";
19  
20      private final Feature feature;
21      private final Environment environment;
22  
23      EnvironmentFeatureMetaData(final Feature feature, final Environment environment) {
24          this.feature = feature;
25          this.environment = environment;
26      }
27  
28      @Override
29      public String getLabel() {
30          return environment.getProperty(TOGGLZ_FEATURES + feature.name() + ".label", feature.name());
31      }
32  
33      @Override
34      public FeatureState getDefaultFeatureState() {
35          final boolean defaultEnabledState = environment.getProperty(
36                  TOGGLZ_FEATURES + feature.name() + ".enabled", Boolean.class, false
37          );
38          return new FeatureState(feature, defaultEnabledState);
39      }
40  
41      @Override
42      @SuppressWarnings("unchecked")
43      public Set<FeatureGroup> getGroups() {
44          final Set<String> groups = environment.getProperty(TOGGLZ_FEATURES + feature.name() + ".groups", Set.class);
45          return groups == null ? emptySet() : groups.stream().map(SimpleFeatureGroup::new).collect(toSet());
46      }
47  
48      @Override
49      public Map<String, String> getAttributes() {
50          return emptyMap();
51      }
52  }