json schema annotation: add a check for annotated element type

- significantly improves performance for big files, because less matching
schema searches are done
This commit is contained in:
Irina.Chernushina
2017-10-09 22:21:26 +02:00
committed by Irina.Chernushina
parent 6d6f61f345
commit fdf07bb9c3
3 changed files with 6 additions and 2 deletions
@@ -15,6 +15,8 @@
*/
package com.jetbrains.jsonSchema.impl;
import com.intellij.json.psi.JsonObject;
import com.intellij.json.psi.JsonProperty;
import com.intellij.lang.annotation.AnnotationHolder;
import com.intellij.lang.annotation.AnnotationSession;
import com.intellij.lang.annotation.Annotator;
@@ -42,7 +44,8 @@ public class JsonSchemaAnnotator implements Annotator {
@Override
public void annotate(@NotNull PsiElement element, @NotNull AnnotationHolder holder) {
if (element.getContainingFile() == null) return;
if (element.getContainingFile() == null ||
!(element instanceof JsonProperty || element instanceof JsonObject)) return;
final JsonSchemaObject rootSchema =
JsonSchemaService.Impl.get(element.getProject()).getSchemaObject(element.getContainingFile().getViewProvider().getVirtualFile());
@@ -36,6 +36,6 @@ public class JsonSchemaPerformanceTest extends JsonSchemaHeavyAbstractTest {
doHighlighting();
}
});
PlatformTestUtil.startPerformanceTest(getTestName(false), 7000, test).attempts(1).usesAllCPUCores().assertTiming();
PlatformTestUtil.startPerformanceTest(getTestName(false), 20000, test).attempts(1).usesAllCPUCores().assertTiming();
}
}
@@ -39,6 +39,7 @@ public class JsonSchemaTestSuite extends TestCase {
suite.addTestSuite(JsonBySchemaHeavyCompletionTest.class);
suite.addTestSuite(JsonSchemaReadTest.class);
suite.addTestSuite(JsonSchemaFileResolveTest.class);
suite.addTestSuite(JsonSchemaPerformanceTest.class);
return suite;
}
}