use of rpc.turbo.config.ConfigException in project turbo-rpc by hank-whu.
the class ServerConfig method parse.
private static ServerConfig parse(Config config) {
String group = getStringOrElse(config, "group", TurboService.DEFAULT_GROUP);
String app = getStringOrElse(config, "app", TurboService.DEFAULT_GROUP);
String ownerName = getStringOrElse(config, "owner.name", "");
String ownerPhone = getStringOrElse(config, "owner.phone", "");
String serializerClass = getStringOrElse(config, "serializer.class", ProtostuffSerializer.class.getName());
Serializer serializer;
try {
serializer = (Serializer) //
Class.forName(//
serializerClass).getDeclaredConstructor().newInstance();
} catch (Throwable t) {
throw new ConfigException(t);
}
String jsonMapperClass = getStringOrElse(config, "jsonMapper.class", JacksonMapper.class.getName());
JsonMapper jsonMapper;
try {
jsonMapper = (JsonMapper) //
Class.forName(//
jsonMapperClass).getDeclaredConstructor().newInstance();
} catch (Throwable t) {
throw new ConfigException(t);
}
List<? extends Config> registerConfigList = config.getConfigList("registers");
List<RegisterConfig> registers = //
registerConfigList.stream().map(registerConfig -> {
try {
return RegisterConfig.parse(registerConfig);
} catch (Throwable e) {
throw new ConfigException(e);
}
}).collect(Collectors.toList());
Map<Integer, RegisterConfig> portMap = new HashMap<>();
for (RegisterConfig registerConfig : registers) {
HostPort serverAddress = registerConfig.getServerAddress();
RegisterConfig existed = portMap.get(serverAddress.port);
if (existed == null) {
portMap.put(serverAddress.port, registerConfig);
continue;
}
if (existed.getProtocol() == registerConfig.getProtocol() && existed.getServerAddress().equals(serverAddress)) {
continue;
}
throw new ConfigException("存在端口冲突: " + registerConfig + " vs " + existed);
}
ServerConfig serverConfig = new ServerConfig();
serverConfig.setGroup(group);
serverConfig.setApp(app);
serverConfig.setOwnerName(ownerName);
serverConfig.setOwnerPhone(ownerPhone);
serverConfig.setSerializer(serializer);
serverConfig.setJsonMapper(jsonMapper);
serverConfig.setRegisters(registers);
return serverConfig;
}
Aggregations