# 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" />

Author:
  Danno Ferrin, Pierre Delisle, Costin Manolache, Yoav Shapira

## Field Summary

Fields
Modifier and Type
Field
Description
`protected boolean`
`addWebXmlMappings`
`protected static final int`
`ALL_WEBXML`
`protected int`
`argPos`
`protected String[]`
`args`
`protected boolean`
`blockExternal`
`protected final Map<String, TagLibraryInfo>`
`cache`
`protected boolean`
`caching`
`protected boolean`
`classDebugInfo`
`protected String`
`classPath`
`protected boolean`
`compile`
`protected String`
`compiler`
`protected String`
`compilerSourceVM`
`protected String`
`compilerTargetVM`
`protected JspCServletContext`
`context`
The servlet context.
`protected static final int`
`DEFAULT_DIE_LEVEL`
`protected int`
`dieLevel`
`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`
`protected boolean`
`failOnError`
Throw an exception if there's a compilation error, or swallow it.
`protected static final int`
`FRG_WEBXML`
`protected boolean`
`fullstop`
`protected boolean`
`genStringAsCharArray`
`protected boolean`
`helpNeeded`
`protected static final int`
`INC_WEBXML`
`protected static final Set<String>`
`insertBefore`
`protected String`
`javaEncoding`
The java file encoding.
`protected JspConfig`
`jspConfig`
`protected static final String`
`LIST_ERRORS`
`protected boolean`
`listErrors`
`protected ClassLoader`
`loader`
`protected Writer`
`mapout`
`protected boolean`
`mappedFile`
`protected CharArrayWriter`
`mappingout`
`protected static final int`
`NO_DIE_LEVEL`
`protected final List<String>`
`pages`
The pages.
`protected boolean`
`poolingEnabled`
`protected boolean`
`quoteAttributeEL`
`protected JspRuntimeContext`
`rctxt`
The runtime context.
`protected TldScanner`
`scanner`
`protected File`
`scratchDir`
`protected CharArrayWriter`
`servletout`
`protected static final String`
`SHOW_SUCCESS`
`protected boolean`
`showSuccess`
`protected boolean`
`smapDumped`
`protected boolean`
`smapSuppressed`
`protected boolean`
`strictQuoteEscaping`
`protected static final String`
`SWITCH_ADD_WEBAPP_XML_MAPPINGS`
`protected static final String`
`SWITCH_CACHE`
`protected static final String`
`SWITCH_CLASS_NAME`
`protected static final String`
`SWITCH_CLASSPATH`
`protected static final String`
`SWITCH_COMPILE`
`protected static final String`
`SWITCH_DIE`
`protected static final String`
`SWITCH_DUMP_SMAP`
`protected static final String`
`SWITCH_ENCODING`
`protected static final String`
`SWITCH_FAIL_FAST`
`protected static final String`
`SWITCH_FILE_WEBAPP`
`protected static final String`
`SWITCH_FULL_STOP`
`protected static final String`
`SWITCH_HELP`
`protected static final String`
`SWITCH_MAPPED`
`protected static final String`
`SWITCH_NO_BLOCK_EXTERNAL`
`protected static final String`
`SWITCH_NO_QUOTE_ATTRIBUTE_EL`
`protected static final String`
`SWITCH_NO_STRICT_QUOTE_ESCAPING`
`protected static final String`
`SWITCH_OUTPUT_DIR`
`protected static final String`
`SWITCH_PACKAGE_NAME`
`protected static final String`
`SWITCH_POOLING`
`protected static final String`
`SWITCH_QUOTE_ATTRIBUTE_EL`
`protected static final String`
`SWITCH_SMAP`
`protected static final String`
`SWITCH_SOURCE`
`protected static final String`
`SWITCH_TARGET`
`protected static final String`
`SWITCH_THREAD_COUNT`
`protected static final String`
`SWITCH_TRIM_SPACES`
`protected static final String`
`SWITCH_URI_BASE`
`protected static final String`
`SWITCH_URI_ROOT`
`protected static final String`
`SWITCH_VALIDATE_TLD`
`protected static final String`
`SWITCH_VALIDATE_XML`
`protected static final String`
`SWITCH_VERBOSE`
`protected static final String`
`SWITCH_WEBAPP_FRG`
`protected static final String`
`SWITCH_WEBAPP_INC`
`protected static final String`
`SWITCH_WEBAPP_XML`
`protected static final String`
`SWITCH_WEBAPP_XML_ENCODING`
`protected static final String`
`SWITCH_XPOWERED_BY`
`protected TagPluginManager`
`tagPluginManager`
`protected String`
`targetClassName`
`protected String`
`targetPackage`
`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`
`protected String`
`uriBase`
`protected String`
`uriRoot`
`protected String`
`useNonstandardTagOptimizations`
`protected boolean`
`validateTld`
`protected boolean`
`validateXml`
`protected boolean`
`verbose`
`protected String`
`webxmlEncoding`
`protected String`
`webxmlFile`
`protected int`
`webxmlLevel`
`protected boolean`
`xpoweredBy`

