1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  package ch.qos.logback.classic.model.util;
15  
16  import java.util.List;
17  
18  import ch.qos.logback.classic.model.processor.LogbackClassicDefaultNestedComponentRules;
19  import ch.qos.logback.core.joran.util.ParentTag_Tag_Class_Tuple;
20  import ch.qos.logback.core.model.ImplicitModel;
21  import ch.qos.logback.core.model.Model;
22  import ch.qos.logback.core.model.util.TagUtil;
23  
24  
25  
26  
27  
28  
29  
30  public class DefaultClassNameHelper {
31  
32      List<ParentTag_Tag_Class_Tuple> tupleList = LogbackClassicDefaultNestedComponentRules.TUPLES_LIST;
33  
34      
35  
36  
37  
38  
39  
40  
41  
42      public void injectDefaultComponentClasses(Model aModel, Model parent) {
43  
44          applyInjectionRules(aModel, parent);
45  
46          for (Model sub : aModel.getSubModels()) {
47              injectDefaultComponentClasses(sub, aModel);
48          }
49      }
50  
51      private void applyInjectionRules(Model aModel, Model parent) {
52          if (parent == null)
53              return;
54  
55          String parentTag = TagUtil.unifiedTag(parent);
56          String modelTag = TagUtil.unifiedTag(aModel);
57  
58          if (aModel instanceof ImplicitModel) {
59              ImplicitModel implicitModel = (ImplicitModel) aModel;
60              String className = implicitModel.getClassName();
61  
62              if (className == null || className.isEmpty()) {
63                  for (ParentTag_Tag_Class_Tuple ruleTuple : tupleList) {
64                      if (ruleTuple.parentTag.equals(parentTag) && ruleTuple.tag.equals(modelTag)) {
65                          implicitModel.setClassName(ruleTuple.className);
66                          break;
67                      }
68                  }
69  
70              }
71          }
72      }
73  }