private void traverseOracleTree()

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);
                }
            }