/* ------------------------------------------------------------ */
 public Object getAttribute(String name)
     throws AttributeNotFoundException, MBeanException, ReflectionException {
   if (log.isDebugEnabled()) log.debug("getAttribute " + name);
   Method getter = (Method) _getter.get(name);
   if (getter == null) throw new AttributeNotFoundException(name);
   try {
     Object o = _object;
     if (getter.getDeclaringClass().isInstance(this)) o = this;
     return getter.invoke(o, (java.lang.Object[]) null);
   } catch (IllegalAccessException e) {
     log.warn(LogSupport.EXCEPTION, e);
     throw new AttributeNotFoundException(e.toString());
   } catch (InvocationTargetException e) {
     log.warn(LogSupport.EXCEPTION, e);
     throw new ReflectionException((Exception) e.getTargetException());
   }
 }
  /* ------------------------------------------------------------ */
  public void setAttribute(Attribute attr)
      throws AttributeNotFoundException, InvalidAttributeValueException, MBeanException,
          ReflectionException {
    if (attr == null) return;

    if (log.isDebugEnabled()) log.debug("setAttribute " + attr.getName() + "=" + attr.getValue());
    Method setter = (Method) _setter.get(attr.getName());
    if (setter == null) throw new AttributeNotFoundException(attr.getName());
    try {
      Object o = _object;
      if (setter.getDeclaringClass().isInstance(this)) o = this;
      setter.invoke(o, new Object[] {attr.getValue()});
    } catch (IllegalAccessException e) {
      log.warn(LogSupport.EXCEPTION, e);
      throw new AttributeNotFoundException(e.toString());
    } catch (InvocationTargetException e) {
      log.warn(LogSupport.EXCEPTION, e);
      throw new ReflectionException((Exception) e.getTargetException());
    }
  }