### Eclipse Workspace Patch 1.0 #P org.eclipse.core.resources Index: src/org/eclipse/core/internal/resources/Project.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Project.java,v retrieving revision 1.153 diff -u -r1.153 Project.java --- src/org/eclipse/core/internal/resources/Project.java 31 Oct 2008 13:08:17 -0000 1.153 +++ src/org/eclipse/core/internal/resources/Project.java 17 Feb 2009 21:56:09 -0000 @@ -798,7 +798,7 @@ * Returns true if this resource represents the project description file, and * false otherwise. */ - protected boolean isProjectDescriptionFile(IResource resource) { + public static boolean isProjectDescriptionFile(IResource resource) { return resource.getType() == IResource.FILE && resource.getFullPath().segmentCount() == 2 && resource.getName().equals(IProjectDescription.DESCRIPTION_FILE_NAME); } Index: src/org/eclipse/core/internal/resources/AliasManager.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/AliasManager.java,v retrieving revision 1.43 diff -u -r1.43 AliasManager.java --- src/org/eclipse/core/internal/resources/AliasManager.java 12 Feb 2009 11:01:44 -0000 1.43 +++ src/org/eclipse/core/internal/resources/AliasManager.java 17 Feb 2009 21:56:08 -0000 @@ -681,7 +681,13 @@ if (alias.getType() == IResource.PROJECT) { if (checkDeletion((Project) alias, location)) continue; - //project did not require deletion, so fall through below and refresh it + } + + if (alias.getType() == IResource.PROJECT || Project.isProjectDescriptionFile(alias)) { + // BUG251408/251370 If we need to refresh the project, then we may not currently hold the correct + // scheduling rules to modify existing linked resources (for example) so get the refreshManager to do it + workspace.refreshManager.refresh(alias); + continue; } localManager.refresh(alias, IResource.DEPTH_INFINITE, false, null); }