Lines 433-439
Link Here
|
433 |
new JavaModelStatus(IJavaModelStatusConstants.CLASSPATH_CYCLE, project, cycleString)); |
433 |
new JavaModelStatus(IJavaModelStatusConstants.CLASSPATH_CYCLE, project, cycleString)); |
434 |
} |
434 |
} |
435 |
} else { |
435 |
} else { |
436 |
project.flushClasspathProblemMarkers(true, false); |
436 |
project.flushClasspathProblemMarkers(true, false, false); |
437 |
} |
437 |
} |
438 |
} |
438 |
} |
439 |
} |
439 |
} |
Lines 803-809
Link Here
|
803 |
IMarker marker = null; |
803 |
IMarker marker = null; |
804 |
int severity; |
804 |
int severity; |
805 |
String[] arguments = CharOperation.NO_STRINGS; |
805 |
String[] arguments = CharOperation.NO_STRINGS; |
806 |
boolean isCycleProblem = false, isClasspathFileFormatProblem = false; |
806 |
boolean isCycleProblem = false, isClasspathFileFormatProblem = false, isOutputOverlapping = false; |
807 |
switch (status.getCode()) { |
807 |
switch (status.getCode()) { |
808 |
|
808 |
|
809 |
case IJavaModelStatusConstants.CLASSPATH_CYCLE : |
809 |
case IJavaModelStatusConstants.CLASSPATH_CYCLE : |
Lines 830-836
Link Here
|
830 |
return; // setting == IGNORE |
830 |
return; // setting == IGNORE |
831 |
} |
831 |
} |
832 |
break; |
832 |
break; |
833 |
|
833 |
case IJavaModelStatusConstants.OUTPUT_LOCATION_OVERLAPPING_ANOTHER_SOURCE : |
|
|
834 |
isOutputOverlapping = true; |
835 |
setting = getOption(JavaCore.CORE_OUTPUT_LOCATION_OVERLAPPING_ANOTHER_SOURCE, true); |
836 |
if (JavaCore.ERROR.equals(setting)) { |
837 |
severity = IMarker.SEVERITY_ERROR; |
838 |
} else if (JavaCore.WARNING.equals(setting)) { |
839 |
severity = IMarker.SEVERITY_WARNING; |
840 |
} else { |
841 |
return; // setting == IGNORE |
842 |
} |
843 |
break; |
834 |
default: |
844 |
default: |
835 |
IPath path = status.getPath(); |
845 |
IPath path = status.getPath(); |
836 |
if (path != null) arguments = new String[] { path.toString() }; |
846 |
if (path != null) arguments = new String[] { path.toString() }; |
Lines 852-857
Link Here
|
852 |
IMarker.LOCATION, |
862 |
IMarker.LOCATION, |
853 |
IJavaModelMarker.CYCLE_DETECTED, |
863 |
IJavaModelMarker.CYCLE_DETECTED, |
854 |
IJavaModelMarker.CLASSPATH_FILE_FORMAT, |
864 |
IJavaModelMarker.CLASSPATH_FILE_FORMAT, |
|
|
865 |
IJavaModelMarker.OUTPUT_OVERLAPPING_SOURCE, |
855 |
IJavaModelMarker.ID, |
866 |
IJavaModelMarker.ID, |
856 |
IJavaModelMarker.ARGUMENTS , |
867 |
IJavaModelMarker.ARGUMENTS , |
857 |
IJavaModelMarker.CATEGORY_ID, |
868 |
IJavaModelMarker.CATEGORY_ID, |
Lines 863-868
Link Here
|
863 |
Messages.classpath_buildPath, |
874 |
Messages.classpath_buildPath, |
864 |
isCycleProblem ? "true" : "false",//$NON-NLS-1$ //$NON-NLS-2$ |
875 |
isCycleProblem ? "true" : "false",//$NON-NLS-1$ //$NON-NLS-2$ |
865 |
isClasspathFileFormatProblem ? "true" : "false",//$NON-NLS-1$ //$NON-NLS-2$ |
876 |
isClasspathFileFormatProblem ? "true" : "false",//$NON-NLS-1$ //$NON-NLS-2$ |
|
|
877 |
isOutputOverlapping ? "true" : "false", //$NON-NLS-1$ //$NON-NLS-2$ |
866 |
new Integer(status.getCode()), |
878 |
new Integer(status.getCode()), |
867 |
Util.getProblemArgumentsForMarker(arguments) , |
879 |
Util.getProblemArgumentsForMarker(arguments) , |
868 |
new Integer(CategorizedProblem.CAT_BUILDPATH), |
880 |
new Integer(CategorizedProblem.CAT_BUILDPATH), |
Lines 1356-1373
Link Here
|
1356 |
/** |
1368 |
/** |
1357 |
* Remove all markers denoting classpath problems |
1369 |
* Remove all markers denoting classpath problems |
1358 |
*/ //TODO (philippe) should improve to use a bitmask instead of booleans (CYCLE, FORMAT, VALID) |
1370 |
*/ //TODO (philippe) should improve to use a bitmask instead of booleans (CYCLE, FORMAT, VALID) |
1359 |
protected void flushClasspathProblemMarkers(boolean flushCycleMarkers, boolean flushClasspathFormatMarkers) { |
1371 |
protected void flushClasspathProblemMarkers(boolean flushCycleMarkers, boolean flushClasspathFormatMarkers, boolean flushOverlappingOutputMarkers) { |
1360 |
try { |
1372 |
try { |
1361 |
if (this.project.isAccessible()) { |
1373 |
if (this.project.isAccessible()) { |
1362 |
IMarker[] markers = this.project.findMarkers(IJavaModelMarker.BUILDPATH_PROBLEM_MARKER, false, IResource.DEPTH_ZERO); |
1374 |
IMarker[] markers = this.project.findMarkers(IJavaModelMarker.BUILDPATH_PROBLEM_MARKER, false, IResource.DEPTH_ZERO); |
1363 |
for (int i = 0, length = markers.length; i < length; i++) { |
1375 |
for (int i = 0, length = markers.length; i < length; i++) { |
1364 |
IMarker marker = markers[i]; |
1376 |
IMarker marker = markers[i]; |
1365 |
if (flushCycleMarkers && flushClasspathFormatMarkers) { |
1377 |
if (flushCycleMarkers && flushClasspathFormatMarkers && flushOverlappingOutputMarkers) { |
1366 |
marker.delete(); |
1378 |
marker.delete(); |
1367 |
} else { |
1379 |
} else { |
1368 |
String cycleAttr = (String)marker.getAttribute(IJavaModelMarker.CYCLE_DETECTED); |
1380 |
String cycleAttr = (String)marker.getAttribute(IJavaModelMarker.CYCLE_DETECTED); |
1369 |
String classpathFileFormatAttr = (String)marker.getAttribute(IJavaModelMarker.CLASSPATH_FILE_FORMAT); |
1381 |
String classpathFileFormatAttr = (String)marker.getAttribute(IJavaModelMarker.CLASSPATH_FILE_FORMAT); |
|
|
1382 |
String overlappingOutputAttr = (String) marker.getAttribute(IJavaModelMarker.OUTPUT_OVERLAPPING_SOURCE); |
1370 |
if ((flushCycleMarkers == (cycleAttr != null && cycleAttr.equals("true"))) //$NON-NLS-1$ |
1383 |
if ((flushCycleMarkers == (cycleAttr != null && cycleAttr.equals("true"))) //$NON-NLS-1$ |
|
|
1384 |
&& (flushOverlappingOutputMarkers == (overlappingOutputAttr != null && overlappingOutputAttr.equals("true"))) //$NON-NLS-1$ |
1371 |
&& (flushClasspathFormatMarkers == (classpathFileFormatAttr != null && classpathFileFormatAttr.equals("true")))){ //$NON-NLS-1$ |
1385 |
&& (flushClasspathFormatMarkers == (classpathFileFormatAttr != null && classpathFileFormatAttr.equals("true")))){ //$NON-NLS-1$ |
1372 |
marker.delete(); |
1386 |
marker.delete(); |
1373 |
} |
1387 |
} |
Lines 1513-1518
Link Here
|
1513 |
propertyName.equals(JavaCore.CORE_ENABLE_CLASSPATH_MULTIPLE_OUTPUT_LOCATIONS) || |
1527 |
propertyName.equals(JavaCore.CORE_ENABLE_CLASSPATH_MULTIPLE_OUTPUT_LOCATIONS) || |
1514 |
propertyName.equals(JavaCore.CORE_INCOMPLETE_CLASSPATH) || |
1528 |
propertyName.equals(JavaCore.CORE_INCOMPLETE_CLASSPATH) || |
1515 |
propertyName.equals(JavaCore.CORE_CIRCULAR_CLASSPATH) || |
1529 |
propertyName.equals(JavaCore.CORE_CIRCULAR_CLASSPATH) || |
|
|
1530 |
propertyName.equals(JavaCore.CORE_OUTPUT_LOCATION_OVERLAPPING_ANOTHER_SOURCE) || |
1516 |
propertyName.equals(JavaCore.CORE_INCOMPATIBLE_JDK_LEVEL)) |
1531 |
propertyName.equals(JavaCore.CORE_INCOMPATIBLE_JDK_LEVEL)) |
1517 |
{ |
1532 |
{ |
1518 |
manager.deltaState.addClasspathValidation(JavaProject.this); |
1533 |
manager.deltaState.addClasspathValidation(JavaProject.this); |