### 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()`

## 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()`
`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()`
`String`
`getClassPath()`
`String`
`getCompiler()`
Compiler to use.
`String`
`getCompilerClassName()`
`String`
`getCompilerSourceVM()`
`String`
`getCompilerTargetVM()`
`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()`
`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()`
`int`
`getJspIdleTimeout()`
`boolean`
`getKeepGenerated()`
In JspC this always returns `true`.
`boolean`
`getMappedFile()`
`int`
`getMaxLoadedJsps()`
The maximum number of loaded jsps per web-application.
`int`
`getModificationTestInterval()`
In JspC this always returns `0`.
`boolean`
`getQuoteAttributeEL()`
`boolean`
`getRecompileOnFail()`
In JspC this always returns `false`.
`File`
`getScratchDir()`
`boolean`
`getStrictQuoteEscaping()`
`TagPluginManager`
`getTagPluginManager()`
`int`
`getThreadCount()`
`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()`
`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)`
`protected void`
`initTldScanner(JspCServletContext context, ClassLoader classLoader)`
`protected void`
`initWebXml()`
`boolean`
`isBlockExternal()`
`boolean`
`isCaching()`
`boolean`
`isPoolingEnabled()`
`boolean`
`isSmapDumped()`
This setting is ignored if suppressSmap() is `true`.
`boolean`
`isSmapSuppressed()`
`boolean`
`isValidateTld()`
`boolean`
`isValidateXml()`
`boolean`
`isXpoweredBy()`
`protected void`
`locateUriRoot(File f)`
Find the WEB-INF dir by looking up in the directory tree.
`static void`
`main(String[] arg)`
`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)`
`protected String`
`nextArg()`
`protected String`
`nextFile()`
`protected void`
`processFile(String file)`
`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)`
`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)`
`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)`
`void`
`setMappedFile(boolean b)`
`void`
`setOutputDir(String s)`
`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)`
`void`
`setSmapDumped(boolean smapDumped)`
Sets smapDumped flag.
`void`
`setSmapSuppressed(boolean smapSuppressed)`
Sets smapSuppressed flag.
`void`
`setStrictQuoteEscaping(boolean b)`
`void`
`setThreadCount(String threadCount)`
`void`
`setTrimSpaces(boolean trimSpaces)`
`void`
`setTrimSpaces(String ts)`
Sets the option to control handling of template text that consists entirely of whitespace.
`void`
`setTrimSpaces(TrimSpacesOption trimSpaces)`
`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)`
`void`
`setValidateXml(boolean b)`
`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 java.lang.Object

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

### Methods inherited from interface org.apache.jasper.Options

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

## Field Details

### SWITCH_VERBOSE

protected static final String SWITCH_VERBOSE

See Also:
  - Constant Field Values

### SWITCH_HELP

protected static final String SWITCH_HELP

See Also:
  - Constant Field Values

### SWITCH_OUTPUT_DIR

protected static final String SWITCH_OUTPUT_DIR

See Also:
  - Constant Field Values

### SWITCH_PACKAGE_NAME

protected static final String SWITCH_PACKAGE_NAME

See Also:
  - Constant Field Values

### SWITCH_CACHE

protected static final String SWITCH_CACHE

See Also:
  - Constant Field Values

### SWITCH_CLASS_NAME

protected static final String SWITCH_CLASS_NAME

See Also:
  - Constant Field Values

### SWITCH_FULL_STOP

protected static final String SWITCH_FULL_STOP

See Also:
  - Constant Field Values

### SWITCH_COMPILE

protected static final String SWITCH_COMPILE

See Also:
  - Constant Field Values

### SWITCH_FAIL_FAST

protected static final String SWITCH_FAIL_FAST

See Also:
  - Constant Field Values

### SWITCH_SOURCE

protected static final String SWITCH_SOURCE

See Also:
  - Constant Field Values

### SWITCH_TARGET

protected static final String SWITCH_TARGET

See Also:
  - Constant Field Values

### SWITCH_URI_BASE

protected static final String SWITCH_URI_BASE

See Also:
  - Constant Field Values

### SWITCH_URI_ROOT

protected static final String SWITCH_URI_ROOT

See Also:
  - Constant Field Values

### SWITCH_FILE_WEBAPP

protected static final String SWITCH_FILE_WEBAPP

See Also:
  - Constant Field Values

### SWITCH_WEBAPP_INC

protected static final String SWITCH_WEBAPP_INC

See Also:
  - Constant Field Values

### SWITCH_WEBAPP_FRG

protected static final String SWITCH_WEBAPP_FRG

See Also:
  - Constant Field Values

### SWITCH_WEBAPP_XML

protected static final String SWITCH_WEBAPP_XML

See Also:
  - Constant Field Values

### SWITCH_WEBAPP_XML_ENCODING

protected static final String SWITCH_WEBAPP_XML_ENCODING

See Also:
  - Constant Field Values

### SWITCH_ADD_WEBAPP_XML_MAPPINGS

protected static final String SWITCH_ADD_WEBAPP_XML_MAPPINGS

See Also:
  - Constant Field Values

### SWITCH_MAPPED

protected static final String SWITCH_MAPPED

See Also:
  - Constant Field Values

### SWITCH_XPOWERED_BY

protected static final String SWITCH_XPOWERED_BY

See Also:
  - Constant Field Values

### SWITCH_TRIM_SPACES

protected static final String SWITCH_TRIM_SPACES

See Also:
  - Constant Field Values

### SWITCH_CLASSPATH

protected static final String SWITCH_CLASSPATH

See Also:
  - Constant Field Values

### SWITCH_DIE

protected static final String SWITCH_DIE

See Also:
  - Constant Field Values

### SWITCH_POOLING

protected static final String SWITCH_POOLING

See Also:
  - Constant Field Values

### SWITCH_ENCODING

protected static final String SWITCH_ENCODING

See Also:
  - Constant Field Values

### SWITCH_SMAP

protected static final String SWITCH_SMAP

See Also:
  - Constant Field Values

### SWITCH_DUMP_SMAP

protected static final String SWITCH_DUMP_SMAP

See Also:
  - Constant Field Values

### SWITCH_VALIDATE_TLD

protected static final String SWITCH_VALIDATE_TLD

See Also:
  - Constant Field Values

### SWITCH_VALIDATE_XML

protected static final String SWITCH_VALIDATE_XML

See Also:
  - Constant Field Values

### SWITCH_NO_BLOCK_EXTERNAL

protected static final String SWITCH_NO_BLOCK_EXTERNAL

See Also:
  - Constant Field Values

### SWITCH_NO_STRICT_QUOTE_ESCAPING

protected static final String SWITCH_NO_STRICT_QUOTE_ESCAPING

See Also:
  - Constant Field Values

### SWITCH_QUOTE_ATTRIBUTE_EL

protected static final String SWITCH_QUOTE_ATTRIBUTE_EL

See Also:
  - Constant Field Values

### SWITCH_NO_QUOTE_ATTRIBUTE_EL

protected static final String SWITCH_NO_QUOTE_ATTRIBUTE_EL

See Also:
  - Constant Field Values

### SWITCH_THREAD_COUNT

protected static final String SWITCH_THREAD_COUNT

See Also:
  - Constant Field Values

### SHOW_SUCCESS

protected static final String SHOW_SUCCESS

See Also:
  - Constant Field Values

### LIST_ERRORS

protected static final String LIST_ERRORS

See Also:
  - Constant Field Values

### INC_WEBXML

protected static final int INC_WEBXML

See Also:
  - Constant Field Values

### FRG_WEBXML

protected static final int FRG_WEBXML

See Also:
  - Constant Field Values

### ALL_WEBXML

protected static final int ALL_WEBXML

See Also:
  - Constant Field Values

### DEFAULT_DIE_LEVEL

protected static final int DEFAULT_DIE_LEVEL

See Also:
  - Constant Field Values

### NO_DIE_LEVEL

protected static final int NO_DIE_LEVEL

See Also:
  - Constant Field Values

### insertBefore

protected static final Set<String> insertBefore

### classPath

protected String classPath

### loader

protected ClassLoader loader

### trimSpaces

protected TrimSpacesOption trimSpaces

### genStringAsCharArray

protected boolean genStringAsCharArray

### validateTld

protected boolean validateTld

### validateXml

protected boolean validateXml

### blockExternal

protected boolean blockExternal

### strictQuoteEscaping

protected boolean strictQuoteEscaping

### quoteAttributeEL

protected boolean quoteAttributeEL

### xpoweredBy

protected boolean xpoweredBy

### mappedFile

protected boolean mappedFile

### poolingEnabled

protected boolean poolingEnabled

### scratchDir

protected File scratchDir

### targetPackage

protected String targetPackage

### targetClassName

protected String targetClassName

### uriBase

protected String uriBase

### uriRoot

protected String uriRoot

### dieLevel

protected int dieLevel

### helpNeeded

protected boolean helpNeeded

### compile

protected boolean compile

### failFast

protected boolean failFast

### smapSuppressed

protected boolean smapSuppressed

### smapDumped

protected boolean smapDumped

### caching

protected boolean caching

### cache

protected final Map<String, TagLibraryInfo> cache

### compiler

protected String compiler

### compilerTargetVM

protected String compilerTargetVM

### compilerSourceVM

protected String compilerSourceVM

### classDebugInfo

protected boolean classDebugInfo

### 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

### webxmlLevel

protected int webxmlLevel

### webxmlEncoding

protected String webxmlEncoding

### addWebXmlMappings

protected boolean addWebXmlMappings

### mapout

protected Writer mapout

### servletout

protected CharArrayWriter servletout

### mappingout

protected CharArrayWriter mappingout

### 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

### tagPluginManager

protected TagPluginManager tagPluginManager

### scanner

protected TldScanner scanner

### verbose

protected boolean verbose

### listErrors

protected boolean listErrors

### showSuccess

protected boolean showSuccess

### argPos

protected int argPos

### fullstop

protected boolean fullstop

### args

protected String[] args

### useNonstandardTagOptimizations

protected String useNonstandardTagOptimizations

## Constructor Details

### JspC

public JspC()

## Method Details

### main

public static void main(String[] arg)

### 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`.

