Java tutorial
/** * Copyright (c) 2012, 2014 Sme.UP and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * * Contributors: * Mattia Rocchi - Initial API and implementation */ package org.asup.ui.pdm.e4.action; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IWorkspace; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jdt.core.IPackageFragment; import org.eclipse.jdt.core.IPackageFragmentRoot; import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.core.dom.AST; import org.eclipse.jdt.core.dom.ASTParser; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jdt.core.dom.MethodDeclaration; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelection; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.IWorkbenchWindowActionDelegate; public class VisitMethodAction implements IWorkbenchWindowActionDelegate { private static final String JDT_NATURE = "org.eclipse.jdt.core.javanature"; public VisitMethodAction() { } @Override public void run(IAction action) { IWorkspace workspace = ResourcesPlugin.getWorkspace(); IWorkspaceRoot root = workspace.getRoot(); // Get all projects in the workspace IProject[] projects = root.getProjects(); // Loop over all projects for (IProject project : projects) { try { if (project.isNatureEnabled(JDT_NATURE)) { analyseMethods(project); } } catch (CoreException e) { e.printStackTrace(); } } } @Override public void selectionChanged(IAction action, ISelection selection) { // TODO Auto-generated method stub action.toString(); } private void analyseMethods(IProject project) throws JavaModelException { IPackageFragment[] packages = JavaCore.create(project).getPackageFragments(); // parse(JavaCore.create(project)); for (IPackageFragment mypackage : packages) { if (mypackage.getKind() == IPackageFragmentRoot.K_SOURCE) { createAST(mypackage); } } } private void createAST(IPackageFragment mypackage) throws JavaModelException { for (ICompilationUnit unit : mypackage.getCompilationUnits()) { // now create the AST for the ICompilationUnits CompilationUnit parse = parse(unit); MethodVisitor visitor = new MethodVisitor(); parse.accept(visitor); for (MethodDeclaration method : visitor.getMethods()) { System.out.println("Method name: " + method.getName() + " Return type: " + method.getReturnType2()); } } } /** * Reads a ICompilationUnit and creates the AST DOM for manipulating the * Java source file * * @param unit * @return */ private static CompilationUnit parse(ICompilationUnit unit) { ASTParser parser = ASTParser.newParser(AST.JLS8); parser.setKind(ASTParser.K_COMPILATION_UNIT); parser.setSource(unit); parser.setResolveBindings(true); return (CompilationUnit) parser.createAST(null); // parse } @Override public void init(IWorkbenchWindow window) { // TODO Auto-generated method stub window.toString(); } @Override public void dispose() { // TODO Auto-generated method stub } }