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  
18  import ch.qos.logback.core.joran.action.Action;
19  import ch.qos.logback.core.joran.action.NestedBasicPropertyIA;
20  import ch.qos.logback.core.joran.action.NestedComplexPropertyIA;
21  import ch.qos.logback.core.joran.spi.ElementSelector;
22  import ch.qos.logback.core.joran.spi.Interpreter;
23  import ch.qos.logback.core.joran.spi.RuleStore;
24  
25  public class SimpleConfigurator extends GenericConfigurator {
26  
27      HashMap<ElementSelector, Action> rulesMap;
28  
29      public SimpleConfigurator(HashMap<ElementSelector, Action> rules) {
30          this.rulesMap = rules;
31      }
32  
33      @Override
34      protected void addImplicitRules(Interpreter interpreter) {
35          NestedComplexPropertyIA nestedIA = new NestedComplexPropertyIA(getBeanDescriptionCache());
36          nestedIA.setContext(context);
37          interpreter.addImplicitAction(nestedIA);
38  
39          NestedBasicPropertyIA nestedSimpleIA = new NestedBasicPropertyIA(getBeanDescriptionCache());
40          nestedSimpleIA.setContext(context);
41          interpreter.addImplicitAction(nestedSimpleIA);
42      }
43  
44      public Interpreter getInterpreter() {
45          return interpreter;
46      }
47  
48      @Override
49      protected void addInstanceRules(RuleStore rs) {
50          for (ElementSelector elementSelector : rulesMap.keySet()) {
51              Action action = rulesMap.get(elementSelector);
52              rs.addRule(elementSelector, action);
53          }
54      }
55  
56  }