EnvironmentFeatureMetaData.java
package pk.lucidxpo.ynami.spring.features;
import org.springframework.core.env.Environment;
import org.togglz.core.Feature;
import org.togglz.core.metadata.FeatureGroup;
import org.togglz.core.metadata.FeatureMetaData;
import org.togglz.core.metadata.SimpleFeatureGroup;
import org.togglz.core.repository.FeatureState;
import java.util.Map;
import java.util.Set;
import static java.util.Collections.emptyMap;
import static java.util.Collections.emptySet;
import static java.util.stream.Collectors.toSet;
class EnvironmentFeatureMetaData implements FeatureMetaData {
private static final String TOGGLZ_FEATURES = "togglz.features.";
private final Feature feature;
private final Environment environment;
EnvironmentFeatureMetaData(final Feature feature, final Environment environment) {
this.feature = feature;
this.environment = environment;
}
@Override
public String getLabel() {
return environment.getProperty(TOGGLZ_FEATURES + feature.name() + ".label", feature.name());
}
@Override
public FeatureState getDefaultFeatureState() {
final boolean defaultEnabledState = environment.getProperty(
TOGGLZ_FEATURES + feature.name() + ".enabled", Boolean.class, false
);
return new FeatureState(feature, defaultEnabledState);
}
@Override
@SuppressWarnings("unchecked")
public Set<FeatureGroup> getGroups() {
final Set<String> groups = environment.getProperty(TOGGLZ_FEATURES + feature.name() + ".groups", Set.class);
return groups == null ? emptySet() : groups.stream().map(SimpleFeatureGroup::new).collect(toSet());
}
@Override
public Map<String, String> getAttributes() {
return emptyMap();
}
}