static void installOn()

in javac-ast-extension/src/org/jetbrains/jps/javac/ast/JavacReferenceCollectorListener.java [36:63]


  static void installOn(JavaCompiler.CompilationTask task, JavacReferenceCollector.Consumer<? super JavacFileData> dataConsumer) {
    JavacTask javacTask = (JavacTask)task;
    Method addTaskMethod; // jdk >= 8
    try {
      addTaskMethod = JavacTask.class.getMethod("addTaskListener", TaskListener.class);
    }
    catch (NoSuchMethodException e) {
      addTaskMethod = null;
    }
    final JavacReferenceCollectorListener taskListener = new JavacReferenceCollectorListener(
      dataConsumer, javacTask, addTaskMethod != null
    );
    if (addTaskMethod != null) {
      try {
        addTaskMethod.setAccessible(true);
        addTaskMethod.invoke(task, taskListener);
      }
      catch (IllegalAccessException e) {
        throw new RuntimeException(e);
      }
      catch (InvocationTargetException e) {
        throw new RuntimeException(e);
      }
    } else {
      // jdk 6-7
      javacTask.setTaskListener(taskListener);
    }
  }