Program: 105080
Project: 105080
Buggy source:
public List<DatadiskTO> getOVFVolumeInfo(final String ovfFilePath){
  if (StringUtils.isBlank(ovfFilePath)) {
    return new ArrayList<DatadiskTO>();
  }
  ArrayList<OVFFile> vf=new ArrayList<OVFFile>();
  ArrayList<OVFDisk> vd=new ArrayList<OVFDisk>();
  File ovfFile=new File(ovfFilePath);
  try {
    final Document doc=DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File(ovfFilePath));
    NodeList disks=doc.getElementsByTagName("String_Node_Str");
    NodeList files=doc.getElementsByTagName("String_Node_Str");
    NodeList items=doc.getElementsByTagName("String_Node_Str");
    boolean toggle=true;
    for (int j=0; j < files.getLength(); j++) {
      Element file=(Element)files.item(j);
      OVFFile of=new OVFFile();
      of._href=file.getAttribute("String_Node_Str");
      if (of._href.endsWith("String_Node_Str") || of._href.endsWith("String_Node_Str")) {
        of._id=file.getAttribute("String_Node_Str");
        String size=file.getAttribute("String_Node_Str");
        if (StringUtils.isNotBlank(size)) {
          of._size=Long.parseLong(size);
        }
 else {
          String dataDiskPath=ovfFile.getParent() + File.separator + of._href;
          File this_file=new File(dataDiskPath);
          of._size=this_file.length();
        }
        of.isIso=of._href.endsWith("String_Node_Str");
        if (toggle && !of.isIso) {
          of._bootable=true;
          toggle=!toggle;
        }
        vf.add(of);
      }
    }
    for (int i=0; i < disks.getLength(); i++) {
      Element disk=(Element)disks.item(i);
      OVFDisk od=new OVFDisk();
      String virtualSize=disk.getAttribute("String_Node_Str");
      od._capacity=NumberUtils.toLong(virtualSize,0L);
      String allocationUnits=disk.getAttribute("String_Node_Str");
      od._diskId=disk.getAttribute("String_Node_Str");
      od._fileRef=disk.getAttribute("String_Node_Str");
      od._populatedSize=Long.parseLong(disk.getAttribute("String_Node_Str") == null ? "String_Node_Str" : disk.getAttribute("String_Node_Str"));
      if ((od._capacity != 0) && (allocationUnits != null)) {
        long units=1;
        if (allocationUnits.equalsIgnoreCase("String_Node_Str") || allocationUnits.equalsIgnoreCase("String_Node_Str") || allocationUnits.equalsIgnoreCase("String_Node_Str")) {
          units=ResourceType.bytesToKiB;
        }
 else         if (allocationUnits.equalsIgnoreCase("String_Node_Str") || allocationUnits.equalsIgnoreCase("String_Node_Str") || allocationUnits.equalsIgnoreCase("String_Node_Str")) {
          units=ResourceType.bytesToMiB;
        }
 else         if (allocationUnits.equalsIgnoreCase("String_Node_Str") || allocationUnits.equalsIgnoreCase("String_Node_Str") || allocationUnits.equalsIgnoreCase("String_Node_Str")) {
          units=ResourceType.bytesToGiB;
        }
        od._capacity=od._capacity * units;
      }
      od._controller=getControllerType(items,od._diskId);
      vd.add(od);
    }
  }
 catch (  SAXException|IOException|ParserConfigurationException e) {
    s_logger.error("String_Node_Str" + ovfFilePath,e);
    throw new CloudRuntimeException(e);
  }
  List<DatadiskTO> disksTO=new ArrayList<DatadiskTO>();
  for (  OVFFile of : vf) {
    if (StringUtils.isBlank(of._id)) {
      s_logger.error("String_Node_Str");
      throw new CloudRuntimeException("String_Node_Str");
    }
    OVFDisk cdisk=getDisk(of._id,vd);
    if (cdisk == null && !of.isIso) {
      s_logger.error("String_Node_Str");
      throw new CloudRuntimeException("String_Node_Str");
    }
    Long capacity=cdisk == null ? of._size : cdisk._capacity;
    String controller=cdisk == null ? "String_Node_Str" : cdisk._controller._name;
    String controllerSubType=cdisk == null ? "String_Node_Str" : cdisk._controller._subType;
    String dataDiskPath=ovfFile.getParent() + File.separator + of._href;
    File f=new File(dataDiskPath);
    if (!f.exists() || f.isDirectory()) {
      s_logger.error("String_Node_Str" + dataDiskPath);
      throw new CloudRuntimeException("String_Node_Str" + dataDiskPath);
    }
    disksTO.add(new DatadiskTO(dataDiskPath,capacity,of._size,of._id,of.isIso,of._bootable,controller,controllerSubType));
  }
  DatadiskTO fd=disksTO.get(0);
  if (fd.isIso()) {
    disksTO.remove(0);
    disksTO.add(fd);
  }
  return disksTO;
}

