private static List parseFileNames()

in util/src/com/intellij/rt/coverage/instrumentation/JSR45Util.java [117:150]


  private static List<FileInfo> parseFileNames(String debug, int fileSectionIdx, int lineInfoIdx, String className) {
    final String defaultPrefix = getClassPackageName(className);
    final String[] fileLines = getFileSectionLines(debug, fileSectionIdx, lineInfoIdx);
    final List<FileInfo> result = new ArrayList<FileInfo>();
    boolean generatedPrefix = true;
    for (int i = 0; i < fileLines.length; i++) {
      final String fileInfoLine = fileLines[i];
      String idAndName = fileInfoLine;
      String path = null;
      if (fileInfoLine.startsWith("+ ")) {
        idAndName = fileInfoLine.substring(2);
        path = fileLines[++i];
      }
      int idx = idAndName.indexOf(" ");
      int key = Integer.parseInt(idAndName.substring(0, idx));
      final String fileName = idAndName.substring(idx + 1);

      path = path == null ? fileName : processRelative(path);
      final int lastDot = path.lastIndexOf(".");
      final String pathWithDots = ClassNameUtil.convertToFQName(lastDot < 0
          ? path
          : path.substring(0, lastDot) + "_" + path.substring(lastDot + 1));
      generatedPrefix &= !pathWithDots.startsWith(defaultPrefix);
      result.add(new FileInfo(fileName, pathWithDots, key));
    }

    if (generatedPrefix) {
      for (int i = 0; i < result.size(); i++) {
        final FileInfo fileInfo = result.get(i);
        result.set(i, new FileInfo(fileInfo.myName, defaultPrefix + fileInfo.myPath, fileInfo.myIndex));
      }
    }
    return result;
  }