private String insertEntries()

in kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/Krb5Parser.java [183:249]


    private String insertEntries(String line, BufferedReader br, Map<String, Object> entries) throws IOException {
        if (line == null) {
            return line;
        }
        if (line.startsWith("[")) {
            return line;
        }

        if (line.startsWith("}")) {
            line = br.readLine();
            if (line != null) {
                line = line.trim();
            }
            return line;
        }
        if (line.isEmpty() || isComment(line)) {
            line = br.readLine();
            if (line != null) {
                line = line.trim();
                line = insertEntries(line, br, entries);
            }
            return line;
        }
        /*some special cases above*/
        String[] kv = line.split("=", 2);
        kv[0] = kv[0].trim();
        kv[1] = kv[1].trim();

        if (kv[1].startsWith("{")) {
            Map<String, Object> meValue = new IdentityHashMap<>();
            line = br.readLine();
            while (line != null && (isComment(line.trim()) || line.trim().isEmpty())) {
                line = br.readLine();
            }
            if (line != null) {
                line = line.trim();
                if (!line.contains("=") && !isComment(line) && !line.isEmpty()) {
                    // multi-line value
                    List<String> values = new ArrayList<>();
                    while (line != null && !line.contains("}")) {
                        line = line.trim();
                        if (!line.isEmpty() && !isComment(line)) {
                            values.add(line.trim());
                        }
                        line = br.readLine();
                    }
                    entries.put(kv[0], values);
                    line = br.readLine();
                    if (line != null) {
                        line = line.trim();
                    }
                } else {
                    line = insertEntries(line, br, meValue);
                    entries.put(kv[0], meValue);
                }
                line = insertEntries(line, br, entries);
            }
        }   else {
            entries.put(kv[0], kv[1]);
            line = br.readLine();
            if (line != null) {
                line = line.trim();
                line = insertEntries(line, br, entries);
            }
        }
        return line;
    }