luehe 2002/11/14 14:22:38
Modified: jasper2/src/share/org/apache/jasper/compiler
TagLibraryInfoImpl.java
Log:
Fixed 4779016 (bugtraq): Translation error doesn't occur if there are
two functions with the same name.
Revision Changes Path
1.25 +21 -10
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/TagLibraryInfoImpl.java
Index: TagLibraryInfoImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/TagLibraryInfoImpl.java,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- TagLibraryInfoImpl.java 13 Nov 2002 18:38:11 -0000 1.24
+++ TagLibraryInfoImpl.java 14 Nov 2002 22:22:38 -0000 1.25
@@ -244,8 +244,8 @@
{
Vector tagVector = new Vector();
Vector tagFileVector = new Vector();
- Vector functionVector = new Vector();
-
+ Hashtable functionTable = new Hashtable();
+
// Create an iterator over the child elements of our <taglib> element
ParserUtils pu = new ParserUtils();
TreeNode tld = pu.parseXMLDocument(uri, in);
@@ -278,9 +278,16 @@
else if ("tag-file".equals(tname))
tagFileVector.addElement(createTagFileInfo(element, uri,
jarFile));
- else if ("function".equals(tname)) // JSP2.0
- functionVector.addElement(createFunctionInfo(element));
- else if ("display-name".equals(tname) || // Ignored elements
+ else if ("function".equals(tname)) { // JSP2.0
+ FunctionInfo funcInfo = createFunctionInfo(element);
+ String funcName = funcInfo.getName();
+ if (functionTable.containsKey(funcName)) {
+ err.jspError("jsp.error.tld.fn.duplicate.name",
+ funcName, uri);
+
+ }
+ functionTable.put(funcName, funcInfo);
+ } else if ("display-name".equals(tname) || // Ignored elements
"small-icon".equals(tname) ||
"large-icon".equals(tname) ||
"listener".equals(tname)) {
@@ -302,8 +309,12 @@
this.tagFiles = new TagFileInfo[tagFileVector.size()];
tagFileVector.copyInto (this.tagFiles);
- this.functions = new FunctionInfo[functionVector.size()];
- functionVector.copyInto (this.functions);
+ this.functions = new FunctionInfo[functionTable.size()];
+ int i=0;
+ Enumeration enum = functionTable.elements();
+ while (enum.hasMoreElements()) {
+ this.functions[i++] = (FunctionInfo) enum.nextElement();
+ }
}
private TagInfo createTagInfo(TreeNode elem) throws JasperException {
--
To unsubscribe, e-mail: <mailto:tomcat-dev-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:tomcat-dev-help@;jakarta.apache.org>