[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