Program: 17080
Project: 17080
Buggy source:
/** 
 * This class is the actual worker doing all the dirty stuff related to sending the Blast request to the CGI_BIN interface. It should never be used as is but any method wanting to send a Blast request should manage to use it by feeding it the right parameters.
 * @param str : a <code>String</code> representation of a sequence from either of thethree wrapper methods
 * @param rpa :a <code>RemotePairwiseAlignmentProperties</code> object
 * @return rid : the ID of this request on the NCBI QBlast server
 * @throws Exception if unable to connect to the NCBI QBlast service
 */
private String sendActualAlignementRequest(String str,RemotePairwiseAlignmentProperties rpa) throws Exception {
  seq="String_Node_Str" + str;
  prog="String_Node_Str" + rpa.getAlignmentOption("String_Node_Str");
  db="String_Node_Str" + rpa.getAlignmentOption("String_Node_Str");
  if (prog == null || db == null || str == null || str.length() == 0) {
    throw new Exception("String_Node_Str");
  }
  String cmd="String_Node_Str" + seq + "String_Node_Str"+ prog+ "String_Node_Str"+ db+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ getTool()+ "String_Node_Str"+ getEmail();
  if (rpa.getAlignmentOption("String_Node_Str") != "String_Node_Str") {
    cmd+=cmd + "String_Node_Str" + rpa.getAlignmentOption("String_Node_Str");
  }
  try {
    uConn=setQBlastServiceProperties(aUrl.openConnection());
    fromQBlast=new OutputStreamWriter(uConn.getOutputStream());
    fromQBlast.write(cmd);
    fromQBlast.flush();
    rd=new BufferedReader(new InputStreamReader(uConn.getInputStream()));
    String line="String_Node_Str";
    while ((line=rd.readLine()) != null) {
      if (line.contains("String_Node_Str")) {
        String[] arr=line.split("String_Node_Str");
        rid=arr[1].trim();
      }
 else       if (line.contains("String_Node_Str")) {
        String[] arr=line.split("String_Node_Str");
        step=Long.parseLong(arr[1].trim()) * 1000;
        start=System.currentTimeMillis() + step;
      }
      holder.put(rid,start);
    }
  }
 catch (  IOException e) {
    throw new Exception("String_Node_Str");
  }
  return rid;
}

Fixed version (ground truth):
/** 
 * This class is the actual worker doing all the dirty stuff related to sending the Blast request to the CGI_BIN interface. It should never be used as is but any method wanting to send a Blast request should manage to use it by feeding it the right parameters.
 * @param str : a <code>String</code> representation of a sequence from either of thethree wrapper methods
 * @param rpa :a <code>RemotePairwiseAlignmentProperties</code> object
 * @return rid : the ID of this request on the NCBI QBlast server
 * @throws Exception if unable to connect to the NCBI QBlast service
 */
private String sendActualAlignementRequest(String str,RemotePairwiseAlignmentProperties rpa) throws Exception {
  if (rpa.getAlignmentOption("String_Node_Str") == "String_Node_Str" || rpa.getAlignmentOption("String_Node_Str") == "String_Node_Str") {
    throw new Exception("String_Node_Str");
  }
 else {
    seq="String_Node_Str" + str;
    prog="String_Node_Str" + rpa.getAlignmentOption("String_Node_Str");
    db="String_Node_Str" + rpa.getAlignmentOption("String_Node_Str");
    cmd="String_Node_Str" + seq + "String_Node_Str"+ prog+ "String_Node_Str"+ db+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ getTool()+ "String_Node_Str"+ getEmail();
  }
  if (rpa.getAlignmentOption("String_Node_Str") != "String_Node_Str") {
    cmd+=cmd + "String_Node_Str" + rpa.getAlignmentOption("String_Node_Str");
  }
  try {
    uConn=setQBlastServiceProperties(aUrl.openConnection());
    fromQBlast=new OutputStreamWriter(uConn.getOutputStream());
    fromQBlast.write(cmd);
    fromQBlast.flush();
    rd=new BufferedReader(new InputStreamReader(uConn.getInputStream()));
    String line="String_Node_Str";
    while ((line=rd.readLine()) != null) {
      if (line.contains("String_Node_Str")) {
        String[] arr=line.split("String_Node_Str");
        rid=arr[1].trim();
      }
 else       if (line.contains("String_Node_Str")) {
        String[] arr=line.split("String_Node_Str");
        step=Long.parseLong(arr[1].trim()) * 1000;
        start=System.currentTimeMillis() + step;
      }
      holder.put(rid,start);
    }
  }
 catch (  IOException e) {
    throw new Exception("String_Node_Str");
  }
  return rid;
}