Program: 90370
Project: 90370
Buggy source:
protected void setConnectionParam(DataSource obj,String propertyName,String value){
  Method[] setMethods=obj.getClass().getMethods();
  for (  Method setMethod : setMethods) {
    if (!setMethod.getName().equals("String_Node_Str" + StringUtil.upperFirstLetter(propertyName))) {
      continue;
    }
    if (setMethod.getParameterTypes().length > 1) {
      continue;
    }
    Class<?> paramType=setMethod.getParameterTypes()[0];
    try {
      if (paramType == Boolean.TYPE || paramType == Boolean.class) {
        Boolean v=(Boolean.valueOf(value)).booleanValue();
        setMethod.invoke(obj,v);
      }
 else       if (paramType == Integer.TYPE || paramType == Integer.class) {
        Integer v=Integer.parseInt(value);
        setMethod.invoke(obj,v);
      }
 else       if (paramType == Byte.TYPE || paramType == Byte.class) {
        Byte v=Byte.parseByte(value);
        setMethod.invoke(obj,v);
      }
 else       if (paramType == Long.TYPE || paramType == Long.class) {
        Long v=Long.parseLong(value);
        setMethod.invoke(obj,v);
      }
 else       if (paramType == Short.TYPE || paramType == Short.class) {
        Short v=Short.valueOf(value);
        setMethod.invoke(obj,v);
      }
 else       if (paramType == Float.TYPE || paramType == Float.class) {
        Float v=Float.valueOf(value);
        setMethod.invoke(obj,v);
      }
 else       if (paramType == Double.TYPE || paramType == Double.class) {
        Double v=Double.valueOf(value);
        setMethod.invoke(obj,v);
      }
 else       if (paramType == Character.TYPE || paramType == Character.class) {
        Character v=value.charAt(0);
        setMethod.invoke(obj,v);
      }
 else {
        setMethod.invoke(obj,value);
      }
    }
 catch (    Exception e) {
      throw new RuntimeException(e);
    }
    return;
  }
}

Fixed version (ground truth):
protected void setConnectionParam(DataSource obj,String propertyName,String value) throws IntrospectionException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
  PropertyDescriptor pd=ReflectUtil.getPropertyDescriptor(obj.getClass(),propertyName);
  Method writeMethod=null;
  if (pd != null) {
    writeMethod=pd.getWriteMethod();
  }
 else {
    LOG.warn("String_Node_Str",propertyName);
    return;
  }
  Class<?> paramType=pd.getPropertyType();
  try {
    if (paramType == Boolean.TYPE || paramType == Boolean.class) {
      Boolean v=(Boolean.valueOf(value)).booleanValue();
      writeMethod.invoke(obj,v);
    }
 else     if (paramType == Integer.TYPE || paramType == Integer.class) {
      Integer v=Integer.parseInt(value);
      writeMethod.invoke(obj,v);
    }
 else     if (paramType == Byte.TYPE || paramType == Byte.class) {
      Byte v=Byte.parseByte(value);
      writeMethod.invoke(obj,v);
    }
 else     if (paramType == Long.TYPE || paramType == Long.class) {
      Long v=Long.parseLong(value);
      writeMethod.invoke(obj,v);
    }
 else     if (paramType == Short.TYPE || paramType == Short.class) {
      Short v=Short.valueOf(value);
      writeMethod.invoke(obj,v);
    }
 else     if (paramType == Float.TYPE || paramType == Float.class) {
      Float v=Float.valueOf(value);
      writeMethod.invoke(obj,v);
    }
 else     if (paramType == Double.TYPE || paramType == Double.class) {
      Double v=Double.valueOf(value);
      writeMethod.invoke(obj,v);
    }
 else     if (paramType == Character.TYPE || paramType == Character.class) {
      Character v=value.charAt(0);
      writeMethod.invoke(obj,v);
    }
 else {
      writeMethod.invoke(obj,value);
    }
  }
 catch (  Exception e) {
    throw new RuntimeException(e);
  }
}