1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package ch.qos.logback.classic.joran;
16
17 import ch.qos.logback.classic.model.*;
18 import ch.qos.logback.classic.model.processor.*;
19 import ch.qos.logback.core.Context;
20 import ch.qos.logback.core.joran.ModelClassToModelHandlerLinkerBase;
21 import ch.qos.logback.core.model.AppenderModel;
22 import ch.qos.logback.core.model.AppenderRefModel;
23 import ch.qos.logback.core.model.InsertFromJNDIModel;
24 import ch.qos.logback.core.model.ModelHandlerFactoryMethod;
25 import ch.qos.logback.core.model.processor.*;
26
27
28
29
30
31
32
33
34
35
36 public class ModelClassToModelHandlerLinker extends ModelClassToModelHandlerLinkerBase {
37
38 public ModelClassToModelHandlerLinker(Context context) {
39 super(context);
40 }
41
42 ModelHandlerFactoryMethod configurationModelHandlerFactoryMethod;
43
44 @Override
45 public void link(DefaultProcessor defaultProcessor) {
46 super.link(defaultProcessor);
47 defaultProcessor.addHandler(ConfigurationModel.class, getConfigurationModelHandlerFactoryMethod());
48 defaultProcessor.addHandler(ContextNameModel.class, ContextNameModelHandler::makeInstance);
49 defaultProcessor.addHandler(LoggerContextListenerModel.class, LoggerContextListenerModelHandler::makeInstance);
50
51 defaultProcessor.addHandler(PropertiesConfiguratorModel.class, PropertiesConfiguratorModelHandler::makeInstance);
52 defaultProcessor.addHandler(InsertFromJNDIModel.class, InsertFromJNDIModelHandler::makeInstance);
53
54 defaultProcessor.addHandler(AppenderModel.class, AppenderModelHandler::makeInstance);
55 defaultProcessor.addHandler(AppenderRefModel.class, AppenderRefModelHandler::makeInstance);
56 defaultProcessor.addHandler(RootLoggerModel.class, RootLoggerModelHandler::makeInstance);
57 defaultProcessor.addHandler(LoggerModel.class, LoggerModelHandler::makeInstance);
58 defaultProcessor.addHandler(LevelModel.class, LevelModelHandler::makeInstance);
59
60 defaultProcessor.addAnalyser(RootLoggerModel.class,
61 () -> new AppenderRefDependencyAnalyser(context));
62
63 defaultProcessor.addAnalyser(LoggerModel.class,
64 () -> new AppenderRefDependencyAnalyser(context));
65
66
67 defaultProcessor.addAnalyser(AppenderModel.class,
68 () -> new AppenderRefDependencyAnalyser(context));
69
70 defaultProcessor.addAnalyser(AppenderModel.class, () -> new FileCollisionAnalyser(context));
71
72
73 defaultProcessor.addAnalyser(AppenderModel.class, () -> new AppenderDeclarationAnalyser(context));
74
75 defaultProcessor.addAnalyser(AppenderModel.class,
76 () -> new CallerContradictionAnalyser(context));
77 defaultProcessor.addAnalyser(ConfigurationModel.class,
78 () -> new CallerContradictionWarnAnalyser(context));
79
80 sealModelFilters(defaultProcessor);
81
82 }
83
84 public ModelHandlerFactoryMethod getConfigurationModelHandlerFactoryMethod() {
85 if (configurationModelHandlerFactoryMethod == null) {
86
87 return ConfigurationModelHandler::makeInstance;
88 } else {
89
90 return configurationModelHandlerFactoryMethod;
91 }
92 }
93
94
95
96
97
98
99 public void setConfigurationModelHandlerFactoryMethod(ModelHandlerFactoryMethod cmhfm) {
100
101 this.configurationModelHandlerFactoryMethod = cmhfm;
102 }
103
104 }