diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/ResourceExclusion.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/ResourceExclusion.java index 6127c6f2c5b..13239f99e75 100644 --- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/ResourceExclusion.java +++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/ResourceExclusion.java @@ -44,7 +44,20 @@ public class ResourceExclusion extends RefreshExclusion { */ @Override public boolean testExclusion(IResource resource) { - //TODO: will need to change this for Phase 2 implementation + + //First, check to see if the given resource is an exception to this exclusion + List nestedExclusions = getNestedExclusions(); + if (nestedExclusions != null) { + Iterator exclusions = nestedExclusions.iterator(); + while (exclusions.hasNext()) { + RefreshExclusion exclusion = exclusions.next(); + if (exclusion.testExclusion(resource)) { + return false; + } + } + } + + //Populate the resources to be excluded by this exclusion List excludedResources = new LinkedList(); List exclusionInstances = getExclusionInstances(); Iterator iterator = exclusionInstances.iterator(); @@ -53,15 +66,17 @@ public class ResourceExclusion extends RefreshExclusion { excludedResources.add(instance.getResource()); } - if (resource instanceof IFolder) { - return excludedResources.contains(resource); - } else { + if (excludedResources.contains(resource)) { + return true; + } else { //check to see if the given resource is part of this exclusion Iterator resources = excludedResources.iterator(); while (resources.hasNext()) { + //TODO: need to update this for Phase 2 implementation IFolder excludedResource = (IFolder) resources.next(); - if (excludedResource.exists(resource.getFullPath())) + if (excludedResource.exists(resource.getFullPath())) { return true; - } + } + } } return false; }