Program: 106164
Project: 106164
Buggy source:
public Pair<List<HostJoinVO>,Integer> searchForServersInternal(ListHostsCmd cmd){
  Long zoneId=_accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(),cmd.getZoneId());
  Object name=cmd.getHostName();
  Object type=cmd.getType();
  Object state=cmd.getState();
  Object pod=cmd.getPodId();
  Object cluster=cmd.getClusterId();
  Object id=cmd.getId();
  Object keyword=cmd.getKeyword();
  Object resourceState=cmd.getResourceState();
  Object haHosts=cmd.getHaHost();
  Long startIndex=cmd.getStartIndex();
  Long pageSize=cmd.getPageSizeVal();
  Filter searchFilter=new Filter(HostJoinVO.class,"String_Node_Str",Boolean.TRUE,startIndex,pageSize);
  SearchBuilder<HostJoinVO> sb=_hostJoinDao.createSearchBuilder();
  sb.select(null,Func.DISTINCT,sb.entity().getId());
  sb.and("String_Node_Str",sb.entity().getId(),SearchCriteria.Op.EQ);
  sb.and("String_Node_Str",sb.entity().getName(),SearchCriteria.Op.LIKE);
  sb.and("String_Node_Str",sb.entity().getType(),SearchCriteria.Op.LIKE);
  sb.and("String_Node_Str",sb.entity().getStatus(),SearchCriteria.Op.EQ);
  sb.and("String_Node_Str",sb.entity().getZoneId(),SearchCriteria.Op.EQ);
  sb.and("String_Node_Str",sb.entity().getPodId(),SearchCriteria.Op.EQ);
  sb.and("String_Node_Str",sb.entity().getClusterId(),SearchCriteria.Op.EQ);
  sb.and("String_Node_Str",sb.entity().getResourceState(),SearchCriteria.Op.EQ);
  String haTag=_haMgr.getHaTag();
  if (haHosts != null && haTag != null && !haTag.isEmpty()) {
    if ((Boolean)haHosts) {
      sb.and("String_Node_Str",sb.entity().getTag(),SearchCriteria.Op.EQ);
    }
 else {
      sb.and().op("String_Node_Str",sb.entity().getTag(),SearchCriteria.Op.NEQ);
      sb.or("String_Node_Str",sb.entity().getTag(),SearchCriteria.Op.NULL);
      sb.cp();
    }
  }
  SearchCriteria<HostJoinVO> sc=sb.create();
  if (keyword != null) {
    SearchCriteria<HostJoinVO> ssc=_hostJoinDao.createSearchCriteria();
    ssc.addOr("String_Node_Str",SearchCriteria.Op.LIKE,"String_Node_Str" + keyword + "String_Node_Str");
    ssc.addOr("String_Node_Str",SearchCriteria.Op.LIKE,"String_Node_Str" + keyword + "String_Node_Str");
    ssc.addOr("String_Node_Str",SearchCriteria.Op.LIKE,"String_Node_Str" + keyword + "String_Node_Str");
    sc.addAnd("String_Node_Str",SearchCriteria.Op.SC,ssc);
  }
  if (id != null) {
    sc.setParameters("String_Node_Str",id);
  }
  if (name != null) {
    sc.setParameters("String_Node_Str","String_Node_Str" + name + "String_Node_Str");
  }
  if (type != null) {
    sc.setParameters("String_Node_Str","String_Node_Str" + type);
  }
  if (state != null) {
    sc.setParameters("String_Node_Str",state);
  }
  if (zoneId != null) {
    sc.setParameters("String_Node_Str",zoneId);
  }
  if (pod != null) {
    sc.setParameters("String_Node_Str",pod);
  }
  if (cluster != null) {
    sc.setParameters("String_Node_Str",cluster);
  }
  if (resourceState != null) {
    sc.setParameters("String_Node_Str",resourceState);
  }
  if (haHosts != null && haTag != null && !haTag.isEmpty()) {
    sc.setJoinParameters("String_Node_Str","String_Node_Str",haTag);
  }
  Pair<List<HostJoinVO>,Integer> uniqueHostPair=_hostJoinDao.searchAndCount(sc,searchFilter);
  Integer count=uniqueHostPair.second();
  if (count.intValue() == 0) {
    return uniqueHostPair;
  }
  List<HostJoinVO> uniqueHosts=uniqueHostPair.first();
  Long[] hostIds=new Long[uniqueHosts.size()];
  int i=0;
  for (  HostJoinVO v : uniqueHosts) {
    hostIds[i++]=v.getId();
  }
  List<HostJoinVO> hosts=_hostJoinDao.searchByIds(hostIds);
  return new Pair<List<HostJoinVO>,Integer>(hosts,count);
}

