From ee312e077394b870eb89581cc12fd2b79225be20 Mon Sep 17 00:00:00 2001 From: James Blackburn Date: Thu, 18 Nov 2010 21:11:21 +0000 Subject: [PATCH] Bug 330594 - ResourceException checking HasNatureExpression when project closed --- .../enablement/HasNatureExpression.java | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/enablement/HasNatureExpression.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/enablement/HasNatureExpression.java index 45a388c2cbc..ad97360e102 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/enablement/HasNatureExpression.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/enablement/HasNatureExpression.java @@ -15,9 +15,7 @@ import org.eclipse.cdt.managedbuilder.core.IHoldsOptions; import org.eclipse.cdt.managedbuilder.core.IManagedConfigElement; import org.eclipse.cdt.managedbuilder.core.IOption; import org.eclipse.cdt.managedbuilder.core.IResourceInfo; -import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin; import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IProjectDescription; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; @@ -52,21 +50,15 @@ public class HasNatureExpression implements IBooleanExpression { IResource resource = config.getOwner(); if (resource == null) return false; - + IProject project = resource.getProject(); try { - IProjectDescription projDesc = project.getDescription(); - String[] natures = projDesc.getNatureIds(); - for (int i = 0; i < natures.length; ++i) { - if (natureId.equals(natures[i])) - return true; - } - // Not found - return false; + if (project.isAccessible()) + return project.hasNature(natureId); } catch (CoreException e) { - ManagedBuilderCorePlugin.log(e); - return false; + // Project close concurrently => Nature not available. } + return false; } }