[jbosstools-commits] JBoss Tools SVN: r42571 - 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
Fri Jul 13 07:30:27 EDT 2012
Author: vrubezhny
Date: 2012-07-13 07:30:26 -0400 (Fri, 13 Jul 2012)
New Revision: 42571
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
NPE is fixed
JBIDE-12319
As you type does not restore marker state when editor is returned to unmodified stade by Undo/Redo actions
Issue is 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-07-13 10:27:41 UTC (rev 42570)
+++ trunk/common/plugins/org.jboss.tools.common.validation/src/org/jboss/tools/common/validation/java/JavaDirtyRegionProcessor.java 2012-07-13 11:30:26 UTC (rev 42571)
@@ -65,6 +65,7 @@
private JavaELProblemReporter fReporter;
private AsYouTypeValidatorManager fValidatorManager;
+ private boolean fDocumentJustSetup = false;
private boolean fIsCanceled = false;
private boolean fInRewriteSession = false;
private IDocumentRewriteSessionListener fDocumentRewriteSessionListener = new DocumentRewriteSessionListener();
@@ -301,6 +302,7 @@
fReporter.update();
}
}
+ fDocumentJustSetup = true;
}
@Override
@@ -328,9 +330,17 @@
fEndPartitionsToProcess = -1;
}
+ private boolean isEditorDirty() {
+ if (fDocumentJustSetup && fEditor.isDirty()) {
+ fDocumentJustSetup = false;
+ }
+
+ return !fDocumentJustSetup;
+ }
+
protected void process(DirtyRegion dirtyRegion) {
IDocument doc = getDocument();
- if (!fEditor.isDirty() || !isInstalled() || isInRewrite() || dirtyRegion == null || doc == null || fIsCanceled) {
+ if (!isEditorDirty() || !isInstalled() || isInRewrite() || dirtyRegion == null || doc == null || fIsCanceled) {
return;
}
@@ -419,20 +429,7 @@
boolean result = false;
boolean atLeastOneElementIsProcessed = false;
- int start = fStartRegionToProcess;
- int end = fEndRegionToProcess;
-
- ITypedRegion[] partitions = computePartitioning(fStartPartitionsToProcess, fEndPartitionsToProcess - fStartPartitionsToProcess);
-
- ITypedRegion startPartition = findPartitionByOffset(partitions, start);
- ITypedRegion endPartition = (startPartition != null && end >= startPartition.getOffset() && end < startPartition.getOffset() + startPartition.getLength()) ?
- startPartition : findPartitionByOffset(partitions, end);
-
- if (startPartition != null && startPartition.equals(endPartition) && !isProcessingRequiredForPartition(startPartition)) {
- return false;
- }
-
- int position = start;
+ int position = fStartRegionToProcess;
try {
IJavaElement element = null;
while (position >= 0 && (element = unit.getElementAt(position--)) == null)
@@ -441,7 +438,18 @@
if (position < 0)
position = 0;
- while (position < end) {
+ ITypedRegion[] partitions = computePartitioning(position, fEndPartitionsToProcess - position);
+
+ ITypedRegion startPartition = findPartitionByOffset(partitions, position);
+ ITypedRegion endPartition = (startPartition != null && fEndRegionToProcess >= startPartition.getOffset() &&
+ fEndRegionToProcess < startPartition.getOffset() + startPartition.getLength()) ?
+ startPartition : findPartitionByOffset(partitions, fEndRegionToProcess);
+
+ if (startPartition != null && startPartition.equals(endPartition) && !isProcessingRequiredForPartition(startPartition)) {
+ return false;
+ }
+
+ while (position <= fEndRegionToProcess) {
ITypedRegion partition = findPartitionByOffset(partitions, position);
if(!isProcessingRequiredForPartition(partition)) {
position = partition.getOffset() + partition.getLength();
@@ -488,6 +496,9 @@
}
private boolean isProcessingRequiredForPartition(ITypedRegion partition) {
+ if (partition == null)
+ return false;
+
String type = partition.getType();
return !(IJavaPartitions.JAVA_STRING.equals(type) || IJavaPartitions.JAVA_CHARACTER.equals(type) ||
IJavaPartitions.JAVA_SINGLE_LINE_COMMENT.equals(type) ||
More information about the jbosstools-commits
mailing list