blob: fefe90998f393be95766ac3d5768ed37e6df73dc [file] [log] [blame]
package org.intellij.lang.xpath.context;
import com.intellij.openapi.extensions.Extensions;
import com.intellij.openapi.extensions.ExtensionPointName;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.intellij.lang.xpath.XPathFile;
public abstract class ContextProviderExtension {
public static final ExtensionPointName<ContextProviderExtension> EXTENSION_POINT_NAME =
ExtensionPointName.create("XPathView.xpath.contextProviderExtension");
protected abstract boolean accepts(XPathFile file);
@NotNull
protected abstract ContextProvider getContextProvider(XPathFile file);
@Nullable
public static ContextProvider getInstance(XPathFile file) {
final ContextProviderExtension[] extensions = Extensions.getExtensions(EXTENSION_POINT_NAME);
for (ContextProviderExtension extension : extensions) {
if (extension.accepts(file)) {
return extension.getContextProvider(file);
}
}
return null;
}
}