| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.apache.jasper; |
| |
| import java.io.File; |
| import java.util.Map; |
| |
| import jakarta.servlet.jsp.tagext.TagLibraryInfo; |
| |
| import org.apache.jasper.compiler.JspConfig; |
| import org.apache.jasper.compiler.TagPluginManager; |
| import org.apache.jasper.compiler.TldCache; |
| |
| /** |
| * A class to hold all init parameters specific to the JSP engine. |
| * |
| * @author Anil K. Vijendran |
| * @author Hans Bergsten |
| * @author Pierre Delisle |
| */ |
| public 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. |
| * @return <code>true</code> to get an error |
| */ |
| boolean getErrorOnUseBeanInvalidClassAttribute(); |
| |
| /** |
| * @return <code>true</code> to keep the generated source |
| */ |
| boolean getKeepGenerated(); |
| |
| /** |
| * @return <code>true</code> if tag handler pooling is enabled, |
| * <code>false</code> otherwise. |
| */ |
| boolean isPoolingEnabled(); |
| |
| /** |
| * @return <code>true</code> if HTML mapped Servlets are supported. |
| */ |
| boolean getMappedFile(); |
| |
| /** |
| * @return <code>true</code> if debug information in included |
| * in compiled classes. |
| */ |
| boolean getClassDebugInfo(); |
| |
| /** |
| * @return background compile thread check interval in seconds |
| */ |
| int getCheckInterval(); |
| |
| /** |
| * Main development flag, which enables detailed error reports with |
| * sources, as well automatic recompilation of JSPs and tag files. |
| * This setting should usually be <code>false</code> when running |
| * in production. |
| * @return <code>true</code> if Jasper is in development mode |
| */ |
| boolean getDevelopment(); |
| |
| /** |
| * @return <code>true</code> to include a source fragment in exception |
| * messages. |
| */ |
| boolean getDisplaySourceFragment(); |
| |
| /** |
| * @return <code>true</code> to suppress generation of SMAP info for |
| * JSR45 debugging. |
| */ |
| boolean isSmapSuppressed(); |
| |
| /** |
| * This setting is ignored if suppressSmap() is <code>true</code>. |
| * @return <code>true</code> to write SMAP info for JSR45 debugging to a |
| * file. |
| */ |
| boolean isSmapDumped(); |
| |
| /** |
| * @return {@link TrimSpacesOption#TRUE} to remove template text that |
| * consists only of whitespace from the output completely, |
| * {@link TrimSpacesOption#SINGLE} to replace such template text |
| * with a single space, {@link TrimSpacesOption#FALSE} to leave |
| * such template text unchanged or {@link 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. |
| */ |
| TrimSpacesOption getTrimSpaces(); |
| |
| /** |
| * @return the work folder |
| */ |
| File getScratchDir(); |
| |
| /** |
| * @return the classpath used to compile generated Servlets |
| */ |
| String getClassPath(); |
| |
| /** |
| * Compiler to use. |
| * |
| * <p> |
| * If <code>null</code> (the default), the java compiler from Eclipse JDT |
| * project, bundled with Tomcat, will be used. Otherwise, the |
| * <code>javac</code> 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. |
| * @return the compiler name |
| */ |
| String getCompiler(); |
| |
| /** |
| * @return the compiler target VM, e.g. 1.8. |
| */ |
| String getCompilerTargetVM(); |
| |
| /** |
| * @return the compiler source VM, e.g. 1.8. |
| */ |
| String getCompilerSourceVM(); |
| |
| /** |
| * @return Jasper Java compiler class to use. |
| */ |
| String getCompilerClassName(); |
| |
| /** |
| * 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). |
| * |
| * @return the instance of the TldLocationsCache |
| * for the web-application. |
| */ |
| TldCache getTldCache(); |
| |
| /** |
| * @return Java platform encoding to generate the JSP page servlet. |
| */ |
| String getJavaEncoding(); |
| |
| /** |
| * The boolean flag to tell Ant whether to fork JSP page compilations. |
| * |
| * <p> |
| * Is used only when Jasper uses an external java compiler (wrapped through |
| * a <code>javac</code> Apache Ant task). |
| * @return <code>true</code> to fork a process during compilation |
| */ |
| boolean getFork(); |
| |
| /** |
| * @return JSP configuration information specified in web.xml. |
| */ |
| JspConfig getJspConfig(); |
| |
| /** |
| * @return <code>true</code> to generate a X-Powered-By response header. |
| */ |
| boolean isXpoweredBy(); |
| |
| /** |
| * @return a Tag Plugin Manager |
| */ |
| TagPluginManager getTagPluginManager(); |
| |
| /** |
| * Indicates whether text strings are to be generated as char arrays. |
| * |
| * @return <code>true</code> if text strings are to be generated as char |
| * arrays, <code>false</code> otherwise |
| */ |
| boolean genStringAsCharArray(); |
| |
| /** |
| * @return modification test interval. |
| */ |
| int getModificationTestInterval(); |
| |
| |
| /** |
| * @return <code>true</code> if re-compile will occur on a failure. |
| */ |
| boolean getRecompileOnFail(); |
| |
| /** |
| * @return <code>true</code> is caching is enabled |
| * (used for precompilation). |
| */ |
| boolean isCaching(); |
| |
| /** |
| * The web-application wide cache for the TagLibraryInfo tag library |
| * descriptors, used if {@link #isCaching()} returns <code>true</code>. |
| * |
| * <p> |
| * Using this cache avoids the cost of repeating the parsing of a tag |
| * library descriptor XML file (performed by TagLibraryInfoImpl.parseTLD). |
| * </p> |
| * |
| * @return the Map(String uri, TagLibraryInfo tld) instance. |
| */ |
| Map<String, TagLibraryInfo> getCache(); |
| |
| /** |
| * 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. |
| * @return The JSP count |
| */ |
| int getMaxLoadedJsps(); |
| |
| /** |
| * @return the idle time in seconds after which a JSP is unloaded. |
| * If unset or less or equal than 0, no jsps are unloaded. |
| */ |
| int getJspIdleTimeout(); |
| |
| /** |
| * @return {@code true} if the quote escaping required by section JSP.1.6 of |
| * the JSP specification should be applied to scriplet expression. |
| */ |
| boolean getStrictQuoteEscaping(); |
| |
| /** |
| * @return {@code true} if EL expressions used within attributes should have |
| * the quoting rules in JSP.1.6 applied to the expression. |
| */ |
| boolean getQuoteAttributeEL(); |
| |
| /** |
| * @return the name of the variable that will be used in the generated |
| * JSP code for the expression factory |
| */ |
| default String getVariableForExpressionFactory() { |
| return "_el_expressionfactory"; |
| } |
| |
| /** |
| * @return the name of the variable that will be used in the generated |
| * JSP code for the instance manager |
| */ |
| default String getVariableForInstanceManager() { |
| return "_jsp_instancemanager"; |
| } |
| |
| /** |
| * @return {@code true} if tag pooling is disabled with page that uses |
| * extends. |
| */ |
| default boolean getPoolTagsWithExtends() { |
| return false; |
| } |
| |
| /** |
| * @return {@code true} if the requirement to have the object |
| * used in jsp:getProperty action to be previously "introduced" |
| * to the JSP processor (see JSP.5.3) is enforced. |
| */ |
| default boolean getStrictGetProperty() { |
| return true; |
| } |
| |
| /** |
| * @return {@code true} if the strict white space rules are |
| * applied. |
| */ |
| default boolean getStrictWhitespace() { |
| return true; |
| } |
| |
| /** |
| * @return the default base class for generated JSP Servlets |
| */ |
| default String getJspServletBase() { |
| return "org.apache.jasper.runtime.HttpJspBase"; |
| } |
| |
| /** |
| * _jspService is the name of the method that is called by |
| * HttpJspBase.service(). This is where most of the code generated |
| * from JSPs go. |
| * @return the method name |
| */ |
| default String getServiceMethodName() { |
| return "_jspService"; |
| } |
| |
| /** |
| * @return ServletContext attribute for classpath. This is tomcat specific. |
| * Other servlet engines may choose to support this attribute if they |
| * want to have this JSP engine running on them. |
| */ |
| default String getServletClasspathAttribute() { |
| return "org.apache.catalina.jsp_classpath"; |
| } |
| |
| /** |
| * @return The query parameter that causes the JSP engine to just |
| * pregenerated the servlet but not invoke it. |
| */ |
| default String getJspPrecompilationQueryParameter() { |
| return "jsp_precompile"; |
| } |
| |
| /** |
| * @return The default package name for compiled jsp pages. |
| */ |
| default String getGeneratedJspPackageName() { |
| return "org.apache.jsp"; |
| } |
| |
| /** |
| * @return The default package name for tag handlers generated from tag files. |
| */ |
| default String getGeneratedTagFilePackageName() { |
| return "org.apache.jsp.tag"; |
| } |
| |
| /** |
| * @return Prefix to use for generated temporary variable names |
| */ |
| default String getTempVariableNamePrefix() { |
| return "_jspx_temp"; |
| } |
| |
| /** |
| * @return {@code true} if the container instance manager will be used |
| * to create the bean instances |
| */ |
| default boolean getUseInstanceManagerForTags() { |
| return false; |
| } |
| |
| |
| /** |
| * 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 {@code true}. |
| * |
| * @return {@code true} to include the timestamp, otherwise don't include it |
| */ |
| default boolean getGeneratedJavaAddTimestamp() { |
| return true; |
| } |
| } |