You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by lu...@apache.org on 2003/02/26 23:58:18 UTC

cvs commit: jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler Compiler.java Generator.java Node.java PageDataImpl.java PageInfo.java ParserController.java Validator.java

luehe       2003/02/26 14:58:17

  Modified:    jasper2/src/share/org/apache/jasper/compiler Compiler.java
                        Generator.java Node.java PageDataImpl.java
                        PageInfo.java ParserController.java Validator.java
  Log:
  Fixed 17438: if omit-xml-decl is set to 'no' or 'false' no xml
  declaration is generated.
  
  Revision  Changes    Path
  1.57      +2 -2      jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Compiler.java
  
  Index: Compiler.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Compiler.java,v
  retrieving revision 1.56
  retrieving revision 1.57
  diff -u -r1.56 -r1.57
  --- Compiler.java	26 Feb 2003 14:49:29 -0000	1.56
  +++ Compiler.java	26 Feb 2003 22:58:15 -0000	1.57
  @@ -207,12 +207,12 @@
   	// a jsp-property-group in web.xml, initialize pageInfo with
   	// those properties.
   	if (jspProperty.isXml() != null) {
  -	    pageInfo.setIsXmlSpecified(true);
  +	    pageInfo.setIsXmlConfigSpecified(true);
   	}
   	if (jspProperty.isELIgnored() != null) {
   	    pageInfo.setELIgnoredSpecified(true);
   	}
  -	pageInfo.setIsXml(JspUtil.booleanValue(jspProperty.isXml()));
  +	pageInfo.setIsXmlConfig(JspUtil.booleanValue(jspProperty.isXml()));
   	pageInfo.setConfigEncoding(jspProperty.getPageEncoding());
   	pageInfo.setELIgnored(JspUtil.booleanValue(jspProperty.isELIgnored()));
   	pageInfo.setScriptingInvalid(JspUtil.booleanValue(jspProperty.isScriptingInvalid()));
  
  
  
  1.169     +14 -8     jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java
  
  Index: Generator.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java,v
  retrieving revision 1.168
  retrieving revision 1.169
  diff -u -r1.168 -r1.169
  --- Generator.java	26 Feb 2003 01:11:14 -0000	1.168
  +++ Generator.java	26 Feb 2003 22:58:15 -0000	1.169
  @@ -594,16 +594,21 @@
       }
   
       /**
  -     * Generates a XML declaration
  +     * Generates an XML declaration, under the following conditions:
  +     *
  +     * - 'omit-xml-declaration' attribute of <jsp:output> action is set to
  +     *   "no" or "false"
  +     * - JSP document without a <jsp:root>
        */
       private void generateXmlDeclaration(Node.Nodes page) {
  -	if (page.getRoot().isXmlSyntax() && ! pageInfo.hasJspRoot() && 
  -		(pageInfo.getOmitXmlDecl() == null /* not specified */ ||
  -		 ! JspUtil.booleanValue(pageInfo.getOmitXmlDecl()))) {
  +	if (pageInfo.getOmitXmlDecl() != null
  +	            && !JspUtil.booleanValue(pageInfo.getOmitXmlDecl())
  +	    || (page.getRoot().isXmlSyntax() && !pageInfo.hasJspRoot()
  +		&& !ctxt.isTagFile())) {
   	    String cType = pageInfo.getContentType();
   	    String charSet = cType.substring(cType.indexOf("charset=")+8);
   	    out.printil("out.write(\"<?xml version=\\\"1.0\\\" encoding=\\\"" +
  -		charSet + "\\\"?>\\n\");");
  +			charSet + "\\\"?>\\n\");");
   	}
       }
   
  @@ -2969,6 +2974,7 @@
   		return;
   	    }
   
  +	    gen.generateXmlDeclaration(page);
   	    gen.fragmentHelperClass.generatePreamble();
   	    page.visit(gen.new GenerateVisitor(gen.ctxt.isTagFile(),
   					       out,
  
  
  
  1.64      +7 -3      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.63
  retrieving revision 1.64
  diff -u -r1.63 -r1.64
  --- Node.java	26 Feb 2003 17:58:07 -0000	1.63
  +++ Node.java	26 Feb 2003 22:58:15 -0000	1.64
  @@ -400,6 +400,8 @@
   	 */
   	Root(boolean isXmlSyntax) {
   	    this.isXmlSyntax = isXmlSyntax;
  +	    this.qName = JSP_ROOT_ACTION;
  +	    this.localName = ROOT_ACTION;
   	}
   
   	/*
  @@ -408,6 +410,8 @@
   	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;
  
  
  
  1.24      +11 -22    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.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- PageDataImpl.java	23 Feb 2003 20:57:05 -0000	1.23
  +++ PageDataImpl.java	26 Feb 2003 22:58:16 -0000	1.24
  @@ -109,9 +109,7 @@
   	        throws JasperException {
   
   	// First pass
  -	boolean isXml = compiler.getPageInfo().isXml();
  -	FirstPassVisitor firstPass = new FirstPassVisitor(page.getRoot(),
  -							  isXml);
  +	FirstPassVisitor firstPass = new FirstPassVisitor(page.getRoot());
   	page.visit(firstPass);
   
   	// Second pass
  @@ -155,12 +153,12 @@
   	/*
   	 * Constructor
   	 */
  -	public FirstPassVisitor(Node.Root root, boolean isXml) {
  +	public FirstPassVisitor(Node.Root root) {
   	    this.root = root;
   	    this.rootAttrs = new AttributesImpl();
   	    this.rootAttrs.addAttribute("", "", "version", "CDATA",
   					JSP_VERSION);
  -	    if (!isXml) {
  +	    if (!root.isXmlSyntax()) {
   		this.rootAttrs.addAttribute("", "", "xmlns:jsp", "CDATA",
   					    JSP_NAMESPACE);
   	    } 
  @@ -179,11 +177,6 @@
   	    addAttributes(n.getAttributes());
   
   	    visitBody(n);
  -
  -	    if (n == this.root) {
  -		// top-level jsp:root element
  -		this.root.setAttributes(rootAttrs);
  -	    }
   	}
   
   	/*
  @@ -248,7 +241,7 @@
   	}
   
   	/*
  -	 * Visits root node of JSP page in JSP syntax.
  +	 * Visits root node.
   	 */
   	public void visit(Node.Root n) throws JasperException {
   	    if (n == this.root) {
  @@ -267,13 +260,7 @@
   	 * include directive) are ignored.
   	 */
   	public void visit(Node.JspRoot n) throws JasperException {
  -	    if (n == this.root) {
  -		// top-level jsp:root element
  -		appendXmlProlog();
  -		appendTag(n);
  -	    } else {
  -		visitBody(n);
  -	    }
  +	    visitBody(n);
   	}
   
   	public void visit(Node.PageDirective n) throws JasperException {
  @@ -414,9 +401,11 @@
   
   	    buf.append("<").append(n.getQName());
   	    buf.append("\n");
  +
  +	    printAttributes(n);
   	    buf.append("  ").append("jsp:id").append("=\"");
   	    buf.append(jspId++).append("\"\n");
  -	    printAttributes(n);
  +
   	    if (ROOT_ACTION.equals(n.getLocalName()) || body != null
   		        || text != null) {
   		buf.append(">\n");
  
  
  
  1.23      +16 -14    jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/PageInfo.java
  
  Index: PageInfo.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/PageInfo.java,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- PageInfo.java	26 Feb 2003 00:11:38 -0000	1.22
  +++ PageInfo.java	26 Feb 2003 22:58:16 -0000	1.23
  @@ -106,11 +106,13 @@
       private boolean scriptingInvalid = false;
       private boolean elIgnored = false;
       private boolean elIgnoredSpecified = false;
  -    private boolean isXml = false;
       private String omitXmlDecl = null;
   
  -    // true is there is a is-xml element in jsp-config
  -    private boolean isXmlSpecified = false;	
  +    // true if there is an is-xml element in the jsp-config
  +    private boolean isXmlConfigSpecified = false;	
  +
  +    // The value of the is-xml element in the jsp-config
  +    private boolean isXmlConfig = false;
   
       // A custom tag is a tag file
       private boolean hasTagFile = false;
  @@ -320,20 +322,20 @@
   	return elIgnoredSpecified;
       }
   
  -    public boolean isXml() {
  -	return isXml;
  +    public boolean isXmlConfig() {
  +	return isXmlConfig;
       }
   
  -    public void setIsXml(boolean xml) {
  -	isXml = xml;
  +    public void setIsXmlConfig(boolean xml) {
  +	isXmlConfig = xml;
       }
   
  -    public boolean isXmlSpecified() {
  -	return isXmlSpecified;
  +    public boolean isXmlConfigSpecified() {
  +	return isXmlConfigSpecified;
       }
   
  -    public void setIsXmlSpecified(boolean xmlSpecified) {
  -	isXmlSpecified = xmlSpecified;
  +    public void setIsXmlConfigSpecified(boolean xmlSpecified) {
  +	isXmlConfigSpecified = xmlSpecified;
       }
   
       public List getIncludePrelude() {
  
  
  
  1.34      +7 -7      jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/ParserController.java
  
  Index: ParserController.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/ParserController.java,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- ParserController.java	19 Feb 2003 19:00:59 -0000	1.33
  +++ ParserController.java	26 Feb 2003 22:58:16 -0000	1.34
  @@ -216,7 +216,6 @@
   		}
   	    }
   	    pageInfo.setPageEncoding(sourceEnc);
  -	    pageInfo.setIsXml(isXml);
   	    isTopFile = false;
   	} else {
   	    compiler.getPageInfo().addDependant(absFileName);
  @@ -289,11 +288,12 @@
        * The properties to be determined are:
        *
        *   - Syntax (JSP or XML).
  -     *     This information is supplied by setting the instance variable
  -     *     'isXml'.
  +     *     This information is supplied by setting the 'isXml' instance
  +     *     variable.
        *
        *   - Source Encoding.
  -     *     This information is supplied as the return value.
  +     *     This information is supplied by setting the 'sourceEnc' instance
  +     *     variable.
        *
        * If these properties are already specified in the jsp-config element
        * in web.xml, then they are used.
  @@ -315,11 +315,11 @@
   	 */
   	boolean revert = false;
   
  -	if (pageInfo.isXmlSpecified()) {
  +	if (pageInfo.isXmlConfigSpecified()) {
   	    // If <is-xml> is specified in a <jsp-property-group>, it is used.
  -	    isXml = pageInfo.isXml();
  +	    isXml = pageInfo.isXmlConfig();
   	    isExternal = true;
  -	} else if (fname.endsWith(".jspx")) {
  +	} else if (fname.endsWith(".jspx") || fname.endsWith(".tagx")) {
   	    isXml = true;
   	    isExternal = true;
   	}
  
  
  
  1.85      +6 -6      jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Validator.java
  
  Index: Validator.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Validator.java,v
  retrieving revision 1.84
  retrieving revision 1.85
  diff -u -r1.84 -r1.85
  --- Validator.java	26 Feb 2003 17:58:07 -0000	1.84
  +++ Validator.java	26 Feb 2003 22:58:16 -0000	1.85
  @@ -341,7 +341,7 @@
   			     configEnc, pageDirEnc);
   	    }
   
  -	    if (pageInfo.isXml() && pageInfo.isEncodingSpecifiedInProlog()) {
  +	    if (n.isXmlSyntax() && pageInfo.isEncodingSpecifiedInProlog()) {
   		String pageEnc = pageInfo.getPageEncoding();
   		if (!pageDirEnc.equals(pageEnc) 
   		        && (!pageDirEnc.startsWith("UTF-16")
  @@ -1191,8 +1191,7 @@
   	// Determine the default output content type
   	PageInfo pageInfo = compiler.getPageInfo();
   	String contentType = pageInfo.getContentType();
  -	if (!compiler.getCompilationContext().isTagFile() && 
  -		(contentType == null || contentType.indexOf("charset=") < 0)) {
  +	if (contentType == null || contentType.indexOf("charset=") < 0) {
   	    boolean isXml = page.getRoot().isXmlSyntax();
   	    String defaultType;
   	    if (contentType == null) {
  @@ -1257,6 +1256,7 @@
               TagLibraryInfo tli = (TagLibraryInfo) enum.nextElement();
   	    if (!(tli instanceof TagLibraryInfoImpl))
   		continue;
  +
   	    ValidationMessage[] errors
   		= ((TagLibraryInfoImpl) tli).validate(xmlView);
               if ((errors != null) && (errors.length != 0)) {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org