# Class JspC

java.lang.Object
org.apache.tools.ant.ProjectComponent
org.apache.tools.ant.Task
org.apache.jasper.JspC

All Implemented Interfaces:
  `Cloneable, Options`

public class JspC extends org.apache.tools.ant.Task implements Options
Shell for the jspc compiler. Handles all options associated with the command line and creates compilation contexts which it then compiles according to the specified options. This version can process files from a _single_ webapp at once, i.e. a single docbase can be specified. It can be used as an Ant task using:

      <taskdef classname="org.apache.jasper.JspC" name="jasper" >
         <classpath>
             <pathelement location="${java.home}/../lib/tools.jar"/>
             <fileset dir="${ENV.CATALINA_HOME}/lib">
                 <include name="*.jar"/>
             </fileset>
             <path refid="myjars"/>
          </classpath>
     </taskdef>

     <jasper verbose="0"
              package="my.package"
              uriroot="${webapps.dir}/${webapp.name}"
              webXmlFragment="${build.dir}/generated_web.xml"
              outputDir="${webapp.dir}/${webapp.name}/WEB-INF/src/my/package" />

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected boolean`
  `addWebXmlMappings`
  Flag to merge generated mappings into existing web.xml.
  `protected static final int`
  `ALL_WEBXML`
  Web.xml generation level for complete web.xml.
  `protected int`
  `argPos`
  Current position in the command-line arguments array.
  `protected String[]`
  `args`
  Command-line arguments passed to JspC.
  `protected boolean`
  `blockExternal`
  Flag to block external entities during XML parsing.
  `protected final Map<String, TagLibraryInfo>`
  `cache`
  Cache for TagLibraryInfo objects.
  `protected boolean`
  `caching`
  Flag to enable tag handler caching.
  `protected boolean`
  `classDebugInfo`
  Flag to include debug information in compiled classes.
  `protected String`
  `classPath`
  Classpath for compiling generated servlets.
  `protected boolean`
  `compile`
  Flag to compile JSPs to class files.
  `protected String`
  `compiler`
  Compiler implementation to use.
  `protected String`
  `compilerSourceVM`
  Source Java version for compilation.
  `protected String`
  `compilerTargetVM`
  Target Java VM version for compilation.
  `protected JspCServletContext`
  `context`
  The servlet context.
  `protected static final int`
  `DEFAULT_DIE_LEVEL`
  Default exit code level when a compilation error occurs.
  `protected int`
  `dieLevel`
  Exit code level on compilation error.
  `protected boolean`
  `errorOnUseBeanInvalidClassAttribute`
  Needs better documentation, this data member does.
  `protected List<String>`
  `extensions`
  The file extensions to be handled as JSP files.
  `protected boolean`
  `failFast`
  Flag to stop on first compilation error.
  `protected boolean`
  `failOnError`
  Throw an exception if there's a compilation error, or swallow it.
  `protected static final int`
  `FRG_WEBXML`
  Web.xml generation level for web-fragment.
  `protected boolean`
  `fullstop`
  Flag indicating the full stop switch was encountered.
  `protected boolean`
  `genStringAsCharArray`
  Flag to generate string literals as char arrays.
  `protected boolean`
  `helpNeeded`
  Flag indicating help was requested.
  `protected static final int`
  `INC_WEBXML`
  Web.xml generation level for include fragment.
  `protected static final Set<String>`
  `insertBefore`
  Set of XML elements before which generated content should be inserted.
  `protected String`
  `javaEncoding`
  The java file encoding.
  `protected JspConfig`
  `jspConfig`
  JSP configuration parsed from web.xml.
  `protected static final String`
  `LIST_ERRORS`
  Command-line switch for listing errors.
  `protected boolean`
  `listErrors`
  Flag to list compilation errors.
  `protected ClassLoader`
  `loader`
  ClassLoader used for JSP compilation.
  `protected Writer`
  `mapout`
  Writer for the generated web.xml output file.
  `protected boolean`
  `mappedFile`
  Flag to use mapped file compilation.
  `protected CharArrayWriter`
  `mappingout`
  Buffer for generated servlet-mapping declarations.
  `protected static final int`
  `NO_DIE_LEVEL`
  Exit code level indicating no exit on error.
  `protected final List<String>`
  `pages`
  The pages.
  `protected boolean`
  `poolingEnabled`
  Flag to enable tag handler pooling.
  `protected boolean`
  `quoteAttributeEL`
  Flag to quote EL expressions in attributes.
  `protected JspRuntimeContext`
  `rctxt`
  The runtime context.
  `protected TldScanner`
  `scanner`
  Scanner for TLD files in the web application.
  `protected File`
  `scratchDir`
  Scratch directory for generated files.
  `protected CharArrayWriter`
  `servletout`
  Buffer for generated servlet declarations.
  `protected static final String`
  `SHOW_SUCCESS`
  Command-line switch for showing success messages.
  `protected boolean`
  `showSuccess`
  Flag to show success messages.
  `protected boolean`
  `smapDumped`
  Flag to dump SMAP files.
  `protected boolean`
  `smapSuppressed`
  Flag to suppress SMAP file generation.
  `protected boolean`
  `strictQuoteEscaping`
  Flag for strict quote escaping in attributes.
  `protected static final String`
  `SWITCH_ADD_WEBAPP_XML_MAPPINGS`
  Command-line switch for adding web.xml servlet mappings.
  `protected static final String`
  `SWITCH_CACHE`
  Command-line switch for enabling/disabling caching.
  `protected static final String`
  `SWITCH_CLASS_NAME`
  Command-line switch for setting the generated class name.
  `protected static final String`
  `SWITCH_CLASSPATH`
  Command-line switch for setting the classpath.
  `protected static final String`
  `SWITCH_COMPILE`
  Command-line switch for compiling to class files.
  `protected static final String`
  `SWITCH_DIE`
  Command-line switch prefix for setting the exit code on error.
  `protected static final String`
  `SWITCH_DUMP_SMAP`
  Command-line switch for dumping SMAP files.
  `protected static final String`
  `SWITCH_ENCODING`
  Command-line switch for setting the Java file encoding.
  `protected static final String`
  `SWITCH_FAIL_FAST`
  Command-line switch for failing on first error.
  `protected static final String`
  `SWITCH_FILE_WEBAPP`
  Command-line switch for setting the web application root.
  `protected static final String`
  `SWITCH_FULL_STOP`
  Command-line switch indicating the end of options.
  `protected static final String`
  `SWITCH_HELP`
  Command-line switch for displaying help.
  `protected static final String`
  `SWITCH_MAPPED`
  Command-line switch for using mapped file compilation.
  `protected static final String`
  `SWITCH_NO_BLOCK_EXTERNAL`
  Command-line switch for disabling external entity blocking.
  `protected static final String`
  `SWITCH_NO_QUOTE_ATTRIBUTE_EL`
  Command-line switch for disabling EL quoting in attributes.
  `protected static final String`
  `SWITCH_NO_STRICT_QUOTE_ESCAPING`
  Command-line switch for disabling strict quote escaping.
  `protected static final String`
  `SWITCH_OUTPUT_DIR`
  Command-line switch for setting the output directory.
  `protected static final String`
  `SWITCH_PACKAGE_NAME`
  Command-line switch for setting the package name.
  `protected static final String`
  `SWITCH_POOLING`
  Command-line switch for enabling tag handler pooling.
  `protected static final String`
  `SWITCH_QUOTE_ATTRIBUTE_EL`
  Command-line switch for enabling EL quoting in attributes.
  `protected static final String`
  `SWITCH_SMAP`
  Command-line switch for generating SMAP files.
  `protected static final String`
  `SWITCH_SOURCE`
  Command-line switch for setting the Java source version.
  `protected static final String`
  `SWITCH_TARGET`
  Command-line switch for setting the Java target version.
  `protected static final String`
  `SWITCH_THREAD_COUNT`
  Command-line switch for setting the thread count.
  `protected static final String`
  `SWITCH_TRIM_SPACES`
  Command-line switch for trimming whitespace in templates.
  `protected static final String`
  `SWITCH_URI_BASE`
  Command-line switch for setting the URI base.
  `protected static final String`
  `SWITCH_URI_ROOT`
  Command-line switch for setting the URI root.
  `protected static final String`
  `SWITCH_VALIDATE_TLD`
  Command-line switch for validating TLD files.
  `protected static final String`
  `SWITCH_VALIDATE_XML`
  Command-line switch for validating XML files.
  `protected static final String`
  `SWITCH_VERBOSE`
  Command-line switch for enabling verbose output.
  `protected static final String`
  `SWITCH_WEBAPP_FRG`
  Command-line switch for generating a web-fragment.xml file.
  `protected static final String`
  `SWITCH_WEBAPP_INC`
  Command-line switch for generating a web.xml include file.
  `protected static final String`
  `SWITCH_WEBAPP_XML`
  Command-line switch for generating a complete web.xml file.
  `protected static final String`
  `SWITCH_WEBAPP_XML_ENCODING`
  Command-line switch for setting the web.xml encoding.
  `protected static final String`
  `SWITCH_XPOWERED_BY`
  Command-line switch for enabling X-Powered-By header.
  `protected TagPluginManager`
  `tagPluginManager`
  Manager for tag plugin optimizations.
  `protected String`
  `targetClassName`
  Target class name for a single generated servlet.
  `protected String`
  `targetPackage`
  Target package for generated servlet classes.
  `protected int`
  `threadCount`
  The number of threads to use; default is one per core
  `protected TldCache`
  `tldCache`
  Cache for the TLD locations
  `protected TrimSpacesOption`
  `trimSpaces`
  Option for trimming whitespace in template text.
  `protected String`
  `uriBase`
  Base URI for the web application.
  `protected String`
  `uriRoot`
  Root directory of the web application.
  `protected String`
  `useNonstandardTagOptimizations`
  Configuration for non-standard tag optimizations.
  `protected boolean`
  `validateTld`
  Flag to validate TLD files.
  `protected boolean`
  `validateXml`
  Flag to validate XML files.
  `protected boolean`
  `verbose`
  Flag for verbose output.
  `protected String`
  `webxmlEncoding`
  Character encoding for generated web.xml files.
  `protected String`
  `webxmlFile`
  Output file path for generated web.xml content.
  `protected int`
  `webxmlLevel`
  Level of web.xml generation (include, fragment, or complete).
  `protected boolean`
  `xpoweredBy`
  Flag to include X-Powered-By response header.

  ### Fields inherited from class org.apache.tools.ant.Task

  `target, taskName, taskType, wrapper`

  ### Fields inherited from class org.apache.tools.ant.ProjectComponent

  `description, location, project`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `JspC()`
  Creates a new JspC instance.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected void`
  `addExtension(String extension)`
  Adds the given file extension to the list of extensions handled as JSP files.
  `protected void`
  `completeWebXml()`
  Writes the accumulated servlet declarations and mappings to the web.xml output, then closes the writer.
  `void`
  `execute()`
  Executes the compilation.
  `void`
  `generateWebMapping(String file, JspCompilationContext clctxt)`
  Adds servlet declaration and mapping for the JSP page servlet to the generated web.xml fragment.
  `boolean`
  `genStringAsCharArray()`
  Indicates whether text strings are to be generated as char arrays.
  `Map<String, TagLibraryInfo>`
  `getCache()`
  The web-application wide cache for the TagLibraryInfo tag library descriptors, used if `Options.isCaching()` returns `true`.
  `int`
  `getCheckInterval()`
  In JspC this always returns `0`.
  `boolean`
  `getClassDebugInfo()`
  Returns whether debug information is included in compiled classes.
  `String`
  `getClassPath()`
  Returns the classpath used by the compiler when compiling generated Servlets.
  `String`
  `getCompiler()`
  Compiler to use.
  `String`
  `getCompilerClassName()`
  Returns the fully qualified class name of the Jasper Java compiler implementation to use.
  `String`
  `getCompilerSourceVM()`
  Returns the source Java VM version for the compiler, such as 1.8.
  `String`
  `getCompilerTargetVM()`
  Returns the target Java VM version for the compiler, such as 1.8.
  `boolean`
  `getDevelopment()`
  In JspC this always returns `false`.
  `boolean`
  `getDisplaySourceFragment()`
  In JspC this always returns `true`.
  `boolean`
  `getErrorOnUseBeanInvalidClassAttribute()`
  Returns true if Jasper issues a compilation error instead of a runtime Instantiation error if the class attribute specified in useBean action is invalid.
  `List<String>`
  `getExtensions()`
  Returns the list of file extensions that are treated as JSP files.
  `boolean`
  `getFailOnError()`
  Returns whether an exception will be thrown in case of a compilation error.
  `boolean`
  `getFork()`
  The boolean flag to tell Ant whether to fork JSP page compilations.
  `boolean`
  `getGeneratedJavaAddTimestamp()`
  Should the container include the time the file was generated in the comments at the start of a Java file generated from a JSP or tag.
  `String`
  `getJavaEncoding()`
  Returns the encoding to use for java files.
  `JspConfig`
  `getJspConfig()`
  Returns the JSP configuration information as specified in the web.xml deployment descriptor.
  `int`
  `getJspIdleTimeout()`
  Returns the idle timeout for JSP unloading.
  `boolean`
  `getKeepGenerated()`
  In JspC this always returns `true`.
  `boolean`
  `getMappedFile()`
  Returns whether HTML mapped Servlets are supported.
  `int`
  `getMaxLoadedJsps()`
  The maximum number of loaded jsps per web-application.
  `int`
  `getModificationTestInterval()`
  In JspC this always returns `0`.
  `boolean`
  `getQuoteAttributeEL()`
  Returns whether quoting rules from JSP.1.6 are applied to EL expressions in attributes.
  `boolean`
  `getRecompileOnFail()`
  In JspC this always returns `false`.
  `File`
  `getScratchDir()`
  Returns the scratch directory used as the work folder for temporary compilation files.
  `boolean`
  `getStrictQuoteEscaping()`
  Returns whether strict quote escaping is enabled for scriplet expressions.
  `TagPluginManager`
  `getTagPluginManager()`
  Returns the Tag Plugin Manager used for applying tag plugins during JSP compilation.
  `int`
  `getThreadCount()`
  Returns the number of threads to use for compilation.
  `TldCache`
  `getTldCache()`
  The cache that maps URIs, resource paths and parsed TLD files for the various tag libraries 'exposed' by the web application.
  `TrimSpacesOption`
  `getTrimSpaces()`
  Returns the option for trimming whitespace-only template text.
  `String`
  `getUseNonstandardTagOptimizations()`
  A string containing a comma-separated list of names to which custom tag implementations should be applied.
  `protected ClassLoader`
  `initClassLoader()`
  Initializes the classloader as/if needed for the given compilation context.
  `protected void`
  `initServletContext(ClassLoader classLoader)`
  Initializes the servlet context, TLD scanner, TLD cache, runtime context, JSP config, and tag plugin manager for compilation.
  `protected void`
  `initTldScanner(JspCServletContext context, ClassLoader classLoader)`
  Initializes the TLD scanner for the given servlet context and class loader.
  `protected void`
  `initWebXml()`
  Initializes the web.xml output writers based on the configured generation level.
  `boolean`
  `isBlockExternal()`
  Returns whether external entity blocking is enabled.
  `boolean`
  `isCaching()`
  Returns whether caching is enabled for compiled JSP pages, used for precompilation scenarios.
  `boolean`
  `isPoolingEnabled()`
  Returns whether tag handler pooling is enabled for improved performance.
  `boolean`
  `isSmapDumped()`
  This setting is ignored if suppressSmap() is `true`.
  `boolean`
  `isSmapSuppressed()`
  Returns whether generation of SMAP (Source Map for Debugging) information is suppressed.
  `boolean`
  `isValidateTld()`
  Returns whether TLD validation is enabled.
  `boolean`
  `isValidateXml()`
  Returns whether XML validation is enabled.
  `boolean`
  `isXpoweredBy()`
  Returns whether the X-Powered-By response header should be generated in HTTP responses.
  `protected void`
  `locateUriRoot(File f)`
  Find the WEB-INF dir by looking up in the directory tree.
  `static void`
  `main(String[] arg)`
  Entry point for the JspC command-line tool.
  `protected void`
  `mergeIntoWebXml()`
  Include the generated web.xml inside the webapp's web.xml.
  `protected TldScanner`
  `newTldScanner(JspCServletContext context, boolean namespaceAware, boolean validate, boolean blockExternal)`
  Creates a new TLD scanner instance.
  `protected String`
  `nextArg()`
  Returns the next command-line argument.
  `protected String`
  `nextFile()`
  Returns the next file argument from the command-line.
  `protected void`
  `processFile(String file)`
  Processes a single JSP file, compiling it and generating the web.xml mapping.
  `protected File`
  `resolveFile(String s)`
  Resolves the relative or absolute pathname correctly in both Ant and command-line situations.
  `void`
  `scanFiles()`
  Locate all jsp files in the webapp.
  `void`
  `setAddWebXmlMappings(boolean b)`
  Sets the option to merge generated web.xml fragment into the WEB-INF/web.xml file of the web application that we were processing.
  `void`
  `setArgs(String[] arg)`
  Apply command-line arguments.
  `void`
  `setBlockExternal(boolean b)`
  Sets the option to block external entities during XML parsing.
  `void`
  `setCaching(boolean caching)`
  Sets the option to enable caching.
  `void`
  `setClassDebugInfo(boolean b)`
  Sets the option to include debug information in compiled class.
  `void`
  `setClassName(String p)`
  Class name of the generated file ( without package ).
  `void`
  `setClassPath(String s)`
  Sets the classpath used while compiling the servlets generated from JSP files
  `void`
  `setCompile(boolean b)`
  Sets the compile flag.
  `void`
  `setCompiler(String c)`
  Sets the option to determine what compiler to use.
  `void`
  `setCompilerSourceVM(String vm)`
  Sets the compiler source VM.
  `void`
  `setCompilerTargetVM(String vm)`
  Sets the compiler target VM.
  `void`
  `setErrorOnUseBeanInvalidClassAttribute(boolean b)`
  Sets the option to issue a compilation error if the class attribute specified in useBean action is invalid.
  `void`
  `setFailOnError(boolean b)`
  Sets the option that throws an exception in case of a compilation error.
  `void`
  `setFork(boolean fork)`
  Sets the option to fork a separate process for compilation.
  `void`
  `setGenStringAsCharArray(boolean genStringAsCharArray)`
  Determines whether text strings are to be generated as char arrays, which improves performance in some cases.
  `void`
  `setJavaEncoding(String encodingName)`
  Sets the encoding to use for java files.
  `void`
  `setJspFiles(String jspFiles)`
  Parses comma-separated list of JSP files to be processed.
  `void`
  `setListErrors(boolean b)`
  Sets the option to list compilation errors.
  `void`
  `setMappedFile(boolean b)`
  Sets the option to use mapped file compilation.
  `void`
  `setOutputDir(String s)`
  Sets the output directory for generated files.
  `void`
  `setPackage(String p)`
  Sets the package name to be used for the generated servlet classes.
  `void`
  `setPoolingEnabled(boolean poolingEnabled)`
  Sets the option to enable the tag handler pooling.
  `void`
  `setQuoteAttributeEL(boolean b)`
  Sets the option to quote EL expressions in attributes.
  `void`
  `setSmapDumped(boolean smapDumped)`
  Sets smapDumped flag.
  `void`
  `setSmapSuppressed(boolean smapSuppressed)`
  Sets smapSuppressed flag.
  `void`
  `setStrictQuoteEscaping(boolean b)`
  Sets the option for strict quote escaping in attributes.
  `void`
  `setThreadCount(String threadCount)`
  Sets the number of threads to use for compilation.
  `void`
  `setTrimSpaces(boolean trimSpaces)`
  Sets the trim spaces option for backwards compatibility with 8.5.x.
  `void`
  `setTrimSpaces(String ts)`
  Sets the option to control handling of template text that consists entirely of whitespace.
  `void`
  `setTrimSpaces(TrimSpacesOption trimSpaces)`
  Sets the option to control handling of template text that consists entirely of whitespace.
  `void`
  `setUriroot(String s)`
  Base dir for the webapp.
  `void`
  `setUseNonstandardTagOptimizations(String useNonstandardTagOptimizations)`
  Sets the set of custom tags to use nonstandard optimizations.
  `void`
  `setValidateTld(boolean b)`
  Sets the option to validate TLD files.
  `void`
  `setValidateXml(boolean b)`
  Sets the option to validate XML files.
  `void`
  `setVerbose(int level)`
  Sets the verbosity level.
  `void`
  `setWebFragmentXml(String s)`
  File where we generate a complete web-fragment.xml with the class definitions.
  `void`
  `setWebXml(String s)`
  File where we generate a complete web.xml with the class definitions.
  `void`
  `setWebXmlEncoding(String encoding)`
  Sets the encoding to be used to read and write web.xml files.
  `void`
  `setWebXmlInclude(String s)`
  File where we generate configuration with the class definitions to be included in a web.xml file.
  `void`
  `setXpoweredBy(boolean xpoweredBy)`
  Sets the option to enable generation of X-Powered-By response header.

  ### Methods inherited from class org.apache.tools.ant.Task

  `bindToOwner, getOwningTarget, getRuntimeConfigurableWrapper, getTaskName, getTaskType, getWrapper, handleErrorFlush, handleErrorOutput, handleFlush, handleInput, handleOutput, init, isInvalid, log, log, log, log, maybeConfigure, perform, reconfigure, setOwningTarget, setRuntimeConfigurableWrapper, setTaskName, setTaskType`

  ### Methods inherited from class org.apache.tools.ant.ProjectComponent

  `clone, getDescription, getLocation, getProject, setDescription, setLocation, setProject`

  ### Methods inherited from class Object

  `equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface Options

  `getGeneratedJspPackageName, getGeneratedTagFilePackageName, getJspPrecompilationQueryParameter, getJspServletBase, getPoolTagsWithExtends, getServiceMethodName, getServletClasspathAttribute, getStrictGetProperty, getStrictWhitespace, getTempVariableNamePrefix, getUseInstanceManagerForTags, getVariableForExpressionFactory, getVariableForInstanceManager`

- ## Field Details

  - ### SWITCH_VERBOSE

    protected static final String SWITCH_VERBOSE
    Command-line switch for enabling verbose output.
    See Also:
      - Constant Field Values

  - ### SWITCH_HELP

    protected static final String SWITCH_HELP
    Command-line switch for displaying help.
    See Also:
      - Constant Field Values

  - ### SWITCH_OUTPUT_DIR

    protected static final String SWITCH_OUTPUT_DIR
    Command-line switch for setting the output directory.
    See Also:
      - Constant Field Values

  - ### SWITCH_PACKAGE_NAME

    protected static final String SWITCH_PACKAGE_NAME
    Command-line switch for setting the package name.
    See Also:
      - Constant Field Values

  - ### SWITCH_CACHE

    protected static final String SWITCH_CACHE
    Command-line switch for enabling/disabling caching.
    See Also:
      - Constant Field Values

  - ### SWITCH_CLASS_NAME

    protected static final String SWITCH_CLASS_NAME
    Command-line switch for setting the generated class name.
    See Also:
      - Constant Field Values

  - ### SWITCH_FULL_STOP

    protected static final String SWITCH_FULL_STOP
    Command-line switch indicating the end of options.
    See Also:
      - Constant Field Values

  - ### SWITCH_COMPILE

    protected static final String SWITCH_COMPILE
    Command-line switch for compiling to class files.
    See Also:
      - Constant Field Values

  - ### SWITCH_FAIL_FAST

    protected static final String SWITCH_FAIL_FAST
    Command-line switch for failing on first error.
    See Also:
      - Constant Field Values

  - ### SWITCH_SOURCE

    protected static final String SWITCH_SOURCE
    Command-line switch for setting the Java source version.
    See Also:
      - Constant Field Values

  - ### SWITCH_TARGET

    protected static final String SWITCH_TARGET
    Command-line switch for setting the Java target version.
    See Also:
      - Constant Field Values

  - ### SWITCH_URI_BASE

    protected static final String SWITCH_URI_BASE
    Command-line switch for setting the URI base.
    See Also:
      - Constant Field Values

  - ### SWITCH_URI_ROOT

    protected static final String SWITCH_URI_ROOT
    Command-line switch for setting the URI root.
    See Also:
      - Constant Field Values

  - ### SWITCH_FILE_WEBAPP

    protected static final String SWITCH_FILE_WEBAPP
    Command-line switch for setting the web application root.
    See Also:
      - Constant Field Values

  - ### SWITCH_WEBAPP_INC

    protected static final String SWITCH_WEBAPP_INC
    Command-line switch for generating a web.xml include file.
    See Also:
      - Constant Field Values

  - ### SWITCH_WEBAPP_FRG

    protected static final String SWITCH_WEBAPP_FRG
    Command-line switch for generating a web-fragment.xml file.
    See Also:
      - Constant Field Values

  - ### SWITCH_WEBAPP_XML

    protected static final String SWITCH_WEBAPP_XML
    Command-line switch for generating a complete web.xml file.
    See Also:
      - Constant Field Values

  - ### SWITCH_WEBAPP_XML_ENCODING

    protected static final String SWITCH_WEBAPP_XML_ENCODING
    Command-line switch for setting the web.xml encoding.
    See Also:
      - Constant Field Values

  - ### SWITCH_ADD_WEBAPP_XML_MAPPINGS

    protected static final String SWITCH_ADD_WEBAPP_XML_MAPPINGS
    Command-line switch for adding web.xml servlet mappings.
    See Also:
      - Constant Field Values

  - ### SWITCH_MAPPED

    protected static final String SWITCH_MAPPED
    Command-line switch for using mapped file compilation.
    See Also:
      - Constant Field Values

  - ### SWITCH_XPOWERED_BY

    protected static final String SWITCH_XPOWERED_BY
    Command-line switch for enabling X-Powered-By header.
    See Also:
      - Constant Field Values

  - ### SWITCH_TRIM_SPACES

    protected static final String SWITCH_TRIM_SPACES
    Command-line switch for trimming whitespace in templates.
    See Also:
      - Constant Field Values

  - ### SWITCH_CLASSPATH

    protected static final String SWITCH_CLASSPATH
    Command-line switch for setting the classpath.
    See Also:
      - Constant Field Values

  - ### SWITCH_DIE

    protected static final String SWITCH_DIE
    Command-line switch prefix for setting the exit code on error.
    See Also:
      - Constant Field Values

  - ### SWITCH_POOLING

    protected static final String SWITCH_POOLING
    Command-line switch for enabling tag handler pooling.
    See Also:
      - Constant Field Values

  - ### SWITCH_ENCODING

    protected static final String SWITCH_ENCODING
    Command-line switch for setting the Java file encoding.
    See Also:
      - Constant Field Values

  - ### SWITCH_SMAP

    protected static final String SWITCH_SMAP
    Command-line switch for generating SMAP files.
    See Also:
      - Constant Field Values

  - ### SWITCH_DUMP_SMAP

    protected static final String SWITCH_DUMP_SMAP
    Command-line switch for dumping SMAP files.
    See Also:
      - Constant Field Values

  - ### SWITCH_VALIDATE_TLD

    protected static final String SWITCH_VALIDATE_TLD
    Command-line switch for validating TLD files.
    See Also:
      - Constant Field Values

  - ### SWITCH_VALIDATE_XML

    protected static final String SWITCH_VALIDATE_XML
    Command-line switch for validating XML files.
    See Also:
      - Constant Field Values

  - ### SWITCH_NO_BLOCK_EXTERNAL

    protected static final String SWITCH_NO_BLOCK_EXTERNAL
    Command-line switch for disabling external entity blocking.
    See Also:
      - Constant Field Values

  - ### SWITCH_NO_STRICT_QUOTE_ESCAPING

    protected static final String SWITCH_NO_STRICT_QUOTE_ESCAPING
    Command-line switch for disabling strict quote escaping.
    See Also:
      - Constant Field Values

  - ### SWITCH_QUOTE_ATTRIBUTE_EL

    protected static final String SWITCH_QUOTE_ATTRIBUTE_EL
    Command-line switch for enabling EL quoting in attributes.
    See Also:
      - Constant Field Values

  - ### SWITCH_NO_QUOTE_ATTRIBUTE_EL

    protected static final String SWITCH_NO_QUOTE_ATTRIBUTE_EL
    Command-line switch for disabling EL quoting in attributes.
    See Also:
      - Constant Field Values

  - ### SWITCH_THREAD_COUNT

    protected static final String SWITCH_THREAD_COUNT
    Command-line switch for setting the thread count.
    See Also:
      - Constant Field Values

  - ### SHOW_SUCCESS

    protected static final String SHOW_SUCCESS
    Command-line switch for showing success messages.
    See Also:
      - Constant Field Values

  - ### LIST_ERRORS

    protected static final String LIST_ERRORS
    Command-line switch for listing errors.
    See Also:
      - Constant Field Values

  - ### INC_WEBXML

    protected static final int INC_WEBXML
    Web.xml generation level for include fragment.
    See Also:
      - Constant Field Values

  - ### FRG_WEBXML

    protected static final int FRG_WEBXML
    Web.xml generation level for web-fragment.
    See Also:
      - Constant Field Values

  - ### ALL_WEBXML

    protected static final int ALL_WEBXML
    Web.xml generation level for complete web.xml.
    See Also:
      - Constant Field Values

  - ### DEFAULT_DIE_LEVEL

    protected static final int DEFAULT_DIE_LEVEL
    Default exit code level when a compilation error occurs.
    See Also:
      - Constant Field Values

  - ### NO_DIE_LEVEL

    protected static final int NO_DIE_LEVEL
    Exit code level indicating no exit on error.
    See Also:
      - Constant Field Values

  - ### insertBefore

    protected static final Set<String> insertBefore
    Set of XML elements before which generated content should be inserted.

  - ### classPath

    protected String classPath
    Classpath for compiling generated servlets.

  - ### loader

    protected ClassLoader loader
    ClassLoader used for JSP compilation.

  - ### trimSpaces

    protected TrimSpacesOption trimSpaces
    Option for trimming whitespace in template text.

  - ### genStringAsCharArray

    protected boolean genStringAsCharArray
    Flag to generate string literals as char arrays.

  - ### validateTld

    protected boolean validateTld
    Flag to validate TLD files.

  - ### validateXml

    protected boolean validateXml
    Flag to validate XML files.

  - ### blockExternal

    protected boolean blockExternal
    Flag to block external entities during XML parsing.

  - ### strictQuoteEscaping

    protected boolean strictQuoteEscaping
    Flag for strict quote escaping in attributes.

  - ### quoteAttributeEL

    protected boolean quoteAttributeEL
    Flag to quote EL expressions in attributes.

  - ### xpoweredBy

    protected boolean xpoweredBy
    Flag to include X-Powered-By response header.

  - ### mappedFile

    protected boolean mappedFile
    Flag to use mapped file compilation.

  - ### poolingEnabled

    protected boolean poolingEnabled
    Flag to enable tag handler pooling.

  - ### scratchDir

    protected File scratchDir
    Scratch directory for generated files.

  - ### targetPackage

    protected String targetPackage
    Target package for generated servlet classes.

  - ### targetClassName

    protected String targetClassName
    Target class name for a single generated servlet.

  - ### uriBase

    protected String uriBase
    Base URI for the web application.

  - ### uriRoot

    protected String uriRoot
    Root directory of the web application.

  - ### dieLevel

    protected int dieLevel
    Exit code level on compilation error.

  - ### helpNeeded

    protected boolean helpNeeded
    Flag indicating help was requested.

  - ### compile

    protected boolean compile
    Flag to compile JSPs to class files.

  - ### failFast

    protected boolean failFast
    Flag to stop on first compilation error.

  - ### smapSuppressed

    protected boolean smapSuppressed
    Flag to suppress SMAP file generation.

  - ### smapDumped

    protected boolean smapDumped
    Flag to dump SMAP files.

  - ### caching

    protected boolean caching
    Flag to enable tag handler caching.

  - ### cache

    protected final Map<String, TagLibraryInfo> cache
    Cache for TagLibraryInfo objects.

  - ### compiler

    protected String compiler
    Compiler implementation to use.

  - ### compilerTargetVM

    protected String compilerTargetVM
    Target Java VM version for compilation.

  - ### compilerSourceVM

    protected String compilerSourceVM
    Source Java version for compilation.

  - ### classDebugInfo

    protected boolean classDebugInfo
    Flag to include debug information in compiled classes.

  - ### failOnError

    protected boolean failOnError
    Throw an exception if there's a compilation error, or swallow it. Default is true to preserve old behavior.

  - ### extensions

    protected List<String> extensions
    The file extensions to be handled as JSP files. Default list is .jsp and .jspx.

  - ### pages

    protected final List<String> pages
    The pages.

  - ### errorOnUseBeanInvalidClassAttribute

    protected boolean errorOnUseBeanInvalidClassAttribute
    Needs better documentation, this data member does. True by default.

  - ### javaEncoding

    protected String javaEncoding
    The java file encoding. Default is UTF-8. Added per bugzilla 19622.

  - ### threadCount

    protected int threadCount
    The number of threads to use; default is one per core

  - ### webxmlFile

    protected String webxmlFile
    Output file path for generated web.xml content.

  - ### webxmlLevel

    protected int webxmlLevel
    Level of web.xml generation (include, fragment, or complete).

  - ### webxmlEncoding

    protected String webxmlEncoding
    Character encoding for generated web.xml files.

  - ### addWebXmlMappings

    protected boolean addWebXmlMappings
    Flag to merge generated mappings into existing web.xml.

  - ### mapout

    protected Writer mapout
    Writer for the generated web.xml output file.

  - ### servletout

    protected CharArrayWriter servletout
    Buffer for generated servlet declarations.

  - ### mappingout

    protected CharArrayWriter mappingout
    Buffer for generated servlet-mapping declarations.

  - ### context

    protected JspCServletContext context
    The servlet context.

  - ### rctxt

    protected JspRuntimeContext rctxt
    The runtime context. Maintain a dummy JspRuntimeContext for compiling tag files.

  - ### tldCache

    protected TldCache tldCache
    Cache for the TLD locations

  - ### jspConfig

    protected JspConfig jspConfig
    JSP configuration parsed from web.xml.

  - ### tagPluginManager

    protected TagPluginManager tagPluginManager
    Manager for tag plugin optimizations.

  - ### scanner

    protected TldScanner scanner
    Scanner for TLD files in the web application.

  - ### verbose

    protected boolean verbose
    Flag for verbose output.

  - ### listErrors

    protected boolean listErrors
    Flag to list compilation errors.

  - ### showSuccess

    protected boolean showSuccess
    Flag to show success messages.

  - ### argPos

    protected int argPos
    Current position in the command-line arguments array.

  - ### fullstop

    protected boolean fullstop
    Flag indicating the full stop switch was encountered.

  - ### args

    protected String[] args
    Command-line arguments passed to JspC.

  - ### useNonstandardTagOptimizations

    protected String useNonstandardTagOptimizations
    Configuration for non-standard tag optimizations.

- ## Constructor Details

  - ### JspC

    public JspC()
    Creates a new JspC instance.

- ## Method Details

  - ### main

    public static void main(String[] arg)
    Entry point for the JspC command-line tool.
    Parameters:
      `arg` - Command-line arguments

  - ### setArgs

    public void setArgs(String[] arg) throws JasperException
    Apply command-line arguments.
    Parameters:
      `arg` - The arguments
    Throws:
      `JasperException` - JSPC error

  - ### getKeepGenerated

    public boolean getKeepGenerated()
    In JspC this always returns `true`. Returns whether the generated Java source files should be kept after compilation.
    Specified by:
      `getKeepGenerated` in interface `Options`
    Returns:
      `true` to keep the generated source

  - ### getTrimSpaces

    public TrimSpacesOption getTrimSpaces()
    Description copied from interface: `Options`
    Returns the option for trimming whitespace-only template text.
    Specified by:
      `getTrimSpaces` in interface `Options`
    Returns:
      `TrimSpacesOption.TRUE` to remove template text that consists only of whitespace from the output completely, `TrimSpacesOption.SINGLE` to replace such template text with a single space, `TrimSpacesOption.FALSE` to leave such template text unchanged or `TrimSpacesOption.EXTENDED` to remove template text that consists only of whitespace and to replace any sequence of whitespace and new lines within template text with a single new line.

  - ### setTrimSpaces

    public void setTrimSpaces(TrimSpacesOption trimSpaces)
    Sets the option to control handling of template text that consists entirely of whitespace.
    Parameters:
      `trimSpaces` - New value

  - ### setTrimSpaces

    public void setTrimSpaces(String ts)
    Sets the option to control handling of template text that consists entirely of whitespace.
    Parameters:
      `ts` - New value

  - ### setTrimSpaces

    public void setTrimSpaces(boolean trimSpaces)
    Sets the trim spaces option for backwards compatibility with 8.5.x.
    Parameters:
      `trimSpaces` - New value

  - ### isPoolingEnabled

    public boolean isPoolingEnabled()
    Description copied from interface: `Options`
    Returns whether tag handler pooling is enabled for improved performance.
    Specified by:
      `isPoolingEnabled` in interface `Options`
    Returns:
      `true` if tag handler pooling is enabled, `false` otherwise.

  - ### setPoolingEnabled

    public void setPoolingEnabled(boolean poolingEnabled)
    Sets the option to enable the tag handler pooling.
    Parameters:
      `poolingEnabled` - New value

  - ### isXpoweredBy

    public boolean isXpoweredBy()
    Description copied from interface: `Options`
    Returns whether the X-Powered-By response header should be generated in HTTP responses.
    Specified by:
      `isXpoweredBy` in interface `Options`
    Returns:
      `true` to generate a X-Powered-By response header.

  - ### setXpoweredBy

    public void setXpoweredBy(boolean xpoweredBy)
    Sets the option to enable generation of X-Powered-By response header.
    Parameters:
      `xpoweredBy` - New value

  - ### getDisplaySourceFragment

    public boolean getDisplaySourceFragment()
    In JspC this always returns `true`. Returns whether a source fragment should be included in exception messages for debugging.
    Specified by:
      `getDisplaySourceFragment` in interface `Options`
    Returns:
      `true` to include a source fragment in exception messages.

  - ### getMaxLoadedJsps

    public int getMaxLoadedJsps()
    Description copied from interface: `Options`
    The maximum number of loaded jsps per web-application. If there are more jsps loaded, they will be unloaded. If unset or less than 0, no jsps are unloaded.
    Specified by:
      `getMaxLoadedJsps` in interface `Options`
    Returns:
      The JSP count

  - ### getJspIdleTimeout

    public int getJspIdleTimeout()
    Description copied from interface: `Options`
    Returns the idle timeout for JSP unloading.
    Specified by:
      `getJspIdleTimeout` in interface `Options`
    Returns:
      the idle time in seconds after which a JSP is unloaded. If unset or less or equal than 0, no jsps are unloaded.

  - ### getErrorOnUseBeanInvalidClassAttribute

    public boolean getErrorOnUseBeanInvalidClassAttribute()
    Description copied from interface: `Options`
    Returns true if Jasper issues a compilation error instead of a runtime Instantiation error if the class attribute specified in useBean action is invalid.
    Specified by:
      `getErrorOnUseBeanInvalidClassAttribute` in interface `Options`
    Returns:
      `true` to get an error

  - ### setErrorOnUseBeanInvalidClassAttribute

    public void setErrorOnUseBeanInvalidClassAttribute(boolean b)
    Sets the option to issue a compilation error if the class attribute specified in useBean action is invalid.
    Parameters:
      `b` - New value

  - ### getMappedFile

    public boolean getMappedFile()
    Description copied from interface: `Options`
    Returns whether HTML mapped Servlets are supported.
    Specified by:
      `getMappedFile` in interface `Options`
    Returns:
      `true` if HTML mapped Servlets are supported.

  - ### setMappedFile

    public void setMappedFile(boolean b)
    Sets the option to use mapped file compilation.
    Parameters:
      `b` - New value

  - ### setClassDebugInfo

    public void setClassDebugInfo(boolean b)
    Sets the option to include debug information in compiled class.
    Parameters:
      `b` - New value

  - ### getClassDebugInfo

    public boolean getClassDebugInfo()
    Description copied from interface: `Options`
    Returns whether debug information is included in compiled classes.
    Specified by:
      `getClassDebugInfo` in interface `Options`
    Returns:
      `true` if debug information in included in compiled classes.

  - ### isCaching

    public boolean isCaching()
    Description copied from interface: `Options`
    Returns whether caching is enabled for compiled JSP pages, used for precompilation scenarios.
    Specified by:
      `isCaching` in interface `Options`
    Returns:
      `true` if caching is enabled (used for precompilation).

  - ### setCaching

    public void setCaching(boolean caching)
    Sets the option to enable caching.
    Parameters:
      `caching` - New value
    See Also:
      - `Options.isCaching()`

  - ### getCache

    public Map<String, TagLibraryInfo> getCache()
    Description copied from interface: `Options`
    The web-application wide cache for the TagLibraryInfo tag library descriptors, used if `Options.isCaching()` returns `true`.

    Using this cache avoids the cost of repeating the parsing of a tag library descriptor XML file (performed by TagLibraryInfoImpl.parseTLD).

    Specified by:
      `getCache` in interface `Options`
    Returns:
      the Map(String uri, TagLibraryInfo tld) instance.

  - ### getCheckInterval

    public int getCheckInterval()
    In JspC this always returns `0`. Returns the interval in seconds at which the background compile thread checks for modified JSP files.
    Specified by:
      `getCheckInterval` in interface `Options`
    Returns:
      background compile thread check interval in seconds

  - ### getModificationTestInterval

    public int getModificationTestInterval()
    In JspC this always returns `0`. Returns the interval in seconds between modification tests for JSP files.
    Specified by:
      `getModificationTestInterval` in interface `Options`
    Returns:
      modification test interval in seconds.

  - ### getRecompileOnFail

    public boolean getRecompileOnFail()
    In JspC this always returns `false`. Returns whether the JSP engine should attempt re-compilation when an initial compilation fails.
    Specified by:
      `getRecompileOnFail` in interface `Options`
    Returns:
      `true` if re-compile will occur on a failure.

  - ### getDevelopment

    public boolean getDevelopment()
    In JspC this always returns `false`. Main development flag, which enables detailed error reports with sources, as well automatic recompilation of JSPs and tag files. This setting should usually be `false` when running in production.
    Specified by:
      `getDevelopment` in interface `Options`
    Returns:
      `true` if Jasper is in development mode

  - ### isSmapSuppressed

    public boolean isSmapSuppressed()
    Description copied from interface: `Options`
    Returns whether generation of SMAP (Source Map for Debugging) information is suppressed.
    Specified by:
      `isSmapSuppressed` in interface `Options`
    Returns:
      `true` to suppress generation of SMAP info for JSR45 debugging.

  - ### setSmapSuppressed

    public void setSmapSuppressed(boolean smapSuppressed)
    Sets smapSuppressed flag.
    Parameters:
      `smapSuppressed` - New value

  - ### isSmapDumped

    public boolean isSmapDumped()
    Description copied from interface: `Options`
    This setting is ignored if suppressSmap() is `true`.
    Specified by:
      `isSmapDumped` in interface `Options`
    Returns:
      `true` to write SMAP info for JSR45 debugging to a file.

  - ### setSmapDumped

    public void setSmapDumped(boolean smapDumped)
    Sets smapDumped flag.
    Parameters:
      `smapDumped` - New value
    See Also:
      - `Options.isSmapDumped()`

  - ### setGenStringAsCharArray

    public void setGenStringAsCharArray(boolean genStringAsCharArray)
    Determines whether text strings are to be generated as char arrays, which improves performance in some cases.
    Parameters:
      `genStringAsCharArray` - true if text strings are to be generated as char arrays, false otherwise

  - ### genStringAsCharArray

    public boolean genStringAsCharArray()
    Description copied from interface: `Options`
    Indicates whether text strings are to be generated as char arrays.
    Specified by:
      `genStringAsCharArray` in interface `Options`
    Returns:
      `true` if text strings are to be generated as char arrays, `false` otherwise

  - ### getScratchDir

    public File getScratchDir()
    Description copied from interface: `Options`
    Returns the scratch directory used as the work folder for temporary compilation files.
    Specified by:
      `getScratchDir` in interface `Options`
    Returns:
      the work folder

  - ### getCompiler

    public String getCompiler()
    Description copied from interface: `Options`
    Compiler to use.

    If `null` (the default), the java compiler from Eclipse JDT project, bundled with Tomcat, will be used. Otherwise, the `javac` task from Apache Ant will be used to call an external java compiler and the value of this option will be passed to it. See Apache Ant documentation for the possible values.

    Specified by:
      `getCompiler` in interface `Options`
    Returns:
      the compiler name

  - ### setCompiler

    public void setCompiler(String c)
    Sets the option to determine what compiler to use.
    Parameters:
      `c` - New value
    See Also:
      - `Options.getCompiler()`

  - ### getCompilerClassName

    public String getCompilerClassName()
    Description copied from interface: `Options`
    Returns the fully qualified class name of the Jasper Java compiler implementation to use.
    Specified by:
      `getCompilerClassName` in interface `Options`
    Returns:
      Jasper Java compiler class to use.

  - ### getCompilerTargetVM

    public String getCompilerTargetVM()
    Description copied from interface: `Options`
    Returns the target Java VM version for the compiler, such as 1.8.
    Specified by:
      `getCompilerTargetVM` in interface `Options`
    Returns:
      the compiler target VM, e.g. 1.8.

  - ### setCompilerTargetVM

    public void setCompilerTargetVM(String vm)
    Sets the compiler target VM.
    Parameters:
      `vm` - New value
    See Also:
      - `Options.getCompilerTargetVM()`

  - ### getCompilerSourceVM

    public String getCompilerSourceVM()
    Description copied from interface: `Options`
    Returns the source Java VM version for the compiler, such as 1.8.
    Specified by:
      `getCompilerSourceVM` in interface `Options`
    Returns:
      the compiler source VM, e.g. 1.8.

  - ### setCompilerSourceVM

    public void setCompilerSourceVM(String vm)
    Sets the compiler source VM.
    Parameters:
      `vm` - New value
    See Also:
      - `Options.getCompilerSourceVM()`

  - ### getTldCache

    public TldCache getTldCache()
    Description copied from interface: `Options`
    The cache that maps URIs, resource paths and parsed TLD files for the various tag libraries 'exposed' by the web application. A tag library is 'exposed' either explicitly in web.xml or implicitly via the uri tag in the TLD of a taglib deployed in a jar file (WEB-INF/lib).
    Specified by:
      `getTldCache` in interface `Options`
    Returns:
      the instance of the TldCache for the web-application.

  - ### getJavaEncoding

    public String getJavaEncoding()
    Returns the encoding to use for java files. The default is UTF-8.
    Specified by:
      `getJavaEncoding` in interface `Options`
    Returns:
      String The encoding

  - ### setJavaEncoding

    public void setJavaEncoding(String encodingName)
    Sets the encoding to use for java files.
    Parameters:
      `encodingName` - The name, e.g. "UTF-8"

  - ### getFork

    public boolean getFork()
    Description copied from interface: `Options`
    The boolean flag to tell Ant whether to fork JSP page compilations.

    Is used only when Jasper uses an external java compiler (wrapped through a `javac` Apache Ant task).

    Specified by:
      `getFork` in interface `Options`
    Returns:
      `true` to fork a process during compilation

  - ### setFork

    public void setFork(boolean fork)
    Sets the option to fork a separate process for compilation.
    Parameters:
      `fork` - New value

  - ### getClassPath

    public String getClassPath()
    Description copied from interface: `Options`
    Returns the classpath used by the compiler when compiling generated Servlets.
    Specified by:
      `getClassPath` in interface `Options`
    Returns:
      the classpath used to compile generated Servlets

  - ### setClassPath

    public void setClassPath(String s)
    Sets the classpath used while compiling the servlets generated from JSP files
    Parameters:
      `s` - New value

  - ### getExtensions

    public List<String> getExtensions()
    Returns the list of file extensions that are treated as JSP files.
    Returns:
      The list of extensions

  - ### addExtension

    protected void addExtension(String extension)
    Adds the given file extension to the list of extensions handled as JSP files.
    Parameters:
      `extension` - The extension to add, e.g. "myjsp"

  - ### setUriroot

    public void setUriroot(String s)
    Base dir for the webapp. Used to generate class names and resolve includes.
    Parameters:
      `s` - New value

  - ### setJspFiles

    public void setJspFiles(String jspFiles)
    Parses comma-separated list of JSP files to be processed. If the argument is null, nothing is done.

    Each file is interpreted relative to uriroot, unless it is absolute, in which case it must start with uriroot.

    Parameters:
      `jspFiles` - Comma-separated list of JSP files to be processed

  - ### setCompile

    public void setCompile(boolean b)
    Sets the compile flag.
    Parameters:
      `b` - Flag value

  - ### setVerbose

    public void setVerbose(int level)
    Sets the verbosity level. The actual number doesn't matter: if it's greater than zero, the verbose flag will be true.
    Parameters:
      `level` - Positive means verbose

  - ### setValidateTld

    public void setValidateTld(boolean b)
    Sets the option to validate TLD files.
    Parameters:
      `b` - New value

  - ### isValidateTld

    public boolean isValidateTld()
    Returns whether TLD validation is enabled.
    Returns:
      `true` if TLD validation is enabled

  - ### setValidateXml

    public void setValidateXml(boolean b)
    Sets the option to validate XML files.
    Parameters:
      `b` - New value

  - ### isValidateXml

    public boolean isValidateXml()
    Returns whether XML validation is enabled.
    Returns:
      `true` if XML validation is enabled

  - ### setBlockExternal

    public void setBlockExternal(boolean b)
    Sets the option to block external entities during XML parsing.
    Parameters:
      `b` - New value

  - ### isBlockExternal

    public boolean isBlockExternal()
    Returns whether external entity blocking is enabled.
    Returns:
      `true` if external entity blocking is enabled

  - ### setStrictQuoteEscaping

    public void setStrictQuoteEscaping(boolean b)
    Sets the option for strict quote escaping in attributes.
    Parameters:
      `b` - New value

  - ### getStrictQuoteEscaping

    public boolean getStrictQuoteEscaping()
    Description copied from interface: `Options`
    Returns whether strict quote escaping is enabled for scriplet expressions.
    Specified by:
      `getStrictQuoteEscaping` in interface `Options`
    Returns:
      `true` if the quote escaping required by section JSP.1.6 of the JSP specification should be applied to scriplet expression.

  - ### setQuoteAttributeEL

    public void setQuoteAttributeEL(boolean b)
    Sets the option to quote EL expressions in attributes.
    Parameters:
      `b` - New value

  - ### getQuoteAttributeEL

    public boolean getQuoteAttributeEL()
    Description copied from interface: `Options`
    Returns whether quoting rules from JSP.1.6 are applied to EL expressions in attributes.
    Specified by:
      `getQuoteAttributeEL` in interface `Options`
    Returns:
      `true` if EL expressions used within attributes should have the quoting rules in JSP.1.6 applied to the expression.

  - ### getThreadCount

    public int getThreadCount()
    Returns the number of threads to use for compilation.
    Returns:
      the thread count

  - ### setThreadCount

    public void setThreadCount(String threadCount)
    Sets the number of threads to use for compilation. Accepts an integer value or a multiplier suffix 'C' for cores (e.g., "2C" means twice the available processors).
    Parameters:
      `threadCount` - Thread count string

  - ### setListErrors

    public void setListErrors(boolean b)
    Sets the option to list compilation errors.
    Parameters:
      `b` - New value

  - ### setOutputDir

    public void setOutputDir(String s)
    Sets the output directory for generated files.
    Parameters:
      `s` - Output directory path

  - ### setPackage

    public void setPackage(String p)
    Sets the package name to be used for the generated servlet classes.
    Parameters:
      `p` - New value

  - ### setClassName

    public void setClassName(String p)
    Class name of the generated file ( without package ). Can only be used if a single file is converted. XXX Do we need this feature ?
    Parameters:
      `p` - New value

  - ### setWebXmlInclude

    public void setWebXmlInclude(String s)
    File where we generate configuration with the class definitions to be included in a web.xml file.
    Parameters:
      `s` - New value

  - ### setWebFragmentXml

    public void setWebFragmentXml(String s)
    File where we generate a complete web-fragment.xml with the class definitions.
    Parameters:
      `s` - New value

  - ### setWebXml

    public void setWebXml(String s)
    File where we generate a complete web.xml with the class definitions.
    Parameters:
      `s` - New value

  - ### setWebXmlEncoding

    public void setWebXmlEncoding(String encoding)
    Sets the encoding to be used to read and write web.xml files.

    If not specified, defaults to UTF-8.

    Parameters:
      `encoding` - Encoding, e.g. "UTF-8".

  - ### setAddWebXmlMappings

    public void setAddWebXmlMappings(boolean b)
    Sets the option to merge generated web.xml fragment into the WEB-INF/web.xml file of the web application that we were processing.
    Parameters:
      `b` - `true` to merge the fragment into the existing web.xml file of the processed web application ({uriroot}/WEB-INF/web.xml), `false` to keep the generated web.xml fragment

  - ### setFailOnError

    public void setFailOnError(boolean b)
    Sets the option that throws an exception in case of a compilation error.
    Parameters:
      `b` - New value

  - ### setUseNonstandardTagOptimizations

    public void setUseNonstandardTagOptimizations(String useNonstandardTagOptimizations)
    Sets the set of custom tags to use nonstandard optimizations.
    Parameters:
      `useNonstandardTagOptimizations` - which tags to override

  - ### getFailOnError

    public boolean getFailOnError()
    Returns whether an exception will be thrown in case of a compilation error.
    Returns:
      `true` if an exception will be thrown in case of a compilation error.

  - ### getJspConfig

    public JspConfig getJspConfig()
    Description copied from interface: `Options`
    Returns the JSP configuration information as specified in the web.xml deployment descriptor.
    Specified by:
      `getJspConfig` in interface `Options`
    Returns:
      JSP configuration information specified in web.xml.

  - ### getTagPluginManager

    public TagPluginManager getTagPluginManager()
    Description copied from interface: `Options`
    Returns the Tag Plugin Manager used for applying tag plugins during JSP compilation.
    Specified by:
      `getTagPluginManager` in interface `Options`
    Returns:
      a Tag Plugin Manager

  - ### getGeneratedJavaAddTimestamp

    public boolean getGeneratedJavaAddTimestamp()
    Should the container include the time the file was generated in the comments at the start of a Java file generated from a JSP or tag. Defaults to `true`.

    Hard-coded to `false` for pre-compiled code to enable repeatable builds.

    Specified by:
      `getGeneratedJavaAddTimestamp` in interface `Options`
    Returns:
      `true` to include the timestamp, otherwise don't include it

  - ### generateWebMapping

    public void generateWebMapping(String file, JspCompilationContext clctxt) throws IOException
    Adds servlet declaration and mapping for the JSP page servlet to the generated web.xml fragment.
    Parameters:
      `file` - Context-relative path to the JSP file, e.g. `/index.jsp`
      `clctxt` - Compilation context of the servlet
    Throws:
      `IOException` - An IO error occurred

  - ### mergeIntoWebXml

    protected void mergeIntoWebXml() throws IOException
    Include the generated web.xml inside the webapp's web.xml.
    Throws:
      `IOException` - An IO error occurred

  - ### processFile

    protected void processFile(String file) throws JasperException
    Processes a single JSP file, compiling it and generating the web.xml mapping.
    Parameters:
      `file` - Context-relative path to the JSP file
    Throws:
      `JasperException` - If a compilation error occurs

  - ### scanFiles

    public void scanFiles()
    Locate all jsp files in the webapp. Used if no explicit jsps are specified. Scan is performed via the ServletContext and will include any JSPs located in resource JARs.

  - ### execute

    public void execute()
    Executes the compilation.
    Overrides:
      `execute` in class `org.apache.tools.ant.Task`

  - ### nextArg

    protected String nextArg()
    Returns the next command-line argument.
    Returns:
      the next argument, or `null` if no more arguments

  - ### nextFile

    protected String nextFile()
    Returns the next file argument from the command-line.
    Returns:
      the next file argument, or `null` if no more arguments

  - ### initWebXml

    protected void initWebXml() throws JasperException
    Initializes the web.xml output writers based on the configured generation level.
    Throws:
      `JasperException` - If an I/O error occurs

  - ### completeWebXml

    protected void completeWebXml()
    Writes the accumulated servlet declarations and mappings to the web.xml output, then closes the writer.

  - ### initTldScanner

    protected void initTldScanner(JspCServletContext context, ClassLoader classLoader)
    Initializes the TLD scanner for the given servlet context and class loader.
    Parameters:
      `context` - The servlet context
      `classLoader` - The class loader to use

  - ### newTldScanner

    protected TldScanner newTldScanner(JspCServletContext context, boolean namespaceAware, boolean validate, boolean blockExternal)
    Creates a new TLD scanner instance.
    Parameters:
      `context` - The servlet context
      `namespaceAware` - Whether to enable namespace awareness
      `validate` - Whether to validate TLD files
      `blockExternal` - Whether to block external entities
    Returns:
      the new TLD scanner

  - ### initServletContext

    protected void initServletContext(ClassLoader classLoader) throws IOException, JasperException
    Initializes the servlet context, TLD scanner, TLD cache, runtime context, JSP config, and tag plugin manager for compilation.
    Parameters:
      `classLoader` - The class loader to use
    Throws:
      `IOException` - If an I/O error occurs
      `JasperException` - If a JSP error occurs

  - ### initClassLoader

    protected ClassLoader initClassLoader() throws IOException
    Initializes the classloader as/if needed for the given compilation context.
    Returns:
      the classloader that will be used
    Throws:
      `IOException` - If an error occurs

  - ### locateUriRoot

    protected void locateUriRoot(File f)
    Find the WEB-INF dir by looking up in the directory tree. This is used if no explicit docbase is set, but only files.
    Parameters:
      `f` - The path from which it will start looking

  - ### resolveFile

    protected File resolveFile(String s)
    Resolves the relative or absolute pathname correctly in both Ant and command-line situations. If Ant launched us, we should use the basedir of the current project to resolve relative paths. See Bugzilla 35571.
    Parameters:
      `s` - The file
    Returns:
      The file resolved

  - ### getUseNonstandardTagOptimizations

    public String getUseNonstandardTagOptimizations()
    Description copied from interface: `Options`
    A string containing a comma-separated list of names to which custom tag implementations should be applied. Unknown or unused tag entries are harmless. Generally defined via an init parameter on the JspServlet.
    Specified by:
      `getUseNonstandardTagOptimizations` in interface `Options`
    Returns:
      which tags to use