Program: 75959
Project: 75959
Buggy source:
/** 
 * define pattern and locale here
 * @param formatString
 */
public void applyPattern(String formatString){
  try {
    this.formatPattern=formatString;
    if (formatString == null || formatString.equals(DATETIME_UNFORMATTED)) {
      formatPattern="String_Node_Str";
      dateFormat=com.ibm.icu.text.DateFormat.getDateTimeInstance(com.ibm.icu.text.DateFormat.MEDIUM,com.ibm.icu.text.DateFormat.SHORT,locale);
      return;
    }
 else     if (formatString.equals(DATE_UNFORMATTED)) {
      formatPattern="String_Node_Str";
      dateFormat=com.ibm.icu.text.DateFormat.getDateInstance(com.ibm.icu.text.DateFormat.MEDIUM,locale);
      return;
    }
 else     if (formatString.equals(TIME_UNFORMATTED)) {
      formatPattern="String_Node_Str";
      dateFormat=com.ibm.icu.text.DateFormat.getTimeInstance(com.ibm.icu.text.DateFormat.SHORT,locale);
      return;
    }
    if (formatString.length() == 1) {
      char patternTemp=formatString.charAt(0);
switch (patternTemp) {
case 'G':
        dateFormat=com.ibm.icu.text.DateFormat.getDateTimeInstance(com.ibm.icu.text.DateFormat.LONG,com.ibm.icu.text.DateFormat.LONG,locale);
      return;
case 'D':
    dateFormat=com.ibm.icu.text.DateFormat.getDateInstance(com.ibm.icu.text.DateFormat.LONG,locale);
  return;
case 'd':
dateFormat=com.ibm.icu.text.DateFormat.getDateInstance(com.ibm.icu.text.DateFormat.SHORT,locale);
return;
case 'T':
dateFormat=com.ibm.icu.text.DateFormat.getTimeInstance(com.ibm.icu.text.DateFormat.LONG,locale);
return;
case 't':
dateFormat=new SimpleDateFormat("String_Node_Str",locale);
return;
case 'f':
dateFormat=com.ibm.icu.text.DateFormat.getDateTimeInstance(com.ibm.icu.text.DateFormat.LONG,com.ibm.icu.text.DateFormat.SHORT,locale);
return;
case 'F':
dateFormat=com.ibm.icu.text.DateFormat.getDateTimeInstance(com.ibm.icu.text.DateFormat.LONG,com.ibm.icu.text.DateFormat.LONG,locale);
return;
case 'i':
case 'I':
int timeForm=(patternTemp == 'i') ? com.ibm.icu.text.DateFormat.MEDIUM : com.ibm.icu.text.DateFormat.LONG;
com.ibm.icu.text.DateFormat factoryFormat=com.ibm.icu.text.DateFormat.getDateTimeInstance(com.ibm.icu.text.DateFormat.SHORT,timeForm,locale);
SimpleDateFormat factorySimpleFormat;
try {
factorySimpleFormat=(SimpleDateFormat)factoryFormat;
}
 catch (ClassCastException e) {
dateFormat=factoryFormat;
return;
}
String pattern=factorySimpleFormat.toPattern();
if (pattern.indexOf("String_Node_Str") == -1) {
int idx=pattern.indexOf("String_Node_Str");
if (idx >= 0) {
StringBuffer strBuf=new StringBuffer(pattern);
strBuf.insert(idx,'y');
pattern=strBuf.toString();
}
}
dateFormat=new SimpleDateFormat(pattern,locale);
return;
case 'g':
dateFormat=com.ibm.icu.text.DateFormat.getDateTimeInstance(com.ibm.icu.text.DateFormat.SHORT,com.ibm.icu.text.DateFormat.SHORT,locale);
return;
case 'M':
case 'm':
dateFormat=new SimpleDateFormat("String_Node_Str",locale);
return;
case 'R':
case 'r':
dateFormat=new SimpleDateFormat("String_Node_Str",locale);
dateFormat.setTimeZone(TimeZone.getTimeZone("String_Node_Str"));
return;
case 's':
dateFormat=new SimpleDateFormat("String_Node_Str",locale);
return;
case 'u':
dateFormat=new SimpleDateFormat("String_Node_Str",locale);
return;
case 'Y':
case 'y':
dateFormat=new SimpleDateFormat("String_Node_Str",locale);
return;
default :
dateFormat=new SimpleDateFormat(formatString,locale);
return;
}
}
if (formatString.equals("String_Node_Str")) {
dateFormat=com.ibm.icu.text.DateFormat.getDateTimeInstance(com.ibm.icu.text.DateFormat.LONG,com.ibm.icu.text.DateFormat.LONG,locale);
return;
}
if (formatString.equals("String_Node_Str")) {
dateFormat=com.ibm.icu.text.DateFormat.getDateInstance(com.ibm.icu.text.DateFormat.LONG,locale);
return;
}
if (formatString.equals("String_Node_Str")) {
dateFormat=com.ibm.icu.text.DateFormat.getDateInstance(com.ibm.icu.text.DateFormat.MEDIUM,locale);
return;
}
if (formatString.equals("String_Node_Str")) {
dateFormat=com.ibm.icu.text.DateFormat.getDateInstance(com.ibm.icu.text.DateFormat.SHORT,locale);
return;
}
if (formatString.equals("String_Node_Str")) {
dateFormat=com.ibm.icu.text.DateFormat.getTimeInstance(com.ibm.icu.text.DateFormat.LONG,locale);
return;
}
if (formatString.equals("String_Node_Str")) {
dateFormat=com.ibm.icu.text.DateFormat.getTimeInstance(com.ibm.icu.text.DateFormat.MEDIUM,locale);
return;
}
if (formatString.equals("String_Node_Str")) {
dateFormat=new SimpleDateFormat("String_Node_Str",locale);
return;
}
dateFormat=new SimpleDateFormat(formatString,locale);
}
 catch (Exception e) {
logger.log(Level.WARNING,e.getMessage(),e);
}
}

