in common/src/main/java/org/apache/cassandra/sidecar/common/utils/GossipInfoParser.java [68:93]
public static GossipInfoResponse parse(@NotNull final String rawGossipInfo)
{
final GossipInfoResponse gossipInfoMap = new GossipInfoResponse();
GossipInfoResponse.GossipInfo gossipInfo = null;
for (String line : GOSSIP_INFO_LINE_SPLITTER.split(rawGossipInfo))
{
if (isGossipInfoHostHeader(line))
{
gossipInfo = gossipInfoMap.computeIfAbsent(line, s -> new GossipInfoResponse.GossipInfo());
}
else
{
assert gossipInfo != null; // the host line appears before the rest. gossipInfo map must be initialized
final List<String> splitLine = GOSSIP_INFO_FIELD_SPLITTER.splitToList(line);
Preconditions.checkState(splitLine.size() == 2 || splitLine.size() == 3,
"A gossip field should be split into two or three parts. %s",
line);
String key = splitLine.get(0);
// ignore the version tag if present
String value = splitLine.get(splitLine.size() - 1);
gossipInfo.camelizeKeyAndPut(key, value);
}
}
return gossipInfoMap;
}