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 }