View Javadoc
1   /**
2    * Logback: the reliable, generic, fast and flexible logging framework.
3    * Copyright (C) 1999-2015, QOS.ch. All rights reserved.
4    *
5    * This program and the accompanying materials are dual-licensed under
6    * either the terms of the Eclipse Public License v1.0 as published by
7    * the Eclipse Foundation
8    *
9    *   or (per the licensee's choosing)
10   *
11   * under the terms of the GNU Lesser General Public License version 2.1
12   * as published by the Free Software Foundation.
13   */
14  package ch.qos.logback.core.joran;
15  
16  import java.util.HashMap;
17  import java.util.function.Supplier;
18  
19  import ch.qos.logback.core.joran.action.Action;
20  import ch.qos.logback.core.joran.action.ImplicitModelAction;
21  import ch.qos.logback.core.joran.spi.ElementSelector;
22  import ch.qos.logback.core.joran.spi.RuleStore;
23  import ch.qos.logback.core.joran.spi.SaxEventInterpreter;
24  
25  public class SimpleConfigurator extends GenericXMLConfigurator {
26  
27      HashMap<ElementSelector, Supplier<Action>> rulesMap;
28  
29      public SimpleConfigurator(HashMap<ElementSelector, Supplier<Action>> rules) {
30          this.rulesMap = rules;
31      }
32  
33      @Override
34      protected void setImplicitRuleSupplier(SaxEventInterpreter interpreter) {
35          interpreter.setImplicitActionSupplier(() -> new ImplicitModelAction());
36      }
37  
38      public SaxEventInterpreter getInterpreter() {
39          return saxEventInterpreter;
40      }
41  
42      @Override
43      protected void addElementSelectorAndActionAssociations(RuleStore rs) {
44          for (ElementSelector elementSelector : rulesMap.keySet()) {
45              Supplier<Action> actionSupplier = rulesMap.get(elementSelector);
46              rs.addRule(elementSelector, actionSupplier);
47          }
48      }
49  }