Class ELInterpreterTagSetters

  • All Implemented Interfaces:
    ELInterpreter

    public class ELInterpreterTagSetters
    extends java.lang.Object
    implements ELInterpreter
    A non-specification compliant ELInterpreter that optimizes a subset of setters for tag attributes.

    The cases optimized by this implementation are:

    • expressions that are solely a literal boolean
    • expressions that are solely a constant string used (with coercion where necessary) with a setter that accepts:
      • boolean / Boolean
      • char / Character
      • BigDecimal
      • long / Long
      • int / Integer
      • short / Short
      • byte / Byte
      • double / Double
      • float / Float
      • BigInteger
      • Enum
      • String
    The specification compliance issue is that it essentially skips the first three ELResolvers listed in section JSP.2.9 and effectively hard codes the use of the 4th ELResolver in that list.
    See Also:
    "https://bz.apache.org/bugzilla/show_bug.cgi?id=64872"
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.lang.String interpreterCall​(JspCompilationContext context, boolean isTagFile, java.lang.String expression, java.lang.Class<?> expectedType, java.lang.String fnmapvar)
      Returns the string representing the code that will be inserted into the servlet generated for JSP.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • ELInterpreterTagSetters

        public ELInterpreterTagSetters()
    • Method Detail

      • interpreterCall

        public java.lang.String interpreterCall​(JspCompilationContext context,
                                                boolean isTagFile,
                                                java.lang.String expression,
                                                java.lang.Class<?> expectedType,
                                                java.lang.String fnmapvar)
        Description copied from interface: ELInterpreter
        Returns the string representing the code that will be inserted into the servlet generated for JSP. The default implementation creates a call to PageContextImpl.proprietaryEvaluate( String, Class, javax.servlet.jsp.PageContext, org.apache.jasper.runtime.ProtectedFunctionMapper) but other implementations may produce more optimised code.
        Specified by:
        interpreterCall in interface ELInterpreter
        Parameters:
        context - The compilation context
        isTagFile - true if in a tag file rather than a JSP
        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.