in apm-agent-plugins/apm-jdbc-plugin/src/main/java/co/elastic/apm/agent/jdbc/helper/ConnectionMetaData.java [233:259]
private void traverseOracleTree(String connectionUrl, TreeNode treeNode, Builder builder) {
String nodeName = treeNode.name.toString().toLowerCase(Locale.ROOT).trim();
if (nodeName.equals("address")) {
String host = null;
int port = -1;
for (TreeNode childNode : treeNode.childNodes) {
String childName = childNode.name.toString().toLowerCase(Locale.ROOT).trim();
String childValue = childNode.value.toString().trim();
if (childName.equals("host")) {
host = childValue;
} else if (childName.equals("port")) {
port = toNumericPort(connectionUrl, childValue);
}
}
if (host != null && !builder.hasHost()) { // first value wins
builder.withHost(host).withPort(port);
}
} else if (nodeName.equals("instance_name")
|| (nodeName.equals("service_name") && !builder.hasInstance())
|| (nodeName.equals("sid") && !builder.hasInstance())) {
builder.withInstance(treeNode.value.toString().trim());
}
for (TreeNode childNode : treeNode.childNodes) {
traverseOracleTree(connectionUrl, childNode, builder);
}
}