| /* |
| * 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. |
| */ |
| 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 TldCache 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; |
| } |
| |
| /** |
| * A string containing a comma-separated list of names to which custom tag implementations should be applied. |
| * Unknown or unused tag entries are harmless. Generally defined via an init parameter on the JspServlet. |
| * |
| * @return which tags to use |
| */ |
| String getUseNonstandardTagOptimizations(); |
| } |