1
14 package ch.qos.logback.core.joran.spi;
15
16 import java.util.HashMap;
17 import java.util.Map;
18
19
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(hostClass, propertyName.toLowerCase());
31 defaultComponentMap.put(hpDouble, componentClass);
32 }
33
34 public Class<?> findDefaultComponentType(Class<?> hostClass, String propertyName) {
35 propertyName = propertyName.toLowerCase();
36 while (hostClass != null) {
37 Class<?> componentClass = oneShotFind(hostClass, propertyName);
38 if (componentClass != null) {
39 return componentClass;
40 }
41 hostClass = hostClass.getSuperclass();
42 }
43 return null;
44 }
45
46 private Class<?> oneShotFind(Class<?> hostClass, String propertyName) {
47 HostClassAndPropertyDouble hpDouble = new HostClassAndPropertyDouble(hostClass, propertyName);
48 return defaultComponentMap.get(hpDouble);
49 }
50
51 }
52