View Javadoc
1   /*
2    * Logback: the reliable, generic, fast and flexible logging framework.
3    * Copyright (C) 1999-2022, 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  
15  package ch.qos.logback.core.blackbox.joran;
16  
17  import ch.qos.logback.core.joran.GenericXMLConfigurator;
18  import ch.qos.logback.core.joran.action.Action;
19  import ch.qos.logback.core.joran.action.ImplicitModelAction;
20  import ch.qos.logback.core.joran.spi.ElementSelector;
21  import ch.qos.logback.core.joran.spi.RuleStore;
22  import ch.qos.logback.core.joran.spi.SaxEventInterpreter;
23  
24  import java.util.HashMap;
25  import java.util.function.Supplier;
26  
27  public class BlackboxSimpleConfigurator extends GenericXMLConfigurator  {
28  
29  
30      HashMap<ElementSelector, Supplier<Action>> rulesMap;
31  
32      public BlackboxSimpleConfigurator(HashMap<ElementSelector, Supplier<Action>> rules) {
33          this.rulesMap = rules;
34      }
35  
36      @Override
37      protected void setImplicitRuleSupplier(SaxEventInterpreter interpreter) {
38          interpreter.setImplicitActionSupplier(() -> new ImplicitModelAction());
39      }
40  
41      public SaxEventInterpreter getInterpreter() {
42          return saxEventInterpreter;
43      }
44  
45      @Override
46      protected void addElementSelectorAndActionAssociations(RuleStore rs) {
47          for (ElementSelector elementSelector : rulesMap.keySet()) {
48              Supplier<Action> actionSupplier = rulesMap.get(elementSelector);
49              rs.addRule(elementSelector, actionSupplier);
50          }
51      }
52  }