Class JspC
java.lang.Object
org.apache.jasper.JspC
- All Implemented Interfaces:
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="jasper2" >
<classpath>
<pathelement location="${java.home}/../lib/tools.jar"/>
<fileset dir="${ENV.CATALINA_HOME}/server/lib">
<include name="*.jar"/>
</fileset>
<fileset dir="${ENV.CATALINA_HOME}/common/lib">
<include name="*.jar"/>
</fileset>
<path refid="myjars"/>
</classpath>
</taskdef>
<jasper2 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
FieldsModifier and TypeFieldDescriptionprivate booleanprivate static final intprivate intprivate String[]private booleanprivate Stringprivate booleanprivate Stringprivate Stringprivate Stringprivate JspCServletContextprivate static final intstatic final Stringprivate booleanprivate intprivate booleanprivate booleanThrow an exception if there's a compilation error, or swallow it.private booleanprivate booleanprivate booleanprivate booleanprivate Stringprivate booleanprivate static final intprivate static final String[]private booleanprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate StringThe java file encoding.private JspConfigprivate HashMap<String, JasperException> private static final Stringprivate booleanprivate URLClassLoaderprivate static Loggerprivate Writerprivate booleanprivate CharArrayWriterprivate static Stringprivate static final intprivate static final intprivate booleanprivate JspRuntimeContextprivate Fileprivate CharArrayWriterprivate static final Stringprivate booleanprivate booleanprivate booleanprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate Stringprivate ConcurrentHashMap<String, URL> private ConcurrentHashMap<String, javax.servlet.jsp.tagext.TagLibraryInfo> private TagPluginManagerprivate Stringprivate Stringprivate TldScannerCache for the TLD locationsprivate booleanprivate Stringprivate Stringprivate booleanprivate Stringprivate intprivate boolean -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate voidvoidexecute()voidgenerateWebMapping(String file, JspCompilationContext clctxt) booleanAre text strings to be generated as byte arrays, if the page is unbuffered?booleanIndicates whether text strings are to be generated as char arrays.intBackground compilation check intervals in secondsbooleanShould we include debug information in compiled class?What classpath should I use while compiling the servlets generated from JSP files?Compiler to use.The name of class that implements JavaCompiler, used for Java compilations.Compiler source VM, e.g.The compiler target VM, e.g.booleanIs Jasper being used in development mode?intbooleanReturns true if Jasper issues a compilation error instead of a runtime Instantiation error if the class attribute specified in useBean action is invalid.booleanbooleangetFork()boolean flag to tell Ant whether to fork JSP page compilations.Gets the class-id value that is sent to Internet Explorer when using invalid input: '<'jsp:plugin> tags.intGets initial capacity of HashMap which maps JSPs to their corresponding servlets.Returns the encoding to use for java files.Gets the list of JSP compilation errors caught during the most recent invocation of this instance'sexecutemethod when failOnError has been set to FALSE.Obtain JSP configuration informantion specified in web.xml.booleanAre we keeping generated code around?booleanAre we supporting HTML mapped servlets?intModification test interval.booleanIf class files are generated as byte arrays, should they be saved to disk at the end of compilations?What is my scratch dir?booleanShould errors be sent to client or thrown into stderr?Gets the system class path.Obtain a Tag Plugin ManagerintThe cache for the location of the TLD's for the various tag libraries 'exposed' by the web application.booleanShould white spaces between directives or actions be trimmed?booleanReturns the value of the usePrecompiled (or use-precompiled) init param.private voidinitClassLoader(JspCompilationContext clctxt) Initializes the classloader as/if needed for the given compilation context.private voidprivate ClassLoaderprivate voidbooleanIf the buffer attribute for the page directive is not specified, is the default "none"?booleanReturns true if tag handler pooling is enabled, false otherwise.booleanShould SMAP info for JSR45 debugging be dumped to a file?booleanIs the generation of SMAP info for JSR45 debugging suppressed?booleanbooleanIs generation of X-Powered-By response header enabled/disabled?private voidFind the WEB-INF dir by looking up in the directory tree.static voidprotected voidInclude the generated web.xml inside the webapp's web.xml.private StringnextArg()private StringnextFile()private voidprocessFile(String file) private voidvoidLocate all jsp files in the webapp.voidsetAddWebXmlMappings(boolean b) voidvoidsetClassDebugInfo(boolean b) voidClass name of the generated file ( without package ).voidvoidsetCompile(boolean b) voidvoidvoidvoidsetDefaultBufferNone(boolean defaultBufferNone) static voidsetDtdResourcePrefix(String prefix) Sets the path prefix for .dtd resourcesvoidsetErrorOnUseBeanInvalidClassAttribute(boolean b) voidsetFailOnError(boolean b) Set the option that throws an exception in case of a compilation error.voidsetGenStringAsByteArray(boolean genStringAsByteArray) voidsetGenStringAsCharArray(boolean genStringAsCharArray) Determines whether text strings are to be generated as char arrays, which improves performance in some cases.voidsetIeClassId(String ieClassId) Sets the class-id value to be sent to Internet Explorer when using invalid input: '<'jsp:plugin> tags.voidsetIgnoreJspFragmentErrors(boolean ignore) voidsetIsValidationEnabled(boolean b) voidsetJavaEncoding(String encodingName) Sets the encoding to use for java files.voidsetJspFiles(String jspFiles) voidsetListErrors(boolean b) voidvoidsetPackage(String p) voidsetPoolingEnabled(boolean poolingEnabled) static voidsetSchemaResourcePrefix(String prefix) Sets the path prefix for .xsd resourcesvoidsetSmapDumped(boolean smapDumped) Set smapSuppressed flag.voidsetSmapSuppressed(boolean smapSuppressed) Set smapSuppressed flag.voidSets the system class path.voidsetTrimSpaces(boolean ts) voidsetUriroot(String s) Base dir for the webapp.voidsetValidateXml(boolean b) voidsetVerbose(int level) voidFile where we generate a complete web.xml with the class definitions.voidFile where we generate a web.xml fragment with the class definitions.voidsetXpoweredBy(boolean xpoweredBy)
-
Field Details
-
DEFAULT_IE_CLASS_ID
- See Also:
-
JAVA_1_0
- See Also:
-
JAVA_1_1
- See Also:
-
JAVA_1_2
- See Also:
-
JAVA_1_3
- See Also:
-
JAVA_1_4
- See Also:
-
JAVA_1_5
- See Also:
-
JAVA_1_6
- See Also:
-
JAVA_1_7
- See Also:
-
JAVA_1_8
- See Also:
-
JAVA_5
- See Also:
-
JAVA_6
- See Also:
-
JAVA_7
- See Also:
-
JAVA_8
- See Also:
-
log
-
SWITCH_VERBOSE
- See Also:
-
SWITCH_HELP
- See Also:
-
SWITCH_QUIET
- See Also:
-
SWITCH_OUTPUT_DIR
- See Also:
-
SWITCH_IE_CLASS_ID
- See Also:
-
SWITCH_PACKAGE_NAME
- See Also:
-
SWITCH_CLASS_NAME
- See Also:
-
SWITCH_FULL_STOP
- See Also:
-
SWITCH_COMPILE
- See Also:
-
SWITCH_SOURCE
- See Also:
-
SWITCH_TARGET
- See Also:
-
SWITCH_URI_BASE
- See Also:
-
SWITCH_URI_ROOT
- See Also:
-
SWITCH_FILE_WEBAPP
- See Also:
-
SWITCH_WEBAPP_INC
- See Also:
-
SWITCH_WEBAPP_XML
- See Also:
-
SWITCH_MAPPED
- See Also:
-
SWITCH_XPOWERED_BY
- See Also:
-
SWITCH_TRIM_SPACES
- See Also:
-
SWITCH_CLASSPATH
- See Also:
-
SWITCH_SYSCLASSPATH
- See Also:
-
SWITCH_DIE
- See Also:
-
SWITCH_SMAP
- See Also:
-
SWITCH_DUMP_SMAP
- See Also:
-
SWITCH_SCHEMAS_PREFIX
- See Also:
-
SWITCH_DTDS_PREFIX
- See Also:
-
SWITCH_GENERATE_CLASSES
- See Also:
-
SWITCH_VALIDATE
- See Also:
-
SWITCH_IGNORE_JSP_FRAGMENTS
- See Also:
-
SWITCH_DISABLE_POOLING
- See Also:
-
SHOW_SUCCESS
- See Also:
-
LIST_ERRORS
- See Also:
-
NO_WEBXML
private static final int NO_WEBXML- See Also:
-
INC_WEBXML
private static final int INC_WEBXML- See Also:
-
ALL_WEBXML
private static final int ALL_WEBXML- See Also:
-
DEFAULT_DIE_LEVEL
private static final int DEFAULT_DIE_LEVEL- See Also:
-
NO_DIE_LEVEL
private static final int NO_DIE_LEVEL- See Also:
-
insertBefore
-
dieLevel
private int dieLevel -
classPath
-
sysClassPath
-
loader
-
trimSpaces
private boolean trimSpaces -
genStringAsCharArray
private boolean genStringAsCharArray -
genStringAsByteArray
private boolean genStringAsByteArray -
defaultBufferNone
private boolean defaultBufferNone -
xpoweredBy
private boolean xpoweredBy -
mappedFile
private boolean mappedFile -
poolingEnabled
private boolean poolingEnabled -
scratchDir
-
ieClassId
-
targetPackage
-
targetClassName
-
uriBase
-
uriRoot
-
helpNeeded
private boolean helpNeeded -
compile
private boolean compile -
smapSuppressed
private boolean smapSuppressed -
smapDumped
private boolean smapDumped -
compiler
-
compilerTargetVM
-
compilerSourceVM
-
classDebugInfo
private boolean classDebugInfo -
failOnError
private boolean failOnErrorThrow an exception if there's a compilation error, or swallow it. Default is true to preserve old behavior. -
extensions
-
pages
-
errorOnUseBeanInvalidClassAttribute
private boolean errorOnUseBeanInvalidClassAttribute -
javaEncoding
The java file encoding. Default is UTF-8. Added per bugzilla 19622. -
webxmlFile
-
webxmlLevel
private int webxmlLevel -
addWebXmlMappings
private boolean addWebXmlMappings -
mapout
-
servletout
-
mappingout
-
context
-
rctxt
-
tldScanner
Cache for the TLD locations -
jspConfig
-
tagPluginManager
-
verbose
private boolean verbose -
listErrors
private boolean listErrors -
showSuccess
private boolean showSuccess -
argPos
private int argPos -
fullstop
private boolean fullstop -
args
-
isValidationEnabled
private boolean isValidationEnabled -
jspErrors
-
myJavaVersion
-
ignoreJspFragmentErrors
private boolean ignoreJspFragmentErrors -
dependents
-
taglibs
-
tagFileJarUrls
-
-
Constructor Details
-
JspC
public JspC()
-
-
Method Details
-
main
-
setArgs
- Throws:
JasperException
-
getDieLevel
public int getDieLevel() -
getKeepGenerated
public boolean getKeepGenerated()Description copied from interface:OptionsAre we keeping generated code around?- Specified by:
getKeepGeneratedin interfaceOptions
-
getSaveBytecode
public boolean getSaveBytecode()Description copied from interface:OptionsIf class files are generated as byte arrays, should they be saved to disk at the end of compilations?- Specified by:
getSaveBytecodein interfaceOptions
-
getTrimSpaces
public boolean getTrimSpaces()Description copied from interface:OptionsShould white spaces between directives or actions be trimmed?- Specified by:
getTrimSpacesin interfaceOptions
-
setTrimSpaces
public void setTrimSpaces(boolean ts) -
isPoolingEnabled
public boolean isPoolingEnabled()Description copied from interface:OptionsReturns true if tag handler pooling is enabled, false otherwise.- Specified by:
isPoolingEnabledin interfaceOptions
-
setPoolingEnabled
public void setPoolingEnabled(boolean poolingEnabled) -
isXpoweredBy
public boolean isXpoweredBy()Description copied from interface:OptionsIs generation of X-Powered-By response header enabled/disabled?- Specified by:
isXpoweredByin interfaceOptions
-
setXpoweredBy
public void setXpoweredBy(boolean xpoweredBy) -
getErrorOnUseBeanInvalidClassAttribute
public boolean getErrorOnUseBeanInvalidClassAttribute()Description copied from interface:OptionsReturns 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:
getErrorOnUseBeanInvalidClassAttributein interfaceOptions
-
setErrorOnUseBeanInvalidClassAttribute
public void setErrorOnUseBeanInvalidClassAttribute(boolean b) -
getTagPoolSize
public int getTagPoolSize() -
getInitialCapacity
public int getInitialCapacity()Gets initial capacity of HashMap which maps JSPs to their corresponding servlets.- Specified by:
getInitialCapacityin interfaceOptions
-
getMappedFile
public boolean getMappedFile()Are we supporting HTML mapped servlets?- Specified by:
getMappedFilein interfaceOptions
-
getProtectionDomain
-
getSendErrorToClient
public boolean getSendErrorToClient()Description copied from interface:OptionsShould errors be sent to client or thrown into stderr?- Specified by:
getSendErrorToClientin interfaceOptions
-
setClassDebugInfo
public void setClassDebugInfo(boolean b) -
getClassDebugInfo
public boolean getClassDebugInfo()Description copied from interface:OptionsShould we include debug information in compiled class?- Specified by:
getClassDebugInfoin interfaceOptions
-
getCheckInterval
public int getCheckInterval()Background compilation check intervals in seconds- Specified by:
getCheckIntervalin interfaceOptions
-
getModificationTestInterval
public int getModificationTestInterval()Modification test interval.- Specified by:
getModificationTestIntervalin interfaceOptions
-
getDevelopment
public boolean getDevelopment()Is Jasper being used in development mode?- Specified by:
getDevelopmentin interfaceOptions
-
getUsePrecompiled
public boolean getUsePrecompiled()Description copied from interface:OptionsReturns the value of the usePrecompiled (or use-precompiled) init param.- Specified by:
getUsePrecompiledin interfaceOptions
-
isSmapSuppressed
public boolean isSmapSuppressed()Is the generation of SMAP info for JSR45 debugging suppressed?- Specified by:
isSmapSuppressedin interfaceOptions
-
setSmapSuppressed
public void setSmapSuppressed(boolean smapSuppressed) Set smapSuppressed flag. -
isSmapDumped
public boolean isSmapDumped()Should SMAP info for JSR45 debugging be dumped to a file?- Specified by:
isSmapDumpedin interfaceOptions
-
setSmapDumped
public void setSmapDumped(boolean smapDumped) Set smapSuppressed flag. -
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()Indicates whether text strings are to be generated as char arrays.- Specified by:
genStringAsCharArrayin interfaceOptions- Returns:
- true if text strings are to be generated as char arrays, false otherwise
-
setGenStringAsByteArray
public void setGenStringAsByteArray(boolean genStringAsByteArray) -
genStringAsByteArray
public boolean genStringAsByteArray()Description copied from interface:OptionsAre text strings to be generated as byte arrays, if the page is unbuffered?- Specified by:
genStringAsByteArrayin interfaceOptions
-
isDefaultBufferNone
public boolean isDefaultBufferNone()Description copied from interface:OptionsIf the buffer attribute for the page directive is not specified, is the default "none"?- Specified by:
isDefaultBufferNonein interfaceOptions
-
setDefaultBufferNone
public void setDefaultBufferNone(boolean defaultBufferNone) -
setIeClassId
Sets the class-id value to be sent to Internet Explorer when using invalid input: '<'jsp:plugin> tags.- Parameters:
ieClassId- Class-id value
-
getIeClassId
Gets the class-id value that is sent to Internet Explorer when using invalid input: '<'jsp:plugin> tags.- Specified by:
getIeClassIdin interfaceOptions- Returns:
- Class-id value
-
getScratchDir
Description copied from interface:OptionsWhat is my scratch dir?- Specified by:
getScratchDirin interfaceOptions
-
getJspCompilerPlugin
-
getJspCompilerPath
-
getCompiler
-
setCompiler
-
getCompilerTargetVM
Description copied from interface:OptionsThe compiler target VM, e.g. 1.1, 1.2, 1.3, 1.4, or 1.5.- Specified by:
getCompilerTargetVMin interfaceOptions- See Also:
-
setCompilerTargetVM
-
getCompilerSourceVM
Description copied from interface:OptionsCompiler source VM, e.g. 1.3, 1.4, or 1.5.- Specified by:
getCompilerSourceVMin interfaceOptions
-
setCompilerSourceVM
-
getCompilerClassName
Description copied from interface:OptionsThe name of class that implements JavaCompiler, used for Java compilations.- Specified by:
getCompilerClassNamein interfaceOptions
-
getTldScanner
Description copied from interface:OptionsThe cache for the location of the TLD's for the various tag libraries 'exposed' by the web application. A tag library is 'exposed' either explicitely in web.xml or implicitely via the uri tag in the TLD of a taglib deployed in a jar file (WEB-INF/lib).- Specified by:
getTldScannerin interfaceOptions- Returns:
- the instance of the TldScanner for the web-application.
-
getJavaEncoding
Returns the encoding to use for java files. The default is UTF-8.- Specified by:
getJavaEncodingin interfaceOptions- Returns:
- String The encoding
-
setJavaEncoding
Sets the encoding to use for java files.- Parameters:
encodingName- The name, e.g. "UTF-8"
-
getFork
-
getClassPath
Description copied from interface:OptionsWhat classpath should I use while compiling the servlets generated from JSP files?- Specified by:
getClassPathin interfaceOptions
-
setClassPath
-
getSystemClassPath
Gets the system class path.- Specified by:
getSystemClassPathin interfaceOptions- Returns:
- The system class path
-
setSystemClassPath
Sets the system class path.- Parameters:
s- The system class path to use
-
setUriroot
Base dir for the webapp. Used to generate class names and resolve includes -
setSchemaResourcePrefix
Sets the path prefix for .xsd resources -
setDtdResourcePrefix
Sets the path prefix for .dtd resources -
setJspFiles
-
setCompile
public void setCompile(boolean b) -
setVerbose
public void setVerbose(int level) -
setValidateXml
public void setValidateXml(boolean b) -
setIsValidationEnabled
public void setIsValidationEnabled(boolean b) -
isValidationEnabled
public boolean isValidationEnabled()- Specified by:
isValidationEnabledin interfaceOptions
-
setListErrors
public void setListErrors(boolean b) -
setOutputDir
-
setPackage
-
setClassName
Class name of the generated file ( without package ). Can only be used if a single file is converted. XXX Do we need this feature ? -
setWebXmlFragment
File where we generate a web.xml fragment with the class definitions. -
setWebXml
File where we generate a complete web.xml with the class definitions. -
setAddWebXmlMappings
public void setAddWebXmlMappings(boolean b) -
setFailOnError
public void setFailOnError(boolean b) Set the option that throws an exception in case of a compilation error. -
getFailOnError
public boolean getFailOnError() -
setIgnoreJspFragmentErrors
public void setIgnoreJspFragmentErrors(boolean ignore) -
getJspConfig
Obtain JSP configuration informantion specified in web.xml.- Specified by:
getJspConfigin interfaceOptions
-
getTagPluginManager
Description copied from interface:OptionsObtain a Tag Plugin Manager- Specified by:
getTagPluginManagerin interfaceOptions
-
generateWebMapping
- Throws:
IOException
-
getJSPCompilationErrors
Gets the list of JSP compilation errors caught during the most recent invocation of this instance'sexecutemethod when failOnError has been set to FALSE. Each error error in the list is represented by an instance of org.apache.jasper.JasperException.- Returns:
- List of JSP compilation errors caught during most recent
invocation of this instance's
executemethod, or an empty list if no errors were encountered or this instance's failOnError property was set to TRUE
-
mergeIntoWebXml
Include the generated web.xml inside the webapp's web.xml.- Throws:
IOException
-
processFile
- Throws:
JasperException
-
scanFiles
Locate all jsp files in the webapp. Used if no explicit jsps are specified.- Throws:
JasperException
-
execute
- Throws:
JasperException
-
nextArg
-
nextFile
-
initWebXml
private void initWebXml() -
completeWebXml
private void completeWebXml() -
initServletContext
private void initServletContext() -
initClassLoader
Initializes the classloader as/if needed for the given compilation context.- Parameters:
clctxt- The compilation context- Throws:
IOException- If an error occurs
-
locateUriRoot
Find the WEB-INF dir by looking up in the directory tree. This is used if no explicit docbase is set, but only files. XXX Maybe we should require the docbase. -
initSystemClassLoader
- Throws:
IOException
-
purgeJspFragmentErrors
private void purgeJspFragmentErrors()
-