Lines 69-78
Link Here
|
69 |
import org.eclipse.jdt.core.IJavaProject; |
69 |
import org.eclipse.jdt.core.IJavaProject; |
70 |
import org.eclipse.jdt.core.JavaCore; |
70 |
import org.eclipse.jdt.core.JavaCore; |
71 |
import org.eclipse.jdt.core.JavaModelException; |
71 |
import org.eclipse.jdt.core.JavaModelException; |
|
|
72 |
import org.eclipse.jdt.core.compiler.CategorizedProblem; |
72 |
import org.eclipse.jdt.internal.core.ClasspathEntry; |
73 |
import org.eclipse.jdt.internal.core.ClasspathEntry; |
73 |
import org.eclipse.jdt.internal.core.JavaModelManager; |
74 |
import org.eclipse.jdt.internal.core.JavaModelManager; |
74 |
import org.eclipse.jdt.internal.core.JavaProject; |
75 |
import org.eclipse.jdt.internal.core.JavaProject; |
75 |
import org.eclipse.jdt.internal.core.builder.State; |
76 |
import org.eclipse.jdt.internal.core.builder.State; |
|
|
77 |
import org.eclipse.jdt.internal.core.util.Messages; |
76 |
import org.eclipse.jdt.internal.core.util.Util; |
78 |
import org.eclipse.jdt.internal.core.util.Util; |
77 |
import org.eclipse.osgi.util.NLS; |
79 |
import org.eclipse.osgi.util.NLS; |
78 |
import org.osgi.service.prefs.BackingStoreException; |
80 |
import org.osgi.service.prefs.BackingStoreException; |
Lines 132-145
Link Here
|
132 |
AJLog.log(AJLog.BUILDER,"Project=" //$NON-NLS-1$ |
134 |
AJLog.log(AJLog.BUILDER,"Project=" //$NON-NLS-1$ |
133 |
+ project.getName() + ", kind of build requested=" + mode); //$NON-NLS-1$ |
135 |
+ project.getName() + ", kind of build requested=" + mode); //$NON-NLS-1$ |
134 |
|
136 |
|
135 |
// bug 159197: check inpath and aspectpath |
137 |
if (!isWorthBuilding(project, requiredProjects)) { |
136 |
if (!validateInpathAspectPath(project)) { |
138 |
postCallListeners(true); |
137 |
postCallListeners(true); |
139 |
progressMonitor.done(); |
138 |
AJLog.log(AJLog.BUILDER, |
140 |
return requiredProjects; |
139 |
"build: Abort due to missing inpath/aspectpath entries"); //$NON-NLS-1$ |
|
|
140 |
AJLog.logEnd(AJLog.BUILDER, TimerLogEvent.TIME_IN_BUILD); |
141 |
progressMonitor.done(); |
142 |
return requiredProjects; |
143 |
} |
141 |
} |
144 |
|
142 |
|
145 |
// workaround for bug 73435 |
143 |
// workaround for bug 73435 |
Lines 257-262
Link Here
|
257 |
return requiredProjects; |
255 |
return requiredProjects; |
258 |
} |
256 |
} |
259 |
|
257 |
|
|
|
258 |
/** |
259 |
* Check to see if the class paths are valid |
260 |
* @param progressMonitor |
261 |
* @param project |
262 |
* @param requiredProjects |
263 |
* @return true if aspect, in, and class paths are valid. False if there is a problem |
264 |
* @throws CoreException |
265 |
*/ |
266 |
private boolean isWorthBuilding(IProject project, IProject[] requiredProjects) throws CoreException { |
267 |
// bug 159197: check inpath and aspectpath |
268 |
// and classpath |
269 |
if (!validateInpathAspectPath(project) || |
270 |
isClasspathBroken(JavaCore.create(project).getRawClasspath(), project)) { |
271 |
AJLog.log(AJLog.BUILDER, |
272 |
"build: Abort due to missing inpath/aspectpath/classpath entries"); //$NON-NLS-1$ |
273 |
AJLog.logEnd(AJLog.BUILDER, TimerLogEvent.TIME_IN_BUILD); |
274 |
removeProblemsAndTasksFor(project); // make this the only problem for this project |
275 |
return false; |
276 |
} |
277 |
return true; |
278 |
} |
279 |
|
260 |
// check to see if the .classpath has changed. |
280 |
// check to see if the .classpath has changed. |
261 |
// we know exactly where it is located, so no need for a visitor |
281 |
// we know exactly where it is located, so no need for a visitor |
262 |
private boolean classpathChanged(IResourceDelta dta, IProject project) { |
282 |
private boolean classpathChanged(IResourceDelta dta, IProject project) { |
Lines 504-509
Link Here
|
504 |
return success; |
524 |
return success; |
505 |
} |
525 |
} |
506 |
|
526 |
|
|
|
527 |
|
528 |
private boolean isClasspathBroken(IClasspathEntry[] classpath, IProject p) throws CoreException { |
529 |
IMarker[] markers = p.findMarkers(IJavaModelMarker.BUILDPATH_PROBLEM_MARKER, |
530 |
false, IResource.DEPTH_ZERO); |
531 |
for (int i = 0, l = markers.length; i < l; i++) { |
532 |
if (markers[i].getAttribute(IMarker.SEVERITY, -1) == IMarker.SEVERITY_ERROR) { |
533 |
markProject(p, Messages.bind(Messages.build_prereqProjectHasClasspathProblems, |
534 |
p.getName())); |
535 |
return true; |
536 |
} |
537 |
} |
538 |
return false; |
539 |
} |
540 |
|
541 |
|
507 |
private void markProject(IProject project, String errorMessage) { |
542 |
private void markProject(IProject project, String errorMessage) { |
508 |
try { |
543 |
try { |
509 |
IMarker errorMarker = project.createMarker(IJavaModelMarker.JAVA_MODEL_PROBLEM_MARKER); |
544 |
IMarker errorMarker = project.createMarker(IJavaModelMarker.JAVA_MODEL_PROBLEM_MARKER); |