### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core Index: model/org/eclipse/jdt/internal/core/JavaModelStatus.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaModelStatus.java,v retrieving revision 1.49 diff -u -r1.49 JavaModelStatus.java --- model/org/eclipse/jdt/internal/core/JavaModelStatus.java 18 Jan 2011 05:42:02 -0000 1.49 +++ model/org/eclipse/jdt/internal/core/JavaModelStatus.java 25 Apr 2011 09:13:05 -0000 @@ -344,7 +344,7 @@ case CLASSPATH_CYCLE: javaProject = (IJavaProject)this.elements[0]; - return Messages.bind(Messages.classpath_cycle, javaProject.getElementName()); + return Messages.bind(Messages.classpath_cycle, new String[] {javaProject.getElementName(), this.string}); case DISABLED_CP_EXCLUSION_PATTERNS: javaProject = (IJavaProject)this.elements[0]; Index: model/org/eclipse/jdt/internal/core/JavaProject.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaProject.java,v retrieving revision 1.445 diff -u -r1.445 JavaProject.java --- model/org/eclipse/jdt/internal/core/JavaProject.java 8 Mar 2011 14:06:16 -0000 1.445 +++ model/org/eclipse/jdt/internal/core/JavaProject.java 25 Apr 2011 09:13:05 -0000 @@ -406,9 +406,29 @@ throw new JavaModelException(e); } } else { + IJavaProject[] projectsInCycle; + String cycleString = ""; //$NON-NLS-1$ + if (cycleParticipants.isEmpty()) { + projectsInCycle = null; + } else { + projectsInCycle = new IJavaProject[cycleParticipants.size()]; + Iterator it = cycleParticipants.iterator(); + int k = 0; + while (it.hasNext()) { + //projectsInCycle[i++] = (IPath) it.next(); + IResource member = workspaceRoot.findMember((IPath) it.next()); + if (member != null && member.getType() == IResource.PROJECT){ + projectsInCycle[k] = JavaCore.create((IProject)member); + if (projectsInCycle[k] != null) { + if (k != 0) cycleString += ", "; //$NON-NLS-1$ + cycleString += projectsInCycle[k++].getElementName(); + } + } + } + } // create new marker project.createClasspathProblemMarker( - new JavaModelStatus(IJavaModelStatusConstants.CLASSPATH_CYCLE, project)); + new JavaModelStatus(IJavaModelStatusConstants.CLASSPATH_CYCLE, project, cycleString)); } } else { project.flushClasspathProblemMarkers(true, false); Index: model/org/eclipse/jdt/internal/core/util/messages.properties =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/messages.properties,v retrieving revision 1.83 diff -u -r1.83 messages.properties --- model/org/eclipse/jdt/internal/core/util/messages.properties 18 Jan 2011 05:42:02 -0000 1.83 +++ model/org/eclipse/jdt/internal/core/util/messages.properties 25 Apr 2011 09:13:05 -0000 @@ -141,7 +141,7 @@ classpath_cannotUseLibraryAsOutput = Source folder ''{0}'' in project ''{2}'' cannot output to library ''{1}'' classpath_closedProject = Required project ''{0}'' needs to be open classpath_couldNotWriteClasspathFile = Could not write ''.classpath'' file of project ''{0}'': {1} -classpath_cycle = A cycle was detected in the build path of project ''{0}'' +classpath_cycle = A cycle was detected in the build path of project ''{0}''. The cycle consists of projects '{'{1}'}' classpath_duplicateEntryPath = Build path contains duplicate entry: ''{0}'' for project ''{1}'' classpath_illegalContainerPath = Illegal classpath container path: ''{0}'' in project ''{1}'', must have at least one segment (containerID+hints) classpath_illegalEntryInClasspathFile = Illegal entry in ''.classpath'' of project ''{0}'' file: {1}