Author: vrubezhny
Date: 2012-08-08 10:48:38 -0400 (Wed, 08 Aug 2012)
New Revision: 42929
Modified:
trunk/common/plugins/org.jboss.tools.common.validation/src/org/jboss/tools/common/validation/java/JavaDirtyRegionProcessor.java
Log:
JBIDE-12405
As-you-type validation works slow when many strings are being added
fixed
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-08
14:04:19 UTC (rev 42928)
+++
trunk/common/plugins/org.jboss.tools.common.validation/src/org/jboss/tools/common/validation/java/JavaDirtyRegionProcessor.java 2012-08-08
14:48:38 UTC (rev 42929)
@@ -10,7 +10,7 @@
******************************************************************************/
package org.jboss.tools.common.validation.java;
-import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -420,33 +420,30 @@
protected void endProcessing() {
if (fValidatorManager == null || fReporter == null || fStartPartitionsToProcess == -1
|| fEndPartitionsToProcess == -1)
return;
-
+// long t = System.currentTimeMillis();
+// String message = "";
fReporter.clearAnnotations(fStartPartitionsToProcess, fEndPartitionsToProcess);
- for (ITypedRegion partition : fPartitionsToProcess) {
-// try {
-// System.out.println("validateString: " + partition.getOffset() +
"->" + (partition.getOffset() + partition.getLength()) + ": [" +
fDocument.get(partition.getOffset(), partition.getLength())+ "]");
-// } catch (BadLocationException e) {
-// e.printStackTrace();
-// }
- // TODO
- List<IRegion> regions = new ArrayList<IRegion>();
- regions.add(partition);
- fValidatorManager.validateString(regions, fHelper, fReporter);
+ if (fPartitionsToProcess != null && !fPartitionsToProcess.isEmpty()) {
+ fValidatorManager.validateString(
+ Arrays.asList(fPartitionsToProcess.toArray(new
IRegion[fPartitionsToProcess.size()])),
+ fHelper, fReporter);
+// message += "; validateString: " + fPartitionsToProcess.size() + "
regions; ";
}
+// else { message += "; validateString: 0 regions; "; }
if (isJavaElementValidationRequired()) {
-// try {
-// System.out.println("validateJavaElement: " + fStartRegionToProcess +
"->" + fEndRegionToProcess + ": [" +
fDocument.get(fStartRegionToProcess, fEndRegionToProcess - fStartRegionToProcess)+
"]");
-// } catch (BadLocationException e) {
-// e.printStackTrace();
-// }
- //TODO
fReporter.clearAlwaysRemoveAnnotations();
- List<IRegion> regions = new ArrayList<IRegion>();
- regions.add(new Region(fStartRegionToProcess, fEndRegionToProcess -
fStartRegionToProcess));
- fValidatorManager.validateJavaElement(regions, fHelper, fReporter);
- }
+ fValidatorManager.validateJavaElement(
+ Arrays.asList(
+ new IRegion[] {
+ new Region(fStartRegionToProcess, fEndRegionToProcess - fStartRegionToProcess)
+ }),
+ fHelper, fReporter);
+// message += "; validateJavaElement: one region";
+ }
+// else { message += "; validateJavaElement: 0 regions"; }
+// System.out.println("[" + (System.currentTimeMillis() - t) + "ms]:
" + message);
}
private boolean isJavaElementValidationRequired() {
Show replies by date