public class XJspCompiler extends JDTCompiler
Class that enabled compilation of custom JSP pages that are part of an extension that uses classes from the extension JAR file (eg. a JAR file in the /WEB-INF/extensions directory).
To make this compiler work the following is required:
- The JSP file must have a '.xjsp' extension.
- This compiler class must be installed in Tomcat's /lib directory.
- The '.xjsp' extensions must be mapped to the regular JSP servlet with the 'compilerClass' parameter set to this class.
- Last modified
- $Date:2008-03-20 12:15:25 +0100 (Thu, 20 Mar 2008) $
Fields Modifier and Type Field Description
private static PatternPath to JSP must match: /extensions/[jar-file-name]/[jsp-path].xjsp group(1) = JAR name, group(2) = JSP path
static StringThe location where the extensions resources are extracted.
Constructors Constructor Description
Modifier and Type Method Description
(boolean compileClass, boolean jspcMode)Called when a JSP page needs recompiling.
()Get a class loader that can load classes from the current web application as well as the extensions JAR file.
()Get the path to the plug-in directory from BASE.
()Get the class loader for the web application this JSP is located in.
JspCompilationContext ctxt, JspServletWrapper jsw)(Initialises the compiler.
(boolean checkClass)Checks if the extensions JAR file has been modified.
()Sets the context class loader if this JSP page is an extension JSP page and if the extensions JAR file has been modified since the last time the class loader was set.
Methods inherited from class org.apache.jasper.compiler.Compiler
compile, compile, generateJava, getCompilationContext, getErrorDispatcher, getPageInfo, getSmap, isOutDated, removeGeneratedClassFiles, removeGeneratedFiles
RESOURCES_URLpublic static final String RESOURCES_URLThe location where the extensions resources are extracted.
- See Also:
- Constant Field Values
PATH_MATCHprivate static final Pattern PATH_MATCHPath to JSP must match: /extensions/[jar-file-name]/[jsp-path].xjsp group(1) = JAR name, group(2) = JSP path
logprivate final Log log
pluginsDirprivate File pluginsDir
isXJspprivate boolean isXJsp
extensionsJarprivate File extensionsJar
lastModifiedprivate long lastModified
initInitialises the compiler. The JSP name is matched against the required pattern and the name of the extensions JAR file is extracted from the request path.
compilepublic void compile(boolean compileClass, boolean jspcMode) throws FileNotFoundException, JasperException, ExceptionCalled when a JSP page needs recompiling. We check if the extension JAR file has been modified and update the class loader if it has.
isOutDatedpublic boolean isOutDated(boolean checkClass)Checks if the extensions JAR file has been modified. If not, calls super.isOutDated(checkClass)
setContextClassLoaderprotected void setContextClassLoader() throws ExceptionSets the context class loader if this JSP page is an extension JSP page and if the extensions JAR file has been modified since the last time the class loader was set. This method does nothing if the JSP file is not an extensions JSP file, or if the JAR file hasn't changed since the last use.
getExtensionClassLoaderGet a class loader that can load classes from the current web application as well as the extensions JAR file. The class loader for the current web application can be found in JspRuntimeContext.getParentClassLoader(). The extensions class loader is loaded from JarClassLoader in BASE.
getWebAppClassLoaderprotected ClassLoader getWebAppClassLoader()Get the class loader for the web application this JSP is located in. Default implementation returns JspRuntimeContext.getParentClassLoader()
getPluginsDirprotected File getPluginsDir()Get the path to the plug-in directory from BASE.