static public List load()

in alerting/service/src/main/java/org/apache/karaf/decanter/alerting/service/model/Loader.java [35:76]


    static public List<Rule> load(Dictionary<String, Object> configuration) {
        List<Rule> rules = new ArrayList<>();
        if (configuration == null) {
            return rules;
        }
        Enumeration<String> keys = configuration.keys();
        while (keys.hasMoreElements()) {
            String key = keys.nextElement();
            if (key.startsWith("rule.")) {
                Rule rule = new Rule();
                rule.setName(key.substring("rule.".length()));
                String ruleDefinition = (String) configuration.get(key);
                ruleDefinition = ruleDefinition.replaceAll("'", "\"");
                if (ruleDefinition != null && !ruleDefinition.isEmpty()) {
                    JsonReader jsonReader = Json.createReader(new StringReader(ruleDefinition));
                    JsonObject jsonObject = jsonReader.readObject();
                    if (jsonObject.isNull("condition")) {
                        LOGGER.error("Can't load rule {} as condition is null", ruleDefinition);
                    } else {
                        rule.setCondition(jsonObject.getString("condition"));
                        if (jsonObject.get("period") == null) {
                            rule.setPeriod(null);
                        } else {
                            rule.setPeriod(jsonObject.getString("period"));
                        }
                        if (jsonObject.get("level") == null) {
                            rule.setLevel("WARN");
                        } else {
                            rule.setLevel(jsonObject.getString("level"));
                        }
                        if (jsonObject.get("recoverable") == null) {
                            rule.setRecoverable(false);
                        } else {
                            rule.setRecoverable(jsonObject.getBoolean("recoverable"));
                        }
                        rules.add(rule);
                    }
                }
            }
        }
        return rules;
    }