From 49c278468104058dcc28d0e71e5b0ea9c242324e Mon Sep 17 00:00:00 2001 From: David Burkhart Date: Sat, 11 Feb 2012 12:50:06 +0100 Subject: [PATCH] add cancel support to job --- .../FindUnusedMethodsInJavaProject.java | 30 +++++++++++++------ ...FindUnusedMethodsInJavaProjectPdeTest.java | 2 +- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/unused.methods/src/unused/methods/FindUnusedMethodsInJavaProject.java b/unused.methods/src/unused/methods/FindUnusedMethodsInJavaProject.java index b3eb586..0ed3f20 100644 --- a/unused.methods/src/unused/methods/FindUnusedMethodsInJavaProject.java +++ b/unused.methods/src/unused/methods/FindUnusedMethodsInJavaProject.java @@ -27,38 +27,50 @@ public FindUnusedMethodsInJavaProject(IJavaProject project) { protected IStatus run(IProgressMonitor monitor) { try { - findUnusedMethods(monitor); + return findUnusedMethods(monitor); } catch (JavaModelException e) { String pluginId = UnusedMethodsPlugin.getDefault().getBundle().getSymbolicName(); return new Status(ERROR, pluginId, "Problem searching for unused methods in " + project.getElementName(), e); } - - return Status.OK_STATUS; } - void findUnusedMethods(IProgressMonitor monitor) throws JavaModelException { - DeclaredMethods methods = new DeclaredMethods(); - methods.addFilter(new DoNotAcceptAnnotation("org.junit.Test")); - methods.addFilter(new DoNotAcceptMethodsOverridingBinary()); + private IStatus findUnusedMethods(IProgressMonitor monitor) throws JavaModelException { List allJavaProjects = new JavaProjectsInWorkspace().collectAllJavaProjects(); int totalWork = 1 + allJavaProjects.size(); - monitor.beginTask("Searching for unused methods", totalWork); + monitor.beginTask("Searching for unused methods in " + project.getElementName(), totalWork); monitor.subTask("Collecting declared methods from " + project.getElementName()); + DeclaredMethods methods = setupDeclaredMethods(); new JavaAstParser(project).accept(new AddDeclaredMethodsTo(methods)); monitor.worked(1); + if (monitor.isCanceled()) { + return Status.CANCEL_STATUS; + } + for (IJavaProject javaProject : allJavaProjects) { - monitor.subTask("Removing methods used by " + project.getElementName()); + monitor.subTask("Removing methods used by " + javaProject.getElementName()); new JavaAstParser(javaProject).accept(new RemoveUsedMethodsFrom(methods)); monitor.worked(1); + + if (monitor.isCanceled()) { + return Status.CANCEL_STATUS; + } } monitor.done(); unusedMethods = methods.getMethods(); + return Status.OK_STATUS; + } + + private DeclaredMethods setupDeclaredMethods() throws JavaModelException { + DeclaredMethods methods = new DeclaredMethods(); + methods.addFilter(new DoNotAcceptAnnotation("org.junit.Test")); + methods.addFilter(new DoNotAcceptMethodsOverridingBinary()); + return methods; } public List getUnusedMethods() { diff --git a/unused.methods/test/unused/methods/FindUnusedMethodsInJavaProjectPdeTest.java b/unused.methods/test/unused/methods/FindUnusedMethodsInJavaProjectPdeTest.java index 02a000b..b1e7402 100644 --- a/unused.methods/test/unused/methods/FindUnusedMethodsInJavaProjectPdeTest.java +++ b/unused.methods/test/unused/methods/FindUnusedMethodsInJavaProjectPdeTest.java @@ -37,7 +37,7 @@ public void findUnusedMethodsInProject() throws CoreException, IOException { private List calculateUnusedMethods() throws JavaModelException { FindUnusedMethodsInJavaProject finder = new FindUnusedMethodsInJavaProject(project.asJavaProject()); - finder.findUnusedMethods(new NullProgressMonitor()); + finder.run(new NullProgressMonitor()); return finder.getUnusedMethods(); } }