mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
to avoid static initialization issues, extract extension point interface to top level
This commit is contained in:
@@ -23,7 +23,7 @@ import com.intellij.lang.xml.XmlASTFactory;
|
||||
import com.intellij.openapi.application.PluginPathManager;
|
||||
import com.intellij.openapi.extensions.ExtensionPointName;
|
||||
import com.intellij.openapi.util.SystemInfo;
|
||||
import com.intellij.psi.xml.XmlChildRole;
|
||||
import com.intellij.psi.xml.StartTagEndTokenProvider;
|
||||
import com.intellij.testFramework.ParsingTestCase;
|
||||
|
||||
public class AntParsingTest extends ParsingTestCase {
|
||||
@@ -36,8 +36,8 @@ public class AntParsingTest extends ParsingTestCase {
|
||||
protected void setUp() throws Exception {
|
||||
super.setUp();
|
||||
addExplicitExtension(LanguageASTFactory.INSTANCE, XMLLanguage.INSTANCE, new XmlASTFactory());
|
||||
registerExtensionPoint(new ExtensionPointName<XmlChildRole.StartTagEndTokenProvider>("com.intellij.xml.startTagEndToken"),
|
||||
XmlChildRole.StartTagEndTokenProvider.class);
|
||||
registerExtensionPoint(new ExtensionPointName<StartTagEndTokenProvider>("com.intellij.xml.startTagEndToken"),
|
||||
StartTagEndTokenProvider.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -49,8 +49,7 @@ public class XmlParsingTest extends ParsingTestCase {
|
||||
addExplicitExtension(LanguageParserDefinitions.INSTANCE, DTDLanguage.INSTANCE, new DTDParserDefinition());
|
||||
addExplicitExtension(LanguageASTFactory.INSTANCE, XMLLanguage.INSTANCE, new XmlASTFactory());
|
||||
addExplicitExtension(LanguageASTFactory.INSTANCE, DTDLanguage.INSTANCE, new XmlASTFactory());
|
||||
registerExtensionPoint(new ExtensionPointName<XmlChildRole.StartTagEndTokenProvider>("com.intellij.xml.startTagEndToken"),
|
||||
XmlChildRole.StartTagEndTokenProvider.class);
|
||||
registerExtensionPoint(StartTagEndTokenProvider.EP_NAME, StartTagEndTokenProvider.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package com.intellij.psi.xml;
|
||||
|
||||
import com.intellij.openapi.extensions.ExtensionPointName;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
|
||||
public interface StartTagEndTokenProvider {
|
||||
ExtensionPointName<StartTagEndTokenProvider> EP_NAME = new ExtensionPointName<StartTagEndTokenProvider>("com.intellij.xml.startTagEndToken");
|
||||
|
||||
IElementType[] getTypes();
|
||||
}
|
||||
@@ -16,11 +16,9 @@
|
||||
package com.intellij.psi.xml;
|
||||
|
||||
import com.intellij.lang.ASTNode;
|
||||
import com.intellij.openapi.extensions.ExtensionPointName;
|
||||
import com.intellij.openapi.extensions.Extensions;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.tree.DefaultRoleFinder;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.psi.tree.RoleFinder;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.xml.util.XmlTagUtil;
|
||||
@@ -29,12 +27,6 @@ import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public interface XmlChildRole {
|
||||
|
||||
interface StartTagEndTokenProvider {
|
||||
IElementType[] getTypes();
|
||||
}
|
||||
|
||||
ExtensionPointName<StartTagEndTokenProvider> EP_NAME = new ExtensionPointName<StartTagEndTokenProvider>("com.intellij.xml.startTagEndToken");
|
||||
|
||||
RoleFinder START_TAG_NAME_FINDER = new RoleFinder() {
|
||||
public ASTNode findChild(@NotNull ASTNode parent) {
|
||||
final PsiElement element = XmlTagUtil.getStartTagNameElement((XmlTag)parent.getPsi());
|
||||
@@ -65,7 +57,7 @@ public interface XmlChildRole {
|
||||
RoleFinder ATTRIBUTE_VALUE_VALUE_FINDER = new DefaultRoleFinder(XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN);
|
||||
RoleFinder START_TAG_END_FINDER = new DefaultRoleFinder(XmlTokenType.XML_TAG_END) {
|
||||
{
|
||||
final StartTagEndTokenProvider[] tokenProviders = Extensions.getExtensions(EP_NAME);
|
||||
final StartTagEndTokenProvider[] tokenProviders = Extensions.getExtensions(StartTagEndTokenProvider.EP_NAME);
|
||||
for (StartTagEndTokenProvider tokenProvider : tokenProviders) {
|
||||
myElementTypes = ArrayUtil.mergeArrays(myElementTypes, tokenProvider.getTypes());
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ import com.intellij.psi.impl.cache.impl.id.IdIndexers;
|
||||
import com.intellij.psi.impl.cache.impl.idCache.XmlIdIndexer;
|
||||
import com.intellij.psi.impl.source.xml.XmlElementDescriptorProvider;
|
||||
import com.intellij.psi.meta.MetaDataContributor;
|
||||
import com.intellij.psi.xml.XmlChildRole;
|
||||
import com.intellij.psi.xml.StartTagEndTokenProvider;
|
||||
import com.intellij.psi.xml.XmlFileNSInfoProvider;
|
||||
import com.intellij.util.indexing.FileBasedIndexExtension;
|
||||
import com.intellij.xml.index.XmlNamespaceIndex;
|
||||
@@ -57,7 +57,7 @@ public class XmlCoreEnvironment {
|
||||
appEnvironment.addExplicitExtension(IdIndexers.INSTANCE, XmlFileType.INSTANCE, new XmlIdIndexer());
|
||||
appEnvironment.addExplicitExtension(IdIndexers.INSTANCE, DTDFileType.INSTANCE, new XmlIdIndexer());
|
||||
|
||||
CoreApplicationEnvironment.registerExtensionPoint(Extensions.getRootArea(), XmlChildRole.EP_NAME, XmlChildRole.StartTagEndTokenProvider.class);
|
||||
CoreApplicationEnvironment.registerExtensionPoint(Extensions.getRootArea(), StartTagEndTokenProvider.EP_NAME, StartTagEndTokenProvider.class);
|
||||
CoreApplicationEnvironment.registerExtensionPoint(Extensions.getRootArea(), XmlSuppressionProvider.EP_NAME, XmlSuppressionProvider.class);
|
||||
CoreApplicationEnvironment.registerExtensionPoint(Extensions.getRootArea(), XmlFileNSInfoProvider.EP_NAME, XmlFileNSInfoProvider.class);
|
||||
CoreApplicationEnvironment.registerExtensionPoint(Extensions.getRootArea(), XmlSchemaProvider.EP_NAME, XmlSchemaProvider.class);
|
||||
|
||||
Reference in New Issue
Block a user