📄 node.java
字号:
/***************************************************************************
* Child classes
*/
/**
* Represents the root of a Jsp page or Jsp document
*/
public static class Root extends Node {
private Root parentRoot;
private boolean isXmlSyntax;
// Source encoding of the page containing this Root
private String pageEnc;
// Page encoding specified in JSP config element
private String jspConfigPageEnc;
/*
* Flag indicating if the default page encoding is being used (only
* applicable with standard syntax).
*
* True if the page does not provide a page directive with a
* 'contentType' attribute (or the 'contentType' attribute doesn't have
* a CHARSET value), the page does not provide a page directive with a
* 'pageEncoding' attribute, and there is no JSP configuration element
* page-encoding whose URL pattern matches the page.
*/
private boolean isDefaultPageEncoding;
/*
* Indicates whether an encoding has been explicitly specified in the
* page's XML prolog (only used for pages in XML syntax). This
* information is used to decide whether a translation error must be
* reported for encoding conflicts.
*/
private boolean isEncodingSpecifiedInProlog;
/*
* Indicates whether an encoding has been explicitly specified in the
* page's bom.
*/
private boolean isBomPresent;
/*
* Constructor.
*/
Root(Mark start, Node parent, boolean isXmlSyntax) {
super(start, parent);
this.isXmlSyntax = isXmlSyntax;
this.qName = JSP_ROOT_ACTION;
this.localName = ROOT_ACTION;
// Figure out and set the parent root
Node r = parent;
while ((r != null) && !(r instanceof Node.Root))
r = r.getParent();
parentRoot = (Node.Root) r;
}
public void accept(Visitor v) throws JasperException {
v.visit(this);
}
public boolean isXmlSyntax() {
return isXmlSyntax;
}
/*
* Sets the encoding specified in the JSP config element whose URL
* pattern matches the page containing this Root.
*/
public void setJspConfigPageEncoding(String enc) {
jspConfigPageEnc = enc;
}
/*
* Gets the encoding specified in the JSP config element whose URL
* pattern matches the page containing this Root.
*/
public String getJspConfigPageEncoding() {
return jspConfigPageEnc;
}
public void setPageEncoding(String enc) {
pageEnc = enc;
}
public String getPageEncoding() {
return pageEnc;
}
public void setIsDefaultPageEncoding(boolean isDefault) {
isDefaultPageEncoding = isDefault;
}
public boolean isDefaultPageEncoding() {
return isDefaultPageEncoding;
}
public void setIsEncodingSpecifiedInProlog(boolean isSpecified) {
isEncodingSpecifiedInProlog = isSpecified;
}
public boolean isEncodingSpecifiedInProlog() {
return isEncodingSpecifiedInProlog;
}
public void setIsBomPresent(boolean isBom) {
isBomPresent = isBom;
}
public boolean isBomPresent() {
return isBomPresent;
}
/**
* @return The enclosing root to this Root. Usually represents the page
* that includes this one.
*/
public Root getParentRoot() {
return parentRoot;
}
}
/**
* Represents the root of a Jsp document (XML syntax)
*/
public static class JspRoot extends Node {
public JspRoot(String qName, Attributes attrs,
Attributes nonTaglibXmlnsAttrs, Attributes taglibAttrs,
Mark start, Node parent) {
super(qName, ROOT_ACTION, attrs, nonTaglibXmlnsAttrs, taglibAttrs,
start, parent);
}
public void accept(Visitor v) throws JasperException {
v.visit(this);
}
}
/**
* Represents a page directive
*/
public static class PageDirective extends Node {
private Vector imports;
public PageDirective(Attributes attrs, Mark start, Node parent) {
this(JSP_PAGE_DIRECTIVE_ACTION, attrs, null, null, start, parent);
}
public PageDirective(String qName, Attributes attrs,
Attributes nonTaglibXmlnsAttrs, Attributes taglibAttrs,
Mark start, Node parent) {
super(qName, PAGE_DIRECTIVE_ACTION, attrs, nonTaglibXmlnsAttrs,
taglibAttrs, start, parent);
imports = new Vector();
}
public void accept(Visitor v) throws JasperException {
v.visit(this);
}
/**
* Parses the comma-separated list of class or package names in the
* given attribute value and adds each component to this PageDirective's
* vector of imported classes and packages.
*
* @param value
* A comma-separated string of imports.
*/
public void addImport(String value) {
int start = 0;
int index;
while ((index = value.indexOf(',', start)) != -1) {
imports.add(value.substring(start, index).trim());
start = index + 1;
}
if (start == 0) {
// No comma found
imports.add(value.trim());
} else {
imports.add(value.substring(start).trim());
}
}
public List getImports() {
return imports;
}
}
/**
* Represents an include directive
*/
public static class IncludeDirective extends Node {
public IncludeDirective(Attributes attrs, Mark start, Node parent) {
this(JSP_INCLUDE_DIRECTIVE_ACTION, attrs, null, null, start, parent);
}
public IncludeDirective(String qName, Attributes attrs,
Attributes nonTaglibXmlnsAttrs, Attributes taglibAttrs,
Mark start, Node parent) {
super(qName, INCLUDE_DIRECTIVE_ACTION, attrs, nonTaglibXmlnsAttrs,
taglibAttrs, start, parent);
}
public void accept(Visitor v) throws JasperException {
v.visit(this);
}
}
/**
* Represents a custom taglib directive
*/
public static class TaglibDirective extends Node {
public TaglibDirective(Attributes attrs, Mark start, Node parent) {
super(JSP_TAGLIB_DIRECTIVE_ACTION, TAGLIB_DIRECTIVE_ACTION, attrs,
start, parent);
}
public void accept(Visitor v) throws JasperException {
v.visit(this);
}
}
/**
* Represents a tag directive
*/
public static class TagDirective extends Node {
private Vector imports;
public TagDirective(Attributes attrs, Mark start, Node parent) {
this(JSP_TAG_DIRECTIVE_ACTION, attrs, null, null, start, parent);
}
public TagDirective(String qName, Attributes attrs,
Attributes nonTaglibXmlnsAttrs, Attributes taglibAttrs,
Mark start, Node parent) {
super(qName, TAG_DIRECTIVE_ACTION, attrs, nonTaglibXmlnsAttrs,
taglibAttrs, start, parent);
imports = new Vector();
}
public void accept(Visitor v) throws JasperException {
v.visit(this);
}
/**
* Parses the comma-separated list of class or package names in the
* given attribute value and adds each component to this PageDirective's
* vector of imported classes and packages.
*
* @param value
* A comma-separated string of imports.
*/
public void addImport(String value) {
int start = 0;
int index;
while ((index = value.indexOf(',', start)) != -1) {
imports.add(value.substring(start, index).trim());
start = index + 1;
}
if (start == 0) {
// No comma found
imports.add(value.trim());
} else {
imports.add(value.substring(start).trim());
}
}
public List getImports() {
return imports;
}
}
/**
* Represents an attribute directive
*/
public static class AttributeDirective extends Node {
public AttributeDirective(Attributes attrs, Mark start, Node parent) {
this(JSP_ATTRIBUTE_DIRECTIVE_ACTION, attrs, null, null, start,
parent);
}
public AttributeDirective(String qName, Attributes attrs,
Attributes nonTaglibXmlnsAttrs, Attributes taglibAttrs,
Mark start, Node parent) {
super(qName, ATTRIBUTE_DIRECTIVE_ACTION, attrs,
nonTaglibXmlnsAttrs, taglibAttrs, start, parent);
}
public void accept(Visitor v) throws JasperException {
v.visit(this);
}
}
/**
* Represents a variable directive
*/
public static class VariableDirective extends Node {
public VariableDirective(Attributes attrs, Mark start, Node parent) {
this(JSP_VARIABLE_DIRECTIVE_ACTION, attrs, null, null, start,
parent);
}
public VariableDirective(String qName, Attributes attrs,
Attributes nonTaglibXmlnsAttrs, Attributes taglibAttrs,
Mark start, Node parent) {
super(qName, VARIABLE_DIRECTIVE_ACTION, attrs, nonTaglibXmlnsAttrs,
taglibAttrs, start, parent);
}
public void accept(Visitor v) throws JasperException {
v.visit(this);
}
}
/**
* Represents a <jsp:invoke> tag file action
*/
public static class InvokeAction extends Node {
public InvokeAction(Attributes attrs, Mark start, Node parent) {
this(JSP_INVOKE_ACTION, attrs, null, null, start, parent);
}
public InvokeAction(String qName, Attributes attrs,
Attributes nonTaglibXmlnsAttrs, Attributes taglibAttrs,
Mark start, Node parent) {
super(qName, INVOKE_ACTION, attrs, nonTaglibXmlnsAttrs,
taglibAttrs, start, parent);
}
public void accept(Visitor v) throws JasperException {
v.visit(this);
}
}
/**
* Represents a <jsp:doBody> tag file action
*/
public static class DoBodyAction extends Node {
public DoBodyAction(Attributes attrs, Mark start, Node parent) {
this(JSP_DOBODY_ACTION, attrs, null, null, start, parent);
}
public DoBodyAction(String qName, Attributes attrs,
Attributes nonTaglibXmlnsAttrs, Attributes taglibAttrs,
Mark start, Node parent) {
super(qName, DOBODY_ACTION, attrs, nonTaglibXmlnsAttrs,
taglibAttrs, start, parent);
}
public void accept(Visitor v) throws JasperException {
v.visit(this);
}
}
/**
* Represents a Jsp comment Comments are kept for completeness.
*/
public static class Comment extends Node {
public Comment(String text, Mark start, Node parent) {
super(null, null, text, start, parent);
}
public void accept(Visitor v) throws JasperException {
v.visit(this);
}
}
/**
* Represents an expression, declaration, or scriptlet
*/
public static abstract class ScriptingElement extends Node {
public ScriptingElement(String qName, String localName, String text,
Mark start, Node parent) {
super(qName, localName, text, start, parent);
}
public ScriptingElement(String qName, String localName,
Attributes nonTaglibXmlnsAttrs, Attributes taglibAttrs,
Mark start, Node parent) {
super(qName, localName, null, nonTaglibXmlnsAttrs, taglibAttrs,
start, parent);
}
/**
* When this node was created from a JSP page in JSP syntax, its text
* was stored as a String in the "text" field, whereas when this node
* was created from a JSP document, its text was stored as one or more
* TemplateText nodes in its body. This method handles either case.
*
* @return The text string
*/
public String getText() {
String ret = text;
if ((ret == null) && (body != null)) {
StringBuffer buf = new StringBuffer();
for (int i = 0; i < body.size(); i++) {
buf.append(body.getNode(i).getText());
}
ret = buf.toString();
}
return ret;
}
/**
* For the same reason as above, the source line information in the
* contained TemplateText node should be used.
*/
public Mark getStart() {
if (text == null && body != null && body.size() > 0) {
return body.getNode(0).getStart();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -