Author: akazakov
Date: 2011-09-02 11:59:24 -0400 (Fri, 02 Sep 2011)
New Revision: 34498
Modified:
branches/jbosstools-3.3.0.M3/common/plugins/org.jboss.tools.common.validation/src/org/jboss/tools/common/validation/ValidatorManager.java
Log:
https://issues.jboss.org/browse/JBIDE-9637 On workspaces with complex dependencies between
CDI projects, CDI validation self-disables after full build.
Modified:
branches/jbosstools-3.3.0.M3/common/plugins/org.jboss.tools.common.validation/src/org/jboss/tools/common/validation/ValidatorManager.java
===================================================================
---
branches/jbosstools-3.3.0.M3/common/plugins/org.jboss.tools.common.validation/src/org/jboss/tools/common/validation/ValidatorManager.java 2011-09-02
15:23:11 UTC (rev 34497)
+++
branches/jbosstools-3.3.0.M3/common/plugins/org.jboss.tools.common.validation/src/org/jboss/tools/common/validation/ValidatorManager.java 2011-09-02
15:59:24 UTC (rev 34498)
@@ -66,31 +66,33 @@
Set<IProject> rootProjects = validationContextManager.getRootProjects();
IStatus status = OK_STATUS;
synchronized (validatingProjects) {
- for (IProject rootProject : rootProjects) {
- if(validatingProjects.contains(rootProject)) {
- return OK_STATUS;
- }
- validatingProjects.add(rootProject);
+ // Validate root projects that is not being validated yet.
+ rootProjects.removeAll(validatingProjects);
+ if(rootProjects.isEmpty()) {
+ // We don't have projects to validate.
+ return OK_STATUS;
}
+ validatingProjects.addAll(rootProjects);
}
try {
validationContextManager.clearValidatedProjectsList();
Set<IFile> changedFiles = validationHelper.getChangedFiles();
if(!changedFiles.isEmpty()) {
- status = validate(changedFiles, validationHelper, reporter);
+ status = validate(changedFiles, validationHelper, reporter, rootProjects);
} else if(!validationContextManager.getRegisteredFiles().isEmpty()) {
validationContextManager.clearAllResourceLinks();
- status = validateAll(validationHelper, reporter);
+ status = validateAll(validationHelper, reporter, rootProjects);
}
} finally {
- if(validationContextManager!=null) {
- validationContextManager.clearRegisteredFiles();
- }
- validationHelper.cleanup(); // See
https://issues.jboss.org/browse/JBIDE-8726
- synchronized (validatingProjects) {
- for (IProject rootProject : rootProjects) {
- validatingProjects.remove(rootProject);
+ try {
+ if(validationContextManager!=null) {
+ validationContextManager.clearRegisteredFiles();
}
+ validationHelper.cleanup(); // See
https://issues.jboss.org/browse/JBIDE-8726
+ } finally {
+ synchronized (validatingProjects) {
+ validatingProjects.removeAll(rootProjects);
+ }
}
}
return status;
@@ -103,10 +105,9 @@
}
}
- private IStatus validate(Set<IFile> changedFiles, ContextValidationHelper
validationHelper, IReporter reporter) throws ValidationException {
+ private IStatus validate(Set<IFile> changedFiles, ContextValidationHelper
validationHelper, IReporter reporter, Set<IProject> rootProjects) throws
ValidationException {
IValidationContextManager validationContextManager =
validationHelper.getValidationContextManager();
List<IValidator> validators = validationContextManager.getValidators();
- Set<IProject> rootProjects = validationContextManager.getRootProjects();
removeMarkers(changedFiles);
for (IValidator validator : validators) {
for (IProject rootProject : rootProjects) {
@@ -119,10 +120,9 @@
return OK_STATUS;
}
- private IStatus validateAll(ContextValidationHelper validationHelper, IReporter
reporter) throws ValidationException {
+ private IStatus validateAll(ContextValidationHelper validationHelper, IReporter
reporter, Set<IProject> rootProjects) throws ValidationException {
IValidationContextManager validationContextManager =
validationHelper.getValidationContextManager();
List<IValidator> validators = validationContextManager.getValidators();
- Set<IProject> rootProjects = validationContextManager.getRootProjects();
removeMarkers(validationHelper.getProjectSetRegisteredFiles());
for (IValidator validator : validators) {
for (IProject rootProject : rootProjects) {