Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAyushman Jain2011-05-04 14:47:31 +0000
committerAyushman Jain2011-05-04 14:47:31 +0000
commit9309fad26eb4113a283f2c853c44a62715f49d70 (patch)
treef558258d2de60d07ca0c01250ad4b2ff42d677b7 /org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaProject.java
parent5527337a36439b5f7161d1700f05a2afcdb55c60 (diff)
downloadeclipse.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.java28
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){

Back to the top