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.SaxEventInterpreter;
23  import ch.qos.logback.core.joran.spi.RuleStore;
24  
25  public class TrivialConfigurator extends GenericXMLConfigurator {
26  
27      HashMap<ElementSelector, Supplier<Action>> rulesMap;
28  
29      public TrivialConfigurator(HashMap<ElementSelector, Supplier<Action>> rules) {
30          this.rulesMap = rules;
31      }
32  
33  
34      public TrivialConfigurator makeAnotherInstance() {
35          TrivialConfigurator tc = new TrivialConfigurator(rulesMap);
36          tc.setContext(context);
37          return tc;
38      }
39  
40      @Override
41      protected void setImplicitRuleSupplier(SaxEventInterpreter interpreter) {
42          interpreter.setImplicitActionSupplier(ImplicitModelAction::new);
43      }
44  
45      @Override
46      protected void addElementSelectorAndActionAssociations(RuleStore aRuleStore) {
47          for (ElementSelector elementSelector : rulesMap.keySet()) {
48              Supplier<Action> actionSupplier = rulesMap.get(elementSelector);
49              aRuleStore.addRule(elementSelector, actionSupplier);
50          }
51      }
52  
53  }