1
2
3
4
5
6
7
8
9
10
11
12
13
14 package ch.qos.logback.core.joran.spi;
15
16 import java.util.HashMap;
17 import java.util.Map;
18
19
20
21
22
23
24
25 public class DefaultNestedComponentRegistry {
26
27 Map<HostClassAndPropertyDouble, Class> defaultComponentMap = new HashMap<HostClassAndPropertyDouble, Class>();
28
29 public void add(Class hostClass, String propertyName, Class componentClass) {
30 HostClassAndPropertyDouble hpDouble = new HostClassAndPropertyDouble(
31 hostClass, propertyName.toLowerCase());
32 defaultComponentMap.put(hpDouble, componentClass);
33 }
34
35 public Class findDefaultComponentType(Class hostClass, String propertyName) {
36 propertyName = propertyName.toLowerCase();
37 while (hostClass != null) {
38 Class componentClass = oneShotFind(hostClass, propertyName);
39 if (componentClass != null) {
40 return componentClass;
41 }
42 hostClass = hostClass.getSuperclass();
43 }
44 return null;
45 }
46
47 private Class oneShotFind(Class hostClass, String propertyName) {
48 HostClassAndPropertyDouble hpDouble = new HostClassAndPropertyDouble(
49 hostClass, propertyName);
50 return defaultComponentMap.get(hpDouble);
51 }
52
53 }