code: public
    void setProperty(PropertyDescriptor prop, String name, String value)
      throws PropertySetterException {
      Method setter = prop.getWriteMethod();
      if (setter == null) {
        throw new PropertySetterException("No setter for property ["+name+"].");
      }
      Class[] paramTypes = setter.getParameterTypes();
      if (paramTypes.length != 1) {
        throw new PropertySetterException("#params for setter != 1");
      }
  
      Object arg;
      try {
        arg = convertArg(value, paramTypes[0]);
      } catch (Throwable t) {
        throw new PropertySetterException("Conversion to type ["+paramTypes[0]+
  					"] failed. Reason: "+t);
      }
      if (arg == null) {
        throw new PropertySetterException(
            "Conversion to type ["+paramTypes[0]+"] failed.");
      }
      LogLog.debug("Setting property [" + name + "] to [" +arg+"].");
      try {
        setter.invoke(obj, new Object[]  { arg });
      } catch (IllegalAccessException ex) {
        throw new PropertySetterException(ex);
      } catch (InvocationTargetException ex) {
          if (ex.getTargetException() instanceof InterruptedException
                  || ex.getTargetException() instanceof InterruptedIOException) {
              Thread.currentThread().interrupt();
          }
          throw new PropertySetterException(ex);
      } catch (RuntimeException ex) {
        throw new PropertySetterException(ex);
      }
    }
docs: Set the named property given a {@link PropertyDescriptor}.
  
  @param prop A PropertyDescriptor describing the characteristics
  of the property to set.
  @param name The named of the property to set.
  @param value The value of the property.