Program: 90147
Project: 90147
Buggy source:
/** 
 * Retrieve the preservation status for the files with the given filenames.  This will ask for a fresh checksum from the bitarchives and admin data.
 * @param filenames List of filenames
 * @return a map the preservation status for the files with a givenfilename. The preservationstate is null, if the file named does not exist in admin data.
 * @throws ArgumentNotValid if argument is null
 */
public Map<String,FilePreservationState> getFilePreservationStateMap(String... filenames){
  ArgumentNotValid.checkNotNull(filenames,"String_Node_Str");
  admin.synchronize();
  Map<String,FilePreservationState> filepreservationStates=new HashMap<String,FilePreservationState>();
  Map<String,ArcRepositoryEntry> adminInfo=new HashMap<String,ArcRepositoryEntry>();
  Set<String> missingInAdmindata=new HashSet<String>();
  for (  String filename : filenames) {
    ArcRepositoryEntry ae=admin.getEntry(filename);
    if (ae != null) {
      adminInfo.put(filename,ae);
    }
 else {
      missingInAdmindata.add(filename);
    }
  }
  for (  String missing : missingInAdmindata) {
    filepreservationStates.put(missing,null);
  }
  if (missingInAdmindata.size() > 0) {
    log.warn("String_Node_Str" + missingInAdmindata.size() + "String_Node_Str"+ StringUtils.conjoin("String_Node_Str",missingInAdmindata));
  }
  Map<String,Map<Location,List<String>>> checksumMaps=getChecksumMaps(adminInfo.keySet());
  for (  String filename : adminInfo.keySet()) {
    filepreservationStates.put(filename,new FilePreservationState(filename,adminInfo.get(filename),checksumMaps.get(filename)));
  }
  return filepreservationStates;
}

Fixed version (ground truth):
/** 
 * Retrieve the preservation status for the files with the given filenames.  This will ask for a fresh checksum from the bitarchives and admin data.
 * @param filenames List of filenames
 * @return a map of the preservation status for the given files.The preservationstate is null, if the file named does not exist in admin data.
 * @throws ArgumentNotValid if argument is null
 */
public Map<String,FilePreservationState> getFilePreservationStateMap(String... filenames){
  ArgumentNotValid.checkNotNull(filenames,"String_Node_Str");
  admin.synchronize();
  Map<String,ArcRepositoryEntry> adminInfo=new HashMap<String,ArcRepositoryEntry>();
  Set<String> missingInAdmindata=new HashSet<String>();
  for (  String filename : filenames) {
    ArcRepositoryEntry ae=admin.getEntry(filename);
    if (ae != null) {
      adminInfo.put(filename,ae);
    }
 else {
      missingInAdmindata.add(filename);
    }
  }
  Map<String,FilePreservationState> filepreservationStates=new HashMap<String,FilePreservationState>();
  for (  String missing : missingInAdmindata) {
    filepreservationStates.put(missing,null);
  }
  if (missingInAdmindata.size() > 0) {
    log.warn("String_Node_Str" + missingInAdmindata.size() + "String_Node_Str"+ StringUtils.conjoin("String_Node_Str",missingInAdmindata));
  }
  Map<String,Map<Location,List<String>>> checksumMaps=getChecksumMaps(adminInfo.keySet());
  for (  String filename : adminInfo.keySet()) {
    filepreservationStates.put(filename,new FilePreservationState(filename,adminInfo.get(filename),checksumMaps.get(filename)));
  }
  return filepreservationStates;
}