luehe 2003/02/19 15:39:16 Modified: jasper2/src/share/org/apache/jasper/compiler JspDocumentParser.java Node.java PageDataImpl.java Log: Preserve xmlns:prefix attributes in XML view. This also fixes 17204: jsp:element generates incorrect output when used in a JSP Document and the element includes an xmlns attribute Revision Changes Path 1.39 +158 -113 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspDocumentParser.java Index: JspDocumentParser.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspDocumentParser.java,v retrieving revision 1.38 retrieving revision 1.39 diff -u -r1.38 -r1.39 --- JspDocumentParser.java 13 Feb 2003 02:41:26 -0000 1.38 +++ JspDocumentParser.java 19 Feb 2003 23:39:15 -0000 1.39 @@ -169,7 +169,7 @@ // create dummy <jsp:root> element AttributesImpl rootAttrs = new AttributesImpl(); rootAttrs.addAttribute("", "", "version", "CDATA", "2.0"); - jspRoot = new Node.JspRoot(rootAttrs, null, null); + jspRoot = new Node.JspRoot(rootAttrs, null, null, null); handler.current = jspRoot; } else { handler.isTop = false; @@ -228,24 +228,33 @@ // is valid from that point forward. Redefinitions cause an // error. This isn't quite consistent with how xmlns: normally // works. - Attributes attrsCopy = null; - try { - attrsCopy = addCustomTagLibraries(attrs); - } catch (JasperException je) { - throw new SAXParseException( - Localizer.getMessage("jsp.error.could.not.add.taglibraries"), - locator, je ); + AttributesImpl attrsCopy = null; + Attributes xmlnsAttrs = null; + if (attrs != null) { + attrsCopy = new AttributesImpl(attrs); + xmlnsAttrs = getXmlnsAttributes(attrsCopy); + if (xmlnsAttrs != null) { + try { + addCustomTagLibraries(xmlnsAttrs); + } catch (JasperException je) { + throw new SAXParseException( + Localizer.getMessage( + "jsp.error.could.not.add.taglibraries"), + locator, je); + } + } } Node node = null; if (qName.startsWith("jsp:")) { - node = parseStandardAction(qName, attrs, attrsCopy, start, + node = parseStandardAction(qName, attrsCopy, xmlnsAttrs, start, current); } else { - node = parseCustomAction(qName, attrsCopy, start, current); + node = parseCustomAction(qName, attrsCopy, xmlnsAttrs, start, + current); if (node == null) { - node = new Node.UninterpretedTag(attrsCopy, start, qName, - current); + node = new Node.UninterpretedTag(qName, attrsCopy, xmlnsAttrs, + start, current); } } @@ -483,7 +492,7 @@ // Private utility methods private Node parseStandardAction(String qName, Attributes attrs, - Attributes attrsCopy, Mark start, + Attributes xmlnsAttrs, Mark start, Node parent) throws SAXException { @@ -493,7 +502,7 @@ // give the <jsp:root> element the original attributes set // (attrs) instead of the copy without the xmlns: elements // (attrsCopy) - node = new Node.JspRoot(new AttributesImpl(attrs), start, current); + node = new Node.JspRoot(attrs, xmlnsAttrs, start, current); if (isTop) { pageInfo.setHasJspRoot(true); } @@ -503,45 +512,46 @@ Localizer.getMessage("jsp.error.action.istagfile", qName), locator); } - node = new Node.PageDirective(attrsCopy, start, current); + node = new Node.PageDirective(attrs, xmlnsAttrs, start, current); String imports = attrs.getValue("import"); // There can only be one 'import' attribute per page directive if (imports != null) { ((Node.PageDirective) node).addImport(imports); } } else if (qName.equals(JSP_INCLUDE_DIRECTIVE)) { - node = new Node.IncludeDirective(attrsCopy, start, current); - processIncludeDirective(attrsCopy.getValue("file"), node); + node = new Node.IncludeDirective(attrs, xmlnsAttrs, start, + current); + processIncludeDirective(attrs.getValue("file"), node); } else if (qName.equals(JSP_DECLARATION)) { - node = new Node.Declaration(start, current); + node = new Node.Declaration(xmlnsAttrs, start, current); } else if (qName.equals(JSP_SCRIPTLET)) { - node = new Node.Scriptlet(start, current); + node = new Node.Scriptlet(xmlnsAttrs, start, current); } else if (qName.equals(JSP_EXPRESSION)) { - node = new Node.Expression(start, current); + node = new Node.Expression(xmlnsAttrs, start, current); } else if (qName.equals(JSP_USE_BEAN)) { - node = new Node.UseBean(attrsCopy, start, current); + node = new Node.UseBean(attrs, xmlnsAttrs, start, current); } else if (qName.equals(JSP_SET_PROPERTY)) { - node = new Node.SetProperty(attrsCopy, start, current); + node = new Node.SetProperty(attrs, xmlnsAttrs, start, current); } else if (qName.equals(JSP_GET_PROPERTY)) { - node = new Node.GetProperty(attrsCopy, start, current); + node = new Node.GetProperty(attrs, xmlnsAttrs, start, current); } else if (qName.equals(JSP_INCLUDE)) { - node = new Node.IncludeAction(attrsCopy, start, current); + node = new Node.IncludeAction(attrs, xmlnsAttrs, start, current); } else if (qName.equals(JSP_FORWARD)) { - node = new Node.ForwardAction(attrsCopy, start, current); + node = new Node.ForwardAction(attrs, xmlnsAttrs, start, current); } else if (qName.equals(JSP_PARAM)) { - node = new Node.ParamAction(attrsCopy, start, current); + node = new Node.ParamAction(attrs, xmlnsAttrs, start, current); } else if (qName.equals(JSP_PARAMS)) { - node = new Node.ParamsAction(start, current); + node = new Node.ParamsAction(xmlnsAttrs, start, current); } else if (qName.equals(JSP_PLUGIN)) { - node = new Node.PlugIn(attrsCopy, start, current); + node = new Node.PlugIn(attrs, xmlnsAttrs, start, current); } else if (qName.equals(JSP_TEXT)) { - node = new Node.JspText(start, current); + node = new Node.JspText(xmlnsAttrs, start, current); } else if (qName.equals(JSP_BODY)) { - node = new Node.JspBody(start, current); + node = new Node.JspBody(xmlnsAttrs, start, current); } else if (qName.equals(JSP_ATTRIBUTE)) { - node = new Node.NamedAttribute(attrsCopy, start, current); + node = new Node.NamedAttribute(attrs, xmlnsAttrs, start, current); } else if (qName.equals(JSP_OUTPUT)) { - node = new Node.JspOutput(attrsCopy, start, current); + node = new Node.JspOutput(attrs, xmlnsAttrs, start, current); } else if (qName.equals(JSP_TAG_DIRECTIVE)) { if (!isTagFile) { throw new SAXParseException( @@ -549,7 +559,7 @@ qName), locator); } - node = new Node.TagDirective(attrsCopy, start, current); + node = new Node.TagDirective(attrs, xmlnsAttrs, start, current); String imports = attrs.getValue("import"); // There can only be one 'import' attribute per tag directive if (imports != null) { @@ -562,7 +572,8 @@ qName), locator); } - node = new Node.AttributeDirective(attrsCopy, start, current); + node = new Node.AttributeDirective(attrs, xmlnsAttrs, start, + current); } else if (qName.equals(JSP_VARIABLE_DIRECTIVE)) { if (!isTagFile) { throw new SAXParseException( @@ -570,7 +581,8 @@ qName), locator); } - node = new Node.VariableDirective(attrsCopy, start, current); + node = new Node.VariableDirective(attrs, xmlnsAttrs, start, + current); } else if (qName.equals(JSP_INVOKE)) { if (!isTagFile) { throw new SAXParseException( @@ -578,7 +590,7 @@ qName), locator); } - node = new Node.InvokeAction(attrsCopy, start, current); + node = new Node.InvokeAction(attrs, xmlnsAttrs, start, current); } else if (qName.equals(JSP_DO_BODY)) { if (!isTagFile) { throw new SAXParseException( @@ -586,11 +598,11 @@ qName), locator); } - node = new Node.DoBodyAction(attrsCopy, start, current); + node = new Node.DoBodyAction(attrs, xmlnsAttrs, start, current); } else if (qName.equals(JSP_ELEMENT)) { - node = new Node.JspElement(attrsCopy, start, current); + node = new Node.JspElement(attrs, xmlnsAttrs, start, current); } else if (qName.equals(JSP_FALLBACK)) { - node = new Node.FallBackAction(start, current); + node = new Node.FallBackAction(xmlnsAttrs, start, current); } else { throw new SAXParseException( Localizer.getMessage("jsp.error.xml.badStandardAction", @@ -607,6 +619,7 @@ */ private Node parseCustomAction(String qName, Attributes attrs, + Attributes xmlnsAttrs, Mark start, Node parent) throws SAXException { int colon = qName.indexOf(':'); @@ -645,89 +658,121 @@ tagInfo = tagFileInfo.getTagInfo(); } - return new Node.CustomTag(attrs, start, qName, prefix, shortName, - tagInfo, tagFileInfo, tagHandlerClass, - parent); + return new Node.CustomTag(attrs, xmlnsAttrs, start, qName, prefix, + shortName, tagInfo, tagFileInfo, + tagHandlerClass, parent); } /* - * Parses the xmlns:prefix attributes from the jsp:root element and adds - * the corresponding TagLibraryInfo objects to the set of custom tag - * libraries. In the process, returns a new Attributes object that does - * not contain any of the xmlns: attributes. + * Extracts and removes any xmlns attributes from the given Attributes. + * + * @param attrs The Attributes from which to extract any xmlns attributes + * + * @return The set of xmlns attributes extracted from the given Attributes, + * or null if the given Attributes do not contain any xmlns attributes */ - private Attributes addCustomTagLibraries(Attributes attrs) - throws JasperException - { - AttributesImpl result = new AttributesImpl( attrs ); - int len = attrs.getLength(); - for (int i=len-1; i>=0; i--) { - String qName = attrs.getQName(i); - if (qName.startsWith( XMLNS ) - && !qName.startsWith(XMLNS_JSP) - && !qName.startsWith(JSP_VERSION)) { + private Attributes getXmlnsAttributes(AttributesImpl attrs) { - // get the prefix - String prefix = null; - try { - prefix = qName.substring(XMLNS.length()); - } catch (StringIndexOutOfBoundsException e) { - continue; + AttributesImpl result = null; + + if (attrs == null) { + return null; + } + + int len = attrs.getLength(); + for (int i=len-1; i>=0; i--) { + String qName = attrs.getQName(i); + if (qName.startsWith(XMLNS)) { + if (result == null) { + result = new AttributesImpl(); } + result.addAttribute(attrs.getURI(i), attrs.getLocalName(i), + attrs.getQName(i), attrs.getType(i), + attrs.getValue(i)); + attrs.removeAttribute(i); + } + } + + return result; + } - if( taglibs.containsKey( prefix ) ) { - // Prefix already in taglib map. - throw new JasperException( - Localizer.getMessage("jsp.error.xmlns.redefinition.notimplemented", - prefix)); - } + /* + * Enumerates the xmlns:prefix attributes of the given Attributes object + * and adds the corresponding TagLibraryInfo objects to the set of custom + * tag libraries. + */ + private void addCustomTagLibraries(Attributes attrs) + throws JasperException + { + if (attrs == null) { + return; + } - // get the uri - String uri = attrs.getValue(i); + int len = attrs.getLength(); + for (int i=len-1; i>=0; i--) { + String qName = attrs.getQName(i); + if (qName.startsWith(XMLNS_JSP)) { + continue; + } - TagLibraryInfo tagLibInfo = null; - if (uri.startsWith(URN_JSPTAGDIR)) { - /* - * uri references tag file directory - * (is of the form "urn:jsptagdir:path") - */ - String tagdir = uri.substring(URN_JSPTAGDIR.length()); - tagLibInfo = new ImplicitTagLibraryInfo(ctxt, - parserController, - prefix, - tagdir, - err); - } else { - /* - * uri references TLD file - */ - if (uri.startsWith(URN_JSPTLD)) { - // uri is of the form "urn:jsptld:path" - uri = uri.substring(URN_JSPTLD.length()); - } + // get the prefix + String prefix = null; + try { + prefix = qName.substring(XMLNS.length()); + } catch (StringIndexOutOfBoundsException e) { + continue; + } + + if( taglibs.containsKey( prefix ) ) { + // Prefix already in taglib map. + throw new JasperException( + Localizer.getMessage( + "jsp.error.xmlns.redefinition.notimplemented", + prefix)); + } + + // get the uri + String uri = attrs.getValue(i); + + TagLibraryInfo tagLibInfo = null; + if (uri.startsWith(URN_JSPTAGDIR)) { + /* + * uri references tag file directory + * (is of the form "urn:jsptagdir:path") + */ + String tagdir = uri.substring(URN_JSPTAGDIR.length()); + tagLibInfo = new ImplicitTagLibraryInfo(ctxt, + parserController, + prefix, + tagdir, + err); + } else { + /* + * uri references TLD file + */ + if (uri.startsWith(URN_JSPTLD)) { + // uri is of the form "urn:jsptld:path" + uri = uri.substring(URN_JSPTLD.length()); + } - TldLocationsCache cache - = ctxt.getOptions().getTldLocationsCache(); - tagLibInfo = cache.getTagLibraryInfo(uri); - if (tagLibInfo == null) { - // get the location - String[] location = ctxt.getTldLocation(uri); - - tagLibInfo = new TagLibraryInfoImpl(ctxt, - parserController, - prefix, - uri, - location, - err); - } + TldLocationsCache cache + = ctxt.getOptions().getTldLocationsCache(); + tagLibInfo = cache.getTagLibraryInfo(uri); + if (tagLibInfo == null) { + // get the location + String[] location = ctxt.getTldLocation(uri); + + tagLibInfo = new TagLibraryInfoImpl(ctxt, + parserController, + prefix, + uri, + location, + err); } - - taglibs.put(prefix, tagLibInfo); - result.removeAttribute( i ); } - } - - return result; + + taglibs.put(prefix, tagLibInfo); + } } /* 1.57 +156 -27 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Node.java Index: Node.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Node.java,v retrieving revision 1.56 retrieving revision 1.57 diff -u -r1.56 -r1.57 --- Node.java 15 Feb 2003 01:41:42 -0000 1.56 +++ Node.java 19 Feb 2003 23:39:15 -0000 1.57 @@ -83,6 +83,7 @@ private static final VariableInfo[] ZERO_VARIABLE_INFO = { }; protected Attributes attrs; + protected Attributes xmlnsAttrs; protected Nodes body; protected String text; protected Mark startMark; @@ -117,6 +118,22 @@ addToParent(parent); } + /** + * Constructor. + * @param attrs The attributes for this node + * @param xmlnsAttrs The xmlns attributes for this node + * @param start The location of the jsp page + * @param parent The enclosing node + */ + public Node(Attributes attrs, Attributes xmlnsAttrs, Mark start, + Node parent) { + this.attrs = attrs; + this.xmlnsAttrs = xmlnsAttrs; + this.startMark = start; + this.isDummy = (start == null); + addToParent(parent); + } + /* * Constructor. * @param text The text associated with this node @@ -134,6 +151,10 @@ return attrs; } + public Attributes getXmlnsAttributes() { + return xmlnsAttrs; + } + public void setAttributes(Attributes attrs) { this.attrs = attrs; } @@ -354,8 +375,10 @@ */ public static class JspRoot extends Root { - public JspRoot(Attributes attrs, Mark start, Node parent) { + public JspRoot(Attributes attrs, Attributes xmlnsAttrs, Mark start, + Node parent) { super(attrs, start, parent); + this.xmlnsAttrs = xmlnsAttrs; } public void accept(Visitor v) throws JasperException { @@ -375,7 +398,12 @@ private Vector imports; public PageDirective(Attributes attrs, Mark start, Node parent) { - super(attrs, start, parent); + this(attrs, null, start, parent); + } + + public PageDirective(Attributes attrs, Attributes xmlnsAttrs, + Mark start, Node parent) { + super(attrs, xmlnsAttrs, start, parent); imports = new Vector(); } @@ -418,6 +446,11 @@ super(attrs, start, parent); } + public IncludeDirective(Attributes attrs, Attributes xmlnsAttrs, + Mark start, Node parent) { + super(attrs, xmlnsAttrs, start, parent); + } + public void accept(Visitor v) throws JasperException { v.visit(this); } @@ -444,7 +477,12 @@ private Vector imports; public TagDirective(Attributes attrs, Mark start, Node parent) { - super(attrs, start, parent); + this(attrs, null, start, parent); + } + + public TagDirective(Attributes attrs, Attributes xmlnsAttrs, + Mark start, Node parent) { + super(attrs, xmlnsAttrs, start, parent); imports = new Vector(); } @@ -487,6 +525,11 @@ super(attrs, start, parent); } + public AttributeDirective(Attributes attrs, Attributes xmlnsAttrs, + Mark start, Node parent) { + super(attrs, xmlnsAttrs, start, parent); + } + public void accept(Visitor v) throws JasperException { v.visit(this); } @@ -501,6 +544,11 @@ super(attrs, start, parent); } + public VariableDirective(Attributes attrs, Attributes xmlnsAttrs, + Mark start, Node parent) { + super(attrs, xmlnsAttrs, start, parent); + } + public void accept(Visitor v) throws JasperException { v.visit(this); } @@ -515,6 +563,11 @@ super(attrs, start, parent); } + public InvokeAction(Attributes attrs, Attributes xmlnsAttrs, + Mark start, Node parent) { + super(attrs, xmlnsAttrs, start, parent); + } + public void accept(Visitor v) throws JasperException { v.visit(this); } @@ -529,6 +582,11 @@ super(attrs, start, parent); } + public DoBodyAction(Attributes attrs, Attributes xmlnsAttrs, + Mark start, Node parent) { + super(attrs, xmlnsAttrs, start, parent); + } + public void accept(Visitor v) throws JasperException { v.visit(this); } @@ -558,8 +616,9 @@ super(text, start, parent); } - public ScriptingElement(Mark start, Node parent) { - super(start, parent); + public ScriptingElement(Attributes xmlnsAttrs, Mark start, + Node parent) { + super(null, xmlnsAttrs, start, parent); } /** @@ -591,8 +650,8 @@ super(text, start, parent); } - public Declaration(Mark start, Node parent) { - super(start, parent); + public Declaration(Attributes xmlnsAttrs, Mark start, Node parent) { + super(xmlnsAttrs, start, parent); } public void accept(Visitor v) throws JasperException { @@ -610,8 +669,8 @@ super(text, start, parent); } - public Expression(Mark start, Node parent) { - super(start, parent); + public Expression(Attributes xmlnsAttrs, Mark start, Node parent) { + super(xmlnsAttrs, start, parent); } public void accept(Visitor v) throws JasperException { @@ -628,8 +687,8 @@ super(text, start, parent); } - public Scriptlet(Mark start, Node parent) { - super(start, parent); + public Scriptlet(Attributes xmlnsAttrs, Mark start, Node parent) { + super(xmlnsAttrs, start, parent); } public void accept(Visitor v) throws JasperException { @@ -663,6 +722,11 @@ super(attrs, start, parent); } + public ParamAction(Attributes attrs, Attributes xmlnsAttrs, Mark start, + Node parent) { + super(attrs, xmlnsAttrs, start, parent); + } + public void accept(Visitor v) throws JasperException { v.visit(this); } @@ -682,7 +746,11 @@ public static class ParamsAction extends Node { public ParamsAction(Mark start, Node parent) { - super(start, parent); + this(null, start, parent); + } + + public ParamsAction(Attributes xmlnsAttrs, Mark start, Node parent) { + super(null, xmlnsAttrs, start, parent); } public void accept(Visitor v) throws JasperException { @@ -699,6 +767,10 @@ super(start, parent); } + public FallBackAction(Attributes xmlnsAttrs, Mark start, Node parent) { + super(null, xmlnsAttrs, start, parent); + } + public void accept(Visitor v) throws JasperException { v.visit(this); } @@ -715,6 +787,11 @@ super(attrs, start, parent); } + public IncludeAction(Attributes attrs, Attributes xmlnsAttrs, + Mark start, Node parent) { + super(attrs, xmlnsAttrs, start, parent); + } + public void accept(Visitor v) throws JasperException { v.visit(this); } @@ -739,6 +816,11 @@ super(attrs, start, parent); } + public ForwardAction(Attributes attrs, Attributes xmlnsAttrs, + Mark start, Node parent) { + super(attrs, xmlnsAttrs, start, parent); + } + public void accept(Visitor v) throws JasperException { v.visit(this); } @@ -761,6 +843,11 @@ super(attrs, start, parent); } + public GetProperty(Attributes attrs, Attributes xmlnsAttrs, Mark start, + Node parent) { + super(attrs, xmlnsAttrs, start, parent); + } + public void accept(Visitor v) throws JasperException { v.visit(this); } @@ -777,6 +864,11 @@ super(attrs, start, parent); } + public SetProperty(Attributes attrs, Attributes xmlsAttrs, Mark start, + Node parent) { + super(attrs, xmlsAttrs, start, parent); + } + public void accept(Visitor v) throws JasperException { v.visit(this); } @@ -801,6 +893,11 @@ super(attrs, start, parent); } + public UseBean(Attributes attrs, Attributes xmlnsAttrs, Mark start, + Node parent) { + super(attrs, xmlnsAttrs, start, parent); + } + public void accept(Visitor v) throws JasperException { v.visit(this); } @@ -826,6 +923,11 @@ super(attrs, start, parent); } + public PlugIn(Attributes attrs, Attributes xmlnsAttrs, Mark start, + Node parent) { + super(attrs, xmlnsAttrs, start, parent); + } + public void accept(Visitor v) throws JasperException { v.visit(this); } @@ -851,11 +953,13 @@ * Represents an uninterpreted tag, from a Jsp document */ public static class UninterpretedTag extends Node { + private String tagName; - public UninterpretedTag(Attributes attrs, Mark start, String name, + public UninterpretedTag(String name, Attributes attrs, + Attributes xmlnsAttrs, Mark start, Node parent) { - super(attrs, start, parent); + super(attrs, xmlnsAttrs, start, parent); tagName = name; } @@ -879,6 +983,11 @@ super(attrs, start, parent); } + public JspElement(Attributes attrs, Attributes xmlnsAttrs, Mark start, + Node parent) { + super(attrs, xmlnsAttrs, start, parent); + } + public void accept(Visitor v) throws JasperException { v.visit(this); } @@ -897,8 +1006,9 @@ */ public static class JspOutput extends Node { - public JspOutput(Attributes attrs, Mark start, Node parent) { - super(attrs, start, parent); + public JspOutput(Attributes attrs, Attributes xmlnsAttrs, Mark start, + Node parent) { + super(attrs, xmlnsAttrs, start, parent); } public void accept(Visitor v) throws JasperException { @@ -999,11 +1109,20 @@ private Nodes atSTag; private Nodes atETag; - public CustomTag(Attributes attrs, Mark start, String name, - String prefix, String shortName, + public CustomTag(Attributes attrs, Mark start, + String name, String prefix, String shortName, TagInfo tagInfo, TagFileInfo tagFileInfo, Class tagHandlerClass, Node parent) { - super(attrs, start, parent); + this(attrs, null, start, name, prefix, shortName, tagInfo, + tagFileInfo, tagHandlerClass, parent); + } + + public CustomTag(Attributes attrs, Attributes xmlnsAttrs, Mark start, + String name, String prefix, String shortName, + TagInfo tagInfo, TagFileInfo tagFileInfo, + Class tagHandlerClass, Node parent) { + + super(attrs, xmlnsAttrs, start, parent); this.name = name; this.prefix = prefix; this.shortName = shortName; @@ -1347,8 +1466,8 @@ */ public static class JspText extends Node { - public JspText(Mark start, Node parent) { - super(start, parent); + public JspText(Attributes xmlnsAttrs, Mark start, Node parent) { + super(null, xmlnsAttrs, start, parent); } public void accept(Visitor v) throws JasperException { @@ -1372,8 +1491,14 @@ private String localName; private String prefix; - public NamedAttribute( Attributes attrs, Mark start, Node parent) { - super( attrs, start, parent ); + public NamedAttribute(Attributes attrs, Mark start, Node parent) { + this(attrs, null, start, parent); + } + + public NamedAttribute(Attributes attrs, Attributes xmlnsAttrs, + Mark start, Node parent) { + + super(attrs, xmlnsAttrs, start, parent); temporaryVariableName = JspUtil.nextTemporaryVariableName(); if( "false".equals( this.getAttributeValue( "trim" ) ) ) { // (if null or true, leave default of true) @@ -1467,7 +1592,11 @@ private ChildInfo childInfo; public JspBody(Mark start, Node parent) { - super(start, parent); + this(null, start, parent); + } + + public JspBody(Attributes xmlnsAttrs, Mark start, Node parent) { + super(null, xmlnsAttrs, start, parent); this.childInfo = new ChildInfo(); } 1.21 +53 -42 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/PageDataImpl.java Index: PageDataImpl.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/PageDataImpl.java,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- PageDataImpl.java 13 Jan 2003 22:08:58 -0000 1.20 +++ PageDataImpl.java 19 Feb 2003 23:39:15 -0000 1.21 @@ -259,7 +259,7 @@ if (n == this.root) { // top-level page appendXmlProlog(); - appendTag(JSP_ROOT, n.getAttributes(), n.getBody(), null); + appendTag(JSP_ROOT, n); } else { visitBody(n); } @@ -275,7 +275,7 @@ if (n == this.root) { // top-level jsp:root element appendXmlProlog(); - appendTag(JSP_ROOT, n.getAttributes(), n.getBody(), null); + appendTag(JSP_ROOT, n); } else { visitBody(n); } @@ -295,15 +295,15 @@ } public void visit(Node.Declaration n) throws JasperException { - appendTag(JSP_DECLARATION, n.getAttributes(), null, n.getText()); + appendTag(JSP_DECLARATION, n); } public void visit(Node.Expression n) throws JasperException { - appendTag(JSP_EXPRESSION, n.getAttributes(), null, n.getText()); + appendTag(JSP_EXPRESSION, n); } public void visit(Node.Scriptlet n) throws JasperException { - appendTag(JSP_SCRIPTLET, n.getAttributes(), null, n.getText()); + appendTag(JSP_SCRIPTLET, n); } public void visit(Node.ELExpression n) throws JasperException { @@ -322,67 +322,67 @@ } public void visit(Node.IncludeAction n) throws JasperException { - appendTag(JSP_INCLUDE, n.getAttributes(), n.getBody(), null); + appendTag(JSP_INCLUDE, n); } public void visit(Node.ForwardAction n) throws JasperException { - appendTag(JSP_FORWARD, n.getAttributes(), n.getBody(), null); + appendTag(JSP_FORWARD, n); } public void visit(Node.GetProperty n) throws JasperException { - appendTag(JSP_GET_PROPERTY, n.getAttributes(), n.getBody(), null); + appendTag(JSP_GET_PROPERTY, n); } public void visit(Node.SetProperty n) throws JasperException { - appendTag(JSP_SET_PROPERTY, n.getAttributes(), n.getBody(), null); + appendTag(JSP_SET_PROPERTY, n); } public void visit(Node.ParamAction n) throws JasperException { - appendTag(JSP_PARAM, n.getAttributes(), n.getBody(), null); + appendTag(JSP_PARAM, n); } public void visit(Node.ParamsAction n) throws JasperException { - appendTag(JSP_PARAMS, n.getAttributes(), n.getBody(), null); + appendTag(JSP_PARAMS, n); } public void visit(Node.FallBackAction n) throws JasperException { - appendTag(JSP_FALLBACK, n.getAttributes(), n.getBody(), null); + appendTag(JSP_FALLBACK, n); } public void visit(Node.UseBean n) throws JasperException { - appendTag(JSP_USE_BEAN, n.getAttributes(), n.getBody(), null); + appendTag(JSP_USE_BEAN, n); } public void visit(Node.PlugIn n) throws JasperException { - appendTag(JSP_PLUGIN, n.getAttributes(), n.getBody(), null); + appendTag(JSP_PLUGIN, n); } public void visit(Node.NamedAttribute n) throws JasperException { - appendTag(JSP_ATTRIBUTE, n.getAttributes(), n.getBody(), null); + appendTag(JSP_ATTRIBUTE, n); } public void visit(Node.JspBody n) throws JasperException { - appendTag(JSP_BODY, n.getAttributes(), n.getBody(), null); + appendTag(JSP_BODY, n); } public void visit(Node.CustomTag n) throws JasperException { - appendTag(n.getName(), n.getAttributes(), n.getBody(), null); + appendTag(n.getName(), n); } public void visit(Node.UninterpretedTag n) throws JasperException { - appendTag(n.getName(), n.getAttributes(), n.getBody(), null); + appendTag(n.getName(), n); } public void visit(Node.JspText n) throws JasperException { - appendTag(JSP_TEXT, n.getAttributes(), n.getBody(), null); + appendTag(JSP_TEXT, n); } public void visit(Node.DoBodyAction n) throws JasperException { - appendTag(JSP_DO_BODY, n.getAttributes(), n.getBody(), null); + appendTag(JSP_DO_BODY, n); } public void visit(Node.InvokeAction n) throws JasperException { - appendTag(JSP_INVOKE, n.getAttributes(), n.getBody(), null); + appendTag(JSP_INVOKE, n); } public void visit(Node.TagDirective n) throws JasperException { @@ -390,11 +390,11 @@ } public void visit(Node.AttributeDirective n) throws JasperException { - appendTag(JSP_ATTRIBUTE_DIRECTIVE, n.getAttributes(), null, null); + appendTag(JSP_ATTRIBUTE_DIRECTIVE, n); } public void visit(Node.VariableDirective n) throws JasperException { - appendTag(JSP_VARIABLE_DIRECTIVE, n.getAttributes(), null, null); + appendTag(JSP_VARIABLE_DIRECTIVE, n); } public void visit(Node.TemplateText n) throws JasperException { @@ -408,18 +408,16 @@ /* * Appends the given tag, including its body, to the XML view. */ - private void appendTag(String tag, - Attributes attrs, - Node.Nodes body, - String text) throws JasperException { + private void appendTag(String tag, Node n) throws JasperException { + + Node.Nodes body = n.getBody(); + String text = n.getText(); buf.append("<").append(tag); buf.append("\n"); buf.append(" ").append("jsp:id").append("=\""); buf.append(jspId++).append("\"\n"); - if (attrs != null) { - printAttributes(attrs); - } + printAttributes(n); if (tag.equals(JSP_ROOT) || body != null || text != null) { buf.append(">\n"); if (tag.equals(JSP_ROOT)) { @@ -560,7 +558,7 @@ return; } - appendTag(JSP_TAG_DIRECTIVE, tagDir.getAttributes(), null, null); + appendTag(JSP_TAG_DIRECTIVE, tagDir); } /* @@ -635,15 +633,28 @@ } /* - * Appends the given attributes to the XML view. + * Appends the attributes of the given Node to the XML view. */ - private void printAttributes(Attributes attrs) { - int len = attrs.getLength(); - for (int i=0; i<len; i++) { - String name = attrs.getQName(i); - String value = attrs.getValue(i); - buf.append(" ").append(name).append("=\""); - buf.append(JspUtil.getExprInXml(value)).append("\"\n"); + private void printAttributes(Node n) { + Attributes attrs = n.getXmlnsAttributes(); + if (attrs != null) { + int len = attrs.getLength(); + for (int i=0; i<len; i++) { + String name = attrs.getQName(i); + String value = attrs.getValue(i); + buf.append(" ").append(name).append("=\"").append(value).append("\"\n"); + } + } + + attrs = n.getAttributes(); + if (attrs != null) { + int len = attrs.getLength(); + for (int i=0; i<len; i++) { + String name = attrs.getQName(i); + String value = attrs.getValue(i); + buf.append(" ").append(name).append("=\""); + buf.append(JspUtil.getExprInXml(value)).append("\"\n"); + } } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]