### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core Index: model/org/eclipse/jdt/internal/core/ProjectReferenceChange.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ProjectReferenceChange.java,v retrieving revision 1.4 diff -u -r1.4 ProjectReferenceChange.java --- model/org/eclipse/jdt/internal/core/ProjectReferenceChange.java 14 Jan 2008 09:55:21 -0000 1.4 +++ model/org/eclipse/jdt/internal/core/ProjectReferenceChange.java 28 Jan 2008 16:51:58 -0000 @@ -15,6 +15,7 @@ import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IProjectDescription; +import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IWorkspace; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.IWorkspaceRunnable; @@ -95,7 +96,7 @@ requiredProjectArray[i] = wksRoot.getProject(requiredProjectNames[i]); } description.setDynamicReferences(requiredProjectArray); - projectResource.setDescription(description, null); + projectResource.setDescription(description, IResource.AVOID_NATURE_CONFIG, null); } }; try { #P org.eclipse.jdt.core.tests.model Index: src/org/eclipse/jdt/core/tests/model/ClasspathTests.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClasspathTests.java,v retrieving revision 1.166 diff -u -r1.166 ClasspathTests.java --- src/org/eclipse/jdt/core/tests/model/ClasspathTests.java 9 Jan 2008 17:45:34 -0000 1.166 +++ src/org/eclipse/jdt/core/tests/model/ClasspathTests.java 28 Jan 2008 16:52:00 -0000 @@ -3843,6 +3843,26 @@ } /* + * Ensures that updating the project references doesn't throw a runtime excetion + * (regression test for https://bugs.eclipse.org/bugs/show_bug.cgi?id=216747 ) + */ +public void testUpdateProjectReferences() throws CoreException { + try { + createJavaProject("P1"); + IJavaProject p = createJavaProject("P2"); + p.setRawClasspath(new IClasspathEntry[] {JavaCore.newProjectEntry(new Path("/P1"))}, null); + IProject[] references = p.getProject().getDescription().getDynamicReferences(); + assertResourcesEqual( + "Unexpected resources", + "/P1", + references); + } finally { + deleteProject("P1"); + deleteProject("P2"); + } +} + +/* * Ensures that unknown classpath attributes in a .classpath file are not lost when read and rewritten. * (regression test for bug 101425 Classpath persistence should be resilient with unknown attributes) */