Lines 107-112
Link Here
|
107 |
import org.netbeans.api.project.ProjectInformation; |
107 |
import org.netbeans.api.project.ProjectInformation; |
108 |
import org.netbeans.api.project.ProjectManager; |
108 |
import org.netbeans.api.project.ProjectManager; |
109 |
import org.netbeans.api.project.ProjectUtils; |
109 |
import org.netbeans.api.project.ProjectUtils; |
|
|
110 |
import org.netbeans.api.project.ui.OpenProjects; |
110 |
import org.netbeans.api.queries.VisibilityQuery; |
111 |
import org.netbeans.api.queries.VisibilityQuery; |
111 |
import org.netbeans.spi.project.ProjectState; |
112 |
import org.netbeans.spi.project.ProjectState; |
112 |
import org.netbeans.spi.project.ui.PrivilegedTemplates; |
113 |
import org.netbeans.spi.project.ui.PrivilegedTemplates; |
Lines 500-505
Link Here
|
500 |
return; |
501 |
return; |
501 |
} |
502 |
} |
502 |
// clearProjectWorkspaceCache(); |
503 |
// clearProjectWorkspaceCache(); |
|
|
504 |
boolean wasBroken = problemReporter.isBroken(); |
503 |
problemReporter.clearReports(); //#167741 -this will trigger node refresh? |
505 |
problemReporter.clearReports(); //#167741 -this will trigger node refresh? |
504 |
MavenProject prj = loadOriginalMavenProject(false); |
506 |
MavenProject prj = loadOriginalMavenProject(false); |
505 |
synchronized (this) { |
507 |
synchronized (this) { |
Lines 508-513
Link Here
|
508 |
ACCESSOR.doFireReload(watcher); |
510 |
ACCESSOR.doFireReload(watcher); |
509 |
projectInfo.reset(); |
511 |
projectInfo.reset(); |
510 |
doBaseProblemChecks(); |
512 |
doBaseProblemChecks(); |
|
|
513 |
if (wasBroken && !problemReporter.isBroken()) { |
514 |
LOG.log(Level.FINE, "{0} was fixed, will refresh other broken projects", prj); |
515 |
refreshAllBrokenProjects(); |
516 |
} |
517 |
} |
518 |
private static int refreshPointer; // cycle through open projects so we do not repeat too much |
519 |
private static void refreshAllBrokenProjects() { |
520 |
RELOAD_RP.post(new Runnable() { |
521 |
public @Override void run() { |
522 |
EmbedderFactory.resetProjectEmbedder(); |
523 |
int max = 5; // do not try to reload hundreds of projects (unless they get fixed and retrigger this) |
524 |
Project[] openProjects = OpenProjects.getDefault().getOpenProjects(); |
525 |
for (int i = 0; i < openProjects.length; i++) { |
526 |
Project p = openProjects[(i + refreshPointer++) % openProjects.length]; |
527 |
ProblemReporterImpl reporter = p.getLookup().lookup(ProblemReporterImpl.class); |
528 |
if (reporter != null && reporter.isBroken()) { |
529 |
LOG.log(Level.FINE, "will try to refresh broken {0}", p); |
530 |
NbMavenProject.fireMavenProjectReload(p); |
531 |
if (max-- == 0) { |
532 |
LOG.fine("stopping refreshes after several attempts"); |
533 |
break; |
534 |
} |
535 |
} |
536 |
} |
537 |
} |
538 |
}); |
511 |
} |
539 |
} |
512 |
|
540 |
|
513 |
// public void clearProjectWorkspaceCache() { |
541 |
// public void clearProjectWorkspaceCache() { |