[jbosstools-commits] JBoss Tools SVN: r41969 - trunk/common/plugins/org.jboss.tools.common.validation/src/org/jboss/tools/common/validation/java.
jbosstools-commits at lists.jboss.org
jbosstools-commits at lists.jboss.org
Thu Jun 14 08:42:50 EDT 2012
Author: vrubezhny
Date: 2012-06-14 08:42:49 -0400 (Thu, 14 Jun 2012)
New Revision: 41969
Modified:
trunk/common/plugins/org.jboss.tools.common.validation/src/org/jboss/tools/common/validation/java/JavaDirtyRegionProcessor.java
Log:
JBIDE-10738
As-you-type EL validation
Avoided multiple sequential validations on the same region
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-06-14 11:58:49 UTC (rev 41968)
+++ trunk/common/plugins/org.jboss.tools.common.validation/src/org/jboss/tools/common/validation/java/JavaDirtyRegionProcessor.java 2012-06-14 12:42:49 UTC (rev 41969)
@@ -11,8 +11,10 @@
package org.jboss.tools.common.validation.java;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import org.eclipse.core.resources.IFile;
import org.eclipse.jdt.core.ICompilationUnit;
@@ -65,6 +67,10 @@
private boolean fIsCanceled = false;
private boolean fInRewriteSession = false;
private IDocumentRewriteSessionListener fDocumentRewriteSessionListener = new DocumentRewriteSessionListener();
+ private Set<ITypedRegion> fPartitionsToProcess = new HashSet<ITypedRegion>();
+ private int fStartPartitionsToProcess = -1;
+ private int fEndPartitionsToProcess = -1;
+
// AsYouType EL Validation 'marker type' name.
// marker type is used in the quickFixProcessor extension point
public static final String MARKER_TYPE= "org.jboss.tools.common.validation.el"; //$NON-NLS-1$
@@ -421,6 +427,13 @@
super.uninstall();
}
+ @Override
+ protected void beginProcessing() {
+ fPartitionsToProcess.clear();
+ fStartPartitionsToProcess = -1;
+ fEndPartitionsToProcess = -1;
+ }
+
protected void process(DirtyRegion dirtyRegion) {
IDocument doc = getDocument();
@@ -462,16 +475,31 @@
LogHelper.logError(CommonValidationPlugin.getDefault(), e);
}
+ fStartPartitionsToProcess = (fStartPartitionsToProcess == -1 || fStartPartitionsToProcess > start) ? start : fStartPartitionsToProcess;
+ fEndPartitionsToProcess = (fEndPartitionsToProcess == -1 || fEndPartitionsToProcess < end) ? end : fEndPartitionsToProcess;
+
ITypedRegion[] partitions = computePartitioning(start, end - start);
if (fReporter != null) {
fReporter.clearAnnotations(start, end);
}
- for (int i = 0; i < partitions.length; i++) {
- if (partitions[i] != null && !fIsCanceled && IJavaPartitions.JAVA_STRING.equals(partitions[i].getType())) {
- if (fValidatorManager != null)
- fValidatorManager.validate(partitions[i], fHelper, fReporter);
+ for (ITypedRegion partition : partitions) {
+ if (partition != null && !fIsCanceled && IJavaPartitions.JAVA_STRING.equals(partition.getType()) && !fPartitionsToProcess.contains(partition)) {
+ fPartitionsToProcess.add(partition);
}
}
}
+
+ @Override
+ protected void endProcessing() {
+ if (fValidatorManager == null || fPartitionsToProcess.isEmpty() || fStartPartitionsToProcess == -1 || fEndPartitionsToProcess == -1)
+ return;
+
+ if (fReporter != null) {
+ fReporter.clearAnnotations(fStartPartitionsToProcess, fEndPartitionsToProcess);
+ }
+ for (ITypedRegion partition : fPartitionsToProcess) {
+ fValidatorManager.validate(partition, fHelper, fReporter);
+ }
+ }
}
\ No newline at end of file
More information about the jbosstools-commits
mailing list