package edu.uw.zookeeper.server; import java.net.UnknownHostException; import com.google.common.collect.ImmutableMap; import com.typesafe.config.ConfigFactory; import com.typesafe.config.ConfigUtil; import edu.uw.zookeeper.ServerInetAddressView; import edu.uw.zookeeper.common.Configurable; import edu.uw.zookeeper.common.Configuration; @Configurable(path="server", arg="clientAddress", value=":2181", help="address:port") public abstract class ClientAddressConfiguration { public static Configurable getConfigurable() { return ClientAddressConfiguration.class.getAnnotation(Configurable.class); } public static ServerInetAddressView get(Configuration configuration) { Configurable configurable = getConfigurable(); String value = configuration.withConfigurable(configurable) .getConfigOrEmpty(configurable.path()) .getString(configurable.arg()); try { return ServerInetAddressView.fromString(value); } catch (UnknownHostException e) { throw new IllegalArgumentException(value, e); } } public static Configuration set(Configuration configuration, ServerInetAddressView value) { Configurable configurable = getConfigurable(); return configuration.withConfig(ConfigFactory.parseMap(ImmutableMap.<String,Object>builder().put(ConfigUtil.joinPath(configurable.path(), configurable.arg()), value.toString()).build())); } protected ClientAddressConfiguration() {} }