# 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