Fixed version (ground truth):
public List<DatadiskTO> getOVFVolumeInfo(final String ovfFilePath){
  if (StringUtils.isBlank(ovfFilePath)) {
    return new ArrayList<DatadiskTO>();
  }
  ArrayList<OVFFile> vf=new ArrayList<OVFFile>();
  ArrayList<OVFDisk> vd=new ArrayList<OVFDisk>();
  File ovfFile=new File(ovfFilePath);
  try {
    final Document doc=DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File(ovfFilePath));
    NodeList disks=doc.getElementsByTagName("String_Node_Str");
    NodeList files=doc.getElementsByTagName("String_Node_Str");
    NodeList items=doc.getElementsByTagName("String_Node_Str");
    boolean toggle=true;
    for (int j=0; j < files.getLength(); j++) {
      Element file=(Element)files.item(j);
      OVFFile of=new OVFFile();
      of._href=file.getAttribute("String_Node_Str");
      if (of._href.endsWith("String_Node_Str") || of._href.endsWith("String_Node_Str")) {
        of._id=file.getAttribute("String_Node_Str");
        String size=file.getAttribute("String_Node_Str");
        if (StringUtils.isNotBlank(size)) {
          of._size=Long.parseLong(size);
        }
 else {
          String dataDiskPath=ovfFile.getParent() + File.separator + of._href;
          File this_file=new File(dataDiskPath);
          of._size=this_file.length();
        }
        of.isIso=of._href.endsWith("String_Node_Str");
        if (toggle && !of.isIso) {
          of._bootable=true;
          toggle=!toggle;
        }
        vf.add(of);
      }
    }
    for (int i=0; i < disks.getLength(); i++) {
      Element disk=(Element)disks.item(i);
      OVFDisk od=new OVFDisk();
      String virtualSize=disk.getAttribute("String_Node_Str");
      od._capacity=NumberUtils.toLong(virtualSize,0L);
      String allocationUnits=disk.getAttribute("String_Node_Str");
      od._diskId=disk.getAttribute("String_Node_Str");
      od._fileRef=disk.getAttribute("String_Node_Str");
      od._populatedSize=NumberUtils.toLong(disk.getAttribute("String_Node_Str"));
      if ((od._capacity != 0) && (allocationUnits != null)) {
        long units=1;
        if (allocationUnits.equalsIgnoreCase("String_Node_Str") || allocationUnits.equalsIgnoreCase("String_Node_Str") || allocationUnits.equalsIgnoreCase("String_Node_Str")) {
          units=ResourceType.bytesToKiB;
        }
 else         if (allocationUnits.equalsIgnoreCase("String_Node_Str") || allocationUnits.equalsIgnoreCase("String_Node_Str") || allocationUnits.equalsIgnoreCase("String_Node_Str")) {
          units=ResourceType.bytesToMiB;
        }
 else         if (allocationUnits.equalsIgnoreCase("String_Node_Str") || allocationUnits.equalsIgnoreCase("String_Node_Str") || allocationUnits.equalsIgnoreCase("String_Node_Str")) {
          units=ResourceType.bytesToGiB;
        }
        od._capacity=od._capacity * units;
      }
      od._controller=getControllerType(items,od._diskId);
      vd.add(od);
    }
  }
 catch (  SAXException|IOException|ParserConfigurationException e) {
    s_logger.error("String_Node_Str" + ovfFilePath,e);
    throw new CloudRuntimeException(e);
  }
  List<DatadiskTO> disksTO=new ArrayList<DatadiskTO>();
  for (  OVFFile of : vf) {
    if (StringUtils.isBlank(of._id)) {
      s_logger.error("String_Node_Str");
      throw new CloudRuntimeException("String_Node_Str");
    }
    OVFDisk cdisk=getDisk(of._id,vd);
    if (cdisk == null && !of.isIso) {
      s_logger.error("String_Node_Str");
      throw new CloudRuntimeException("String_Node_Str");
    }
    Long capacity=cdisk == null ? of._size : cdisk._capacity;
    String controller=cdisk == null ? "String_Node_Str" : cdisk._controller._name;
    String controllerSubType=cdisk == null ? "String_Node_Str" : cdisk._controller._subType;
    String dataDiskPath=ovfFile.getParent() + File.separator + of._href;
    File f=new File(dataDiskPath);
    if (!f.exists() || f.isDirectory()) {
      s_logger.error("String_Node_Str" + dataDiskPath);
      throw new CloudRuntimeException("String_Node_Str" + dataDiskPath);
    }
    disksTO.add(new DatadiskTO(dataDiskPath,capacity,of._size,of._id,of.isIso,of._bootable,controller,controllerSubType));
  }
  DatadiskTO fd=disksTO.get(0);
  if (fd.isIso()) {
    disksTO.remove(0);
    disksTO.add(fd);
  }
  return disksTO;
}