JspxCompletionTest fixed

This commit is contained in:
Dmitry Avdeev
2009-10-19 18:01:55 +04:00
parent 4d8516a243
commit d752170f8c
4 changed files with 38 additions and 10 deletions
@@ -134,8 +134,13 @@ public class ExtendedTagInsertHandler extends XmlTagInsertHandler {
if (myNamespace == null) {
return null;
}
final XmlSchemaProvider provider = XmlSchemaProvider.getAvailableProvider(file);
return provider == null ? null : provider.getDefaultPrefix(myNamespace, file);
for (XmlSchemaProvider provider : XmlSchemaProvider.getAvailableProviders(file)) {
String prefix = provider.getDefaultPrefix(myNamespace, file);
if (prefix != null) {
return prefix;
}
}
return null;
}
protected Set<String> getNamespaces(final XmlFile file) {
@@ -11,10 +11,11 @@ import com.intellij.codeInsight.daemon.impl.HighlightInfo;
import com.intellij.codeInsight.daemon.impl.quickfix.*;
import com.intellij.javaee.ExternalResourceManager;
import com.intellij.javaee.ExternalResourceManagerEx;
import com.intellij.openapi.extensions.Extensions;
import com.intellij.openapi.fileTypes.StdFileTypes;
import com.intellij.openapi.util.TextRange;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.fileTypes.StdFileTypes;
import com.intellij.psi.*;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.xml.XmlAttribute;
@@ -32,6 +33,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
/**
@@ -180,12 +182,17 @@ public class URLReference implements PsiReference, QuickFixProvider, EmptyResolv
return myElement.getManager().areElementsEquivalent(resolve(),element);
}
@NotNull
public Object[] getVariants() {
final XmlFile file = (XmlFile)myElement.getContainingFile();
final XmlSchemaProvider provider = XmlSchemaProvider.getAvailableProvider(file);
if (provider != null) {
final Set<String> strings = provider.getAvailableNamespaces(file, null);
return ArrayUtil.toObjectArray(strings);
Set<String> list = new HashSet<String>();
for (XmlSchemaProvider provider : Extensions.getExtensions(XmlSchemaProvider.EP_NAME)) {
if (provider.isAvailable(file)) {
list.addAll(provider.getAvailableNamespaces(file, null));
}
}
if (!list.isEmpty()) {
return ArrayUtil.toObjectArray(list);
}
String[] resourceUrls = ExternalResourceManager.getInstance().getResourceUrls(null, true);
final XmlDocument document = file.getDocument();
@@ -195,9 +195,10 @@ public class XmlDoctypeImpl extends XmlElementImpl implements XmlDoctype, XmlEle
if (dtdUrlElement != null) {
uriRefs = new PsiReference[1];
uriRefs[0] = new URLReference(XmlDoctypeImpl.this) {
@NotNull
public Object[] getVariants() {
return (docTypePublic != null)?
super.getVariants(): PsiReference.EMPTY_ARRAY;
super.getVariants(): EMPTY_ARRAY;
}
public String getCanonicalText() {
return extractValue(dtdUrlElement);
@@ -20,16 +20,19 @@ import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.openapi.extensions.Extensions;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleUtil;
import com.intellij.openapi.project.DumbService;
import com.intellij.openapi.project.DumbAware;
import com.intellij.psi.PsiFile;
import com.intellij.openapi.project.DumbService;
import com.intellij.openapi.util.Condition;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiFile;
import com.intellij.psi.xml.XmlFile;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Collections;
import java.util.List;
import java.util.Set;
/**
@@ -66,6 +69,10 @@ public abstract class XmlSchemaProvider {
return findSchema(url, module, baseFile);
}
/**
* @see #getAvailableProviders(com.intellij.psi.xml.XmlFile)
*/
@Deprecated
@Nullable
public static XmlSchemaProvider getAvailableProvider(final @NotNull XmlFile file) {
for (XmlSchemaProvider provider: Extensions.getExtensions(EP_NAME)) {
@@ -76,6 +83,14 @@ public abstract class XmlSchemaProvider {
return null;
}
public static List<XmlSchemaProvider> getAvailableProviders(final @NotNull XmlFile file) {
return ContainerUtil.findAll(Extensions.getExtensions(EP_NAME), new Condition<XmlSchemaProvider>() {
public boolean value(XmlSchemaProvider xmlSchemaProvider) {
return xmlSchemaProvider.isAvailable(file);
}
});
}
@Nullable
public abstract XmlFile getSchema(@NotNull @NonNls String url, @Nullable Module module, @NotNull final PsiFile baseFile);