Package org.apache.jasper
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 boolean
private static final int
private int
private String[]
private boolean
private String
private boolean
private String
private String
private String
private JspCServletContext
private static final int
static final String
private boolean
private int
private boolean
private boolean
Throw an exception if there's a compilation error, or swallow it.private boolean
private boolean
private boolean
private boolean
private String
private boolean
private static final int
private static final String[]
private boolean
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private String
The java file encoding.private JspConfig
private HashMap
<String, JasperException> private static final String
private boolean
private URLClassLoader
private static Logger
private Writer
private boolean
private CharArrayWriter
private static String
private static final int
private static final int
private boolean
private JspRuntimeContext
private File
private CharArrayWriter
private static final String
private boolean
private boolean
private boolean
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private String
private ConcurrentHashMap
<String, URL> private ConcurrentHashMap
<String, javax.servlet.jsp.tagext.TagLibraryInfo> private TagPluginManager
private String
private String
private TldScanner
Cache for the TLD locationsprivate boolean
private String
private String
private boolean
private String
private int
private boolean
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate void
void
execute()
void
generateWebMapping
(String file, JspCompilationContext clctxt) boolean
Are text strings to be generated as byte arrays, if the page is unbuffered?boolean
Indicates whether text strings are to be generated as char arrays.int
Background compilation check intervals in secondsboolean
Should 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.boolean
Is Jasper being used in development mode?int
boolean
Returns true if Jasper issues a compilation error instead of a runtime Instantiation error if the class attribute specified in useBean action is invalid.boolean
boolean
getFork()
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.int
Gets 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'sexecute
method when failOnError has been set to FALSE.Obtain JSP configuration informantion specified in web.xml.boolean
Are we keeping generated code around?boolean
Are we supporting HTML mapped servlets?int
Modification test interval.boolean
If class files are generated as byte arrays, should they be saved to disk at the end of compilations?What is my scratch dir?boolean
Should errors be sent to client or thrown into stderr?Gets the system class path.Obtain a Tag Plugin Managerint
The cache for the location of the TLD's for the various tag libraries 'exposed' by the web application.boolean
Should white spaces between directives or actions be trimmed?boolean
Returns the value of the usePrecompiled (or use-precompiled) init param.private void
initClassLoader
(JspCompilationContext clctxt) Initializes the classloader as/if needed for the given compilation context.private void
private ClassLoader
private void
boolean
If the buffer attribute for the page directive is not specified, is the default "none"?boolean
Returns true if tag handler pooling is enabled, false otherwise.boolean
Should SMAP info for JSR45 debugging be dumped to a file?boolean
Is the generation of SMAP info for JSR45 debugging suppressed?boolean
boolean
Is generation of X-Powered-By response header enabled/disabled?private void
Find the WEB-INF dir by looking up in the directory tree.static void
protected void
Include the generated web.xml inside the webapp's web.xml.private String
nextArg()
private String
nextFile()
private void
processFile
(String file) private void
void
Locate all jsp files in the webapp.void
setAddWebXmlMappings
(boolean b) void
void
setClassDebugInfo
(boolean b) void
Class name of the generated file ( without package ).void
void
setCompile
(boolean b) void
void
void
void
setDefaultBufferNone
(boolean defaultBufferNone) static void
setDtdResourcePrefix
(String prefix) Sets the path prefix for .dtd resourcesvoid
setErrorOnUseBeanInvalidClassAttribute
(boolean b) void
setFailOnError
(boolean b) Set the option that throws an exception in case of a compilation error.void
setGenStringAsByteArray
(boolean genStringAsByteArray) void
setGenStringAsCharArray
(boolean genStringAsCharArray) Determines whether text strings are to be generated as char arrays, which improves performance in some cases.void
setIeClassId
(String ieClassId) Sets the class-id value to be sent to Internet Explorer when using invalid input: '<'jsp:plugin> tags.void
setIgnoreJspFragmentErrors
(boolean ignore) void
setIsValidationEnabled
(boolean b) void
setJavaEncoding
(String encodingName) Sets the encoding to use for java files.void
setJspFiles
(String jspFiles) void
setListErrors
(boolean b) void
void
setPackage
(String p) void
setPoolingEnabled
(boolean poolingEnabled) static void
setSchemaResourcePrefix
(String prefix) Sets the path prefix for .xsd resourcesvoid
setSmapDumped
(boolean smapDumped) Set smapSuppressed flag.void
setSmapSuppressed
(boolean smapSuppressed) Set smapSuppressed flag.void
Sets the system class path.void
setTrimSpaces
(boolean ts) void
setUriroot
(String s) Base dir for the webapp.void
setValidateXml
(boolean b) void
setVerbose
(int level) void
File where we generate a complete web.xml with the class definitions.void
File where we generate a web.xml fragment with the class definitions.void
setXpoweredBy
(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:Options
Are we keeping generated code around?- Specified by:
getKeepGenerated
in interfaceOptions
-
getSaveBytecode
public boolean getSaveBytecode()Description copied from interface:Options
If class files are generated as byte arrays, should they be saved to disk at the end of compilations?- Specified by:
getSaveBytecode
in interfaceOptions
-
getTrimSpaces
public boolean getTrimSpaces()Description copied from interface:Options
Should white spaces between directives or actions be trimmed?- Specified by:
getTrimSpaces
in interfaceOptions
-
setTrimSpaces
public void setTrimSpaces(boolean ts) -
isPoolingEnabled
public boolean isPoolingEnabled()Description copied from interface:Options
Returns true if tag handler pooling is enabled, false otherwise.- Specified by:
isPoolingEnabled
in interfaceOptions
-
setPoolingEnabled
public void setPoolingEnabled(boolean poolingEnabled) -
isXpoweredBy
public boolean isXpoweredBy()Description copied from interface:Options
Is generation of X-Powered-By response header enabled/disabled?- Specified by:
isXpoweredBy
in interfaceOptions
-
setXpoweredBy
public void setXpoweredBy(boolean xpoweredBy) -
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 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:
getInitialCapacity
in interfaceOptions
-
getMappedFile
public boolean getMappedFile()Are we supporting HTML mapped servlets?- Specified by:
getMappedFile
in interfaceOptions
-
getProtectionDomain
-
getSendErrorToClient
public boolean getSendErrorToClient()Description copied from interface:Options
Should errors be sent to client or thrown into stderr?- Specified by:
getSendErrorToClient
in interfaceOptions
-
setClassDebugInfo
public void setClassDebugInfo(boolean b) -
getClassDebugInfo
public boolean getClassDebugInfo()Description copied from interface:Options
Should we include debug information in compiled class?- Specified by:
getClassDebugInfo
in interfaceOptions
-
getCheckInterval
public int getCheckInterval()Background compilation check intervals in seconds- Specified by:
getCheckInterval
in interfaceOptions
-
getModificationTestInterval
public int getModificationTestInterval()Modification test interval.- Specified by:
getModificationTestInterval
in interfaceOptions
-
getDevelopment
public boolean getDevelopment()Is Jasper being used in development mode?- Specified by:
getDevelopment
in interfaceOptions
-
getUsePrecompiled
public boolean getUsePrecompiled()Description copied from interface:Options
Returns the value of the usePrecompiled (or use-precompiled) init param.- Specified by:
getUsePrecompiled
in interfaceOptions
-
isSmapSuppressed
public boolean isSmapSuppressed()Is the generation of SMAP info for JSR45 debugging suppressed?- Specified by:
isSmapSuppressed
in 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:
isSmapDumped
in 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:
genStringAsCharArray
in 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:Options
Are text strings to be generated as byte arrays, if the page is unbuffered?- Specified by:
genStringAsByteArray
in interfaceOptions
-
isDefaultBufferNone
public boolean isDefaultBufferNone()Description copied from interface:Options
If the buffer attribute for the page directive is not specified, is the default "none"?- Specified by:
isDefaultBufferNone
in 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:
getIeClassId
in interfaceOptions
- Returns:
- Class-id value
-
getScratchDir
Description copied from interface:Options
What is my scratch dir?- Specified by:
getScratchDir
in interfaceOptions
-
getJspCompilerPlugin
-
getJspCompilerPath
-
getCompiler
Compiler to use.- Specified by:
getCompiler
in interfaceOptions
-
setCompiler
-
getCompilerTargetVM
Description copied from interface:Options
The compiler target VM, e.g. 1.1, 1.2, 1.3, 1.4, or 1.5.- Specified by:
getCompilerTargetVM
in interfaceOptions
- See Also:
-
setCompilerTargetVM
-
getCompilerSourceVM
Description copied from interface:Options
Compiler source VM, e.g. 1.3, 1.4, or 1.5.- Specified by:
getCompilerSourceVM
in interfaceOptions
-
setCompilerSourceVM
-
getCompilerClassName
Description copied from interface:Options
The name of class that implements JavaCompiler, used for Java compilations.- Specified by:
getCompilerClassName
in interfaceOptions
-
getTldScanner
Description copied from interface:Options
The 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:
getTldScanner
in 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:
getJavaEncoding
in interfaceOptions
- Returns:
- String The encoding
-
setJavaEncoding
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
boolean flag to tell Ant whether to fork JSP page compilations. -
getClassPath
Description copied from interface:Options
What classpath should I use while compiling the servlets generated from JSP files?- Specified by:
getClassPath
in interfaceOptions
-
setClassPath
-
getSystemClassPath
Gets the system class path.- Specified by:
getSystemClassPath
in 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:
isValidationEnabled
in 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:
getJspConfig
in interfaceOptions
-
getTagPluginManager
Description copied from interface:Options
Obtain a Tag Plugin Manager- Specified by:
getTagPluginManager
in interfaceOptions
-
generateWebMapping
- Throws:
IOException
-
getJSPCompilationErrors
Gets the list of JSP compilation errors caught during the most recent invocation of this instance'sexecute
method 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
execute
method, 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()
-