Class JspUtil

java.lang.Object
org.apache.jasper.compiler.JspUtil

public class JspUtil extends Object
This class has all the utility method(s). Ideally should move all the bean containers here.
  • Field Details

  • Constructor Details

    • JspUtil

      public JspUtil()
  • Method Details

    • removeQuotes

      public static char[] removeQuotes(char[] chars)
    • escapeQuotes

      public static char[] escapeQuotes(char[] chars)
    • isExpression

      public static boolean isExpression(String token, boolean isXml)
      Checks if the token is a runtime expression. In standard JSP syntax, a runtime expression starts with 'invalid input: '<'%' and ends with '%>'. When the JSP document is in XML syntax, a runtime expression starts with '%=' and ends with '%'.
      Parameters:
      token - The token to be checked return whether the token is a runtime expression or not.
    • getExpr

      public static String getExpr(String expression, boolean isXml)
      Returns:
      the "expression" part of a runtime expression, taking the delimiters out.
    • getExprInXml

      public static String getExprInXml(String expression)
      Takes a potential expression and converts it into XML form
    • checkScope

      public static void checkScope(String scope, Node n, ErrorDispatcher err) throws JasperException
      Checks to see if the given scope is valid.
      Parameters:
      scope - The scope to be checked
      n - The Node containing the 'scope' attribute whose value is to be checked
      err - error dispatcher
      Throws:
      JasperException - if scope is not null and different from "page", "request", "session", and "application"
    • checkAttributes

      public static void checkAttributes(String typeOfTag, Node n, JspUtil.ValidAttribute[] validAttributes, ErrorDispatcher err) throws JasperException
      Checks if all mandatory attributes are present and if all attributes present have valid names. Checks attributes specified as XML-style attributes as well as attributes specified using the jsp:attribute standard action.
      Throws:
      JasperException
    • escapeQueryString

      public static String escapeQueryString(String unescString)
    • escapeXml

      public static String escapeXml(String s)
      Escape the 5 entities defined by XML.
    • replace

      public static String replace(String name, char replace, String with)
      Replaces any occurrences of the character replace with the string with.
    • booleanValue

      public static boolean booleanValue(String s)
      Convert a String value to 'boolean'. Besides the standard conversions done by Boolean.valueOf(s).booleanValue(), the value "yes" (ignore case) is also converted to 'true'. If 's' is null, then 'false' is returned.
      Parameters:
      s - the string to be converted
      Returns:
      the boolean value associated with the string s
    • toClass

      public static Class<?> toClass(String type, ClassLoader loader) throws ClassNotFoundException
      Returns the Class object associated with the class or interface with the given string name.

      The Class object is determined by passing the given string name to the Class.forName() method, unless the given string name represents a primitive type, in which case it is converted to a Class object by appending ".class" to it (e.g., "int.class").

      Throws:
      ClassNotFoundException
    • interpreterCall

      public static String interpreterCall(boolean isTagFile, String expression, Class expectedType, String fnmapvar, String expectedDeferredType, String expectedReturnType, String[] expectedParamTypes)
      Produces a String representing a call to the EL interpreter.
      Parameters:
      expression - a String containing zero or more "${}" expressions
      expectedType - the expected type of the interpreted result
      fnmapvar - Variable pointing to a function map.
      Returns:
      a String representing a call to the EL interpreter.
    • validateExpressions

      public static void validateExpressions(Mark where, String expressions, javax.el.FunctionMapper functionMapper, ErrorDispatcher err) throws JasperException
      Validates the syntax of all EL expressions within the given string.
      Parameters:
      where - the approximate location of the expressions in the JSP page
      expressions - a string containing an EL expressions
      err - an error dispatcher to use
      Throws:
      JasperException
    • coerce

      public static Object coerce(Class targetType, String value) throws javax.el.ELException
      Throws:
      javax.el.ELException
    • resetTemporaryVariableName

      public static void resetTemporaryVariableName()
      Resets the temporary variable name. (not thread-safe)
    • nextTemporaryVariableName

      public static String nextTemporaryVariableName()
      Generates a new temporary variable name. (not thread-safe)
    • coerceToPrimitiveBoolean

      public static String coerceToPrimitiveBoolean(String s, boolean isNamedAttribute)
    • coerceToBoolean

      public static String coerceToBoolean(String s, boolean isNamedAttribute)
    • coerceToPrimitiveByte

      public static String coerceToPrimitiveByte(String s, boolean isNamedAttribute)
    • coerceToByte

      public static String coerceToByte(String s, boolean isNamedAttribute)
    • coerceToChar

      public static String coerceToChar(String s, boolean isNamedAttribute)
    • coerceToCharacter

      public static String coerceToCharacter(String s, boolean isNamedAttribute)
    • coerceToPrimitiveDouble

      public static String coerceToPrimitiveDouble(String s, boolean isNamedAttribute)
    • coerceToDouble

      public static String coerceToDouble(String s, boolean isNamedAttribute)
    • coerceToPrimitiveFloat

      public static String coerceToPrimitiveFloat(String s, boolean isNamedAttribute)
    • coerceToFloat

      public static String coerceToFloat(String s, boolean isNamedAttribute)
    • coerceToInt

      public static String coerceToInt(String s, boolean isNamedAttribute)
    • coerceToInteger

      public static String coerceToInteger(String s, boolean isNamedAttribute)
    • coerceToPrimitiveShort

      public static String coerceToPrimitiveShort(String s, boolean isNamedAttribute)
    • coerceToShort

      public static String coerceToShort(String s, boolean isNamedAttribute)
    • coerceToPrimitiveLong

      public static String coerceToPrimitiveLong(String s, boolean isNamedAttribute)
    • coerceToLong

      public static String coerceToLong(String s, boolean isNamedAttribute)
    • coerceToEnum

      public static String coerceToEnum(String s, String enumClass, boolean isNamedAttribute)
    • getInputStream

      public static InputStream getInputStream(String fname, JarFile jarFile, JspCompilationContext ctxt, ErrorDispatcher err) throws JasperException, IOException
      Throws:
      JasperException
      IOException
    • getTagHandlerClassName

      public static String getTagHandlerClassName(String path, ErrorDispatcher err) throws JasperException
      Gets the fully-qualified class name of the tag handler corresponding to the given tag file path.
      Parameters:
      path - Tag file path
      err - Error dispatcher
      Returns:
      Fully-qualified class name of the tag handler corresponding to the given tag file path
      Throws:
      JasperException
    • makeJavaPackage

      public static final String makeJavaPackage(String path)
      Converts the given path to a Java package or fully-qualified class name
      Parameters:
      path - Path to convert
      Returns:
      Java package corresponding to the given path
    • split

      private static final String[] split(String path, String pat)
      Splits a string into it's components.
      Parameters:
      path - String to split
      pat - Pattern to split at
      Returns:
      the components of the path
    • makeJavaIdentifier

      public static final String makeJavaIdentifier(String identifier)
      Converts the given identifier to a legal Java identifier
      Parameters:
      identifier - Identifier to convert
      Returns:
      Legal Java identifier corresponding to the given identifier
    • mangleChar

      public static final String mangleChar(char ch)
      Mangle the specified character to create a legal Java class name.
    • isJavaKeyword

      public static boolean isJavaKeyword(String key)
      Test whether the argument is a Java keyword
    • makeXmlJavaIdentifier

      public static final String makeXmlJavaIdentifier(String name)
      Converts the given Xml name to a legal Java identifier. This is slightly more efficient than makeJavaIdentifier in that we only need to worry about '.', '-', and ':' in the string. We also assume that the resultant string is further concatenated with some prefix string so that we don't have to worry about it being a Java key word.
      Parameters:
      name - Identifier to convert
      Returns:
      Legal Java identifier corresponding to the given identifier
    • getReader

      static InputStreamReader getReader(String fname, String encoding, JarFile jarFile, JspCompilationContext ctxt, ErrorDispatcher err) throws JasperException, IOException
      Throws:
      JasperException
      IOException
    • toJavaSourceType

      public static String toJavaSourceType(String type)
      Class.getName() return arrays in the form "[[[", where et, the element type can be one of ZBCDFIJS or L; It is converted into forms that can be understood by javac.
    • getCanonicalName

      public static String getCanonicalName(Class c)
      Compute the canonical name from a Class instance. Note that a simple replacment of '$' with '.' of a binary name would not work, as '$' is a legal Java Identifier character.
      Parameters:
      c - A instance of java.lang.Class
      Returns:
      The canonical name of c.
    • getExpressionFactory

      private static javax.el.ExpressionFactory getExpressionFactory()
    • expandClassPath

      public static List<String> expandClassPath(List<String> files)
      Given a list of jar files, their manifest attribute Class-path are scanned, and jars specified there are added to the list. This is carried out recursively. Note: This is needed to work around the JDK bug 6725230.