FileDocCategorySizeDatePackage
PropertyGetter.javaAPI DocApache log4j 1.2.153078Sat Aug 25 00:09:42 BST 2007org.apache.log4j.config

PropertyGetter

public class PropertyGetter extends Object
Used for inferring configuration information for a log4j's component.
author
Anders Kristensen

Fields Summary
protected static final Object[]
NULL_ARG
protected Object
obj
protected PropertyDescriptor[]
props
Constructors Summary
public PropertyGetter(Object obj)
Create a new PropertyGetter for the specified Object. This is done in prepartion for invoking {@link #getProperties(PropertyGetter.PropertyCallback, String)} one or more times.

param
obj the object for which to set properties


     
            
  

                                                 
  
      
    BeanInfo bi = Introspector.getBeanInfo(obj.getClass());
    props = bi.getPropertyDescriptors();
    this.obj = obj;
  
Methods Summary
public static voidgetProperties(java.lang.Object obj, org.apache.log4j.config.PropertyGetter$PropertyCallback callback, java.lang.String prefix)

    try {
      new PropertyGetter(obj).getProperties(callback, prefix);
    } catch (IntrospectionException ex) {
      LogLog.error("Failed to introspect object " + obj, ex);
    }
  
public voidgetProperties(org.apache.log4j.config.PropertyGetter$PropertyCallback callback, java.lang.String prefix)

    for (int i = 0; i < props.length; i++) {
      Method getter = props[i].getReadMethod();
      if (getter == null) continue;
      if (!isHandledType(getter.getReturnType())) {
	//System.err.println("Ignoring " + props[i].getName() +" " + getter.getReturnType());
	continue;
      }
      String name = props[i].getName();
      try {
	Object result = getter.invoke(obj, NULL_ARG);
	//System.err.println("PROP " + name +": " + result);
	if (result != null) {
	  callback.foundProperty(obj, prefix, name, result);
	}
      } catch (Exception ex) {
	LogLog.warn("Failed to get value of property " + name);
      }
    }
  
protected booleanisHandledType(java.lang.Class type)

    return String.class.isAssignableFrom(type) ||
      Integer.TYPE.isAssignableFrom(type) ||
      Long.TYPE.isAssignableFrom(type)    ||
      Boolean.TYPE.isAssignableFrom(type) ||
      Priority.class.isAssignableFrom(type);