Author: dsavage
Date: Fri Sep 10 02:34:15 2010
New Revision: 995645
URL: http://svn.apache.org/viewvc?rev=995645&view=rev
Log:
patches to support cancelation of long running tasks FELIX-2590
Modified:
felix/trunk/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/util/JavaHelper.java
felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/actions/PruneProjectDependenciesAction.java
felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/actions/ResolveProjectDependenciesAction.java
Modified:
felix/trunk/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/util/JavaHelper.java
URL:
http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/util/JavaHelper.java?rev=995645&r1=995644&r2=995645&view=diff
==============================================================================
---
felix/trunk/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/util/JavaHelper.java
(original)
+++
felix/trunk/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/util/JavaHelper.java
Fri Sep 10 02:34:15 2010
@@ -258,30 +258,31 @@ public class JavaHelper
IProgressMonitor monitor)
{
LinkedList<IPackageImport> imports = new LinkedList<IPackageImport>();
-
- for (String packageName : findJavaImports(project, monitor))
- {
- if (!ProfileManager.isBootDelegate(project, packageName))
- { // these must come from boot classloader
- try
- {
- if (!project.isInClasspath(packageName, monitor))
+ Set<String> names = findJavaImports(project, monitor);
+ if ( !monitor.isCanceled() ) {
+ for (String packageName : names)
+ {
+ if (!ProfileManager.isBootDelegate(project, packageName))
+ { // these must come from boot classloader
+ try
{
- Collection<IPackageExport> exports =
findExportsForPackage(
- project, packageName);
- if (!exports.isEmpty())
+ if (!project.isInClasspath(packageName, monitor))
{
- imports.add(select(exports));
+ Collection<IPackageExport> exports =
findExportsForPackage(
+ project, packageName);
+ if (!exports.isEmpty())
+ {
+ imports.add(select(exports));
+ }
}
}
- }
- catch (CoreException e)
- {
- SigilCore.error("Failed to check classpath", e);
+ catch (CoreException e)
+ {
+ SigilCore.error("Failed to check classpath", e);
+ }
}
}
}
-
return imports;
}
@@ -297,53 +298,55 @@ public class JavaHelper
final Set<String> packages = findJavaImports(project, monitor);
- project.visit(new IModelWalker()
- {
- public boolean visit(IModelElement element)
+ if (!monitor.isCanceled()) {
+ project.visit(new IModelWalker()
{
- if (element instanceof IPackageImport)
+ public boolean visit(IModelElement element)
{
- IPackageImport pi = (IPackageImport) element;
- if (!packages.contains(pi.getPackageName()))
+ if (element instanceof IPackageImport)
{
- unused.add(pi);
+ IPackageImport pi = (IPackageImport) element;
+ if (!packages.contains(pi.getPackageName()))
+ {
+ unused.add(pi);
+ }
}
- }
- else if (element instanceof IRequiredBundle)
- {
- IRequiredBundle rb = (IRequiredBundle) element;
- IRepositoryManager manager =
project.getRepositoryManager();
- ResolutionConfig config = new ResolutionConfig(
- ResolutionConfig.INCLUDE_OPTIONAL
- | ResolutionConfig.IGNORE_ERRORS);
- try
+ else if (element instanceof IRequiredBundle)
{
- IResolution r =
manager.getBundleResolver().resolve(rb, config,
- new ResolutionMonitorAdapter(monitor));
- ISigilBundle bundle = r.getProvider(rb);
- boolean found = false;
- for (IPackageExport pe :
bundle.getBundleInfo().getExports())
+ IRequiredBundle rb = (IRequiredBundle) element;
+ IRepositoryManager manager =
project.getRepositoryManager();
+ ResolutionConfig config = new ResolutionConfig(
+ ResolutionConfig.INCLUDE_OPTIONAL
+ | ResolutionConfig.IGNORE_ERRORS);
+ try
{
- if (packages.contains(pe.getPackageName()))
+ IResolution r =
manager.getBundleResolver().resolve(rb, config,
+ new ResolutionMonitorAdapter(monitor));
+ ISigilBundle bundle = r.getProvider(rb);
+ boolean found = false;
+ for (IPackageExport pe :
bundle.getBundleInfo().getExports())
{
- found = true;
- break;
+ if (packages.contains(pe.getPackageName()))
+ {
+ found = true;
+ break;
+ }
}
- }
- if (!found)
+ if (!found)
+ {
+ unused.add(rb);
+ }
+ }
+ catch (ResolutionException e)
{
- unused.add(rb);
+ SigilCore.error("Failed to resolve " + rb, e);
}
}
- catch (ResolutionException e)
- {
- SigilCore.error("Failed to resolve " + rb, e);
- }
+ return !monitor.isCanceled();
}
- return true;
- }
- });
+ });
+ }
return unused;
}
@@ -860,7 +863,9 @@ public class JavaHelper
Set<String> imports = new HashSet<String>();
findJavaModelImports(project, imports, monitor);
- findTextImports(project, imports, monitor);
+ if ( !monitor.isCanceled() ) {
+ findTextImports(project, imports, monitor);
+ }
return imports;
}
@@ -905,6 +910,10 @@ public class JavaHelper
{
for (IPackageFragment root :
project.getJavaModel().getPackageFragments())
{
+ if ( monitor.isCanceled() ) {
+ return;
+ }
+
IPackageFragmentRoot rt = (IPackageFragmentRoot)
root.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);
if (isInClassPath(project, rt))
Modified:
felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/actions/PruneProjectDependenciesAction.java
URL:
http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/actions/PruneProjectDependenciesAction.java?rev=995645&r1=995644&r2=995645&view=diff
==============================================================================
---
felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/actions/PruneProjectDependenciesAction.java
(original)
+++
felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/actions/PruneProjectDependenciesAction.java
Fri Sep 10 02:34:15 2010
@@ -62,6 +62,8 @@ public class PruneProjectDependenciesAct
Collection<IModelElement> unused =
JavaHelper.findUnusedReferences(
project, monitor);
+ if (monitor.isCanceled()) return Status.CANCEL_STATUS;
+
if (unused.isEmpty())
{
info(shell, "No unused references found");
Modified:
felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/actions/ResolveProjectDependenciesAction.java
URL:
http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/actions/ResolveProjectDependenciesAction.java?rev=995645&r1=995644&r2=995645&view=diff
==============================================================================
---
felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/actions/ResolveProjectDependenciesAction.java
(original)
+++
felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/actions/ResolveProjectDependenciesAction.java
Fri Sep 10 02:34:15 2010
@@ -65,6 +65,10 @@ public class ResolveProjectDependenciesA
List<IPackageImport> imports =
JavaHelper.findRequiredImports(project,
monitor);
+ if (monitor.isCanceled()) {
+ return Status.CANCEL_STATUS;
+ }
+
if (imports.isEmpty())
{
info(shell, "No new dependencies found");