Class JspC

  • All Implemented Interfaces:
    Options

    public class JspC
    extends java.lang.Object
    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="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 Detail

      • DEFAULT_IE_CLASS_ID

        public static final java.lang.String DEFAULT_IE_CLASS_ID
        See Also:
        Constant Field Values
      • log

        private static java.util.logging.Logger log
      • SWITCH_OUTPUT_DIR

        private static final java.lang.String SWITCH_OUTPUT_DIR
        See Also:
        Constant Field Values
      • SWITCH_IE_CLASS_ID

        private static final java.lang.String SWITCH_IE_CLASS_ID
        See Also:
        Constant Field Values
      • SWITCH_PACKAGE_NAME

        private static final java.lang.String SWITCH_PACKAGE_NAME
        See Also:
        Constant Field Values
      • SWITCH_CLASS_NAME

        private static final java.lang.String SWITCH_CLASS_NAME
        See Also:
        Constant Field Values
      • SWITCH_FULL_STOP

        private static final java.lang.String SWITCH_FULL_STOP
        See Also:
        Constant Field Values
      • SWITCH_FILE_WEBAPP

        private static final java.lang.String SWITCH_FILE_WEBAPP
        See Also:
        Constant Field Values
      • SWITCH_WEBAPP_INC

        private static final java.lang.String SWITCH_WEBAPP_INC
        See Also:
        Constant Field Values
      • SWITCH_WEBAPP_XML

        private static final java.lang.String SWITCH_WEBAPP_XML
        See Also:
        Constant Field Values
      • SWITCH_XPOWERED_BY

        private static final java.lang.String SWITCH_XPOWERED_BY
        See Also:
        Constant Field Values
      • SWITCH_TRIM_SPACES

        private static final java.lang.String SWITCH_TRIM_SPACES
        See Also:
        Constant Field Values
      • SWITCH_CLASSPATH

        private static final java.lang.String SWITCH_CLASSPATH
        See Also:
        Constant Field Values
      • SWITCH_SYSCLASSPATH

        private static final java.lang.String SWITCH_SYSCLASSPATH
        See Also:
        Constant Field Values
      • SWITCH_DUMP_SMAP

        private static final java.lang.String SWITCH_DUMP_SMAP
        See Also:
        Constant Field Values
      • SWITCH_SCHEMAS_PREFIX

        private static final java.lang.String SWITCH_SCHEMAS_PREFIX
        See Also:
        Constant Field Values
      • SWITCH_DTDS_PREFIX

        private static final java.lang.String SWITCH_DTDS_PREFIX
        See Also:
        Constant Field Values
      • SWITCH_GENERATE_CLASSES

        private static final java.lang.String SWITCH_GENERATE_CLASSES
        See Also:
        Constant Field Values
      • SWITCH_IGNORE_JSP_FRAGMENTS

        private static final java.lang.String SWITCH_IGNORE_JSP_FRAGMENTS
        See Also:
        Constant Field Values
      • SWITCH_DISABLE_POOLING

        private static final java.lang.String SWITCH_DISABLE_POOLING
        See Also:
        Constant Field Values
      • insertBefore

        private static final java.lang.String[] insertBefore
      • dieLevel

        private int dieLevel
      • classPath

        private java.lang.String classPath
      • sysClassPath

        private java.lang.String sysClassPath
      • loader

        private java.net.URLClassLoader 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

        private java.io.File scratchDir
      • ieClassId

        private java.lang.String ieClassId
      • targetPackage

        private java.lang.String targetPackage
      • targetClassName

        private java.lang.String targetClassName
      • uriBase

        private java.lang.String uriBase
      • uriRoot

        private java.lang.String uriRoot
      • helpNeeded

        private boolean helpNeeded
      • compile

        private boolean compile
      • smapSuppressed

        private boolean smapSuppressed
      • smapDumped

        private boolean smapDumped
      • compiler

        private java.lang.String compiler
      • compilerTargetVM

        private java.lang.String compilerTargetVM
      • compilerSourceVM

        private java.lang.String compilerSourceVM
      • classDebugInfo

        private boolean classDebugInfo
      • failOnError

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

        private java.util.ArrayList<java.lang.String> extensions
      • pages

        private java.util.ArrayList<java.lang.String> pages
      • errorOnUseBeanInvalidClassAttribute

        private boolean errorOnUseBeanInvalidClassAttribute
      • javaEncoding

        private java.lang.String javaEncoding
        The java file encoding. Default is UTF-8. Added per bugzilla 19622.
      • webxmlFile

        private java.lang.String webxmlFile
      • webxmlLevel

        private int webxmlLevel
      • addWebXmlMappings

        private boolean addWebXmlMappings
      • mapout

        private java.io.Writer mapout
      • servletout

        private java.io.CharArrayWriter servletout
      • mappingout

        private java.io.CharArrayWriter mappingout
      • tldScanner

        private TldScanner tldScanner
        Cache for the TLD locations
      • verbose

        private boolean verbose
      • listErrors

        private boolean listErrors
      • showSuccess

        private boolean showSuccess
      • argPos

        private int argPos
      • fullstop

        private boolean fullstop
      • args

        private java.lang.String[] args
      • isValidationEnabled

        private boolean isValidationEnabled
      • jspErrors

        private java.util.HashMap<java.lang.String,​JasperException> jspErrors
      • myJavaVersion

        private static java.lang.String myJavaVersion
      • ignoreJspFragmentErrors

        private boolean ignoreJspFragmentErrors
      • dependents

        private java.util.Set<java.lang.String> dependents
      • taglibs

        private java.util.concurrent.ConcurrentHashMap<java.lang.String,​javax.servlet.jsp.tagext.TagLibraryInfo> taglibs
      • tagFileJarUrls

        private java.util.concurrent.ConcurrentHashMap<java.lang.String,​java.net.URL> tagFileJarUrls
    • Constructor Detail

      • JspC

        public JspC()
    • Method Detail

      • main

        public static void main​(java.lang.String[] arg)
      • getDieLevel

        public int getDieLevel()
      • getKeepGenerated

        public boolean getKeepGenerated()
        Description copied from interface: Options
        Are we keeping generated code around?
        Specified by:
        getKeepGenerated in interface Options
      • 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 interface Options
      • getTrimSpaces

        public boolean getTrimSpaces()
        Description copied from interface: Options
        Should white spaces between directives or actions be trimmed?
        Specified by:
        getTrimSpaces in interface Options
      • 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 interface Options
      • 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 interface Options
      • 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 interface Options
      • 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 interface Options
      • getMappedFile

        public boolean getMappedFile()
        Are we supporting HTML mapped servlets?
        Specified by:
        getMappedFile in interface Options
      • getProtectionDomain

        public java.lang.Object getProtectionDomain()
      • getSendErrorToClient

        public boolean getSendErrorToClient()
        Description copied from interface: Options
        Should errors be sent to client or thrown into stderr?
        Specified by:
        getSendErrorToClient in interface Options
      • 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 interface Options
      • getCheckInterval

        public int getCheckInterval()
        Background compilation check intervals in seconds
        Specified by:
        getCheckInterval in interface Options
      • getDevelopment

        public boolean getDevelopment()
        Is Jasper being used in development mode?
        Specified by:
        getDevelopment in interface Options
      • getUsePrecompiled

        public boolean getUsePrecompiled()
        Description copied from interface: Options
        Returns the value of the usePrecompiled (or use-precompiled) init param.
        Specified by:
        getUsePrecompiled in interface Options
      • isSmapSuppressed

        public boolean isSmapSuppressed()
        Is the generation of SMAP info for JSR45 debugging suppressed?
        Specified by:
        isSmapSuppressed in interface Options
      • 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 interface Options
      • 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 interface Options
        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 interface Options
      • 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 interface Options
      • setDefaultBufferNone

        public void setDefaultBufferNone​(boolean defaultBufferNone)
      • setIeClassId

        public void setIeClassId​(java.lang.String ieClassId)
        Sets the class-id value to be sent to Internet Explorer when using tags.
        Parameters:
        ieClassId - Class-id value
      • getIeClassId

        public java.lang.String getIeClassId()
        Gets the class-id value that is sent to Internet Explorer when using tags.
        Specified by:
        getIeClassId in interface Options
        Returns:
        Class-id value
      • getScratchDir

        public java.io.File getScratchDir()
        Description copied from interface: Options
        What is my scratch dir?
        Specified by:
        getScratchDir in interface Options
      • getJspCompilerPlugin

        public java.lang.Class getJspCompilerPlugin()
      • getJspCompilerPath

        public java.lang.String getJspCompilerPath()
      • getCompiler

        public java.lang.String getCompiler()
        Compiler to use.
        Specified by:
        getCompiler in interface Options
      • setCompiler

        public void setCompiler​(java.lang.String c)
      • setCompilerTargetVM

        public void setCompilerTargetVM​(java.lang.String vm)
      • getCompilerSourceVM

        public java.lang.String getCompilerSourceVM()
        Description copied from interface: Options
        Compiler source VM, e.g. 1.3, 1.4, or 1.5.
        Specified by:
        getCompilerSourceVM in interface Options
      • setCompilerSourceVM

        public void setCompilerSourceVM​(java.lang.String vm)
      • getCompilerClassName

        public java.lang.String getCompilerClassName()
        Description copied from interface: Options
        The name of class that implements JavaCompiler, used for Java compilations.
        Specified by:
        getCompilerClassName in interface Options
      • getTldScanner

        public TldScanner 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 interface Options
        Returns:
        the instance of the TldScanner for the web-application.
      • getJavaEncoding

        public java.lang.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​(java.lang.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
        boolean flag to tell Ant whether to fork JSP page compilations.
        Specified by:
        getFork in interface Options
      • getClassPath

        public java.lang.String getClassPath()
        Description copied from interface: Options
        What classpath should I use while compiling the servlets generated from JSP files?
        Specified by:
        getClassPath in interface Options
      • setClassPath

        public void setClassPath​(java.lang.String s)
      • getSystemClassPath

        public java.lang.String getSystemClassPath()
        Gets the system class path.
        Specified by:
        getSystemClassPath in interface Options
        Returns:
        The system class path
      • setSystemClassPath

        public void setSystemClassPath​(java.lang.String s)
        Sets the system class path.
        Parameters:
        s - The system class path to use
      • setUriroot

        public void setUriroot​(java.lang.String s)
        Base dir for the webapp. Used to generate class names and resolve includes
      • setSchemaResourcePrefix

        public static void setSchemaResourcePrefix​(java.lang.String prefix)
        Sets the path prefix for .xsd resources
      • setDtdResourcePrefix

        public static void setDtdResourcePrefix​(java.lang.String prefix)
        Sets the path prefix for .dtd resources
      • setJspFiles

        public void setJspFiles​(java.lang.String jspFiles)
      • setCompile

        public void setCompile​(boolean b)
      • setVerbose

        public void setVerbose​(int level)
      • setValidateXml

        public void setValidateXml​(boolean b)
      • setIsValidationEnabled

        public void setIsValidationEnabled​(boolean b)
      • setListErrors

        public void setListErrors​(boolean b)
      • setOutputDir

        public void setOutputDir​(java.lang.String s)
      • setPackage

        public void setPackage​(java.lang.String p)
      • setClassName

        public void setClassName​(java.lang.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 ?
      • setWebXmlFragment

        public void setWebXmlFragment​(java.lang.String s)
        File where we generate a web.xml fragment with the class definitions.
      • setWebXml

        public void setWebXml​(java.lang.String s)
        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

        public JspConfig getJspConfig()
        Obtain JSP configuration informantion specified in web.xml.
        Specified by:
        getJspConfig in interface Options
      • generateWebMapping

        public void generateWebMapping​(java.lang.String file,
                                       JspCompilationContext clctxt)
                                throws java.io.IOException
        Throws:
        java.io.IOException
      • getJSPCompilationErrors

        public java.util.List<JasperException> getJSPCompilationErrors()
        Gets the list of JSP compilation errors caught during the most recent invocation of this instance's execute 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

        protected void mergeIntoWebXml()
                                throws java.io.IOException
        Include the generated web.xml inside the webapp's web.xml.
        Throws:
        java.io.IOException
      • scanFiles

        public void scanFiles​(java.io.File base)
                       throws JasperException
        Locate all jsp files in the webapp. Used if no explicit jsps are specified.
        Throws:
        JasperException
      • nextArg

        private java.lang.String nextArg()
      • nextFile

        private java.lang.String nextFile()
      • initWebXml

        private void initWebXml()
      • completeWebXml

        private void completeWebXml()
      • initServletContext

        private void initServletContext()
      • initClassLoader

        private void initClassLoader​(JspCompilationContext clctxt)
                              throws java.io.IOException
        Initializes the classloader as/if needed for the given compilation context.
        Parameters:
        clctxt - The compilation context
        Throws:
        java.io.IOException - If an error occurs
      • locateUriRoot

        private void locateUriRoot​(java.io.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. XXX Maybe we should require the docbase.
      • initSystemClassLoader

        private java.lang.ClassLoader initSystemClassLoader()
                                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • purgeJspFragmentErrors

        private void purgeJspFragmentErrors()