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.spi; 15 16 import java.util.function.Supplier; 17 18 import ch.qos.logback.core.joran.action.Action; 19 20 /** 21 * 22 * As its name indicates, a RuleStore contains 2-tuples consists of a 23 * ElementSelector and an Action. 24 * 25 * <p> 26 * As a joran configurator goes through the elements in a document, it asks the 27 * rule store whether there are rules matching the current pattern by invoking 28 * the {@link #matchActions(ElementPath)} method. 29 * 30 * @author Ceki Gülcü 31 * 32 */ 33 public interface RuleStore { 34 35 /** 36 * Add a new rule, given by a pattern and an action class (String). 37 * 38 * @param elementSelector 39 * @param actionClassStr 40 * @throws ClassNotFoundException 41 */ 42 void addRule(ElementSelector elementSelector, String actionClassStr) throws ClassNotFoundException; 43 44 /** 45 * Add a new rule, given by a pattern and an action instance. 46 * 47 * @param elementSelector 48 * @param actionSupplier 49 */ 50 void addRule(ElementSelector elementSelector, Supplier<Action> actionSupplier); 51 52 /** 53 * Return a list of actions matching a pattern. 54 * 55 * @param elementPath the path to match for 56 * @return list of matching actions 57 */ 58 Supplier<Action> matchActions(ElementPath elementPath); 59 60 void addTransparentPathPart(String pathPart); 61 62 public void addPathPathMapping(String originalName, String modifiedName); 63 64 }