ch.qos.logback.core.joran.util

## 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 the JavaBeans `Introspector` to analyze the given Object Class using reflection.

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 `IntrospectionException` are thrown.

Author:
  Anders Kristensen, Ceki Gulcu

### Field Summary

Fields
`protected java.beans.MethodDescriptor[]` `methodDescriptors`
`protected java.lang.Object` `obj`
`protected java.lang.Class<?>` `objClass`
`protected java.beans.PropertyDescriptor[]` `propertyDescriptors`

### Fields inherited from class ch.qos.logback.core.spi.ContextAwareBase

`context`

### Constructor Summary

Constructors
Constructor and Description
`PropertySetter(java.lang.Object obj)` Create a new PropertySetter for the specified Object.

### Method Summary

Methods
`void` `addBasicProperty(java.lang.String name, java.lang.String strValue)`
`void` `addComplexProperty(java.lang.String name, java.lang.Object complexProperty)`
`AggregationType` `computeAggregationType(java.lang.String name)`
`java.lang.Class<?>` `getClassNameViaImplicitRules(java.lang.String name, AggregationType aggregationType, DefaultNestedComponentRegistry registry)`
`protected java.lang.reflect.Method` `getMethod(java.lang.String methodName)`
`java.lang.Object` `getObj()`
`java.lang.Class<?>` `getObjClass()`
`protected java.beans.PropertyDescriptor` `getPropertyDescriptor(java.lang.String name)`
`protected void` `introspect()` Uses JavaBeans `Introspector` to computer setters of object to be configured.
`void` `setComplexProperty(java.lang.String name, java.lang.Object complexProperty)`
`void` `setProperty(java.beans.PropertyDescriptor prop, java.lang.String name, java.lang.String value)` Set the named property given a `PropertyDescriptor`.
`void` `setProperty(java.lang.String name, java.lang.String value)` Set a property on this PropertySetter's Object.

### Methods inherited from class ch.qos.logback.core.spi.ContextAwareBase

`addError, addError, addInfo, addInfo, addStatus, addWarn, addWarn, getContext, getDeclaredOrigin, getStatusManager, setContext`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### obj

    protected java.lang.Object obj

#### objClass

    protected java.lang.Class<?> objClass

#### propertyDescriptors

    protected java.beans.PropertyDescriptor[] propertyDescriptors

#### methodDescriptors

    protected java.beans.MethodDescriptor[] methodDescriptors

### Constructor Detail

#### PropertySetter

    public PropertySetter(java.lang.Object obj)

Create a new PropertySetter for the specified Object. This is done in preparation for invoking `setProperty(java.lang.String, java.lang.String)` one or more times.

Parameters:
  `obj` - the object for which to set properties

### Method Detail

#### introspect

    protected void introspect()

Uses JavaBeans `Introspector` to computer setters of object to be configured.

#### setProperty

    public void setProperty(java.lang.String name,
                   java.lang.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

#### setProperty

    public void setProperty(java.beans.PropertyDescriptor prop,
                   java.lang.String name,
                   java.lang.String value)
                     throws PropertySetterException

Set the named property given a `PropertyDescriptor`.

Parameters:
  `prop` - A PropertyDescriptor describing the characteristics of the property to set.
  `name` - The named of the property to set.
  `value` - The value of the property.
Throws:
  `PropertySetterException`

#### computeAggregationType

    public AggregationType computeAggregationType(java.lang.String name)

#### getObjClass

    public java.lang.Class<?> getObjClass()

#### addComplexProperty

    public void addComplexProperty(java.lang.String name,
                          java.lang.Object complexProperty)

#### addBasicProperty

    public void addBasicProperty(java.lang.String name,
                        java.lang.String strValue)

#### setComplexProperty

    public void setComplexProperty(java.lang.String name,
                          java.lang.Object complexProperty)

#### getMethod

    protected java.lang.reflect.Method getMethod(java.lang.String methodName)

#### getPropertyDescriptor

    protected java.beans.PropertyDescriptor getPropertyDescriptor(java.lang.String name)

#### getObj

    public java.lang.Object getObj()

#### getClassNameViaImplicitRules

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