Specified by:
  `getKeepGenerated` in interface `Options`
Returns:
  `true` to keep the generated source

### getTrimSpaces

public TrimSpacesOption getTrimSpaces()

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)

### 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)

### isPoolingEnabled

public boolean isPoolingEnabled()

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()

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`.

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()

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()

Specified by:
  `getMappedFile` in interface `Options`
Returns:
  `true` if HTML mapped Servlets are supported.

### setMappedFile

public void setMappedFile(boolean b)

### setClassDebugInfo

public void setClassDebugInfo(boolean b)
Sets the option to include debug information in compiled class.

Parameters:
  `b` - New value

### getClassDebugInfo

public boolean getClassDebugInfo()

Specified by:
  `getClassDebugInfo` in interface `Options`
Returns:
  `true` if debug information in included in compiled classes.

### isCaching

public boolean isCaching()

Specified by:
  `isCaching` in interface `Options`
Returns:
  `true` is 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`.

Specified by:
  `getCheckInterval` in interface `Options`
Returns:
  background compile thread check interval in seconds

### getModificationTestInterval

public int getModificationTestInterval()
In JspC this always returns `0`.

Specified by:
  `getModificationTestInterval` in interface `Options`
Returns:
  modification test interval.

### getRecompileOnFail

public boolean getRecompileOnFail()
In JspC this always returns `false`.

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()

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()

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()

