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