mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
Specific ns descriptor for jsp validation
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
package com.intellij.psi.filters.position;
|
||||
|
||||
import com.intellij.psi.filters.TextFilter;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.xml.XmlTag;
|
||||
import com.intellij.psi.xml.XmlDocument;
|
||||
|
||||
/**
|
||||
* Created by IntelliJ IDEA.
|
||||
* User: ik
|
||||
* Date: 07.05.2003
|
||||
* Time: 4:13:57
|
||||
* To change this template use Options | File Templates.
|
||||
*/
|
||||
public class TargetNamespaceFilter extends TextFilter{
|
||||
public TargetNamespaceFilter(String str){
|
||||
super(str);
|
||||
}
|
||||
|
||||
public TargetNamespaceFilter(String[] strs){
|
||||
super(strs);
|
||||
}
|
||||
|
||||
public boolean isClassAcceptable(Class hintClass){
|
||||
return XmlTag.class.isAssignableFrom(hintClass) || XmlDocument.class.isAssignableFrom(hintClass);
|
||||
}
|
||||
|
||||
public boolean isAcceptable(Object element, PsiElement context){
|
||||
if(element instanceof XmlTag){
|
||||
final String attributeValue = ((XmlTag)element).getAttributeValue("targetNamespace");
|
||||
if(attributeValue != null){
|
||||
for(int i = 0; i < myValue.length; i++){
|
||||
if(myValue[i].equals(attributeValue)) return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(element instanceof XmlDocument){
|
||||
return isAcceptable(((XmlDocument) element).getRootTag(), context);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,7 @@ import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.filters.*;
|
||||
import com.intellij.psi.filters.position.NamespaceFilter;
|
||||
import com.intellij.psi.filters.position.RootTagFilter;
|
||||
import com.intellij.psi.filters.position.TargetNamespaceFilter;
|
||||
import com.intellij.psi.impl.source.jsp.tagLibrary.JspTagAttributeInfoImpl;
|
||||
import com.intellij.psi.impl.source.jsp.tagLibrary.JspTagInfoImpl;
|
||||
import com.intellij.psi.impl.source.jsp.tagLibrary.JspTagLibraryInfoImpl;
|
||||
@@ -20,6 +21,7 @@ import com.intellij.psi.xml.XmlElementDecl;
|
||||
import com.intellij.psi.xml.XmlMarkupDecl;
|
||||
import com.intellij.xml.util.XmlUtil;
|
||||
import com.intellij.jsp.impl.TldDescriptor;
|
||||
import com.intellij.jsp.impl.JspNsDescriptor;
|
||||
|
||||
import java.lang.ref.SoftReference;
|
||||
import java.util.ArrayList;
|
||||
@@ -38,6 +40,13 @@ public class MetaRegistry {
|
||||
private static final List<MyBinding> ourBindings = new ArrayList<MyBinding>();
|
||||
private static final String[] TAGLIB_URIS = new String[]{XmlUtil.TAGLIB_1_1_URI, XmlUtil.TAGLIB_1_2_a_URI, XmlUtil.TAGLIB_1_2_URI, XmlUtil.TAGLIB_2_0_URI, XmlUtil.TAGLIB_1_2_b_URI,};
|
||||
private static final String[] SCHEMA_URIS = { XmlUtil.XML_SCHEMA_URI, XmlUtil.XML_SCHEMA_URI2, XmlUtil.XML_SCHEMA_URI3 };
|
||||
private static final String[] JSP_URIS = {
|
||||
XmlUtil.JSP_NAMESPACE,
|
||||
"http://java.sun.com/products/jsp/dtd/jsp_1_0.dtd",
|
||||
"http://java.sun.com/xml/ns/j2ee/jsp_2_0.xsd",
|
||||
"http://java.sun.com/dtd/jspxml.xsd",
|
||||
"http://java.sun.com/dtd/jspxml.dtd"
|
||||
};
|
||||
|
||||
static {
|
||||
{
|
||||
@@ -77,6 +86,16 @@ public class MetaRegistry {
|
||||
);
|
||||
}
|
||||
|
||||
{
|
||||
addMetadataBinding(
|
||||
new AndFilter(
|
||||
new ClassFilter(XmlDocument.class),
|
||||
new TargetNamespaceFilter(JSP_URIS)
|
||||
),
|
||||
JspNsDescriptor.class
|
||||
);
|
||||
}
|
||||
|
||||
{
|
||||
addMetadataBinding(
|
||||
new AndFilter(
|
||||
|
||||
Reference in New Issue
Block a user