Fixed version (ground truth):
public Pair<List<HostJoinVO>,Integer> searchForServersInternal(ListHostsCmd cmd){
  Long zoneId=_accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(),cmd.getZoneId());
  Object name=cmd.getHostName();
  Object type=cmd.getType();
  Object state=cmd.getState();
  Object pod=cmd.getPodId();
  Object cluster=cmd.getClusterId();
  Object id=cmd.getId();
  Object keyword=cmd.getKeyword();
  Object resourceState=cmd.getResourceState();
  Object haHosts=cmd.getHaHost();
  Long startIndex=cmd.getStartIndex();
  Long pageSize=cmd.getPageSizeVal();
  Filter searchFilter=new Filter(HostJoinVO.class,"String_Node_Str",Boolean.TRUE,startIndex,pageSize);
  SearchBuilder<HostJoinVO> sb=_hostJoinDao.createSearchBuilder();
  sb.select(null,Func.DISTINCT,sb.entity().getId());
  sb.and("String_Node_Str",sb.entity().getId(),SearchCriteria.Op.EQ);
  sb.and("String_Node_Str",sb.entity().getName(),SearchCriteria.Op.LIKE);
  sb.and("String_Node_Str",sb.entity().getType(),SearchCriteria.Op.LIKE);
  sb.and("String_Node_Str",sb.entity().getStatus(),SearchCriteria.Op.EQ);
  sb.and("String_Node_Str",sb.entity().getZoneId(),SearchCriteria.Op.EQ);
  sb.and("String_Node_Str",sb.entity().getPodId(),SearchCriteria.Op.EQ);
  sb.and("String_Node_Str",sb.entity().getClusterId(),SearchCriteria.Op.EQ);
  sb.and("String_Node_Str",sb.entity().getResourceState(),SearchCriteria.Op.EQ);
  String haTag=_haMgr.getHaTag();
  if (haHosts != null && haTag != null && !haTag.isEmpty()) {
    if ((Boolean)haHosts) {
      sb.and("String_Node_Str",sb.entity().getTag(),SearchCriteria.Op.EQ);
    }
 else {
      sb.and().op("String_Node_Str",sb.entity().getTag(),SearchCriteria.Op.NEQ);
      sb.or("String_Node_Str",sb.entity().getTag(),SearchCriteria.Op.NULL);
      sb.cp();
    }
  }
  SearchCriteria<HostJoinVO> sc=sb.create();
  if (keyword != null) {
    SearchCriteria<HostJoinVO> ssc=_hostJoinDao.createSearchCriteria();
    ssc.addOr("String_Node_Str",SearchCriteria.Op.LIKE,"String_Node_Str" + keyword + "String_Node_Str");
    ssc.addOr("String_Node_Str",SearchCriteria.Op.LIKE,"String_Node_Str" + keyword + "String_Node_Str");
    ssc.addOr("String_Node_Str",SearchCriteria.Op.LIKE,"String_Node_Str" + keyword + "String_Node_Str");
    sc.addAnd("String_Node_Str",SearchCriteria.Op.SC,ssc);
  }
  if (id != null) {
    sc.setParameters("String_Node_Str",id);
  }
  if (name != null) {
    sc.setParameters("String_Node_Str","String_Node_Str" + name + "String_Node_Str");
  }
  if (type != null) {
    sc.setParameters("String_Node_Str","String_Node_Str" + type);
  }
  if (state != null) {
    sc.setParameters("String_Node_Str",state);
  }
  if (zoneId != null) {
    sc.setParameters("String_Node_Str",zoneId);
  }
  if (pod != null) {
    sc.setParameters("String_Node_Str",pod);
  }
  if (cluster != null) {
    sc.setParameters("String_Node_Str",cluster);
  }
  if (resourceState != null) {
    sc.setParameters("String_Node_Str",resourceState);
  }
  if (haHosts != null && haTag != null && !haTag.isEmpty()) {
    sc.setParameters("String_Node_Str",haTag);
  }
  Pair<List<HostJoinVO>,Integer> uniqueHostPair=_hostJoinDao.searchAndCount(sc,searchFilter);
  Integer count=uniqueHostPair.second();
  if (count.intValue() == 0) {
    return uniqueHostPair;
  }
  List<HostJoinVO> uniqueHosts=uniqueHostPair.first();
  Long[] hostIds=new Long[uniqueHosts.size()];
  int i=0;
  for (  HostJoinVO v : uniqueHosts) {
    hostIds[i++]=v.getId();
  }
  List<HostJoinVO> hosts=_hostJoinDao.searchByIds(hostIds);
  return new Pair<List<HostJoinVO>,Integer>(hosts,count);
}