Package org.apache.jasper.optimizations

## Class ELInterpreterTagSetters

- java.lang.Object
- - org.apache.jasper.optimizations.ELInterpreterTagSetters

- All Implemented Interfaces:
    `ELInterpreter`

      public class ELInterpreterTagSetters
      extends 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 `ELResolver`s 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"

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `ELInterpreterTagSetters()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `String` | `interpreterCall​(JspCompilationContext context, boolean isTagFile, String expression, Class<?> expectedType, 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 String interpreterCall​(JspCompilationContext context,
                                        boolean isTagFile,
                                        String expression,
                                        Class<?> expectedType,
                                        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, jakarta.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.