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>