package com.example.lawofdemeter; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import org.eclipse.core.resources.IFile; import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jdt.core.IJavaElement; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.core.compiler.BuildContext; import org.eclipse.jdt.core.compiler.CompilationParticipant; import org.eclipse.jdt.core.compiler.ReconcileContext; public class MyCompilationParticipant extends CompilationParticipant { private Map<IJavaProject,BuildContext[]> cache; public MyCompilationParticipant() { cache = new HashMap<IJavaProject, BuildContext[]>(); } @Override public boolean isActive(IJavaProject project) { return true; } @Override public void buildFinished(IJavaProject project) { System.out.println("MyCompilationParticipant.buildFinished()"); // System.out.println(project.getElementName()); new ModelBuilder(project).run(); } @Override public int aboutToBuild(IJavaProject project) { // System.out.println("MyCompilationParticipant.aboutToBuild()"); // System.out.println(project.getElementName()); return READY_FOR_BUILD; } @Override public void buildStarting(BuildContext[] files, boolean isBatch) { // for (BuildContext each: files) { // IFile file = each.getFile(); // ICompilationUnit unit = JavaCore.createCompilationUnitFrom(file); // new IJavaElementVisitor().visit(unit); // } // System.out.println("MyCompilationParticipant.buildStarting()"); // if (files.length > 0) { // ICompilationUnit[] units = new ICompilationUnit[files.length]; // for (int i = 0; i < units.length; i++) { // units[i] = (ICompilationUnit) JavaCore.create(files[i].getFile()); // } // ASTParser parser = ASTParser.newParser(AST.JLS3); // parser.setResolveBindings(true); // parser.setProject(units[0].getJavaProject()); // parser.createASTs(units, new String[] {}, new ASTRequestor() { // @Override // public void acceptAST(ICompilationUnit source, CompilationUnit ast) { // System.out.println(source.getElementName()); // } // @Override // public void acceptBinding(String bindingKey, IBinding binding) { // System.out.println(bindingKey + "->" + binding); // } // }, null); // } } @Override public void cleanStarting(IJavaProject project) { // System.out.println("MyCompilationParticipant.cleanStarting()"); // System.out.println(project.getElementName()); } @Override public boolean isAnnotationProcessor() { return false; } @Override public void processAnnotations(BuildContext[] files) { // System.out.println("MyCompilationParticipant.processAnnotations()"); // System.out.println(Arrays.asList(files)); } @Override public void reconcile(ReconcileContext context) { // System.out.println("MyCompilationParticipant.reconcile()"); // System.out.println(context); // System.out.println(context.getDelta()); // try { // System.out.println(context.getAST3()); // } catch (JavaModelException e) { // e.printStackTrace(); // } } }