Program: 66930
Project: 66930
Buggy source:
/** 
 * Convert parameter to Object with locale setting
 * @param dataType
 * @param format
 * @param value
 * @param locale
 * @return
 * @throws ValidationValueException
 */
public static Object validateWithLocale(String dataType,String format,String value,Locale locale,TimeZone timeZone) throws ValidationValueException {
  Object obj=null;
  if (value == null || IBirtConstants.NULL_VALUE.equals(value)) {
    return null;
  }
  try {
    if (format == null) {
      if (DesignChoiceConstants.PARAM_TYPE_DATE.equalsIgnoreCase(dataType)) {
        format=ParameterValidationUtil.DISPLAY_DATE_FORMAT;
      }
 else       if (DesignChoiceConstants.PARAM_TYPE_TIME.equalsIgnoreCase(dataType)) {
        format=ParameterValidationUtil.DISPLAY_TIME_FORMAT;
      }
 else       if (DesignChoiceConstants.PARAM_TYPE_DATETIME.equalsIgnoreCase(dataType)) {
        format=DesignChoiceConstants.DATETIEM_FORMAT_TYPE_UNFORMATTED;
      }
    }
    obj=ParameterValidationUtil.validate(dataType,format,value,locale,BirtUtility.toICUTimeZone(timeZone));
  }
 catch (  Exception e) {
    if (DesignChoiceConstants.PARAM_TYPE_DATETIME.equalsIgnoreCase(dataType)) {
      try {
        if (timeZone != null && value instanceof String) {
          obj=DataTypeUtil.toDate(value,BirtUtility.toICUTimeZone(timeZone));
        }
 else {
          obj=DataTypeUtil.toDate(value);
        }
      }
 catch (      BirtException el) {
        throw new ValidationValueException(value,PropertyValueException.DESIGN_EXCEPTION_INVALID_VALUE,DesignChoiceConstants.PARAM_TYPE_DATETIME);
      }
    }
 else {
      obj=ParameterValidationUtil.validate(dataType,getDefaultDateFormat(dataType),value,BirtUtility.toICUTimeZone(timeZone));
    }
  }
  return obj;
}

Fixed version (ground truth):
/** 
 * Convert parameter to Object with locale setting
 * @param dataType
 * @param format
 * @param value
 * @param locale
 * @return
 * @throws ValidationValueException
 */
public static Object validateWithLocale(String dataType,String format,String value,Locale locale,TimeZone timeZone) throws ValidationValueException {
  Object obj=null;
  if (value == null || IBirtConstants.NULL_VALUE.equals(value)) {
    return null;
  }
  try {
    if (format == null) {
      if (DesignChoiceConstants.PARAM_TYPE_DATE.equalsIgnoreCase(dataType)) {
        format=ParameterValidationUtil.DISPLAY_DATE_FORMAT;
      }
 else       if (DesignChoiceConstants.PARAM_TYPE_TIME.equalsIgnoreCase(dataType)) {
        format=ParameterValidationUtil.DISPLAY_TIME_FORMAT;
      }
 else       if (DesignChoiceConstants.PARAM_TYPE_DATETIME.equalsIgnoreCase(dataType)) {
        format=DesignChoiceConstants.DATETIEM_FORMAT_TYPE_UNFORMATTED;
      }
    }
    obj=ParameterValidationUtil.validate(dataType,format,value,locale,BirtUtility.toICUTimeZone(timeZone));
  }
 catch (  Exception e) {
    if (DesignChoiceConstants.PARAM_TYPE_DATETIME.equalsIgnoreCase(dataType)) {
      try {
        if (timeZone != null) {
          obj=DataTypeUtil.toDate(value,BirtUtility.toICUTimeZone(timeZone));
        }
 else {
          obj=DataTypeUtil.toDate(value);
        }
      }
 catch (      BirtException el) {
        throw new ValidationValueException(value,PropertyValueException.DESIGN_EXCEPTION_INVALID_VALUE,DesignChoiceConstants.PARAM_TYPE_DATETIME);
      }
    }
 else {
      obj=ParameterValidationUtil.validate(dataType,getDefaultDateFormat(dataType),value,BirtUtility.toICUTimeZone(timeZone));
    }
  }
  return obj;
}