Unverified Commit a75ea73e authored by Vladimir Krivosheev's avatar Vladimir Krivosheev
Browse files

avoid expensive isSchemaFile()

parent ba991f47
Branches unavailable Tags unavailable
No related merge requests found
Showing with 18 additions and 14 deletions
+18 -14
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.json;
import com.intellij.json.psi.*;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.fileTypes.LanguageFileType;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiElement;
import com.intellij.util.ObjectUtils;
import org.jetbrains.annotations.NotNull;
......@@ -82,4 +86,9 @@ public class JsonUtil {
}
return -1;
}
public static boolean isJsonFile(@NotNull VirtualFile file) {
FileType type = file.getFileType();
return type instanceof LanguageFileType && ((LanguageFileType)type).getLanguage() instanceof JsonLanguage;
}
}
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.jetbrains.jsonSchema.ide;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.ModificationTracker;
......@@ -27,7 +26,7 @@ public interface JsonSchemaService {
static boolean isSchemaFile(@NotNull PsiFile psiFile) {
final VirtualFile file = psiFile.getViewProvider().getVirtualFile();
JsonSchemaService service = Impl.get(psiFile.getProject());
return service.isApplicableToFile(file) && service.isSchemaFile(file);
return service.isSchemaFile(file) && service.isApplicableToFile(file);
}
boolean isSchemaFile(@NotNull VirtualFile file);
......
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.jetbrains.jsonSchema.impl;
import com.intellij.json.JsonLanguage;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.fileTypes.LanguageFileType;
import com.intellij.json.JsonUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.jetbrains.jsonSchema.extension.JsonSchemaEnabler;
public class JsonSchemaInJsonFilesEnabler implements JsonSchemaEnabler {
@Override
public boolean isEnabledForFile(VirtualFile file) {
FileType type = file.getFileType();
return type instanceof LanguageFileType && ((LanguageFileType)type).getLanguage() instanceof JsonLanguage;
return JsonUtil.isJsonFile(file);
}
}
......@@ -2,6 +2,7 @@
package com.jetbrains.jsonSchema.impl;
import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer;
import com.intellij.json.JsonUtil;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
......@@ -258,9 +259,9 @@ public class JsonSchemaServiceImpl implements JsonSchemaService {
@Override
public boolean isSchemaFile(@NotNull VirtualFile file) {
return isMappedSchema(file)
|| isSchemaByProvider(file)
|| hasSchemaSchema(file);
return JsonUtil.isJsonFile(file) && (isMappedSchema(file)
|| isSchemaByProvider(file)
|| hasSchemaSchema(file));
}
public boolean isMappedSchema(@NotNull VirtualFile file) {
......
......@@ -178,10 +178,8 @@ class JsonSchemaStatusWidget extends EditorBasedStatusBarPopup {
});
}
private boolean isValidSchemaFile(VirtualFile schemaFile) {
if (schemaFile == null || !myService.isApplicableToFile(schemaFile) || !myService.isSchemaFile(schemaFile)) return false;
FileType type = schemaFile.getFileType();
return type instanceof LanguageFileType && ((LanguageFileType)type).getLanguage() instanceof JsonLanguage;
private boolean isValidSchemaFile(@Nullable VirtualFile schemaFile) {
return schemaFile != null && myService.isSchemaFile(schemaFile) && myService.isApplicableToFile(schemaFile);
}
@Nullable
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment