This commit is contained in:
Dmitry Avdeev
2014-09-02 19:24:42 +04:00
parent b948e16fd9
commit 3e277b8190
@@ -15,7 +15,7 @@
*/
package org.jetbrains.idea.devkit.dom.impl;
import com.intellij.ide.plugins.PluginManager;
import com.intellij.ide.plugins.PluginManagerCore;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VirtualFile;
@@ -50,57 +50,6 @@ import java.util.*;
public class ExtensionDomExtender extends DomExtender<Extensions> {
private static final PsiClassConverter CLASS_CONVERTER = new PluginPsiClassConverter();
private static final Converter LANGUAGE_CONVERTER = new LanguageResolvingConverter();
private static class MyRequired implements Required {
@Override
public boolean value() {
return true;
}
@Override
public boolean nonEmpty() {
return true;
}
@Override
public boolean identifier() {
return false;
}
@Override
public Class<? extends Annotation> annotationType() {
return Required.class;
}
}
private static class MyExtendClass extends ExtendClassImpl {
private final String myInterfaceName;
private MyExtendClass(String interfaceName) {
myInterfaceName = interfaceName;
}
@Override
public boolean allowAbstract() {
return false;
}
@Override
public boolean allowInterface() {
return false;
}
@Override
public boolean allowEnum() {
return false;
}
@Override
public String value() {
return myInterfaceName;
}
}
private static final DomExtender EXTENSION_EXTENDER = new DomExtender() {
public void registerExtensions(@NotNull final DomElement domElement, @NotNull final DomExtensionsRegistrar registrar) {
final ExtensionPoint extensionPoint = (ExtensionPoint)domElement.getChildDescription().getDomDeclaration();
@@ -127,31 +76,6 @@ public class ExtensionDomExtender extends DomExtender<Extensions> {
}
};
public void registerExtensions(@NotNull final Extensions extensions, @NotNull final DomExtensionsRegistrar registrar) {
final XmlElement xmlElement = extensions.getXmlElement();
if (xmlElement == null) return;
IdeaPlugin ideaPlugin = extensions.getParentOfType(IdeaPlugin.class, true);
if (ideaPlugin == null) return;
String epPrefix = extensions.getEpPrefix();
for (IdeaPlugin plugin : getVisiblePlugins(ideaPlugin)) {
final String pluginId = StringUtil.notNullize(plugin.getPluginId(), "com.intellij");
for (ExtensionPoints points : plugin.getExtensionPoints()) {
for (ExtensionPoint point : points.getExtensionPoints()) {
registerExtensionPoint(registrar, point, epPrefix, pluginId);
}
}
}
}
@Override
public boolean supportsStubs() {
return false;
}
private static Set<IdeaPlugin> getVisiblePlugins(IdeaPlugin ideaPlugin) {
Set<IdeaPlugin> result = ContainerUtil.newHashSet();
MultiMap<String, IdeaPlugin> byId = getPluginMap(ideaPlugin.getManager().getProject());
@@ -385,11 +309,10 @@ public class ExtensionDomExtender extends DomExtender<Extensions> {
return PsiTypesUtil.getPsiClass(elementType);
}
public static Collection<String> getDependencies(IdeaPlugin ideaPlugin) {
Set<String> result = new HashSet<String>();
result.add(PluginManager.CORE_PLUGIN_ID);
result.add(PluginManagerCore.CORE_PLUGIN_ID);
for (Dependency dependency : ideaPlugin.getDependencies()) {
ContainerUtil.addIfNotNull(dependency.getStringValue(), result);
@@ -422,10 +345,84 @@ public class ExtensionDomExtender extends DomExtender<Extensions> {
return result;
}
public void registerExtensions(@NotNull final Extensions extensions, @NotNull final DomExtensionsRegistrar registrar) {
final XmlElement xmlElement = extensions.getXmlElement();
if (xmlElement == null) return;
IdeaPlugin ideaPlugin = extensions.getParentOfType(IdeaPlugin.class, true);
if (ideaPlugin == null) return;
String epPrefix = extensions.getEpPrefix();
for (IdeaPlugin plugin : getVisiblePlugins(ideaPlugin)) {
final String pluginId = StringUtil.notNullize(plugin.getPluginId(), "com.intellij");
for (ExtensionPoints points : plugin.getExtensionPoints()) {
for (ExtensionPoint point : points.getExtensionPoints()) {
registerExtensionPoint(registrar, point, epPrefix, pluginId);
}
}
}
}
@Override
public boolean supportsStubs() {
return false;
}
interface SimpleTagValue extends DomElement {
@SuppressWarnings("UnusedDeclaration")
@TagValue
String getTagValue();
}
private static class MyRequired implements Required {
@Override
public boolean value() {
return true;
}
@Override
public boolean nonEmpty() {
return true;
}
@Override
public boolean identifier() {
return false;
}
@Override
public Class<? extends Annotation> annotationType() {
return Required.class;
}
}
private static class MyExtendClass extends ExtendClassImpl {
private final String myInterfaceName;
private MyExtendClass(String interfaceName) {
myInterfaceName = interfaceName;
}
@Override
public boolean allowAbstract() {
return false;
}
@Override
public boolean allowInterface() {
return false;
}
@Override
public boolean allowEnum() {
return false;
}
@Override
public String value() {
return myInterfaceName;
}
}
}