コード例 #1
0
  /** This should create an AST without imports or method-body statements */
  public static CompilationUnit createAST(
      IJavaProject javaProject, final ICompilationUnit compilationUnit) {
    if (compilationUnit == null) return null;

    class CompilationUnitRequestor extends ASTRequestor {
      CompilationUnit domUnit = EMPTY_AST_UNIT;

      public void acceptAST(ICompilationUnit source, CompilationUnit ast) {
        if (source == compilationUnit) domUnit = ast;
      }
    }

    CompilationUnitRequestor requestor = new CompilationUnitRequestor();
    ASTParser p = ASTParser.newParser(AST.JLS3);
    p.setResolveBindings(true);
    p.setBindingsRecovery(true);
    p.setProject(javaProject);
    p.setKind(ASTParser.K_COMPILATION_UNIT);
    p.setIgnoreMethodBodies(true);
    p.createASTs(new ICompilationUnit[] {compilationUnit}, NO_KEYS, requestor, null);
    if (AptPlugin.DEBUG) {
      AptPlugin.trace("created DOM AST for " + compilationUnit.getElementName()); // $NON-NLS-1$
    }
    return requestor.domUnit;
  }