Class PropertySetter

java.lang.Object
ch.qos.logback.core.spi.ContextAwareBase
ch.qos.logback.core.joran.util.PropertySetter
All Implemented Interfaces:
ContextAware

public class PropertySetter extends ContextAwareBase
General purpose Object property setter. Clients repeatedly invokes setProperty(name,value) in order to invoke setters on the Object specified in the constructor. This class relies on reflection to analyze the given Object Class.

Usage:

 PropertySetter ps = new PropertySetter(anObject);
 ps.set("name", "Joe");
 ps.set("age", "32");
 ps.set("isMale", "true");
 
will cause the invocations anObject.setName("Joe"), anObject.setAge(32), and setMale(true) if such methods exist with those signatures. Otherwise an PropertySetterException is thrown.
Author:
Anders Kristensen, Ceki Gulcu
  • Field Details

    • obj

      protected final Object obj
    • objClass

      protected final Class<?> objClass
    • beanDescription

      protected final BeanDescription beanDescription
  • Constructor Details

  • Method Details

    • setProperty

      public void setProperty(String name, String value)
      Set a property on this PropertySetter's Object. If successful, this method will invoke a setter method on the underlying Object. The setter is the one for the specified property name and the value is determined partly from the setter argument type and partly from the value specified in the call to this method.

      If the setter expects a String no conversion is necessary. If it expects an int, then an attempt is made to convert 'value' to an int using new Integer(value). If the setter expects a boolean, the conversion is by new Boolean(value).

      Parameters:
      name - name of the property
      value - String value of the property
    • computeAggregationType

      public AggregationType computeAggregationType(String name)
    • getObjClass

      public Class<?> getObjClass()
    • addComplexProperty

      public void addComplexProperty(String name, Object complexProperty)
    • addBasicProperty

      public void addBasicProperty(String name, String strValue)
    • setComplexProperty

      public void setComplexProperty(String name, Object complexProperty)
    • getObj

      public Object getObj()
    • getClassNameViaImplicitRules

      public Class<?> getClassNameViaImplicitRules(String name, AggregationType aggregationType, DefaultNestedComponentRegistry registry)