Fixed version (ground truth):
/** 
 * define pattern and locale here
 * @param formatString
 */
public void applyPattern(String formatString){
  try {
    this.formatPattern=formatString;
    if (formatString == null || formatString.equals(DATETIME_UNFORMATTED)) {
      formatPattern="String_Node_Str";
      dateFormat=com.ibm.icu.text.DateFormat.getDateTimeInstance(com.ibm.icu.text.DateFormat.MEDIUM,com.ibm.icu.text.DateFormat.SHORT,locale);
      return;
    }
 else     if (formatString.equals(DATE_UNFORMATTED)) {
      formatPattern="String_Node_Str";
      dateFormat=com.ibm.icu.text.DateFormat.getDateInstance(com.ibm.icu.text.DateFormat.MEDIUM,locale);
      return;
    }
 else     if (formatString.equals(TIME_UNFORMATTED)) {
      formatPattern="String_Node_Str";
      dateFormat=com.ibm.icu.text.DateFormat.getTimeInstance(com.ibm.icu.text.DateFormat.MEDIUM,locale);
      return;
    }
    if (formatString.length() == 1) {
      char patternTemp=formatString.charAt(0);
switch (patternTemp) {
case 'G':
        dateFormat=com.ibm.icu.text.DateFormat.getDateTimeInstance(com.ibm.icu.text.DateFormat.LONG,com.ibm.icu.text.DateFormat.LONG,locale);
      return;
case 'D':
    dateFormat=com.ibm.icu.text.DateFormat.getDateInstance(com.ibm.icu.text.DateFormat.LONG,locale);
  return;
case 'd':
dateFormat=com.ibm.icu.text.DateFormat.getDateInstance(com.ibm.icu.text.DateFormat.SHORT,locale);
return;
case 'T':
dateFormat=com.ibm.icu.text.DateFormat.getTimeInstance(com.ibm.icu.text.DateFormat.LONG,locale);
return;
case 't':
dateFormat=new SimpleDateFormat("String_Node_Str",locale);
return;
case 'f':
dateFormat=com.ibm.icu.text.DateFormat.getDateTimeInstance(com.ibm.icu.text.DateFormat.LONG,com.ibm.icu.text.DateFormat.SHORT,locale);
return;
case 'F':
dateFormat=com.ibm.icu.text.DateFormat.getDateTimeInstance(com.ibm.icu.text.DateFormat.LONG,com.ibm.icu.text.DateFormat.LONG,locale);
return;
case 'i':
case 'I':
int timeForm=(patternTemp == 'i') ? com.ibm.icu.text.DateFormat.MEDIUM : com.ibm.icu.text.DateFormat.LONG;
com.ibm.icu.text.DateFormat factoryFormat=com.ibm.icu.text.DateFormat.getDateTimeInstance(com.ibm.icu.text.DateFormat.SHORT,timeForm,locale);
SimpleDateFormat factorySimpleFormat;
try {
factorySimpleFormat=(SimpleDateFormat)factoryFormat;
}
 catch (ClassCastException e) {
dateFormat=factoryFormat;
return;
}
String pattern=factorySimpleFormat.toPattern();
if (pattern.indexOf("String_Node_Str") == -1) {
int idx=pattern.indexOf("String_Node_Str");
if (idx >= 0) {
StringBuffer strBuf=new StringBuffer(pattern);
strBuf.insert(idx,'y');
pattern=strBuf.toString();
}
}
dateFormat=new SimpleDateFormat(pattern,locale);
return;
case 'g':
dateFormat=com.ibm.icu.text.DateFormat.getDateTimeInstance(com.ibm.icu.text.DateFormat.SHORT,com.ibm.icu.text.DateFormat.SHORT,locale);
return;
case 'M':
case 'm':
dateFormat=new SimpleDateFormat("String_Node_Str",locale);
return;
case 'R':
case 'r':
dateFormat=new SimpleDateFormat("String_Node_Str",locale);
dateFormat.setTimeZone(TimeZone.getTimeZone("String_Node_Str"));
return;
case 's':
dateFormat=new SimpleDateFormat("String_Node_Str",locale);
return;
case 'u':
dateFormat=new SimpleDateFormat("String_Node_Str",locale);
return;
case 'Y':
case 'y':
dateFormat=new SimpleDateFormat("String_Node_Str",locale);
return;
default :
dateFormat=new SimpleDateFormat(formatString,locale);
return;
}
}
if (formatString.equals("String_Node_Str")) {
dateFormat=com.ibm.icu.text.DateFormat.getDateTimeInstance(com.ibm.icu.text.DateFormat.LONG,com.ibm.icu.text.DateFormat.LONG,locale);
return;
}
if (formatString.equals("String_Node_Str")) {
dateFormat=com.ibm.icu.text.DateFormat.getDateInstance(com.ibm.icu.text.DateFormat.LONG,locale);
return;
}
if (formatString.equals("String_Node_Str")) {
dateFormat=com.ibm.icu.text.DateFormat.getDateInstance(com.ibm.icu.text.DateFormat.MEDIUM,locale);
return;
}
if (formatString.equals("String_Node_Str")) {
dateFormat=com.ibm.icu.text.DateFormat.getDateInstance(com.ibm.icu.text.DateFormat.SHORT,locale);
return;
}
if (formatString.equals("String_Node_Str")) {
dateFormat=com.ibm.icu.text.DateFormat.getTimeInstance(com.ibm.icu.text.DateFormat.LONG,locale);
return;
}
if (formatString.equals("String_Node_Str")) {
dateFormat=com.ibm.icu.text.DateFormat.getTimeInstance(com.ibm.icu.text.DateFormat.MEDIUM,locale);
return;
}
if (formatString.equals("String_Node_Str")) {
dateFormat=new SimpleDateFormat("String_Node_Str",locale);
return;
}
dateFormat=new SimpleDateFormat(formatString,locale);
}
 catch (Exception e) {
logger.log(Level.WARNING,e.getMessage(),e);
}
}