Program: 90428
Project: 90428
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))) {
      if (setMethod.getParameterTypes().length == 1) {
        Class<?> paramType=setMethod.getParameterTypes()[0];
        try {
          if (paramType == Boolean.TYPE || paramType == Boolean.class) {
            setMethod.invoke(obj,(Boolean.valueOf(value)).booleanValue());
          }
 else           if (paramType == Integer.TYPE || paramType == Integer.class) {
            setMethod.invoke(obj,Integer.parseInt(value));
          }
 else           if (paramType == Byte.TYPE || paramType == Byte.class) {
            setMethod.invoke(obj,Byte.parseByte(value));
          }
 else           if (paramType == Long.TYPE || paramType == Long.class) {
            setMethod.invoke(obj,Long.parseLong(value));
          }
 else           if (paramType == Short.TYPE || paramType == Short.class) {
            setMethod.invoke(obj,Short.valueOf(value));
          }
 else           if (paramType == Float.TYPE || paramType == Float.class) {
            setMethod.invoke(obj,Float.valueOf(value));
          }
 else           if (paramType == Double.TYPE || paramType == Double.class) {
            setMethod.invoke(obj,Double.valueOf(value));
          }
 else           if (paramType == Character.TYPE || paramType == Character.class) {
            setMethod.invoke(obj,value.charAt(0));
          }
 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){
  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;
  }
}