package io.cattle.platform.api.auth.impl; import io.cattle.platform.archaius.util.ArchaiusUtil; import java.util.HashMap; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import com.netflix.config.DynamicBooleanProperty; import com.netflix.config.DynamicStringProperty; public class ArchaiusPolicyOptions implements PolicyOptions { private static String PROP_FORMAT = "account.type.%s.%s"; Map<String, DynamicBooleanProperty> bools = new ConcurrentHashMap<String, DynamicBooleanProperty>(); Map<String, DynamicStringProperty> strings = new ConcurrentHashMap<String, DynamicStringProperty>(); Map<String, OptionCallback> callbacks = new HashMap<String, OptionCallback>(); String name; public ArchaiusPolicyOptions(String name) { this.name = name; } @Override public boolean isOption(String optionName) { DynamicBooleanProperty prop = bools.get(optionName); if (prop == null) { prop = ArchaiusUtil.getBoolean(String.format(PROP_FORMAT, name, optionName)); bools.put(optionName, prop); } return prop.get(); } @Override public String getOption(String optionName) { OptionCallback callback = callbacks.get(optionName); if (callback != null) { return callback.getOption(); } DynamicStringProperty prop = strings.get(optionName); if (prop == null) { prop = ArchaiusUtil.getString(String.format(PROP_FORMAT, name, optionName)); strings.put(optionName, prop); } return prop.get(); } @Override public void setOption(String name, String value) { throw new UnsupportedOperationException(); } }