[jbosstools-commits] JBoss Tools SVN: r42895 - in trunk: common/plugins/org.jboss.tools.common.validation/src/org/jboss/tools/common/validation and 2 other directories.
jbosstools-commits at lists.jboss.org
jbosstools-commits at lists.jboss.org
Tue Aug 7 19:15:05 EDT 2012
Author: akazakov
Date: 2012-08-07 19:15:05 -0400 (Tue, 07 Aug 2012)
New Revision: 42895
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDICoreValidator.java
trunk/common/plugins/org.jboss.tools.common.validation/src/org/jboss/tools/common/validation/AsYouTypeValidatorManager.java
trunk/common/plugins/org.jboss.tools.common.validation/src/org/jboss/tools/common/validation/IAsYouTypeValidator.java
trunk/common/plugins/org.jboss.tools.common.validation/src/org/jboss/tools/common/validation/java/JavaDirtyRegionProcessor.java
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/validation/ELValidator.java
Log:
https://issues.jboss.org/browse/JBIDE-12405 As-you-type validation works slow when many strings are being added
Modified: trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDICoreValidator.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDICoreValidator.java 2012-08-07 22:54:42 UTC (rev 42894)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDICoreValidator.java 2012-08-07 23:15:05 UTC (rev 42895)
@@ -12,6 +12,7 @@
import java.text.MessageFormat;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
@@ -105,6 +106,7 @@
import org.jboss.tools.common.validation.EditorValidationContext;
import org.jboss.tools.common.validation.IJavaElementValidator;
import org.jboss.tools.common.validation.IProjectValidationContext;
+import org.jboss.tools.common.validation.IStringValidator;
import org.jboss.tools.common.validation.IValidatingProjectSet;
import org.jboss.tools.common.validation.IValidatingProjectTree;
import org.jboss.tools.common.validation.ValidationUtil;
@@ -114,7 +116,7 @@
/**
* @author Alexey Kazakov
*/
-public class CDICoreValidator extends CDIValidationErrorManager implements IJavaElementValidator {
+public class CDICoreValidator extends CDIValidationErrorManager implements IJavaElementValidator, IStringValidator {
public static final String ID = "org.jboss.tools.cdi.core.CoreValidator"; //$NON-NLS-1$
public static final String PROBLEM_TYPE = "org.jboss.tools.cdi.core.cdiproblem"; //$NON-NLS-1$
public static final String PREFERENCE_PAGE_ID = "org.jboss.tools.cdi.ui.preferences.CDIValidatorPreferencePage"; //$NON-NLS-1$
@@ -488,7 +490,7 @@
* @see org.jboss.tools.common.validation.IAsYouTypeValidator#validate(org.eclipse.wst.validation.internal.provisional.core.IValidator, org.eclipse.core.resources.IProject, org.eclipse.jface.text.IRegion, org.eclipse.wst.validation.internal.provisional.core.IValidationContext, org.eclipse.wst.validation.internal.provisional.core.IReporter, org.jboss.tools.common.validation.EditorValidationContext, org.jboss.tools.common.validation.IProjectValidationContext, org.eclipse.core.resources.IFile)
*/
@Override
- public void validate(IValidator validatorManager, IProject rootProject, IRegion dirtyRegion, IValidationContext helper, IReporter reporter, EditorValidationContext validationContext, IProjectValidationContext projectContext, final IFile file) {
+ public void validate(IValidator validatorManager, IProject rootProject, Collection<IRegion> dirtyRegions, IValidationContext helper, IReporter reporter, EditorValidationContext validationContext, IProjectValidationContext projectContext, final IFile file) {
ContextValidationHelper validationHelper = new ContextValidationHelper();
validationHelper.setProject(rootProject);
validationHelper.setValidationContextManager(validationContext);
Modified: trunk/common/plugins/org.jboss.tools.common.validation/src/org/jboss/tools/common/validation/AsYouTypeValidatorManager.java
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.validation/src/org/jboss/tools/common/validation/AsYouTypeValidatorManager.java 2012-08-07 22:54:42 UTC (rev 42894)
+++ trunk/common/plugins/org.jboss.tools.common.validation/src/org/jboss/tools/common/validation/AsYouTypeValidatorManager.java 2012-08-07 23:15:05 UTC (rev 42895)
@@ -10,9 +10,12 @@
******************************************************************************/
package org.jboss.tools.common.validation;
+import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -154,13 +157,13 @@
return true;
}
- private void validate(Set<? extends IAsYouTypeValidator> validators, IRegion dirtyRegion, IValidationContext helper, IReporter reporter) {
+ private void validate(Set<? extends IAsYouTypeValidator> validators, Collection<IRegion> dirtyRegions, IValidationContext helper, IReporter reporter) {
count++;
for (IAsYouTypeValidator validator : validators) {
IProject rootProject = rootProjects.get(validator);
IValidatingProjectSet projectBrunch = context.getValidatingProjectTree(validator).getBrunches().get(rootProject);
if(projectBrunch!=null) {
- validator.validate(this, rootProject, dirtyRegion, helper, reporter, context, projectBrunch.getRootContext(), file);
+ validator.validate(this, rootProject, dirtyRegions, helper, reporter, context, projectBrunch.getRootContext(), file);
}
}
}
@@ -172,11 +175,11 @@
* @param helper
* @param reporter
*/
- public void validateString(IRegion dirtyRegion, IValidationContext helper, IReporter reporter) {
+ public void validateString(Collection<IRegion> dirtyRegions, IValidationContext helper, IReporter reporter) {
if(!init(helper, reporter)) {
return;
}
- validate(context.getStringValidators(), dirtyRegion, helper, reporter);
+ validate(context.getStringValidators(), dirtyRegions, helper, reporter);
}
/**
@@ -186,11 +189,11 @@
* @param helper
* @param reporter
*/
- public void validateJavaElement(IRegion dirtyRegion, IValidationContext helper, IReporter reporter) {
+ public void validateJavaElement(Collection<IRegion> dirtyRegions, IValidationContext helper, IReporter reporter) {
if(!init(helper, reporter)) {
return;
}
- validate(context.getJavaElementValidators(), dirtyRegion, helper, reporter);
+ validate(context.getJavaElementValidators(), dirtyRegions, helper, reporter);
}
/*
@@ -204,7 +207,9 @@
init(helper, reporter);
count++;
} else {
- validateString(dirtyRegion, helper, reporter);
+ List<IRegion> regions = new ArrayList<IRegion>();
+ regions.add(dirtyRegion);
+ validateString(regions, helper, reporter);
}
}
Modified: trunk/common/plugins/org.jboss.tools.common.validation/src/org/jboss/tools/common/validation/IAsYouTypeValidator.java
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.validation/src/org/jboss/tools/common/validation/IAsYouTypeValidator.java 2012-08-07 22:54:42 UTC (rev 42894)
+++ trunk/common/plugins/org.jboss.tools.common.validation/src/org/jboss/tools/common/validation/IAsYouTypeValidator.java 2012-08-07 23:15:05 UTC (rev 42895)
@@ -10,6 +10,8 @@
******************************************************************************/
package org.jboss.tools.common.validation;
+import java.util.Collection;
+
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.jface.text.IRegion;
@@ -34,5 +36,5 @@
* @param projectContext
* @param file
*/
- void validate(IValidator validatorManager, IProject rootProject, IRegion dirtyRegion, IValidationContext helper, IReporter reporter, EditorValidationContext validationContext, IProjectValidationContext projectContext, IFile file);
+ void validate(IValidator validatorManager, IProject rootProject, Collection<IRegion> dirtyRegions, IValidationContext helper, IReporter reporter, EditorValidationContext validationContext, IProjectValidationContext projectContext, IFile file);
}
\ No newline at end of file
Modified: trunk/common/plugins/org.jboss.tools.common.validation/src/org/jboss/tools/common/validation/java/JavaDirtyRegionProcessor.java
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.validation/src/org/jboss/tools/common/validation/java/JavaDirtyRegionProcessor.java 2012-08-07 22:54:42 UTC (rev 42894)
+++ trunk/common/plugins/org.jboss.tools.common.validation/src/org/jboss/tools/common/validation/java/JavaDirtyRegionProcessor.java 2012-08-07 23:15:05 UTC (rev 42895)
@@ -10,6 +10,7 @@
******************************************************************************/
package org.jboss.tools.common.validation.java;
+import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -28,6 +29,7 @@
import org.eclipse.jface.text.IDocumentExtension3;
import org.eclipse.jface.text.IDocumentExtension4;
import org.eclipse.jface.text.IDocumentRewriteSessionListener;
+import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jface.text.ITypedRegion;
import org.eclipse.jface.text.Position;
@@ -427,7 +429,10 @@
// } catch (BadLocationException e) {
// e.printStackTrace();
// }
- fValidatorManager.validateString(partition, fHelper, fReporter);
+ // TODO
+ List<IRegion> regions = new ArrayList<IRegion>();
+ regions.add(partition);
+ fValidatorManager.validateString(regions, fHelper, fReporter);
}
if (isJavaElementValidationRequired()) {
@@ -436,8 +441,11 @@
// } catch (BadLocationException e) {
// e.printStackTrace();
// }
+ //TODO
fReporter.clearAlwaysRemoveAnnotations();
- fValidatorManager.validateJavaElement(new Region(fStartRegionToProcess, fEndRegionToProcess - fStartRegionToProcess), fHelper, fReporter);
+ List<IRegion> regions = new ArrayList<IRegion>();
+ regions.add(new Region(fStartRegionToProcess, fEndRegionToProcess - fStartRegionToProcess));
+ fValidatorManager.validateJavaElement(regions, fHelper, fReporter);
}
}
Modified: trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/validation/ELValidator.java
===================================================================
--- trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/validation/ELValidator.java 2012-08-07 22:54:42 UTC (rev 42894)
+++ trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/validation/ELValidator.java 2012-08-07 23:15:05 UTC (rev 42895)
@@ -11,6 +11,7 @@
package org.jboss.tools.jst.web.kb.internal.validation;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -248,17 +249,25 @@
/*
* (non-Javadoc)
- * @see org.jboss.tools.common.validation.IAsYouTypeValidator#validate(org.eclipse.core.resources.IProject, org.eclipse.jface.text.IRegion, org.eclipse.wst.validation.internal.provisional.core.IValidationContext, org.eclipse.wst.validation.internal.provisional.core.IReporter, org.jboss.tools.common.validation.EditorValidationContext, org.eclipse.core.resources.IFile)
+ * @see org.jboss.tools.common.validation.IAsYouTypeValidator#validate(org.eclipse.wst.validation.internal.provisional.core.IValidator, org.eclipse.core.resources.IProject, java.util.Collection, org.eclipse.wst.validation.internal.provisional.core.IValidationContext, org.eclipse.wst.validation.internal.provisional.core.IReporter, org.jboss.tools.common.validation.EditorValidationContext, org.jboss.tools.common.validation.IProjectValidationContext, org.eclipse.core.resources.IFile)
*/
@Override
- public void validate(IValidator validatorManager, IProject rootProject, IRegion dirtyRegion, IValidationContext helper, IReporter reporter, EditorValidationContext validationContext, IProjectValidationContext projectContext, IFile file) {
+ public void validate(IValidator validatorManager, IProject rootProject, Collection<IRegion> dirtyRegions, IValidationContext helper, IReporter reporter, EditorValidationContext validationContext, IProjectValidationContext projectContext, IFile file) {
init(rootProject, null, projectContext, validatorManager, reporter);
setAsYouTypeValidation(true);
this.document = validationContext.getDocument();
ELContext elContext = PageContextFactory.createPageContext(validationContext.getDocument(), true);
elContext.setDirty(true);
- Set<ELReference> references = elContext.getELReferences(dirtyRegion);
-
+ Set<ELReference> references = null;
+ if(dirtyRegions.size()==1) {
+ references = elContext.getELReferences(dirtyRegions.iterator().next());
+ } else {
+ ELReference[] ref = elContext.getELReferences();
+ references = new HashSet<ELReference>(ref.length);
+ for (ELReference elReference : ref) {
+ references.add(elReference);
+ }
+ }
for (ELReference elReference : references) {
validateEL(elReference, true, elContext);
}
More information about the jbosstools-commits
mailing list