1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package ch.qos.logback.core.model.processor;
16
17 import ch.qos.logback.core.Context;
18 import ch.qos.logback.core.model.AppenderModel;
19 import ch.qos.logback.core.model.Model;
20
21 import java.util.HashSet;
22 import java.util.Set;
23
24
25
26
27
28
29
30
31 @PhaseIndicator(phase = ProcessingPhase.DEPENDENCY_ANALYSIS)
32 public class AppenderDeclarationAnalyser extends ModelHandlerBase {
33
34 static final String DECLARED_APPENDER_NAME_SET_KEY = "DECLARED_APPENDER_NAME_SET";
35
36
37 public AppenderDeclarationAnalyser(Context context) {
38 super(context);
39 }
40
41 @Override
42 protected Class<AppenderModel> getSupportedModelClass() {
43 return AppenderModel.class;
44 }
45
46
47 @Override
48 public void handle(ModelInterpretationContext mic, Model model) throws ModelHandlerException {
49 AppenderModel appenderModel = (AppenderModel) model;
50
51 String originalAppenderName = appenderModel.getName();
52 String substAppenderName = mic.subst(originalAppenderName);
53
54 addAppenderDeclaration(mic, substAppenderName);
55 }
56
57
58 static public Set<String> getAppenderNameSet(ModelInterpretationContext mic) {
59 Set<String> set = (Set<String>) mic.getObjectMap().get(DECLARED_APPENDER_NAME_SET_KEY);
60 if(set == null) {
61 set = new HashSet<>();
62 mic.getObjectMap().put(DECLARED_APPENDER_NAME_SET_KEY, set);
63 }
64 return set;
65 }
66
67 static public void addAppenderDeclaration(ModelInterpretationContext mic, String appenderName) {
68 Set<String> set = getAppenderNameSet(mic);
69 set.add(appenderName);
70 }
71
72
73 static public boolean isAppenderDeclared(ModelInterpretationContext mic, String appenderName) {
74 Set<String> set = getAppenderNameSet(mic);
75 return set.contains(appenderName);
76 }
77
78 }