You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by la...@apache.org on 2002/01/31 05:00:09 UTC

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

larryi      02/01/30 20:00:09

  Modified:    src/share/org/apache/jasper/compiler TagGeneratorBase.java
  Log:
  Fix for bug 1657.
  
  Port code from Tomcat 4.x for handling special characters in tag names.
  
  Revision  Changes    Path
  1.7       +29 -0     jakarta-tomcat/src/share/org/apache/jasper/compiler/TagGeneratorBase.java
  
  Index: TagGeneratorBase.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/jasper/compiler/TagGeneratorBase.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- TagGeneratorBase.java	24 Mar 2001 06:49:29 -0000	1.6
  +++ TagGeneratorBase.java	31 Jan 2002 04:00:09 -0000	1.7
  @@ -115,7 +115,36 @@
   	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());
  +    }
  +
       protected String getTagVarName(String prefix, String shortTagName) {
  +	if (prefix.indexOf('-') >= 0)
  +	    prefix = substitute(prefix, '-', "$1");
  +	if (prefix.indexOf('.') >= 0)
  +	    prefix = substitute(prefix, '.', "$2");
  +
  +        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;
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>