diff options
author | Ayushman Jain | 2011-05-04 14:47:31 +0000 |
---|---|---|
committer | Ayushman Jain | 2011-05-04 14:47:31 +0000 |
commit | 9309fad26eb4113a283f2c853c44a62715f49d70 (patch) | |
tree | f558258d2de60d07ca0c01250ad4b2ff42d677b7 /org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaProject.java | |
parent | 5527337a36439b5f7161d1700f05a2afcdb55c60 (diff) | |
download | eclipse.jdt.core-9309fad26eb4113a283f2c853c44a62715f49d70.tar.gz eclipse.jdt.core-9309fad26eb4113a283f2c853c44a62715f49d70.tar.xz eclipse.jdt.core-9309fad26eb4113a283f2c853c44a62715f49d70.zip |
HEAD- Fixed bug 90486: Give more info when a dependency cycle is detected
Diffstat (limited to 'org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaProject.java')
-rw-r--r-- | org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaProject.java | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaProject.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaProject.java index 4b58e5503f..327a352c9a 100644 --- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaProject.java +++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaProject.java @@ -372,7 +372,7 @@ public class JavaProject int length = rscProjects.length; JavaProject[] projects = new JavaProject[length]; - HashSet cycleParticipants = new HashSet(); + LinkedHashSet cycleParticipants = new LinkedHashSet(); HashSet traversed = new HashSet(); // compute cycle participants @@ -406,9 +406,29 @@ public class JavaProject 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); @@ -2063,7 +2083,7 @@ public class JavaProject * @see IJavaProject */ public boolean hasClasspathCycle(IClasspathEntry[] preferredClasspath) { - HashSet cycleParticipants = new HashSet(); + LinkedHashSet cycleParticipants = new LinkedHashSet(); HashMap preferredClasspaths = new HashMap(1); preferredClasspaths.put(this, preferredClasspath); updateCycleParticipants(new ArrayList(2), cycleParticipants, ResourcesPlugin.getWorkspace().getRoot(), new HashSet(2), preferredClasspaths); @@ -3127,7 +3147,7 @@ public class JavaProject */ public void updateCycleParticipants( ArrayList prereqChain, - HashSet cycleParticipants, + LinkedHashSet cycleParticipants, IWorkspaceRoot workspaceRoot, HashSet traversed, Map preferredClasspaths){ |