costin 01/06/05 23:16:57 Modified: jasper34/generator/org/apache/jasper34/generator JspUtil.java Log: Moved parser and tablib-reading specific code in the right packages. Revision Changes Path 1.2 +2 -187 jakarta-tomcat-jasper/jasper34/generator/org/apache/jasper34/generator/JspUtil.java Index: JspUtil.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-jasper/jasper34/generator/org/apache/jasper34/generator/JspUtil.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- JspUtil.java 2001/05/27 23:19:31 1.1 +++ JspUtil.java 2001/06/06 06:16:56 1.2 @@ -77,6 +77,8 @@ import org.xml.sax.SAXException; import org.xml.sax.InputSource; +import org.apache.jasper34.jsptree.*; + /** * This class has all the utility method(s). * Ideally should move all the bean containers here. @@ -127,121 +129,6 @@ return returnString; } - // Parses the XML document contained in the InputStream. - public static Document parseXMLDoc(InputStream in, String dtdResource, - String dtdId) throws JasperException - { - return parseXMLDocJaxp(in, dtdResource, dtdId ); - } - - // Parses the XML document contained in the InputStream. - public static Document parseXMLDocJaxp(InputStream in, String dtdResource, - String dtdId) - throws JasperException - { - try { - Document tld; - DocumentBuilderFactory docFactory = DocumentBuilderFactory. - newInstance(); - docFactory.setValidating(true); - docFactory.setNamespaceAware(true); - DocumentBuilder builder = docFactory.newDocumentBuilder(); - - /*** - * These lines make sure that we have an internal catalog entry for - * the taglib.dtdfile; this is so that jasper can run standalone - * without running out to the net to pick up the taglib.dtd file. - */ - MyEntityResolver resolver = - new MyEntityResolver(dtdId, dtdResource); - builder.setEntityResolver(resolver); - tld = builder.parse(in); - return tld; - } catch( ParserConfigurationException ex ) { - throw new JasperException(Constants. - getString("jsp.error.parse.error.in.TLD", - new Object[] { - ex.getMessage() - })); - } catch ( SAXException sx ) { - throw new JasperException(Constants. - getString("jsp.error.parse.error.in.TLD", - new Object[] { - sx.getMessage() - })); - } catch (IOException io) { - throw new JasperException(Constants. - getString("jsp.error.unable.to.open.TLD", - new Object[] { - io.getMessage() })); - } - } - - public static void checkAttributes (String typeOfTag, Hashtable attrs, - ValidAttribute[] validAttributes, Mark start) - throws JasperException - { - boolean valid = true; - Hashtable temp = (Hashtable)attrs.clone (); - - /** - * First check to see if all the mandatory attributes are present. - * If so only then proceed to see if the other attributes are valid - * for the particular tag. - */ - String missingAttribute = null; - - for (int i = 0; i < validAttributes.length; i++) { - - if (validAttributes[i].mandatory) { - if (temp.get (validAttributes[i].name) != null) { - temp.remove (validAttributes[i].name); - valid = true; - } else { - valid = false; - missingAttribute = validAttributes[i].name; - break; - } - } - } - - /** - * If mandatory attribute is missing then the exception is thrown. - */ - if (!valid) - throw new ParseException(start, Constants.getString( - "jsp.error.mandatory.attribute", - new Object[] { typeOfTag, missingAttribute})); - - /** - * Check to see if there are any more attributes for the specified - * tag. - */ - if (temp.size() == 0) - return; - - /** - * Now check to see if the rest of the attributes are valid too. - */ - Enumeration enum = temp.keys (); - String attribute = null; - - while (enum.hasMoreElements ()) { - valid = false; - attribute = (String) enum.nextElement (); - for (int i = 0; i < validAttributes.length; i++) { - if (attribute.equals(validAttributes[i].name)) { - valid = true; - break; - } - } - if (!valid) - throw new ParseException(start, Constants.getString( - "jsp.error.invalid.attribute", - new Object[] { typeOfTag, attribute })); - } - } - public static String escapeQueryString(String unescString) { if ( unescString == null ) return null; @@ -260,76 +147,4 @@ return escString; } - /** - * Escape the 5 entities defined by XML. - */ - public static String escapeXml(String s) { - if (s == null) return null; - StringBuffer sb = new StringBuffer(); - for(int i=0; i<s.length(); i++) { - char c = s.charAt(i); - if (c == '<') { - sb.append("<"); - } else if (c == '>') { - sb.append(">"); - } else if (c == '\'') { - sb.append("'"); - } else if (c == '&') { - sb.append("&"); - } else if (c == '"') { - sb.append(""e;"); - } else { - sb.append(c); - } - } - return sb.toString(); - } - - public static class ValidAttribute { - String name; - boolean mandatory; - - public ValidAttribute (String name, boolean mandatory) { - this.name = name; - this.mandatory = mandatory; - } - - public ValidAttribute (String name) { - this (name, false); - } - } -} - -class MyEntityResolver implements EntityResolver { - - String dtdId; - String dtdResource; - - public MyEntityResolver(String id, String resource) { - this.dtdId = id; - this.dtdResource = resource; - } - - public InputSource resolveEntity(String publicId, String systemId) - throws SAXException, IOException - { - //System.out.println ("publicId = " + publicId); - //System.out.println ("systemId is " + systemId); - //System.out.println ("resource is " + dtdResource); - if (publicId.equals(dtdId)) { - InputStream input = - this.getClass().getResourceAsStream(dtdResource); - InputSource isrc = - new InputSource(input); - return isrc; - } - else { - //System.out.println ("returning null though dtdURL is " + dtdURL); - return null; - } - } } - - - -