From 7da0863c33cc71f10ca206cbc5335c850fd37292 Mon Sep 17 00:00:00 2001 From: Louis Vignier Date: Mon, 18 Sep 2023 16:44:06 +0200 Subject: [PATCH] [java] Remove JavaUnnamedClassIndex The index made tests fail, reverting until a better solution is found. IJ-CR-115084 GitOrigin-RevId: 5b4ca90aa8059e70c656d3e9ff80868940670736 --- .../application/ApplicationConfiguration.java | 42 ++-------------- .../JavaApplicationSettingsEditor.java | 28 ++--------- .../src/META-INF/JavaIndexingPlugin.xml | 1 - .../psi/impl/java/JavaUnnamedClassIndex.kt | 48 ------------------- 4 files changed, 9 insertions(+), 110 deletions(-) delete mode 100644 java/java-indexing-impl/src/com/intellij/psi/impl/java/JavaUnnamedClassIndex.kt diff --git a/java/execution/impl/src/com/intellij/execution/application/ApplicationConfiguration.java b/java/execution/impl/src/com/intellij/execution/application/ApplicationConfiguration.java index 52a4500121ef..d930daf5567b 100644 --- a/java/execution/impl/src/com/intellij/execution/application/ApplicationConfiguration.java +++ b/java/execution/impl/src/com/intellij/execution/application/ApplicationConfiguration.java @@ -23,7 +23,6 @@ import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleUtilCore; import com.intellij.openapi.options.SettingsEditor; import com.intellij.openapi.options.SettingsEditorGroup; -import com.intellij.openapi.project.IndexNotReadyException; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.NlsSafe; import com.intellij.openapi.util.io.FileUtilRt; @@ -32,16 +31,10 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFileManager; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiJavaFile; -import com.intellij.psi.PsiManager; -import com.intellij.psi.impl.java.JavaUnnamedClassIndexKt; -import com.intellij.psi.search.GlobalSearchScope; -import com.intellij.psi.util.JavaUnnamedClassUtil; import com.intellij.psi.util.PsiMethodUtil; import com.intellij.refactoring.listeners.RefactoringElementListener; import com.intellij.util.PathUtil; import com.intellij.util.containers.ContainerUtil; -import com.intellij.util.indexing.FileBasedIndex; import org.jdom.Element; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -191,40 +184,15 @@ public class ApplicationConfiguration extends JavaRunConfigurationBase @NotNull public JavaRunConfigurationModule checkClass() throws RuntimeConfigurationException { final JavaRunConfigurationModule configurationModule = getConfigurationModule(); - String mainClassName = getMainClassName(); - try { - PsiClass psiClass = getOptions().isUnnamedClassConfiguration() - ? checkUnnammedClassConfiguration(configurationModule, mainClassName) - : configurationModule.checkModuleAndClassName(getMainClassName(), ExecutionBundle.message("no.main.class.specified.error.text")); + if (getOptions().isUnnamedClassConfiguration()) { + // TODO: Check Unnamed class index + } else { + final PsiClass psiClass = configurationModule.checkModuleAndClassName(getMainClassName(), ExecutionBundle.message("no.main.class.specified.error.text")); if (psiClass == null || !PsiMethodUtil.hasMainMethod(psiClass)) { throw new RuntimeConfigurationWarning(ExecutionBundle.message("main.method.not.found.in.class.error.message", getMainClassName())); } - } catch (IndexNotReadyException ignored) {} - return configurationModule; - } - - @Nullable - private PsiClass checkUnnammedClassConfiguration(JavaRunConfigurationModule configurationModule, String mainClassName) - throws RuntimeConfigurationException, IndexNotReadyException { - configurationModule.checkForWarning(); - - if (mainClassName != null) { - var virtualFileIterator = FileBasedIndex.getInstance().getContainingFiles( - JavaUnnamedClassIndexKt.getId(), - mainClassName + ".java", - GlobalSearchScope.allScope(getProject()) - ).iterator(); - - if (virtualFileIterator.hasNext()) { - var virtualFile = virtualFileIterator.next(); - var psiFile = PsiManager.getInstance(getProject()).findFile(virtualFile); - if (psiFile instanceof PsiJavaFile javaFile) { - return JavaUnnamedClassUtil.getUnnamedClassFor(javaFile); - } - } } - - return null; + return configurationModule; } @Override diff --git a/java/execution/impl/src/com/intellij/execution/application/JavaApplicationSettingsEditor.java b/java/execution/impl/src/com/intellij/execution/application/JavaApplicationSettingsEditor.java index 21df26cee579..edd1060e074d 100644 --- a/java/execution/impl/src/com/intellij/execution/application/JavaApplicationSettingsEditor.java +++ b/java/execution/impl/src/com/intellij/execution/application/JavaApplicationSettingsEditor.java @@ -4,18 +4,11 @@ package com.intellij.execution.application; import com.intellij.execution.ExecutionBundle; import com.intellij.execution.configurations.RuntimeConfigurationException; import com.intellij.execution.ui.*; -import com.intellij.icons.AllIcons; import com.intellij.openapi.editor.Editor; -import com.intellij.openapi.project.DumbService; import com.intellij.openapi.ui.ValidationInfo; import com.intellij.openapi.util.Predicates; -import com.intellij.psi.impl.java.JavaUnnamedClassIndexKt; -import com.intellij.psi.util.JavaUnnamedClassUtil; import com.intellij.ui.EditorTextField; -import com.intellij.ui.TextFieldWithAutoCompletion; -import com.intellij.ui.TextFieldWithAutoCompletion.StringsCompletionProvider; -import com.intellij.util.containers.ContainerUtil; -import com.intellij.util.indexing.FileBasedIndex; +import com.intellij.ui.components.JBTextField; import com.intellij.util.ui.GridBag; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NotNull; @@ -74,7 +67,7 @@ public final class JavaApplicationSettingsEditor extends JavaSettingsEditorBase< private class MainClassPanel extends JPanel { private final ClassEditorField myClassEditorField; - private final TextFieldWithAutoCompletion myUnnamedClassField; + private final JBTextField myUnnamedClassField; private boolean myIsUnnamedClassConfiguration; private MainClassPanel(ModuleClasspathCombo classpathCombo) { @@ -95,24 +88,11 @@ public final class JavaApplicationSettingsEditor extends JavaSettingsEditorBase< GridBag constraints = new GridBag().setDefaultFill(GridBagConstraints.HORIZONTAL).setDefaultWeightX(1.0); add(myClassEditorField, constraints.nextLine()); - myUnnamedClassField = new TextFieldWithAutoCompletion<>( - getProject(), - new StringsCompletionProvider( - DumbService.isDumb(getProject()) - ? List.of() - : ContainerUtil.map( - FileBasedIndex.getInstance().getAllKeys(JavaUnnamedClassIndexKt.getId(), getProject()), - fileName -> JavaUnnamedClassUtil.trimExtension(fileName) - ), - AllIcons.RunConfigurations.Application - ), - true, - "" - ); + myUnnamedClassField = new JBTextField(); CommonParameterFragments.setMonospaced(myUnnamedClassField); String unnamedClassPlaceholder = ExecutionBundle.message("application.configuration.main.unnamed.class.placeholder"); myUnnamedClassField.setVisible(myIsUnnamedClassConfiguration); - myUnnamedClassField.setPlaceholder(unnamedClassPlaceholder); + myUnnamedClassField.getEmptyText().setText(unnamedClassPlaceholder); myUnnamedClassField.getAccessibleContext().setAccessibleName(unnamedClassPlaceholder); setMinimumWidth(myUnnamedClassField, 300); add(myUnnamedClassField, constraints.nextLine()); diff --git a/java/java-indexing-impl/src/META-INF/JavaIndexingPlugin.xml b/java/java-indexing-impl/src/META-INF/JavaIndexingPlugin.xml index f4a92b1931c1..ae3f6d71486a 100644 --- a/java/java-indexing-impl/src/META-INF/JavaIndexingPlugin.xml +++ b/java/java-indexing-impl/src/META-INF/JavaIndexingPlugin.xml @@ -37,7 +37,6 @@ - diff --git a/java/java-indexing-impl/src/com/intellij/psi/impl/java/JavaUnnamedClassIndex.kt b/java/java-indexing-impl/src/com/intellij/psi/impl/java/JavaUnnamedClassIndex.kt deleted file mode 100644 index b7435e2dcfff..000000000000 --- a/java/java-indexing-impl/src/com/intellij/psi/impl/java/JavaUnnamedClassIndex.kt +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.psi.impl.java - -import com.intellij.ide.highlighter.JavaFileType -import com.intellij.lang.LighterASTNode -import com.intellij.psi.impl.java.stubs.JavaStubElementTypes -import com.intellij.psi.impl.source.JavaFileElementType -import com.intellij.psi.impl.source.tree.RecursiveLighterASTNodeWalkingVisitor -import com.intellij.util.indexing.* -import com.intellij.util.io.KeyDescriptor -import java.io.DataInput -import java.io.DataOutput - -val id: ID = ID.create("java.unnamed.class") - -class JavaUnnamedClassIndex: ScalarIndexExtension() { - - override fun getName(): ID = id - - override fun getIndexer(): DataIndexer = DataIndexer { inputData -> - val result: MutableMap = mutableMapOf() - - val lightAST = inputData.psiFile.node.lighterAST - object: RecursiveLighterASTNodeWalkingVisitor(lightAST) { - override fun visitNode(element: LighterASTNode) { - when (element.tokenType) { - is JavaFileElementType -> super.visitNode(element) - JavaStubElementTypes.UNNAMED_CLASS -> result[inputData.fileName] = null - } - } - }.visitNode(lightAST.getRoot()) - - return@DataIndexer result - } - - override fun getKeyDescriptor(): KeyDescriptor = object: KeyDescriptor { - override fun isEqual(val1: String?, val2: String?): Boolean = val1 == val2 - override fun getHashCode(value: String?): Int = value.hashCode() - override fun save(out: DataOutput, value: String?) { if (value != null) { out.writeUTF(value) } } - override fun read(`in`: DataInput): String = `in`.readUTF() - } - - override fun getVersion(): Int = 0 - - override fun getInputFilter(): FileBasedIndex.InputFilter = DefaultFileTypeSpecificInputFilter(JavaFileType.INSTANCE) - - override fun dependsOnFileContent(): Boolean = true -} \ No newline at end of file