private void collectClasses()

in src/com/intellij/rt/coverage/util/classFinder/ClassPathEntry.java [92:125]


    private void collectClasses(final String curPath, final File parent, final ClassEntry.Consumer consumer, final InputStream[] is) {
      File[] files = parent.listFiles();
      if (files != null) {
        String prefix = curPath.isEmpty() ? "" : curPath + ".";
        // force anonymous classes to come after its outer class
        Arrays.sort(files, new Comparator<File>() {
          public int compare(File o1, File o2) {
            return ClassNameUtil.removeClassSuffix(o1.getName()).compareTo(ClassNameUtil.removeClassSuffix(o2.getName()));
          }
        });
        for (final File f : files) {
          final String name = f.getName();
          if (name.endsWith(ClassNameUtil.CLASS_FILE_SUFFIX)) {
            final String className = prefix + ClassNameUtil.removeClassSuffix(name);
            if (shouldInclude(className)) {
              is[0] = null;
              try {
                consumer.consume(new ClassEntry(className) {
                  @Override
                  public InputStream getClassInputStream() throws IOException {
                    is[0] = new FileInputStream(f);
                    return is[0];
                  }
                });
              } finally {
                CoverageIOUtil.close(is[0]);
              }
            }
          } else if (f.isDirectory()) {
            collectClasses(prefix + name, f, consumer, is);
          }
        }
      }
    }