mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-13 09:19:13 +07:00
IDEA-271874 Devkit: add main plugin as implicit dependency for module.xml
GitOrigin-RevId: 5d65e4b51aa6564b6a90fe5baed203022196800b
This commit is contained in:
committed by
intellij-monorepo-bot
parent
3a23300bba
commit
bedab246b8
@@ -34,6 +34,9 @@ public final class PluginIdDependenciesIndex extends PluginXmlIndexBase<String,
|
||||
@NonNls
|
||||
private static final String PLUGIN_ID_KEY_PREFIX = "___PLUGIN_ID___";
|
||||
|
||||
@NonNls
|
||||
private static final String CONTENT_KEY_PREFIX = "___CONTENT_ID___";
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public KeyDescriptor<String> getKeyDescriptor() {
|
||||
@@ -72,7 +75,7 @@ public final class PluginIdDependenciesIndex extends PluginXmlIndexBase<String,
|
||||
}
|
||||
}
|
||||
|
||||
// new model
|
||||
// new model: dependencies
|
||||
final DependencyDescriptor dependencyDescriptor = plugin.getDependencies();
|
||||
for (DependencyDescriptor.PluginDescriptor pluginDescriptor : dependencyDescriptor.getPlugin()) {
|
||||
ContainerUtil.addIfNotNull(ids, pluginDescriptor.getId().getStringValue());
|
||||
@@ -81,12 +84,20 @@ public final class PluginIdDependenciesIndex extends PluginXmlIndexBase<String,
|
||||
ContainerUtil.addIfNotNull(ids, moduleDescriptor.getName().getStringValue());
|
||||
}
|
||||
|
||||
// new model: content
|
||||
for (ContentDescriptor.ModuleDescriptor descriptor : plugin.getContent().getModuleEntry()) {
|
||||
final String value = descriptor.getName().getStringValue();
|
||||
if (StringUtil.isNotEmpty(value)) {
|
||||
ids.add(getContentIndexingKey(value));
|
||||
}
|
||||
}
|
||||
|
||||
return ContainerUtil.newHashMap(ids, Collections.nCopies(ids.size(), null));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getVersion() {
|
||||
return 3;
|
||||
return 4;
|
||||
}
|
||||
|
||||
public static Set<String> getPluginAndDependsIds(Project project, Set<VirtualFile> files) {
|
||||
@@ -117,11 +128,24 @@ public final class PluginIdDependenciesIndex extends PluginXmlIndexBase<String,
|
||||
}
|
||||
|
||||
public static Collection<VirtualFile> findDependsTo(Project project, VirtualFile file) {
|
||||
return FileBasedIndex.getInstance().getContainingFiles(NAME, getDependsIndexingKey(file.getName()),
|
||||
GlobalSearchScopesCore.projectProductionScope(project));
|
||||
final Collection<VirtualFile> dependsFiles =
|
||||
FileBasedIndex.getInstance().getContainingFiles(NAME, getDependsIndexingKey(file.getName()),
|
||||
GlobalSearchScopesCore.projectProductionScope(project));
|
||||
|
||||
final Collection<VirtualFile> contentFiles =
|
||||
FileBasedIndex.getInstance().getContainingFiles(NAME, getContentIndexingKey(file.getNameWithoutExtension()),
|
||||
GlobalSearchScopesCore.projectProductionScope(project));
|
||||
|
||||
Collection<VirtualFile> allFiles = new ArrayList<>(dependsFiles);
|
||||
allFiles.addAll(contentFiles);
|
||||
return allFiles;
|
||||
}
|
||||
|
||||
private static String getDependsIndexingKey(@NotNull String filename) {
|
||||
return FILENAME_KEY_PREFIX + filename;
|
||||
}
|
||||
|
||||
private static String getContentIndexingKey(@NotNull String value) {
|
||||
return CONTENT_KEY_PREFIX + value;
|
||||
}
|
||||
}
|
||||
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
<idea-plugin>
|
||||
<extensions defaultExtensionNs="com.intellij">
|
||||
|
||||
<!-- defined in ExtensionsDependencies.xml "main" plugin -->
|
||||
<myPlugin.mainPlugin
|
||||
implementation="java.lang.Integer"/>
|
||||
</extensions>
|
||||
</idea-plugin>
|
||||
-1
@@ -1,5 +1,4 @@
|
||||
<idea-plugin>
|
||||
<module value="com.intellij.myPlugin.module.dependency"/>
|
||||
<extensionPoints>
|
||||
<extensionPoint qualifiedName="com.intellij.myPlugin.module.dependency.fromModule"/>
|
||||
</extensionPoints>
|
||||
|
||||
@@ -3,6 +3,10 @@
|
||||
<vendor>JetBrains</vendor>
|
||||
<version>1.0</version>
|
||||
|
||||
<content>
|
||||
<module name="ExtensionsDependencies-content"/>
|
||||
</content>
|
||||
|
||||
<dependencies>
|
||||
<!-- ExtensionsDependencies-plugin.xml -->
|
||||
<plugin id="com.intellij.myPlugin.plugin.dependency"/>
|
||||
@@ -11,6 +15,10 @@
|
||||
<module name="ExtensionsDependencies-module"/>
|
||||
</dependencies>
|
||||
|
||||
<extensionPoints>
|
||||
<extensionPoint name="mainPlugin" interface="java.lang.Number"/>
|
||||
</extensionPoints>
|
||||
|
||||
<!-- ExtensionsDependencies-plugin.xml -->
|
||||
<extensions defaultExtensionNs="com.intellij.myPlugin.plugin.dependency">
|
||||
<fromPlugin/>
|
||||
|
||||
+16
-6
@@ -29,6 +29,7 @@ import com.intellij.psi.ElementDescriptionUtil
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiField
|
||||
import com.intellij.psi.PsiReference
|
||||
import com.intellij.testFramework.IdeaTestUtil
|
||||
import com.intellij.testFramework.PsiTestUtil
|
||||
import com.intellij.testFramework.TestDataPath
|
||||
import com.intellij.testFramework.builders.JavaModuleFixtureBuilder
|
||||
@@ -196,15 +197,24 @@ class PluginXmlFunctionalTest extends JavaCodeInsightFixtureTestCase {
|
||||
}
|
||||
|
||||
void testExtensionsDependencies() {
|
||||
String moduleName = "ExtensionsDependencies-module"
|
||||
String moduleDescriptorFilename = "ExtensionsDependencies-module.xml"
|
||||
VirtualFile moduleRoot = myFixture.tempDirFixture.findOrCreateDir(moduleName)
|
||||
myFixture.copyFileToProject(moduleDescriptorFilename, "/"+ moduleName+ "/" + moduleDescriptorFilename)
|
||||
Module dependencyModule = PsiTestUtil.addModule(getProject(), StdModuleTypes.JAVA, moduleName, moduleRoot);
|
||||
ModuleRootModificationUtil.addDependency(getModule(), dependencyModule);
|
||||
addExtensionsModule("ExtensionsDependencies-module")
|
||||
VirtualFile contentFile = addExtensionsModule("ExtensionsDependencies-content")
|
||||
|
||||
doHighlightingTest("ExtensionsDependencies.xml",
|
||||
"ExtensionsDependencies-plugin.xml")
|
||||
|
||||
myFixture.configureFromExistingVirtualFile(contentFile)
|
||||
doHighlightingTest()
|
||||
}
|
||||
|
||||
private VirtualFile addExtensionsModule(String name) {
|
||||
String moduleDescriptorFilename = name+ ".xml"
|
||||
VirtualFile moduleRoot = myFixture.tempDirFixture.findOrCreateDir(name)
|
||||
VirtualFile file = myFixture.copyFileToProject(moduleDescriptorFilename, "/" + name + "/" + moduleDescriptorFilename)
|
||||
Module dependencyModule = PsiTestUtil.addModule(getProject(), StdModuleTypes.JAVA, name, moduleRoot);
|
||||
ModuleRootModificationUtil.setModuleSdk(dependencyModule, IdeaTestUtil.getMockJdk17());
|
||||
ModuleRootModificationUtil.addDependency(getModule(), dependencyModule);
|
||||
return file
|
||||
}
|
||||
|
||||
void testDependsHighlighting() {
|
||||
|
||||
Reference in New Issue
Block a user