Specified by:
  `getCompilerClassName` in interface `Options`
Returns:
  Jasper Java compiler class to use.

### getCompilerTargetVM

public String getCompilerTargetVM()

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()

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)

### getClassPath

public String getClassPath()

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)

### isValidateTld

public boolean isValidateTld()

### setValidateXml

public void setValidateXml(boolean b)

### isValidateXml

public boolean isValidateXml()

### setBlockExternal

public void setBlockExternal(boolean b)

### isBlockExternal

public boolean isBlockExternal()

### setStrictQuoteEscaping

public void setStrictQuoteEscaping(boolean b)

### getStrictQuoteEscaping

public boolean getStrictQuoteEscaping()

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)

### getQuoteAttributeEL

public boolean getQuoteAttributeEL()

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()

### setThreadCount

public void setThreadCount(String threadCount)

### setListErrors

public void setListErrors(boolean b)

### setOutputDir

public void setOutputDir(String s)

### 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:
  `true` if an exception will be thrown in case of a compilation error.

### getJspConfig

public JspConfig getJspConfig()

Specified by:
  `getJspConfig` in interface `Options`
Returns:
  JSP configuration information specified in web.xml.

### getTagPluginManager

public TagPluginManager getTagPluginManager()

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

Throws:
  `JasperException`

### 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()

### nextFile

protected String nextFile()

### initWebXml

protected void initWebXml() throws JasperException

Throws:
  `JasperException`

### completeWebXml

protected void completeWebXml()

### initTldScanner

protected void initTldScanner(JspCServletContext context, ClassLoader classLoader)

### newTldScanner

protected TldScanner newTldScanner(JspCServletContext context, boolean namespaceAware, boolean validate, boolean blockExternal)

### initServletContext

protected void initServletContext(ClassLoader classLoader) throws IOException, JasperException

Throws:
  `IOException`
  `JasperException`

### 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