You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by cr...@apache.org on 2001/09/07 21:43:47 UTC

cvs commit: jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler TagGeneratorBase.java

craigmcc    01/09/07 12:43:47

  Modified:    jasper/src/share/org/apache/jasper/compiler
                        TagGeneratorBase.java
  Log:
  When custom tag names have invalid Java identifier characters ('-', '.',
  and ':'), replace them with strings that are legal.
  
  PR: Bugzilla #3019 David.Holscher@nav-international.com
  Submitted by:	Kin-Man Chung <ki...@sun.com>
  
  Revision  Changes    Path
  1.3       +34 -3     jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/TagGeneratorBase.java
  
  Index: TagGeneratorBase.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/TagGeneratorBase.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TagGeneratorBase.java	2000/11/01 20:25:08	1.2
  +++ TagGeneratorBase.java	2001/09/07 19:43:46	1.3
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/TagGeneratorBase.java,v 1.2 2000/11/01 20:25:08 pierred Exp $
  - * $Revision: 1.2 $
  - * $Date: 2000/11/01 20:25:08 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/TagGeneratorBase.java,v 1.3 2001/09/07 19:43:46 craigmcc Exp $
  + * $Revision: 1.3 $
  + * $Date: 2001/09/07 19:43:46 $
    *
    * ====================================================================
    *
  @@ -119,7 +119,38 @@
   	return (TagVariableData) tagHandlerStack.peek();
       }
   
  +
  +    private String substitute(String name, char from, String to) {
  +        StringBuffer s = new StringBuffer();
  +        int begin = 0;
  +        int last = name.length();
  +        int end;
  +        while (true) {
  +            end = name.indexOf(from, begin);
  +            if (end < 0)
  +                end = last;
  +            s.append(name.substring(begin, end));
  +            if (end == last)
  +                break;
  +            s.append(to);
  +            begin = end + 1;
  +        }
  +        return (s.toString());
  +    }
  +
  +    /**
  +     * Return a tag variable name from the given prefix and shortTagName.
  +     * Not all NMTOKEN's are legal Java identifiers, since they may contain
  +     * '-', '.', or ':'.  We use the following mapping: substitute '-' with
  +     * "#1", '.' with "$2", and ':' with "$3".
  +     */
       protected String getTagVarName(String prefix, String shortTagName) {
  +        if (shortTagName.indexOf('-') >= 0)
  +            shortTagName = substitute(shortTagName, '-', "$1");
  +        if (shortTagName.indexOf('.') >= 0)
  +            shortTagName = substitute(shortTagName, '.', "$2");
  +        if (shortTagName.indexOf(':') >= 0)
  +            shortTagName = substitute(shortTagName, ':', "$3");
   	// Fix: Can probably remove the synchronization now when no vars or method is static
   	synchronized (tagVarNumbers) {
   	    String tag = prefix+":"+shortTagName;
  
  
  

Re: cvs commit: jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler TagGeneratorBase.java

Posted by Jon Stevens <jo...@latchkey.com>.
on 9/7/01 12:43 PM, "craigmcc@apache.org" <cr...@apache.org> wrote:

> We use the following mapping: substitute '-' with
> +     * "#1", '.' with "$2", and ':' with "$3".
> +     */

#1?

-jon