package edu.uw.zookeeper.client; import com.google.common.collect.ImmutableMap; import com.typesafe.config.ConfigFactory; import com.typesafe.config.ConfigUtil; import edu.uw.zookeeper.EnsembleView; import edu.uw.zookeeper.ServerInetAddressView; import edu.uw.zookeeper.common.Configurable; import edu.uw.zookeeper.common.Configuration; @Configurable(path="client", arg="servers", value="127.0.0.1:2181", help="address:port,...") public abstract class EnsembleViewConfiguration { public static EnsembleView<ServerInetAddressView> get(Configuration configuration) { Configurable configurable = getConfigurable(); String value = configuration.withConfigurable(configurable) .getConfigOrEmpty(configurable.path()) .getString(configurable.arg()); return ServerInetAddressView.ensembleFromString(value); } public static Configurable getConfigurable() { return EnsembleViewConfiguration.class.getAnnotation(Configurable.class); } public static Configuration set(Configuration configuration, EnsembleView<ServerInetAddressView> value) { Configurable configurable = getConfigurable(); return configuration.withConfig(ConfigFactory.parseMap(ImmutableMap.<String,Object>builder().put(ConfigUtil.joinPath(configurable.path(), configurable.arg()), EnsembleView.toString(value)).build())); } protected EnsembleViewConfiguration() {} }