public Map parse()

in parser/regex/src/main/java/org/apache/karaf/decanter/parser/regex/RegexParser.java [56:96]


    public Map<String, Object> parse(String key, String line) {
        Map<String, Object> data = new HashMap<>();
        if (line != null) {
            Matcher matcher = pattern.matcher(line);
            String[] keysArray;
            if (keys != null) {
                keysArray = keys.split(",");
                if (keysArray.length != matcher.groupCount()) {
                    LOGGER.warn("keys count and regex groups count don't match, using default keys ID");
                    keysArray = new String[matcher.groupCount()];
                    for (int i = 0; i < keysArray.length; i++) {
                        keysArray[i] = "key-" + i;
                    }
                }
            } else {
                keysArray = new String[matcher.groupCount()];
                for (int i = 0; i < keysArray.length; i++) {
                    keysArray[i] = "key-" + i;
                }
            }
            if (matcher.find()) {
                for (int i = 0; i < matcher.groupCount(); i++) {
                    try {
                        data.put(keysArray[i], Integer.parseInt(matcher.group(i + 1)));
                        continue;
                    } catch (Exception e) {
                        // nothing to do
                    }

                    try {
                        data.put(keysArray[i], Long.parseLong(matcher.group(i + 1)));
                        continue;
                    } catch (Exception e) {
                        // nothing to do
                    }
                    data.put(keysArray[i], matcher.group(i + 1));
                }
            }
        }
        return data;
    }