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 sealModelFilters(defaultProcessor);
76
77 }
78
79 public ModelHandlerFactoryMethod getConfigurationModelHandlerFactoryMethod() {
80 if (configurationModelHandlerFactoryMethod == null) {
81
82 return ConfigurationModelHandler::makeInstance;
83 } else {
84
85 return configurationModelHandlerFactoryMethod;
86 }
87 }
88
89
90
91
92
93
94 public void setConfigurationModelHandlerFactoryMethod(ModelHandlerFactoryMethod cmhfm) {
95
96 this.configurationModelHandlerFactoryMethod = cmhfm;
97 }
98
99 }