tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From r...@apache.org
Subject cvs commit: jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler Parser.java
Date Sat, 09 Aug 2003 19:18:22 GMT
remm        2003/08/09 12:18:22

  Modified:    jasper2/src/share/org/apache/jasper/compiler Parser.java
  Log:
  - Bug 22266: Keep template text together with mappedfile="true".
  
  Revision  Changes    Path
  1.78      +58 -6     jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Parser.java
  
  Index: Parser.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Parser.java,v
  retrieving revision 1.77
  retrieving revision 1.78
  diff -u -r1.77 -r1.78
  --- Parser.java	23 Jul 2003 19:23:46 -0000	1.77
  +++ Parser.java	9 Aug 2003 19:18:22 -0000	1.78
  @@ -102,6 +102,7 @@
       private boolean directivesOnly;
       private URL jarFileUrl;
       private PageInfo pageInfo;
  +    private boolean mappedFile;
   
       // Virtual body content types, to make parsing a little easier.
       // These are not accessible from outside the parser.
  @@ -128,6 +129,7 @@
   	this.directivesOnly = directivesOnly;
   	this.jarFileUrl = jarFileUrl;
           start = reader.mark();
  +        mappedFile = ctxt.getOptions().getMappedFile();
       }
   
       /**
  @@ -1403,6 +1405,54 @@
   	return true;
       }
   
  +    /**
  +     * Determines whether the current text is template text
  +     * or not.  Assumes the reader is at the character 
  +     * following the "<".
  +     */
  +    private boolean isTemplateText() throws JasperException {
  +
  +        Mark m = reader.mark();
  +        int ch = reader.peekChar();
  +        if (ch == '/') {
  +            reader.nextChar();
  +        }
  +        String tagIdentifier = reader.parseToken(false);
  +        reader.reset(m);
  +        
  +        if (tagIdentifier.equals("%--")) {
  +            return false;
  +        }
  +        if (tagIdentifier.equals("%@")) {
  +            return false;
  +        }
  +        if (tagIdentifier.equals("%!")) {
  +            return false;
  +        }
  +        if (tagIdentifier.equals("%=")) {
  +            return false;
  +        }
  +        if (tagIdentifier.equals("%")) {
  +            return false;
  +        }
  +        if (tagIdentifier.startsWith("jsp:")) {
  +            return false;
  +        }
  +
  +        // Check if this is a user-defined tag.
  +        int i = tagIdentifier.indexOf(':');
  +        if (i == -1) {
  +            return true;
  +        }
  +        String prefix = tagIdentifier.substring(0, i);
  +        String uri = pageInfo.getURI(prefix);
  +        if (uri == null) {
  +            return true;
  +        }
  +
  +        return false;
  +    }
  +    
       /*
        *
        */
  @@ -1419,9 +1469,11 @@
   	while (reader.hasMoreInput()) {
   	    ch = reader.nextChar();
   	    if (ch == '<') {
  -		reader.pushChar();
  -		break;
  -	    }
  +            if (!mappedFile || !isTemplateText()) {
  +                reader.pushChar();
  +                break;
  +            }
  +  	    }
   	    else if( ch == '$' ) {
   		if (!reader.hasMoreInput()) {
   		    ttext.write('$');
  
  
  

Mime
View raw message