1
2
3
4
5
6
7
8
9
10
11
12
13
14 package ch.qos.logback.core.model.processor;
15
16 import ch.qos.logback.core.Context;
17 import ch.qos.logback.core.model.Model;
18
19 @PhaseIndicator(phase = ProcessingPhase.DEPENDENCY_ANALYSIS)
20 public class RefContainerDependencyAnalyser extends ModelHandlerBase {
21
22 final Class<?> modelClass;
23
24 public RefContainerDependencyAnalyser(Context context, Class<?> modelClass) {
25 super(context);
26 this.modelClass = modelClass;
27 }
28
29 @Override
30 protected boolean isSupportedModelType(Model model) {
31
32 if (modelClass.isInstance(model)) {
33 return true;
34 }
35
36 StringBuilder buf = new StringBuilder("This handler can only handle models of type ");
37 buf.append(modelClass.getName());
38 addError(buf.toString());
39 return false;
40 }
41
42 @Override
43 public void handle(ModelInterpretationContext mic, Model model) throws ModelHandlerException {
44 mic.pushModel(model);
45 }
46
47 @Override
48 public void postHandle(ModelInterpretationContext mic, Model model) throws ModelHandlerException {
49 Model poppedModel = mic.popModel();
50 if (model != poppedModel) {
51 addError("Popped model [" + poppedModel + "] different than expected [" + model + "]");
52 }
53 }
54 }