This is an automated email from the ASF dual-hosted git repository. ddekany pushed a commit to branch 3 in repository https://gitbox.apache.org/repos/asf/freemarker.git
commit 64ae10976f644f88e7b5b2079d663f908cfb75dc Author: ddekany <[email protected]> AuthorDate: Wed Dec 27 21:33:41 2023 +0100 Servlet: Switched from javax to Jakarta. JSP tag support is currently broken, but we probably should remove it anyway. Also updated Spring to 6.x, as that's what already supports on Jakarta. --- FM3-CHANGE-LOG.txt | 2 + README.md | 2 + freemarker-manual/src/main/docgen/en_US/book.xml | 22 +++---- freemarker-servlet/build.gradle.kts | 38 ++++++------ .../freemarker/servlet/AllHttpScopesHashModel.java | 6 +- .../freemarker/servlet/FreemarkerServlet.java | 16 ++--- .../freemarker/servlet/HttpRequestHashModel.java | 17 ++---- .../servlet/HttpRequestParametersHashModel.java | 17 ++---- .../freemarker/servlet/HttpSessionHashModel.java | 13 ++-- .../org/apache/freemarker/servlet/IncludePage.java | 28 ++++----- .../apache/freemarker/servlet/InitParamParser.java | 17 +++--- .../servlet/ServletContextHashModel.java | 5 +- .../freemarker/servlet/WebAppTemplateLoader.java | 23 ++++--- .../freemarker/servlet/jsp/BodyContentImpl.java | 12 ++-- .../freemarker/servlet/jsp/EventForwarding.java | 10 ++-- .../jsp/FreeMarkerJspApplicationContext.java | 28 +++------ .../servlet/jsp/FreeMarkerJspFactory.java | 16 ++--- .../servlet/jsp/FreeMarkerPageContext.java | 22 +++---- .../freemarker/servlet/jsp/JspTagModelBase.java | 6 +- .../freemarker/servlet/jsp/JspWriterAdapter.java | 7 +-- .../freemarker/servlet/jsp/PageContextFactory.java | 3 +- .../servlet/jsp/SimpleTagDirectiveModel.java | 21 ++++--- .../freemarker/servlet/jsp/TagDirectiveModel.java | 19 +++--- .../freemarker/servlet/jsp/TaglibFactory.java | 6 +- .../servlet/DummyMockServletContext.java | 70 +++++++++++++--------- .../freemarker/servlet/FreemarkerServletTest.java | 42 ++++++------- .../servlet/jsp/JspTestFreemarkerServlet.java | 3 +- .../servlet/jsp/RealServletContainertTest.java | 35 +++++------ .../freemarker/servlet/jsp/TLDParsingTest.java | 23 ++++--- .../jsp/taglibmembers/AttributeAccessorTag.java | 5 +- .../jsp/taglibmembers/AttributeInfoTag.java | 13 ++-- .../servlet/jsp/taglibmembers/GetAndSetTag.java | 11 ++-- .../servlet/jsp/taglibmembers/TestSimpleTag.java | 12 ++-- .../servlet/jsp/taglibmembers/TestSimpleTag2.java | 6 +- .../servlet/jsp/taglibmembers/TestSimpleTag3.java | 6 +- .../servlet/jsp/taglibmembers/TestTag.java | 10 +--- .../servlet/jsp/taglibmembers/TestTag2.java | 8 +-- .../servlet/jsp/taglibmembers/TestTag3.java | 8 +-- .../servlet/test/DefaultModel2TesterAction.java | 9 ++- .../freemarker/servlet/test/Model2Action.java | 4 +- .../servlet/test/Model2TesterServlet.java | 19 +++--- .../freemarker/servlet/test/WebAppTestCase.java | 19 ++---- freemarker-spring/build.gradle.kts | 19 +++--- .../model/AbstractSpringTemplateCallableModel.java | 12 +--- .../AbstractSpringTemplateDirectiveModel.java | 11 ++-- .../model/AbstractSpringTemplateFunctionModel.java | 5 +- .../freemarker/spring/model/BindDirective.java | 11 ++-- .../spring/model/BindErrorsDirective.java | 11 ++-- .../freemarker/spring/model/EvalFunction.java | 12 +--- .../freemarker/spring/model/MessageFunction.java | 17 ++---- .../spring/model/NestedPathDirective.java | 11 ++-- .../model/SpringTemplateCallableHashModel.java | 13 ++-- .../freemarker/spring/model/ThemeFunction.java | 5 +- .../freemarker/spring/model/TransformFunction.java | 9 ++- .../freemarker/spring/model/UrlFunction.java | 47 ++++++--------- ...stractCheckedElementTemplateDirectiveModel.java | 9 ++- ...DataBoundFormElementTemplateDirectiveModel.java | 11 ++-- .../form/AbstractFormTemplateDirectiveModel.java | 11 ++-- .../AbstractHtmlElementTemplateDirectiveModel.java | 23 +++---- ...ractHtmlInputElementTemplateDirectiveModel.java | 11 ++-- ...tMultiCheckedElementTemplateDirectiveModel.java | 22 +++---- ...SingleCheckedElementTemplateDirectiveModel.java | 11 ++-- .../model/form/ButtonTemplateDirectiveModel.java | 11 ++-- .../model/form/CheckboxTemplateDirectiveModel.java | 11 ++-- .../form/CheckboxesTemplateDirectiveModel.java | 9 ++- .../model/form/ErrorsTemplateDirectiveModel.java | 17 +++--- .../model/form/FormTemplateDirectiveModel.java | 28 ++++----- .../form/HiddenInputTemplateDirectiveModel.java | 11 ++-- .../model/form/InputTemplateDirectiveModel.java | 11 ++-- .../model/form/LabelTemplateDirectiveModel.java | 11 ++-- .../model/form/OptionTemplateDirectiveModel.java | 11 ++-- .../model/form/OptionsTemplateDirectiveModel.java | 11 ++-- .../form/PasswordInputTemplateDirectiveModel.java | 11 ++-- .../form/RadioButtonTemplateDirectiveModel.java | 11 ++-- .../form/RadioButtonsTemplateDirectiveModel.java | 4 +- .../model/form/SelectTemplateDirectiveModel.java | 23 +++---- .../form/SpringFormTemplateCallableHashModel.java | 13 ++-- .../model/form/TextareaTemplateDirectiveModel.java | 11 ++-- .../spring/web/view/AbstractFreeMarkerView.java | 13 ++-- .../freemarker/spring/web/view/FreeMarkerView.java | 23 +++---- .../spring/web/view/FreeMarkerViewResolver.java | 7 +-- .../spring/web/view/PageContextServlet.java | 12 ++-- .../spring/web/view/PageContextServletConfig.java | 6 +- .../apache/freemarker/spring/web/view/EchoTag.java | 6 +- .../web/view/FreeMarkerViewResolverTest.java | 15 +++-- .../spring/web/view/FreeMarkerViewTest.java | 17 +++--- 86 files changed, 545 insertions(+), 698 deletions(-) diff --git a/FM3-CHANGE-LOG.txt b/FM3-CHANGE-LOG.txt index f9ac009e..92b2a028 100644 --- a/FM3-CHANGE-LOG.txt +++ b/FM3-CHANGE-LOG.txt @@ -640,3 +640,5 @@ Things not yet forward-ported from 2.3-gae - Lambda-like expressions: The way those work in 2.x is limited because of BC restrictions. So it should work differently here. - ?with_args/?with_args_last: Have to implement the better null handling in the template language first - Some of the Gradle build refinements, like signature related and, rebroducible build stuff +- JSP taglib support is broken with Jakarta... but then, we probably don't want to support that on Jakarta. + So it should be removed. diff --git a/README.md b/README.md index 7533d408..f047dcba 100644 --- a/README.md +++ b/README.md @@ -4,3 +4,5 @@ Apache FreeMarker 3 This is a placeholder README for the "experimental" FreeMarker 3 branch. See more here: https://cwiki.apache.org/confluence/display/FREEMARKER/FreeMarker+3 + +See also the FM3-CHANGE-LOG.txt diff --git a/freemarker-manual/src/main/docgen/en_US/book.xml b/freemarker-manual/src/main/docgen/en_US/book.xml index 8569625e..6cdb76c4 100644 --- a/freemarker-manual/src/main/docgen/en_US/book.xml +++ b/freemarker-manual/src/main/docgen/en_US/book.xml @@ -7067,7 +7067,7 @@ public class Product { <literal>TemplateModel</literal> interface. This makes it possible, for example, to access <literal>java.sql.ResultSet</literal> as sequence variable in templates, or to access - <literal>javax.servlet.ServletRequest</literal> objects as a hash + <literal>jakarta.servlet.ServletRequest</literal> objects as a hash variable that contains the request attributes, or even to traverse XML documents as FTL variables (<link linkend="xgui">see here</link>). To wrap (convert) these objects, however, you need to plug the proper @@ -12101,7 +12101,7 @@ ${bar?trim}</programlisting> between the <quote>beans</quote> of JSP scopes and FTL variables. For the custom JSP tags, the request, session and application scopes are exactly the same as with real JSP: the attributes of the - <literal>javax.servlet.ServletContext</literal>, + <literal>jakarta.servlet.ServletContext</literal>, <literal>HttpSession</literal> and <literal>ServletRequest</literal> objects. From the FTL side you see these 3 scopes together as the data-model, as it was explained earlier. The page scope corresponds @@ -12151,7 +12151,7 @@ ${bar?trim}</programlisting> <para>Note that you can use JSP taglibs with FreeMarker even if the servlet container has no native JSP support, just make sure that the - <literal>javax.servlet.jsp.*</literal> packages for JSP 2.0 (or + <literal>jakarta.servlet.jsp.*</literal> packages for JSP 2.0 (or later) are available to your Web application.</para> <para>As of this writing, JSP features up to JSP 2.1 are @@ -36883,7 +36883,7 @@ TemplateModel x = env.getVariable("x"); // get variable x</programlisting> <listitem> <para>Bug fixed: When using FreeMarker's JSP support with JSP tags that use - <literal>javax.servlet.jsp.PageContext.pushBody</literal> (like + <literal>jakarta.servlet.jsp.PageContext.pushBody</literal> (like some Stripes tags), <literal>"ArrayIndexOutOfBoundsException: -1"</literal> occurred inside <literal>freemarker.ext.jsp.FreeMarkerPageContext.popWriter</literal>.</para> @@ -38316,7 +38316,7 @@ TemplateModel x = env.getVariable("x"); // get variable x</programlisting> <para>There is a bugfix that may affect the behavior of you Web application if you use JSP tags in FreeMarker templates: FreeMarker's implementation of - <literal>javax.servlet.jsp.PageContext.getSession()</literal> was + <literal>jakarta.servlet.jsp.PageContext.getSession()</literal> was incorrect. The <literal>getSession()</literal> method is a convenience method by which the custom tag can get the current <literal>HttpSession</literal> object (possibly @@ -38477,7 +38477,7 @@ TemplateModel x = env.getVariable("x"); // get variable x</programlisting> <listitem> <para>Bugfix: FreeMarker's implementation of - <literal>javax.servlet.jsp.PageContext.getSession()</literal> + <literal>jakarta.servlet.jsp.PageContext.getSession()</literal> was incorrect. The <literal>getSession()</literal> method is a convenience method by which the custom tag can get the current <literal>HttpSession</literal> object (possibly @@ -40553,10 +40553,10 @@ TemplateModel x = env.getVariable("x"); // get variable x</programlisting> <literal>Configuration.setServletContextForTemplateLoading</literal> has been changed: the first parameter is now <literal>Object</literal> instead of - <literal>javax.servlet.ServletContext</literal>. Thus, you have + <literal>jakarta.servlet.ServletContext</literal>. Thus, you have to recompile your classes that call this method. The change was required to prevent class-loading failure when - <literal>javax.servlet</literal> classes are not available and + <literal>jakarta.servlet</literal> classes are not available and you would not call this method.</para> </listitem> @@ -41082,9 +41082,9 @@ TemplateModel x = env.getVariable("x"); // get variable x</programlisting> <listitem> <para>Bugfix: FreeMarker didn't work if the - <literal>javax.servlet</literal> classes was not available, + <literal>jakarta.servlet</literal> classes was not available, because <literal>Configuration</literal> explicitly referred to - <literal>javax.servlet.ServletContext</literal>.</para> + <literal>jakarta.servlet.ServletContext</literal>.</para> </listitem> <listitem> @@ -42866,7 +42866,7 @@ TemplateModel x = env.getVariable("x"); // get variable x</programlisting> </listitem> <listitem> - <para>Obviously, <literal>javax.servlet</literal> classes are needed + <para>Obviously, <literal>jakarta.servlet</literal> classes are needed for <literal>FreemarkerServlet</literal>. Servlet version 2.2 or later is needed.</para> </listitem> diff --git a/freemarker-servlet/build.gradle.kts b/freemarker-servlet/build.gradle.kts index 496faf3b..2b561a67 100644 --- a/freemarker-servlet/build.gradle.kts +++ b/freemarker-servlet/build.gradle.kts @@ -34,29 +34,24 @@ dependencies { api(libs.legacyFreemarker) // Servlet, JSP, and EL related classes - compileOnly("javax.servlet:javax.servlet-api:3.1.0") - compileOnly("javax.servlet.jsp:javax.servlet.jsp-api:2.3.3") - compileOnly("javax.el:javax.el-api:3.0.0") + compileOnly("jakarta.servlet:jakarta.servlet-api:5.0.0") + compileOnly("jakarta.servlet.jsp:jakarta.servlet.jsp-api:3.0.0") + compileOnly("jakarta.el:jakarta.el-api:4.0.0") - // Chose the Jetty version very carefully, as it should implement the same Servlet API, JSP API, and EL API - // than what we declare above, because the same classes will come from Jetty as well. For example, Jetty depends - // on org.mortbay.jasper:apache-el, which contains the javax.el classes, along with non-javax.el classes, so you - // can't even exclude it. Similarly, org.eclipse.jetty:apache-jsp contains the JSP API javax.servlet.jsp classes, - // yet again along with other classes. Anyway, this mess is temporary, as we will migrate to Jakarta, and only - // support that. - val jettyVersion = "9.4.53.v20231009" - testImplementation("org.eclipse.jetty:jetty-server:$jettyVersion") - testImplementation("org.eclipse.jetty:jetty-webapp:$jettyVersion") - testImplementation("org.eclipse.jetty:jetty-util:$jettyVersion") - testImplementation("org.eclipse.jetty:apache-jsp:$jettyVersion") + // Jetty 12 is Servlet 6 (jakarta), Jetty 11 was Servlet 5 (also jakarta). But Spring Servlet API mocks, + // which we use in tests, jump from Servlet 4 (javax) to 6 (jakarta). So, we have to go with 12. + // (Note that Jetty artifact names, package names were completely changed in 12, also some old API-s + // were replaced with something else. So our test utility code is affected by this as well.) + val jettyVersion = "12.0.5" + // ".ee10" means Jakarta EE 10 => Servlet 6, JSP 3.1, JSTL 3.0 + testImplementation("org.eclipse.jetty.ee10:jetty-ee10-webapp:$jettyVersion") + testImplementation("org.eclipse.jetty.ee10:jetty-ee10-annotations:$jettyVersion") + testImplementation("org.eclipse.jetty.ee10:jetty-ee10-apache-jsp:$jettyVersion") + testImplementation("org.eclipse.jetty.ee10:jetty-ee10-glassfish-jstl:$jettyVersion") + testImplementation("org.eclipse.jetty:jetty-slf4j-impl:$jettyVersion") // Jetty also contains the servlet-api and jsp-api and el-api classes - // JSP JSTL (not included in Jetty): - val apacheStandardTaglibsVersion = "1.2.5" - testImplementation("org.apache.taglibs:taglibs-standard-impl:$apacheStandardTaglibsVersion") - testImplementation("org.apache.taglibs:taglibs-standard-spec:$apacheStandardTaglibsVersion") - - testImplementation("displaytag:displaytag:1.2") { + testImplementation("com.github.hazendaz:displaytag:2.5.3") { exclude(group = "com.lowagie", module = "itext") // We manage logging centrally: exclude(group = "org.slf4j", module = "slf4j-log4j12") @@ -67,8 +62,9 @@ dependencies { // Override Java 9 incompatible version (coming from displaytag): testImplementation("commons-lang:commons-lang:2.6") - val springVersion = "2.5.6.SEC03" + val springVersion = "6.0.15" testImplementation("org.springframework:spring-core:$springVersion") + testImplementation("org.springframework:spring-web:$springVersion") testImplementation("org.springframework:spring-test:$springVersion") testImplementation(project(":freemarker-test-utils")) diff --git a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/AllHttpScopesHashModel.java b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/AllHttpScopesHashModel.java index 80e0f9a6..9e674ba2 100644 --- a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/AllHttpScopesHashModel.java +++ b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/AllHttpScopesHashModel.java @@ -19,14 +19,14 @@ package org.apache.freemarker.servlet; +import jakarta.servlet.ServletContext; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpSession; import org.apache.freemarker.core.TemplateException; import org.apache.freemarker.core.model.ObjectWrapper; import org.apache.freemarker.core.model.TemplateModel; import org.apache.freemarker.core.model.impl.SimpleHash; -import javax.servlet.ServletContext; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpSession; import java.util.HashMap; import java.util.Map; diff --git a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java index b7301fb2..f2c3a252 100644 --- a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java +++ b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java @@ -19,6 +19,12 @@ package org.apache.freemarker.servlet; +import jakarta.servlet.ServletContext; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; import org.apache.freemarker.core.*; import org.apache.freemarker.core.Configuration.ExtendableBuilder; import org.apache.freemarker.core.model.ObjectWrapper; @@ -41,12 +47,6 @@ import org.apache.freemarker.servlet.jsp.TaglibFactory.MetaInfTldSource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; import java.io.IOException; import java.io.Writer; import java.nio.charset.Charset; @@ -1080,11 +1080,11 @@ public class FreemarkerServlet extends HttpServlet { */ protected String requestUrlToTemplatePath(HttpServletRequest request) throws ServletException { // First, see if it's an included request - String includeServletPath = (String) request.getAttribute("javax.servlet.include.servlet_path"); + String includeServletPath = (String) request.getAttribute("jakarta.servlet.include.servlet_path"); if (includeServletPath != null) { // Try path info; only if that's null (servlet is mapped to an // URL extension instead of to prefix) use servlet path. - String includePathInfo = (String) request.getAttribute("javax.servlet.include.path_info"); + String includePathInfo = (String) request.getAttribute("jakarta.servlet.include.path_info"); return includePathInfo == null ? includeServletPath : includePathInfo; } // Seems that the servlet was not called as the result of a diff --git a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/HttpRequestHashModel.java b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/HttpRequestHashModel.java index 690e3bca..cf85742e 100644 --- a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/HttpRequestHashModel.java +++ b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/HttpRequestHashModel.java @@ -19,21 +19,16 @@ package org.apache.freemarker.servlet; -import java.util.ArrayList; -import java.util.Enumeration; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.TemplateException; -import org.apache.freemarker.core.model.ObjectWrapper; -import org.apache.freemarker.core.model.ObjectWrapperAndUnwrapper; -import org.apache.freemarker.core.model.TemplateCollectionModel; -import org.apache.freemarker.core.model.TemplateHashModelEx; -import org.apache.freemarker.core.model.TemplateModel; +import org.apache.freemarker.core.model.*; import org.apache.freemarker.core.model.impl.SimpleCollection; import org.apache.freemarker.core.model.impl.SimpleString; +import java.util.ArrayList; +import java.util.Enumeration; + /** * TemplateHashModel wrapper for a HttpServletRequest attributes. */ diff --git a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/HttpRequestParametersHashModel.java b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/HttpRequestParametersHashModel.java index 104331a7..98973a0f 100644 --- a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/HttpRequestParametersHashModel.java +++ b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/HttpRequestParametersHashModel.java @@ -19,21 +19,16 @@ package org.apache.freemarker.servlet; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.List; - -import javax.servlet.http.HttpServletRequest; - +import jakarta.servlet.http.HttpServletRequest; import org.apache.freemarker.core.TemplateException; -import org.apache.freemarker.core.model.ObjectWrapper; -import org.apache.freemarker.core.model.TemplateCollectionModel; -import org.apache.freemarker.core.model.TemplateHashModelEx; -import org.apache.freemarker.core.model.TemplateModel; -import org.apache.freemarker.core.model.TemplateModelIterator; +import org.apache.freemarker.core.model.*; import org.apache.freemarker.core.model.impl.SimpleCollection; import org.apache.freemarker.core.model.impl.SimpleString; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.List; + /** * TemplateHashModel wrapper for a HttpServletRequest parameters. */ diff --git a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/HttpSessionHashModel.java b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/HttpSessionHashModel.java index bf7f5a69..dbba19a5 100644 --- a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/HttpSessionHashModel.java +++ b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/HttpSessionHashModel.java @@ -19,18 +19,17 @@ package org.apache.freemarker.servlet; -import java.io.Serializable; - -import javax.servlet.GenericServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; - +import jakarta.servlet.GenericServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; import org.apache.freemarker.core.TemplateException; import org.apache.freemarker.core.model.ObjectWrapper; import org.apache.freemarker.core.model.TemplateHashModel; import org.apache.freemarker.core.model.TemplateModel; +import java.io.Serializable; + /** * TemplateHashModel wrapper for a HttpSession attributes. */ diff --git a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/IncludePage.java b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/IncludePage.java index ca138428..3e58e708 100644 --- a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/IncludePage.java +++ b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/IncludePage.java @@ -19,23 +19,11 @@ package org.apache.freemarker.servlet; -import java.io.IOException; -import java.io.PrintWriter; -import java.io.Writer; -import java.lang.reflect.Array; -import java.util.Collection; -import java.util.Collections; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletRequestWrapper; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpServletResponseWrapper; - +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequestWrapper; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletResponseWrapper; import org.apache.freemarker.core.CallPlace; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; @@ -47,6 +35,12 @@ import org.apache.freemarker.core.util.CallableUtils; import org.apache.freemarker.core.util.DeepUnwrap; import org.apache.freemarker.core.util.StringToIndexMap; +import java.io.IOException; +import java.io.PrintWriter; +import java.io.Writer; +import java.lang.reflect.Array; +import java.util.*; + /** * A model that when invoked with a 'path' parameter will perform a servlet diff --git a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/InitParamParser.java b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/InitParamParser.java index e74d475a..266945c4 100644 --- a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/InitParamParser.java +++ b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/InitParamParser.java @@ -18,15 +18,7 @@ */ package org.apache.freemarker.servlet; -import java.io.File; -import java.io.IOException; -import java.text.ParseException; -import java.util.ArrayList; -import java.util.List; -import java.util.regex.Pattern; - -import javax.servlet.ServletContext; - +import jakarta.servlet.ServletContext; import org.apache.freemarker.core._ObjectBuilderSettingEvaluator; import org.apache.freemarker.core._SettingEvaluationEnvironment; import org.apache.freemarker.core.templateresolver.TemplateLoader; @@ -37,6 +29,13 @@ import org.apache.freemarker.core.util._StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.File; +import java.io.IOException; +import java.text.ParseException; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Pattern; + final class InitParamParser { diff --git a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/ServletContextHashModel.java b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/ServletContextHashModel.java index 6a75777b..a3e2d772 100644 --- a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/ServletContextHashModel.java +++ b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/ServletContextHashModel.java @@ -19,9 +19,8 @@ package org.apache.freemarker.servlet; -import javax.servlet.GenericServlet; -import javax.servlet.ServletContext; - +import jakarta.servlet.GenericServlet; +import jakarta.servlet.ServletContext; import org.apache.freemarker.core.TemplateException; import org.apache.freemarker.core.model.ObjectWrapper; import org.apache.freemarker.core.model.TemplateHashModel; diff --git a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/WebAppTemplateLoader.java b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/WebAppTemplateLoader.java index b72ce789..b1fbb611 100644 --- a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/WebAppTemplateLoader.java +++ b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/WebAppTemplateLoader.java @@ -19,18 +19,7 @@ package org.apache.freemarker.servlet; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.Serializable; -import java.lang.reflect.Method; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLConnection; -import java.util.Objects; - -import javax.servlet.ServletContext; - +import jakarta.servlet.ServletContext; import org.apache.freemarker.core.Configuration; import org.apache.freemarker.core.templateresolver.TemplateLoader; import org.apache.freemarker.core.templateresolver.TemplateLoaderSession; @@ -44,6 +33,16 @@ import org.apache.freemarker.core.util._StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.Serializable; +import java.lang.reflect.Method; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.Objects; + /** * A {@link TemplateLoader} that uses streams reachable through {@link ServletContext#getResource(String)} as its source * of templates. diff --git a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/BodyContentImpl.java b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/BodyContentImpl.java index af0a8e00..1204d991 100644 --- a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/BodyContentImpl.java +++ b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/BodyContentImpl.java @@ -19,14 +19,10 @@ package org.apache.freemarker.servlet.jsp; -import java.io.CharArrayReader; -import java.io.CharArrayWriter; -import java.io.IOException; -import java.io.Reader; -import java.io.Writer; - -import javax.servlet.jsp.JspWriter; -import javax.servlet.jsp.tagext.BodyContent; +import jakarta.servlet.jsp.JspWriter; +import jakarta.servlet.jsp.tagext.BodyContent; + +import java.io.*; /** * An implementation of BodyContent that buffers it's input to a char[]. diff --git a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/EventForwarding.java b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/EventForwarding.java index 4123f169..39dc7a15 100644 --- a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/EventForwarding.java +++ b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/EventForwarding.java @@ -19,14 +19,14 @@ package org.apache.freemarker.servlet.jsp; +import jakarta.servlet.*; +import jakarta.servlet.http.HttpSessionAttributeListener; +import jakarta.servlet.http.HttpSessionBindingEvent; +import jakarta.servlet.http.HttpSessionEvent; +import jakarta.servlet.http.HttpSessionListener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.servlet.*; -import javax.servlet.http.HttpSessionAttributeListener; -import javax.servlet.http.HttpSessionBindingEvent; -import javax.servlet.http.HttpSessionEvent; -import javax.servlet.http.HttpSessionListener; import java.util.ArrayList; import java.util.EventListener; import java.util.Iterator; diff --git a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/FreeMarkerJspApplicationContext.java b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/FreeMarkerJspApplicationContext.java index 559c70ff..521202ac 100644 --- a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/FreeMarkerJspApplicationContext.java +++ b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/FreeMarkerJspApplicationContext.java @@ -19,31 +19,17 @@ package org.apache.freemarker.servlet.jsp; -import java.util.Iterator; -import java.util.LinkedList; - -import javax.el.ArrayELResolver; -import javax.el.BeanELResolver; -import javax.el.CompositeELResolver; -import javax.el.ELContext; -import javax.el.ELContextEvent; -import javax.el.ELContextListener; -import javax.el.ELResolver; -import javax.el.ExpressionFactory; -import javax.el.FunctionMapper; -import javax.el.ListELResolver; -import javax.el.MapELResolver; -import javax.el.ResourceBundleELResolver; -import javax.el.ValueExpression; -import javax.el.VariableMapper; -import javax.servlet.jsp.JspApplicationContext; -import javax.servlet.jsp.el.ImplicitObjectELResolver; -import javax.servlet.jsp.el.ScopedAttributeELResolver; - +import jakarta.el.*; +import jakarta.servlet.jsp.JspApplicationContext; +import jakarta.servlet.jsp.el.ImplicitObjectELResolver; +import jakarta.servlet.jsp.el.ScopedAttributeELResolver; import org.apache.freemarker.core.util._ClassUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.Iterator; +import java.util.LinkedList; + /** */ class FreeMarkerJspApplicationContext implements JspApplicationContext { diff --git a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/FreeMarkerJspFactory.java b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/FreeMarkerJspFactory.java index 1aa566af..bcad9e9c 100644 --- a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/FreeMarkerJspFactory.java +++ b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/FreeMarkerJspFactory.java @@ -19,14 +19,14 @@ package org.apache.freemarker.servlet.jsp; -import javax.servlet.Servlet; -import javax.servlet.ServletContext; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.jsp.JspApplicationContext; -import javax.servlet.jsp.JspEngineInfo; -import javax.servlet.jsp.JspFactory; -import javax.servlet.jsp.PageContext; +import jakarta.servlet.Servlet; +import jakarta.servlet.ServletContext; +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; +import jakarta.servlet.jsp.JspApplicationContext; +import jakarta.servlet.jsp.JspEngineInfo; +import jakarta.servlet.jsp.JspFactory; +import jakarta.servlet.jsp.PageContext; /** */ diff --git a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/FreeMarkerPageContext.java b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/FreeMarkerPageContext.java index f7a5d882..2aff1108 100644 --- a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/FreeMarkerPageContext.java +++ b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/FreeMarkerPageContext.java @@ -20,6 +20,17 @@ package org.apache.freemarker.servlet.jsp; +import jakarta.el.ELContext; +import jakarta.servlet.*; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletResponseWrapper; +import jakarta.servlet.http.HttpSession; +import jakarta.servlet.jsp.*; +import jakarta.servlet.jsp.el.ELException; +import jakarta.servlet.jsp.el.ExpressionEvaluator; +import jakarta.servlet.jsp.el.VariableResolver; +import jakarta.servlet.jsp.tagext.BodyContent; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; import org.apache.freemarker.core.model.*; @@ -31,17 +42,6 @@ import org.apache.freemarker.servlet.ServletContextHashModel; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.el.ELContext; -import javax.servlet.*; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpServletResponseWrapper; -import javax.servlet.http.HttpSession; -import javax.servlet.jsp.*; -import javax.servlet.jsp.el.ELException; -import javax.servlet.jsp.el.ExpressionEvaluator; -import javax.servlet.jsp.el.VariableResolver; -import javax.servlet.jsp.tagext.BodyContent; import java.io.IOException; import java.io.PrintWriter; import java.io.Writer; diff --git a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/JspTagModelBase.java b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/JspTagModelBase.java index 95ef654b..f3631687 100644 --- a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/JspTagModelBase.java +++ b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/JspTagModelBase.java @@ -19,6 +19,9 @@ package org.apache.freemarker.servlet.jsp; +import jakarta.servlet.jsp.JspException; +import jakarta.servlet.jsp.tagext.DynamicAttributes; +import jakarta.servlet.jsp.tagext.JspTag; import org.apache.freemarker.core.*; import org.apache.freemarker.core.model.ObjectWrapperAndUnwrapper; import org.apache.freemarker.core.model.TemplateHashModelEx; @@ -28,9 +31,6 @@ import org.apache.freemarker.core.model.impl.DefaultObjectWrapper; import org.apache.freemarker.core.util._StringUtils; import org.apache.freemarker.servlet.jsp.SimpleTagDirectiveModel.TemplateExceptionWrapperJspException; -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.tagext.DynamicAttributes; -import javax.servlet.jsp.tagext.JspTag; import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; diff --git a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/JspWriterAdapter.java b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/JspWriterAdapter.java index 8f135c2e..219b6a88 100644 --- a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/JspWriterAdapter.java +++ b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/JspWriterAdapter.java @@ -19,13 +19,12 @@ package org.apache.freemarker.servlet.jsp; +import jakarta.servlet.jsp.JspWriter; +import org.apache.freemarker.core.util._SecurityUtils; + import java.io.IOException; import java.io.Writer; -import javax.servlet.jsp.JspWriter; - -import org.apache.freemarker.core.util._SecurityUtils; - class JspWriterAdapter extends JspWriter { static final char[] NEWLINE = _SecurityUtils.getSystemProperty("line.separator", "\n").toCharArray(); diff --git a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/PageContextFactory.java b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/PageContextFactory.java index 9cfb0df2..5aa77f1f 100644 --- a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/PageContextFactory.java +++ b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/PageContextFactory.java @@ -19,12 +19,11 @@ package org.apache.freemarker.servlet.jsp; +import jakarta.servlet.jsp.PageContext; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; import org.apache.freemarker.core.model.TemplateModel; -import javax.servlet.jsp.PageContext; - /** */ class PageContextFactory { diff --git a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/SimpleTagDirectiveModel.java b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/SimpleTagDirectiveModel.java index 619b8c6e..9868f60b 100644 --- a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/SimpleTagDirectiveModel.java +++ b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/SimpleTagDirectiveModel.java @@ -19,17 +19,12 @@ package org.apache.freemarker.servlet.jsp; -import java.beans.IntrospectionException; -import java.io.IOException; -import java.io.Writer; - -import javax.servlet.jsp.JspContext; -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.tagext.JspFragment; -import javax.servlet.jsp.tagext.JspTag; -import javax.servlet.jsp.tagext.SimpleTag; -import javax.servlet.jsp.tagext.Tag; - +import jakarta.servlet.jsp.JspContext; +import jakarta.servlet.jsp.JspException; +import jakarta.servlet.jsp.tagext.JspFragment; +import jakarta.servlet.jsp.tagext.JspTag; +import jakarta.servlet.jsp.tagext.SimpleTag; +import jakarta.servlet.jsp.tagext.Tag; import org.apache.freemarker.core.CallPlace; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; @@ -38,6 +33,10 @@ import org.apache.freemarker.core.model.TemplateDirectiveModel; import org.apache.freemarker.core.model.TemplateHashModelEx; import org.apache.freemarker.core.model.TemplateModel; +import java.beans.IntrospectionException; +import java.io.IOException; +import java.io.Writer; + /** * Adapts a {@link SimpleTag}-based custom JSP tag to be a value that's callable in templates as an user-defined * directive. For {@link Tag}-based custom JSP tags {@link TagDirectiveModel} is used instead. diff --git a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TagDirectiveModel.java b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TagDirectiveModel.java index fdb3a587..29395619 100644 --- a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TagDirectiveModel.java +++ b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TagDirectiveModel.java @@ -19,18 +19,9 @@ package org.apache.freemarker.servlet.jsp; -import java.beans.IntrospectionException; -import java.io.IOException; -import java.io.Writer; - -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.JspWriter; -import javax.servlet.jsp.tagext.BodyTag; -import javax.servlet.jsp.tagext.IterationTag; -import javax.servlet.jsp.tagext.SimpleTag; -import javax.servlet.jsp.tagext.Tag; -import javax.servlet.jsp.tagext.TryCatchFinally; - +import jakarta.servlet.jsp.JspException; +import jakarta.servlet.jsp.JspWriter; +import jakarta.servlet.jsp.tagext.*; import org.apache.freemarker.core.CallPlace; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; @@ -41,6 +32,10 @@ import org.apache.freemarker.core.model.TemplateModel; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.beans.IntrospectionException; +import java.io.IOException; +import java.io.Writer; + /** * Adapts a {@link Tag}-based custom JSP tag to be a value that's callable in templates as an user-defined directive. * For {@link SimpleTag}-based custom JSP tags {@link SimpleTagDirectiveModel} is used instead. diff --git a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java index f7034d3e..6e469618 100644 --- a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java +++ b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java @@ -19,6 +19,9 @@ package org.apache.freemarker.servlet.jsp; +import jakarta.servlet.ServletContext; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.jsp.tagext.Tag; import org.apache.freemarker.core.ConfigurationException; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; @@ -32,9 +35,6 @@ import org.slf4j.LoggerFactory; import org.xml.sax.*; import org.xml.sax.helpers.DefaultHandler; -import javax.servlet.ServletContext; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.jsp.tagext.Tag; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParserFactory; import java.beans.IntrospectionException; diff --git a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/DummyMockServletContext.java b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/DummyMockServletContext.java index b54f696c..bda0fd93 100644 --- a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/DummyMockServletContext.java +++ b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/DummyMockServletContext.java @@ -18,9 +18,10 @@ */ package org.apache.freemarker.servlet; -import javax.servlet.*; -import javax.servlet.ServletRegistration.Dynamic; -import javax.servlet.descriptor.JspConfigDescriptor; +import jakarta.servlet.*; +import jakarta.servlet.ServletRegistration.Dynamic; +import jakarta.servlet.descriptor.JspConfigDescriptor; + import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; @@ -111,36 +112,16 @@ public class DummyMockServletContext implements ServletContext { return null; } - @Override - public Servlet getServlet(String arg0) throws ServletException { - return null; - } - @Override public String getServletContextName() { return "MyApp"; } - @Override - public Enumeration getServletNames() { - return null; - } - - @Override - public Enumeration getServlets() { - return null; - } - @Override public void log(String arg0) { } - @Override - public void log(Exception arg0, String arg1) { - - } - @Override public void log(String arg0, Throwable arg1) { @@ -177,6 +158,11 @@ public class DummyMockServletContext implements ServletContext { return null; } + @Override + public Dynamic addJspFile(String s, String s1) { + return null; + } + @Override public <T extends Servlet> T createServlet(Class<T> clazz) throws ServletException { return null; @@ -193,19 +179,19 @@ public class DummyMockServletContext implements ServletContext { } @Override - public javax.servlet.FilterRegistration.Dynamic addFilter(String filterName, String className) + public jakarta.servlet.FilterRegistration.Dynamic addFilter(String filterName, String className) throws IllegalArgumentException, IllegalStateException { return null; } @Override - public javax.servlet.FilterRegistration.Dynamic addFilter(String filterName, Filter filter) + public jakarta.servlet.FilterRegistration.Dynamic addFilter(String filterName, Filter filter) throws IllegalArgumentException, IllegalStateException { return null; } @Override - public javax.servlet.FilterRegistration.Dynamic addFilter(String filterName, Class<? extends Filter> filterClass) + public jakarta.servlet.FilterRegistration.Dynamic addFilter(String filterName, Class<? extends Filter> filterClass) throws IllegalArgumentException, IllegalStateException { return null; } @@ -251,6 +237,36 @@ public class DummyMockServletContext implements ServletContext { return null; } + @Override + public int getSessionTimeout() { + return 0; + } + + @Override + public void setSessionTimeout(int i) { + + } + + @Override + public String getRequestCharacterEncoding() { + return null; + } + + @Override + public void setRequestCharacterEncoding(String s) { + + } + + @Override + public String getResponseCharacterEncoding() { + return null; + } + + @Override + public void setResponseCharacterEncoding(String s) { + + } + @Override public SessionCookieConfig getSessionCookieConfig() { return null; @@ -282,7 +298,7 @@ public class DummyMockServletContext implements ServletContext { @Override public ClassLoader getClassLoader() { - return null; + return this.getClassLoader(); } @Override diff --git a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/FreemarkerServletTest.java b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/FreemarkerServletTest.java index 2a7db59a..c737ea89 100644 --- a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/FreemarkerServletTest.java +++ b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/FreemarkerServletTest.java @@ -18,31 +18,12 @@ */ package org.apache.freemarker.servlet; -import static org.apache.freemarker.servlet.FreemarkerServlet.*; -import static org.hamcrest.Matchers.*; -import static org.junit.Assert.*; - -import java.io.IOException; -import java.nio.charset.Charset; -import java.nio.charset.StandardCharsets; -import java.nio.charset.UnsupportedCharsetException; -import java.util.Locale; - -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.freemarker.core.Configuration; -import org.apache.freemarker.core.Environment; -import org.apache.freemarker.core.Template; -import org.apache.freemarker.core.TemplateConfiguration; -import org.apache.freemarker.core.TemplateException; -import org.apache.freemarker.core.templateresolver.ConditionalTemplateConfigurationFactory; -import org.apache.freemarker.core.templateresolver.FileNameGlobMatcher; -import org.apache.freemarker.core.templateresolver.FirstMatchTemplateConfigurationFactory; -import org.apache.freemarker.core.templateresolver.TemplateConfigurationFactory; -import org.apache.freemarker.core.templateresolver.TemplateLoader; +import jakarta.servlet.ServletContext; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import org.apache.freemarker.core.*; +import org.apache.freemarker.core.templateresolver.*; import org.apache.freemarker.core.templateresolver.impl.ByteArrayTemplateLoader; import org.junit.Before; import org.junit.Test; @@ -51,6 +32,17 @@ import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.mock.web.MockServletConfig; import org.springframework.mock.web.MockServletContext; +import java.io.IOException; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; +import java.nio.charset.UnsupportedCharsetException; +import java.util.Locale; + +import static org.apache.freemarker.servlet.FreemarkerServlet.*; +import static org.hamcrest.Matchers.containsString; +import static org.hamcrest.Matchers.instanceOf; +import static org.junit.Assert.*; + public class FreemarkerServletTest { private static final String OUTPUT_FORMAT_HEADER_FTL = "outputFormatHeader.f3ac"; diff --git a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/JspTestFreemarkerServlet.java b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/JspTestFreemarkerServlet.java index 1ce54ba1..63f16f4c 100644 --- a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/JspTestFreemarkerServlet.java +++ b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/JspTestFreemarkerServlet.java @@ -19,8 +19,7 @@ package org.apache.freemarker.servlet.jsp; -import javax.servlet.ServletContext; - +import jakarta.servlet.ServletContext; import org.apache.freemarker.core.TemplateException; import org.apache.freemarker.core.model.ObjectWrapper; import org.apache.freemarker.servlet.FreemarkerServlet; diff --git a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/RealServletContainertTest.java b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/RealServletContainertTest.java index 893a7cdc..8b76a936 100644 --- a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/RealServletContainertTest.java +++ b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/RealServletContainertTest.java @@ -19,24 +19,11 @@ package org.apache.freemarker.servlet.jsp; -import static org.junit.Assert.*; - -import java.io.IOException; -import java.util.AbstractList; -import java.util.AbstractMap; -import java.util.ArrayList; -import java.util.Collection; -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.Map; -import java.util.Set; -import java.util.TreeMap; -import java.util.TreeSet; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import com.google.common.collect.ImmutableSet; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.Configuration; import org.apache.freemarker.core.TemplateExceptionHandler; import org.apache.freemarker.core.model.ObjectWrapper; @@ -53,9 +40,10 @@ import org.junit.Assert; import org.junit.Ignore; import org.junit.Test; -import com.google.common.collect.ImmutableSet; +import java.io.IOException; +import java.util.*; -import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import static org.junit.Assert.*; /** * Tests {@link FreemarkerServlet} on a real (embedded) Servlet container. @@ -71,6 +59,7 @@ public class RealServletContainertTest extends WebAppTestCase { private static final String WEBAPP_MULTIPLE_LOADERS = "multipleLoaders"; @Test + @Ignore // Doesn't work since switched to Jakarta (with Jetty 12) public void basicTrivial() throws Exception { assertJSPAndFTLOutputEquals(WEBAPP_BASIC, "tester?view=trivial"); } @@ -114,6 +103,7 @@ public class RealServletContainertTest extends WebAppTestCase { } @Test + @Ignore // Doesn't work since switched to Jakarta (with Jetty 12) public void tldDiscoveryBasic() throws Exception { try { restartWebAppIfStarted(WEBAPP_TLD_DISCOVERY); @@ -124,6 +114,7 @@ public class RealServletContainertTest extends WebAppTestCase { } @Test + @Ignore // Doesn't work since switched to Jakarta (with Jetty 12) public void tldDiscoveryBasicDefultOverride() throws Exception { try { restartWebAppIfStarted(WEBAPP_TLD_DISCOVERY); @@ -135,6 +126,7 @@ public class RealServletContainertTest extends WebAppTestCase { } @Test + @Ignore // Doesn't work since switched to Jakarta (with Jetty 12) public void tldDiscoveryEmulatedProblems1() throws Exception { try { JspTestFreemarkerServlet.emulateNoJarURLConnections = true; @@ -146,6 +138,7 @@ public class RealServletContainertTest extends WebAppTestCase { } @Test + @Ignore // Doesn't work since switched to Jakarta (with Jetty 12) public void tldDiscoveryEmulatedProblems2() throws Exception { try { JspTestFreemarkerServlet.emulateNoJarURLConnections = true; @@ -163,6 +156,7 @@ public class RealServletContainertTest extends WebAppTestCase { } @Test + @Ignore // Doesn't work since switched to Jakarta (with Jetty 12) public void tldDiscoveryClasspathOnly() throws Exception { try { System.setProperty(FreemarkerServlet.SYSTEM_PROPERTY_META_INF_TLD_SOURCES, "clear, classpath"); @@ -180,6 +174,7 @@ public class RealServletContainertTest extends WebAppTestCase { * Jetty container's JSTL jar-s will still be discovered. */ @Test + @Ignore // Doesn't work since switched to Jakarta (with Jetty 12) public void tldDiscoveryNoClasspath() throws Exception { try { System.setProperty(FreemarkerServlet.SYSTEM_PROPERTY_META_INF_TLD_SOURCES, "clear, webInfPerLibJars"); diff --git a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/TLDParsingTest.java b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/TLDParsingTest.java index 73c1e712..a7121b86 100644 --- a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/TLDParsingTest.java +++ b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/TLDParsingTest.java @@ -19,18 +19,10 @@ package org.apache.freemarker.servlet.jsp; -import static org.junit.Assert.*; - -import java.io.InputStream; -import java.net.URL; -import java.util.Map; - -import javax.servlet.ServletContextEvent; -import javax.servlet.ServletContextListener; -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.tagext.TagSupport; -import javax.xml.parsers.SAXParserFactory; - +import jakarta.servlet.ServletContextEvent; +import jakarta.servlet.ServletContextListener; +import jakarta.servlet.jsp.JspException; +import jakarta.servlet.jsp.tagext.TagSupport; import org.apache.freemarker.core.Configuration; import org.apache.freemarker.core.NonTemplateCallPlace; import org.apache.freemarker.core.model.TemplateModel; @@ -47,6 +39,13 @@ import org.junit.runners.JUnit4; import org.xml.sax.InputSource; import org.xml.sax.XMLReader; +import javax.xml.parsers.SAXParserFactory; +import java.io.InputStream; +import java.net.URL; +import java.util.Map; + +import static org.junit.Assert.*; + @RunWith(JUnit4.class) public class TLDParsingTest { diff --git a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/AttributeAccessorTag.java b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/AttributeAccessorTag.java index 49e071b4..3de184ff 100644 --- a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/AttributeAccessorTag.java +++ b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/AttributeAccessorTag.java @@ -19,9 +19,8 @@ package org.apache.freemarker.servlet.jsp.taglibmembers; -import javax.servlet.jsp.PageContext; -import javax.servlet.jsp.tagext.SimpleTagSupport; - +import jakarta.servlet.jsp.PageContext; +import jakarta.servlet.jsp.tagext.SimpleTagSupport; import org.apache.freemarker.core.util._StringUtils; public abstract class AttributeAccessorTag extends SimpleTagSupport { diff --git a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/AttributeInfoTag.java b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/AttributeInfoTag.java index e8b6eea4..0a64d1f5 100644 --- a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/AttributeInfoTag.java +++ b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/AttributeInfoTag.java @@ -19,16 +19,15 @@ package org.apache.freemarker.servlet.jsp.taglibmembers; -import java.io.IOException; -import java.util.Date; - -import javax.servlet.jsp.JspContext; -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.JspWriter; - +import jakarta.servlet.jsp.JspContext; +import jakarta.servlet.jsp.JspException; +import jakarta.servlet.jsp.JspWriter; import org.apache.freemarker.core.util._DateUtils; import org.apache.freemarker.core.util._DateUtils.TrivialDateToISO8601CalendarFactory; +import java.io.IOException; +import java.util.Date; + public class AttributeInfoTag extends AttributeAccessorTag { @SuppressWarnings("boxing") diff --git a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/GetAndSetTag.java b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/GetAndSetTag.java index 2de1b848..0d74e5ea 100644 --- a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/GetAndSetTag.java +++ b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/GetAndSetTag.java @@ -19,14 +19,13 @@ package org.apache.freemarker.servlet.jsp.taglibmembers; -import java.io.IOException; - -import javax.servlet.jsp.JspContext; -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.JspWriter; - +import jakarta.servlet.jsp.JspContext; +import jakarta.servlet.jsp.JspException; +import jakarta.servlet.jsp.JspWriter; import org.apache.freemarker.core.util._NullArgumentException; +import java.io.IOException; + public class GetAndSetTag extends AttributeAccessorTag { private Object value; diff --git a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/TestSimpleTag.java b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/TestSimpleTag.java index 6311c145..a9974a1f 100644 --- a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/TestSimpleTag.java +++ b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/TestSimpleTag.java @@ -19,13 +19,13 @@ package org.apache.freemarker.servlet.jsp.taglibmembers; -import java.io.IOException; +import jakarta.servlet.jsp.JspContext; +import jakarta.servlet.jsp.JspException; +import jakarta.servlet.jsp.JspWriter; +import jakarta.servlet.jsp.tagext.JspFragment; +import jakarta.servlet.jsp.tagext.SimpleTagSupport; -import javax.servlet.jsp.JspContext; -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.JspWriter; -import javax.servlet.jsp.tagext.JspFragment; -import javax.servlet.jsp.tagext.SimpleTagSupport; +import java.io.IOException; public class TestSimpleTag extends SimpleTagSupport { private int bodyLoopCount = 1; diff --git a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/TestSimpleTag2.java b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/TestSimpleTag2.java index b28f0a3d..2f56099c 100644 --- a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/TestSimpleTag2.java +++ b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/TestSimpleTag2.java @@ -19,10 +19,10 @@ package org.apache.freemarker.servlet.jsp.taglibmembers; -import java.io.IOException; +import jakarta.servlet.jsp.JspException; +import jakarta.servlet.jsp.tagext.SimpleTagSupport; -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.tagext.SimpleTagSupport; +import java.io.IOException; public class TestSimpleTag2 extends SimpleTagSupport { @Override diff --git a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/TestSimpleTag3.java b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/TestSimpleTag3.java index c0bddada..22124f5a 100644 --- a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/TestSimpleTag3.java +++ b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/TestSimpleTag3.java @@ -19,10 +19,10 @@ package org.apache.freemarker.servlet.jsp.taglibmembers; -import java.io.IOException; +import jakarta.servlet.jsp.JspException; +import jakarta.servlet.jsp.tagext.SimpleTagSupport; -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.tagext.SimpleTagSupport; +import java.io.IOException; public class TestSimpleTag3 extends SimpleTagSupport { @Override diff --git a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/TestTag.java b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/TestTag.java index 69729c34..b71c3d1e 100644 --- a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/TestTag.java +++ b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/TestTag.java @@ -19,14 +19,10 @@ package org.apache.freemarker.servlet.jsp.taglibmembers; -import java.io.IOException; +import jakarta.servlet.jsp.JspException; +import jakarta.servlet.jsp.tagext.*; -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.tagext.BodyTag; -import javax.servlet.jsp.tagext.BodyTagSupport; -import javax.servlet.jsp.tagext.IterationTag; -import javax.servlet.jsp.tagext.Tag; -import javax.servlet.jsp.tagext.TryCatchFinally; +import java.io.IOException; /** */ diff --git a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/TestTag2.java b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/TestTag2.java index b709625f..0eb719e8 100644 --- a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/TestTag2.java +++ b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/TestTag2.java @@ -19,11 +19,11 @@ package org.apache.freemarker.servlet.jsp.taglibmembers; -import java.io.IOException; +import jakarta.servlet.jsp.JspException; +import jakarta.servlet.jsp.tagext.Tag; +import jakarta.servlet.jsp.tagext.TagSupport; -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.tagext.Tag; -import javax.servlet.jsp.tagext.TagSupport; +import java.io.IOException; /** */ diff --git a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/TestTag3.java b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/TestTag3.java index 7c2d680f..6f8135dd 100644 --- a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/TestTag3.java +++ b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/taglibmembers/TestTag3.java @@ -19,11 +19,11 @@ package org.apache.freemarker.servlet.jsp.taglibmembers; -import java.io.IOException; +import jakarta.servlet.jsp.JspException; +import jakarta.servlet.jsp.tagext.Tag; +import jakarta.servlet.jsp.tagext.TagSupport; -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.tagext.Tag; -import javax.servlet.jsp.tagext.TagSupport; +import java.io.IOException; /** */ diff --git a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/test/DefaultModel2TesterAction.java b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/test/DefaultModel2TesterAction.java index 30d17fa6..4e77a83c 100644 --- a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/test/DefaultModel2TesterAction.java +++ b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/test/DefaultModel2TesterAction.java @@ -19,14 +19,13 @@ package org.apache.freemarker.servlet.test; +import com.google.common.collect.ImmutableMap; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + import java.util.Arrays; import java.util.Date; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import com.google.common.collect.ImmutableMap; - /** * Used by {@link Model2TesterServlet} if no action was explicitly specified. */ diff --git a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/test/Model2Action.java b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/test/Model2Action.java index fa834179..6bf3fcfa 100644 --- a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/test/Model2Action.java +++ b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/test/Model2Action.java @@ -19,8 +19,8 @@ package org.apache.freemarker.servlet.test; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; public interface Model2Action { diff --git a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/test/Model2TesterServlet.java b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/test/Model2TesterServlet.java index c0e97393..22564450 100644 --- a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/test/Model2TesterServlet.java +++ b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/test/Model2TesterServlet.java @@ -19,21 +19,20 @@ package org.apache.freemarker.servlet.test; -import java.io.IOException; -import java.nio.charset.StandardCharsets; - -import javax.servlet.RequestDispatcher; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletRequestWrapper; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.RequestDispatcher; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequestWrapper; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.util._StringUtils; import org.apache.freemarker.servlet.FreemarkerServlet; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.IOException; +import java.nio.charset.StandardCharsets; + /** * MVC controller servlet used for {@link FreemarkerServlet} JUnit tests. It understands these request parameters: * <ul> diff --git a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/test/WebAppTestCase.java b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/test/WebAppTestCase.java index 37b80232..6e17a44e 100644 --- a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/test/WebAppTestCase.java +++ b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/test/WebAppTestCase.java @@ -24,13 +24,12 @@ import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.apache.freemarker.test.ResourcesExtractor; import org.apache.freemarker.test.TestUtils; -import org.eclipse.jetty.annotations.ServletContainerInitializersStarter; -import org.eclipse.jetty.apache.jsp.JettyJasperInitializer; -import org.eclipse.jetty.plus.annotation.ContainerInitializer; +import org.eclipse.jetty.ee10.apache.jsp.JettyJasperInitializer; +import org.eclipse.jetty.ee10.servlet.listener.ContainerInitializer; +import org.eclipse.jetty.ee10.webapp.WebAppContext; import org.eclipse.jetty.server.NetworkConnector; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.ContextHandlerCollection; -import org.eclipse.jetty.webapp.WebAppContext; import org.junit.AfterClass; import org.junit.BeforeClass; import org.slf4j.Logger; @@ -69,9 +68,6 @@ public class WebAppTestCase { @BeforeClass public static void beforeClass() throws Exception { - // Work around Java 5 bug(?) that causes Jasper to fail with "zip file closed" when it reads the JSTL jar: - org.eclipse.jetty.util.resource.Resource.setDefaultUseCaches(false); - LOG.info("Starting embedded Jetty..."); server = new Server(0); @@ -265,12 +261,9 @@ public class WebAppTestCase { * return value of "org.apache.jasper.Options.getTldCache()" is null */ private static void addJasperInitializer(WebAppContext context) { - JettyJasperInitializer jettyJasperInitializer = new JettyJasperInitializer(); - ServletContainerInitializersStarter servletContainerInitializersStarter - = new ServletContainerInitializersStarter(context); - ContainerInitializer containerInitializer = new ContainerInitializer(jettyJasperInitializer, null); - context.setAttribute("org.eclipse.jetty.containerInitializers", List.of(containerInitializer)); - context.addBean(servletContainerInitializersStarter, true); + context.addEventListener( + ContainerInitializer.asContextListener( + new JettyJasperInitializer())); } private static void deleteTemporaryDirectories() throws IOException { diff --git a/freemarker-spring/build.gradle.kts b/freemarker-spring/build.gradle.kts index b7423dcf..7d1649b7 100644 --- a/freemarker-spring/build.gradle.kts +++ b/freemarker-spring/build.gradle.kts @@ -32,30 +32,25 @@ dependencies { api(project(":freemarker-core")) api(project(":freemarker-servlet")) - val geronimoServletSpec3Version = "1.0" - val geronimoJspSpec22Version = "1.2" - val geronimoELSpec22Version = "1.0.4" + val springVersion = "6.0.15" - val springVersion = "4.0.9.RELEASE" - - compileOnly("org.apache.geronimo.specs:geronimo-servlet_3.0_spec:${geronimoServletSpec3Version}") compileOnly("org.springframework:spring-core:$springVersion") compileOnly("org.springframework:spring-beans:$springVersion") compileOnly("org.springframework:spring-context:$springVersion") compileOnly("org.springframework:spring-web:$springVersion") compileOnly("org.springframework:spring-webmvc:$springVersion") + compileOnly("jakarta.servlet:jakarta.servlet-api:6.0.0") + compileOnly("jakarta.servlet.jsp:jakarta.servlet.jsp-api:3.1.0") + compileOnly("jakarta.el:jakarta.el-api:5.0.0") - val taglibsStandardVersion = "1.2.1" - - testImplementation("org.apache.geronimo.specs:geronimo-servlet_3.0_spec:${geronimoServletSpec3Version}") testImplementation("org.springframework:spring-core:$springVersion") testImplementation("org.springframework:spring-beans:$springVersion") testImplementation("org.springframework:spring-context:$springVersion") testImplementation("org.springframework:spring-web:$springVersion") testImplementation("org.springframework:spring-webmvc:$springVersion") testImplementation("org.springframework:spring-test:$springVersion") - testImplementation("org.apache.geronimo.specs:geronimo-jsp_2.2_spec:${geronimoJspSpec22Version}") - testImplementation("org.apache.geronimo.specs:geronimo-el_2.2_spec:${geronimoELSpec22Version}") - testImplementation("org.apache.taglibs:taglibs-standard-spec:${taglibsStandardVersion}") + testImplementation("jakarta.servlet:jakarta.servlet-api:6.0.0") + testImplementation("jakarta.servlet.jsp:jakarta.servlet.jsp-api:3.1.0") + testImplementation("jakarta.el:jakarta.el-api:5.0.0") testImplementation(project(":freemarker-test-utils")) } diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/AbstractSpringTemplateCallableModel.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/AbstractSpringTemplateCallableModel.java index d7a83812..2beafa62 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/AbstractSpringTemplateCallableModel.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/AbstractSpringTemplateCallableModel.java @@ -19,17 +19,11 @@ package org.apache.freemarker.spring.model; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; -import org.apache.freemarker.core.model.ObjectWrapper; -import org.apache.freemarker.core.model.ObjectWrapperAndUnwrapper; -import org.apache.freemarker.core.model.TemplateCallableModel; -import org.apache.freemarker.core.model.TemplateFunctionModel; -import org.apache.freemarker.core.model.TemplateModel; -import org.apache.freemarker.core.model.TemplateStringModel; +import org.apache.freemarker.core.model.*; import org.apache.freemarker.core.util.CallableUtils; import org.springframework.web.servlet.support.BindStatus; import org.springframework.web.servlet.support.RequestContext; diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/AbstractSpringTemplateDirectiveModel.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/AbstractSpringTemplateDirectiveModel.java index 43668415..5c5d77bd 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/AbstractSpringTemplateDirectiveModel.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/AbstractSpringTemplateDirectiveModel.java @@ -19,12 +19,8 @@ package org.apache.freemarker.spring.model; -import java.io.IOException; -import java.io.Writer; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.CallPlace; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; @@ -33,6 +29,9 @@ import org.apache.freemarker.core.model.TemplateDirectiveModel; import org.apache.freemarker.core.model.TemplateModel; import org.springframework.web.servlet.support.RequestContext; +import java.io.IOException; +import java.io.Writer; + /** * Abstract TemplateDirectiveModel for derived classes to support Spring MVC based templating environment. */ diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/AbstractSpringTemplateFunctionModel.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/AbstractSpringTemplateFunctionModel.java index afb32621..cf11ecbf 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/AbstractSpringTemplateFunctionModel.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/AbstractSpringTemplateFunctionModel.java @@ -19,9 +19,8 @@ package org.apache.freemarker.spring.model; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.CallPlace; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/BindDirective.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/BindDirective.java index 1a3917c8..4c9e1502 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/BindDirective.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/BindDirective.java @@ -19,12 +19,8 @@ package org.apache.freemarker.spring.model; -import java.io.IOException; -import java.io.Writer; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.CallPlace; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; @@ -35,6 +31,9 @@ import org.apache.freemarker.core.util.CallableUtils; import org.apache.freemarker.core.util.StringToIndexMap; import org.springframework.web.servlet.support.RequestContext; +import java.io.IOException; +import java.io.Writer; + /** * Provides <code>TemplateModel</code> wrapping <code>BindStatus</code> for the given bind path, working similarly * to Spring Framework's <code><spring:bind /></code> JSP Tag Library. diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/BindErrorsDirective.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/BindErrorsDirective.java index 2f6a93ea..9bebfc56 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/BindErrorsDirective.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/BindErrorsDirective.java @@ -19,12 +19,8 @@ package org.apache.freemarker.spring.model; -import java.io.IOException; -import java.io.Writer; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.CallPlace; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; @@ -35,6 +31,9 @@ import org.apache.freemarker.core.util.CallableUtils; import org.springframework.validation.Errors; import org.springframework.web.servlet.support.RequestContext; +import java.io.IOException; +import java.io.Writer; + /** * Provides <code>TemplateModel</code> wrapping the bind errors (type of <code>org.springframework.validation.Errors</code>) * for the given name, working similarly to Spring Framework's <code><spring:hasBindErrors /></code> JSP Tag Library. diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/EvalFunction.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/EvalFunction.java index ed6e8fa8..1536aa66 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/EvalFunction.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/EvalFunction.java @@ -19,9 +19,8 @@ package org.apache.freemarker.spring.model; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.CallPlace; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; @@ -33,12 +32,7 @@ import org.springframework.context.expression.BeanFactoryResolver; import org.springframework.context.expression.EnvironmentAccessor; import org.springframework.context.expression.MapAccessor; import org.springframework.core.convert.ConversionService; -import org.springframework.expression.AccessException; -import org.springframework.expression.EvaluationContext; -import org.springframework.expression.Expression; -import org.springframework.expression.ExpressionParser; -import org.springframework.expression.PropertyAccessor; -import org.springframework.expression.TypedValue; +import org.springframework.expression.*; import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.expression.spel.support.StandardEvaluationContext; import org.springframework.expression.spel.support.StandardTypeConverter; diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/MessageFunction.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/MessageFunction.java index 75132c7a..37b4de7f 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/MessageFunction.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/MessageFunction.java @@ -19,20 +19,12 @@ package org.apache.freemarker.spring.model; -import java.util.ArrayList; -import java.util.List; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.CallPlace; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; -import org.apache.freemarker.core.model.ArgumentArrayLayout; -import org.apache.freemarker.core.model.ObjectWrapperAndUnwrapper; -import org.apache.freemarker.core.model.TemplateCollectionModel; -import org.apache.freemarker.core.model.TemplateModel; -import org.apache.freemarker.core.model.TemplateModelIterator; +import org.apache.freemarker.core.model.*; import org.apache.freemarker.core.util.CallableUtils; import org.apache.freemarker.core.util.StringToIndexMap; import org.apache.freemarker.core.util._StringUtils; @@ -40,6 +32,9 @@ import org.springframework.context.MessageSource; import org.springframework.context.MessageSourceResolvable; import org.springframework.web.servlet.support.RequestContext; +import java.util.ArrayList; +import java.util.List; + /** * A <code>TemplateFunctionModel</code> providing functionality equivalent to the Spring Framework's * <code><spring:message /></code> JSP Tag Library. diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/NestedPathDirective.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/NestedPathDirective.java index 43788f6a..7f6225c1 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/NestedPathDirective.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/NestedPathDirective.java @@ -19,12 +19,8 @@ package org.apache.freemarker.spring.model; -import java.io.IOException; -import java.io.Writer; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.CallPlace; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; @@ -36,6 +32,9 @@ import org.apache.freemarker.core.util.CallableUtils; import org.springframework.beans.PropertyAccessor; import org.springframework.web.servlet.support.RequestContext; +import java.io.IOException; +import java.io.Writer; + /** * Provides <code>TemplateModel</code> setting <code>spring.nestedPath</code> by the given bind path, working similarly * to Spring Framework's <code><spring:nestedPath /></code> JSP Tag Library. diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/SpringTemplateCallableHashModel.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/SpringTemplateCallableHashModel.java index ad748238..a3aff6fb 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/SpringTemplateCallableHashModel.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/SpringTemplateCallableHashModel.java @@ -19,18 +19,17 @@ package org.apache.freemarker.spring.model; -import java.io.Serializable; -import java.util.HashMap; -import java.util.Map; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.TemplateException; import org.apache.freemarker.core.model.TemplateHashModel; import org.apache.freemarker.core.model.TemplateModel; import org.apache.freemarker.core.model.TemplateStringModel; +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; + /** * TemplateHashModel wrapper for templates using Spring directives, functions and internal models. */ diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/ThemeFunction.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/ThemeFunction.java index ca457a7c..40c37c81 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/ThemeFunction.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/ThemeFunction.java @@ -19,9 +19,8 @@ package org.apache.freemarker.spring.model; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.springframework.context.MessageSource; import org.springframework.web.servlet.support.RequestContext; diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/TransformFunction.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/TransformFunction.java index f76cc4b1..ef197d4d 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/TransformFunction.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/TransformFunction.java @@ -19,11 +19,8 @@ package org.apache.freemarker.spring.model; -import java.beans.PropertyEditor; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.CallPlace; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; @@ -33,6 +30,8 @@ import org.apache.freemarker.core.model.TemplateModel; import org.apache.freemarker.core.util.CallableUtils; import org.springframework.web.servlet.support.RequestContext; +import java.beans.PropertyEditor; + /** * A <code>TemplateFunctionModel</code> providing functionality equivalent to the Spring Framework's * <code><spring:transform /></code> JSP Tag Library. diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/UrlFunction.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/UrlFunction.java index 16a720d3..e0de6614 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/UrlFunction.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/UrlFunction.java @@ -19,28 +19,12 @@ package org.apache.freemarker.spring.model; -import java.io.UnsupportedEncodingException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.CallPlace; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; -import org.apache.freemarker.core.model.ArgumentArrayLayout; -import org.apache.freemarker.core.model.ObjectWrapperAndUnwrapper; -import org.apache.freemarker.core.model.TemplateBooleanModel; -import org.apache.freemarker.core.model.TemplateHashModelEx; -import org.apache.freemarker.core.model.TemplateModel; -import org.apache.freemarker.core.model.TemplateNumberModel; -import org.apache.freemarker.core.model.TemplateStringModel; +import org.apache.freemarker.core.model.*; import org.apache.freemarker.core.util.CallableUtils; import org.apache.freemarker.core.util.StringToIndexMap; import org.apache.freemarker.core.util._KeyValuePair; @@ -48,6 +32,10 @@ import org.springframework.web.servlet.support.RequestContext; import org.springframework.web.servlet.support.RequestDataValueProcessor; import org.springframework.web.util.UriUtils; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + /** * A <code>TemplateFunctionModel</code> providing functionality equivalent to the Spring Framework's * <code><spring:url /></code> JSP Tag Library. @@ -217,9 +205,8 @@ class UrlFunction extends AbstractSpringTemplateFunctionModel { try { uri = uri.replace(template, UriUtils.encodePath(paramValue, encoding)); - } catch (UnsupportedEncodingException e) { - throw CallableUtils.newGenericExecuteException("Unsupported servlet response encoding: " + encoding, - this); + } catch (Exception e) { + throw newUrlParameterValueSubstitutionException(e, encoding); } } else { template = URL_TEMPLATE_DELIMITER_PREFIX + '/' + paramName + URL_TEMPLATE_DELIMITER_SUFFIX; @@ -229,9 +216,8 @@ class UrlFunction extends AbstractSpringTemplateFunctionModel { try { uri = uri.replace(template, UriUtils.encodePathSegment(paramValue, encoding)); - } catch (UnsupportedEncodingException e) { - throw CallableUtils - .newGenericExecuteException("Unsupported servlet response encoding: " + encoding, this); + } catch (Exception e) { + throw newUrlParameterValueSubstitutionException(e, encoding); } } } @@ -263,9 +249,8 @@ class UrlFunction extends AbstractSpringTemplateFunctionModel { queryStringBuilder.append('='); queryStringBuilder.append(UriUtils.encodeQueryParam(paramValue, encoding)); } - } catch (UnsupportedEncodingException e) { - throw CallableUtils.newGenericExecuteException("Unsupported servlet response encoding: " + encoding, - this); + } catch (Exception e) { + throw newUrlParameterValueSubstitutionException(e, encoding); } } } @@ -273,6 +258,12 @@ class UrlFunction extends AbstractSpringTemplateFunctionModel { return queryStringBuilder.toString(); } + private TemplateException newUrlParameterValueSubstitutionException(Exception e, String encoding) { + return CallableUtils.newGenericExecuteException( + "Failed to put parameter value into URI with encoding \"" + encoding + "\"", + this, e); + } + private enum UrlType { CONTEXT_RELATIVE, RELATIVE, ABSOLUTE } diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractCheckedElementTemplateDirectiveModel.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractCheckedElementTemplateDirectiveModel.java index f005546c..119943d8 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractCheckedElementTemplateDirectiveModel.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractCheckedElementTemplateDirectiveModel.java @@ -19,14 +19,13 @@ package org.apache.freemarker.spring.model.form; -import java.io.IOException; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; +import java.io.IOException; + /** * Corresponds to <code>org.springframework.web.servlet.tags.form.AbstractCheckedElementTag</code>. */ diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractDataBoundFormElementTemplateDirectiveModel.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractDataBoundFormElementTemplateDirectiveModel.java index 159c9c55..9592c864 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractDataBoundFormElementTemplateDirectiveModel.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractDataBoundFormElementTemplateDirectiveModel.java @@ -19,12 +19,8 @@ package org.apache.freemarker.spring.model.form; -import java.io.IOException; -import java.io.Writer; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.CallPlace; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; @@ -38,6 +34,9 @@ import org.springframework.web.servlet.support.BindStatus; import org.springframework.web.servlet.support.RequestContext; import org.springframework.web.servlet.support.RequestDataValueProcessor; +import java.io.IOException; +import java.io.Writer; + /** * Corresponds to <code>org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag</code>. */ diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractFormTemplateDirectiveModel.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractFormTemplateDirectiveModel.java index fa0152e9..8149e67a 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractFormTemplateDirectiveModel.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractFormTemplateDirectiveModel.java @@ -19,18 +19,17 @@ package org.apache.freemarker.spring.model.form; -import java.beans.PropertyEditor; -import java.io.IOException; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.CustomStateKey; import org.apache.freemarker.core.TemplateException; import org.apache.freemarker.spring.model.AbstractSpringTemplateDirectiveModel; import org.springframework.util.ObjectUtils; import org.springframework.web.servlet.support.BindStatus; +import java.beans.PropertyEditor; +import java.io.IOException; + /** * Corresponds to <code>org.springframework.web.servlet.tags.form.AbstractFormTag</code>. */ diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractHtmlElementTemplateDirectiveModel.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractHtmlElementTemplateDirectiveModel.java index 3005075b..889f2615 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractHtmlElementTemplateDirectiveModel.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractHtmlElementTemplateDirectiveModel.java @@ -19,23 +19,12 @@ package org.apache.freemarker.spring.model.form; -import java.io.IOException; -import java.io.Writer; -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.Map; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.CallPlace; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; -import org.apache.freemarker.core.model.ArgumentArrayLayout; -import org.apache.freemarker.core.model.ObjectWrapperAndUnwrapper; -import org.apache.freemarker.core.model.TemplateHashModelEx; -import org.apache.freemarker.core.model.TemplateModel; -import org.apache.freemarker.core.model.TemplateStringModel; +import org.apache.freemarker.core.model.*; import org.apache.freemarker.core.util.CallableUtils; import org.apache.freemarker.core.util.StringToIndexMap; import org.springframework.util.ObjectUtils; @@ -43,6 +32,12 @@ import org.springframework.util.StringUtils; import org.springframework.web.servlet.support.BindStatus; import org.springframework.web.servlet.support.RequestContext; +import java.io.IOException; +import java.io.Writer; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.Map; + /** * Corresponds to <code>org.springframework.web.servlet.tags.form.AbstractHtmlElementTag</code>. */ diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractHtmlInputElementTemplateDirectiveModel.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractHtmlInputElementTemplateDirectiveModel.java index 83bee503..a71e5d26 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractHtmlInputElementTemplateDirectiveModel.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractHtmlInputElementTemplateDirectiveModel.java @@ -19,12 +19,8 @@ package org.apache.freemarker.spring.model.form; -import java.io.IOException; -import java.io.Writer; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.CallPlace; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; @@ -35,6 +31,9 @@ import org.apache.freemarker.core.util.CallableUtils; import org.apache.freemarker.core.util.StringToIndexMap; import org.springframework.web.servlet.support.RequestContext; +import java.io.IOException; +import java.io.Writer; + /** * Corresponds to <code>org.springframework.web.servlet.tags.form.AbstractHtmlInputElementTag</code>. */ diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractMultiCheckedElementTemplateDirectiveModel.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractMultiCheckedElementTemplateDirectiveModel.java index c23a7051..bdac2e68 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractMultiCheckedElementTemplateDirectiveModel.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractMultiCheckedElementTemplateDirectiveModel.java @@ -19,25 +19,14 @@ package org.apache.freemarker.spring.model.form; -import java.io.IOException; -import java.io.Writer; -import java.util.Collection; -import java.util.Map; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.CallPlace; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; -import org.apache.freemarker.core.model.ArgumentArrayLayout; -import org.apache.freemarker.core.model.ObjectWrapperAndUnwrapper; -import org.apache.freemarker.core.model.TemplateHashModelEx; +import org.apache.freemarker.core.model.*; import org.apache.freemarker.core.model.TemplateHashModelEx.KeyValuePair; import org.apache.freemarker.core.model.TemplateHashModelEx.KeyValuePairIterator; -import org.apache.freemarker.core.model.TemplateIterableModel; -import org.apache.freemarker.core.model.TemplateModel; -import org.apache.freemarker.core.model.TemplateModelIterator; import org.apache.freemarker.core.util.CallableUtils; import org.apache.freemarker.core.util.StringToIndexMap; import org.springframework.beans.BeanWrapper; @@ -46,6 +35,11 @@ import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; import org.springframework.web.servlet.support.RequestContext; +import java.io.IOException; +import java.io.Writer; +import java.util.Collection; +import java.util.Map; + /** * Corresponds to <code>org.springframework.web.servlet.tags.form.AbstractMultiCheckedElementTag</code>. */ diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractSingleCheckedElementTemplateDirectiveModel.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractSingleCheckedElementTemplateDirectiveModel.java index 5424adaa..53e74d84 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractSingleCheckedElementTemplateDirectiveModel.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractSingleCheckedElementTemplateDirectiveModel.java @@ -19,12 +19,8 @@ package org.apache.freemarker.spring.model.form; -import java.io.IOException; -import java.io.Writer; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.CallPlace; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; @@ -32,6 +28,9 @@ import org.apache.freemarker.core.model.ObjectWrapperAndUnwrapper; import org.apache.freemarker.core.model.TemplateModel; import org.springframework.web.servlet.support.RequestContext; +import java.io.IOException; +import java.io.Writer; + /** * Corresponds to <code>org.springframework.web.servlet.tags.form.AbstractSingleCheckedElementTag</code>. */ diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/ButtonTemplateDirectiveModel.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/ButtonTemplateDirectiveModel.java index 72ca43e9..66498d20 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/ButtonTemplateDirectiveModel.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/ButtonTemplateDirectiveModel.java @@ -19,12 +19,8 @@ package org.apache.freemarker.spring.model.form; -import java.io.IOException; -import java.io.Writer; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.CallPlace; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; @@ -35,6 +31,9 @@ import org.apache.freemarker.core.util.CallableUtils; import org.apache.freemarker.core.util.StringToIndexMap; import org.springframework.web.servlet.support.RequestContext; +import java.io.IOException; +import java.io.Writer; + /** * Provides <code>TemplateModel</code> for data-binding-aware HTML '{@code button}' element. * This tag is provided for completeness if the application relies on a diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/CheckboxTemplateDirectiveModel.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/CheckboxTemplateDirectiveModel.java index 95da4164..af025d87 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/CheckboxTemplateDirectiveModel.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/CheckboxTemplateDirectiveModel.java @@ -19,12 +19,8 @@ package org.apache.freemarker.spring.model.form; -import java.io.IOException; -import java.io.Writer; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.CallPlace; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; @@ -36,6 +32,9 @@ import org.apache.freemarker.core.util.StringToIndexMap; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.servlet.support.RequestContext; +import java.io.IOException; +import java.io.Writer; + /** * Provides <code>TemplateModel</code> for data-binding-aware HTML '{@code <input type="checkbox"/>}' element. * This tag is provided for completeness if the application relies on a diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/CheckboxesTemplateDirectiveModel.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/CheckboxesTemplateDirectiveModel.java index 170c79a2..344f3785 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/CheckboxesTemplateDirectiveModel.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/CheckboxesTemplateDirectiveModel.java @@ -19,15 +19,14 @@ package org.apache.freemarker.spring.model.form; -import java.io.IOException; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; import org.springframework.web.bind.WebDataBinder; +import java.io.IOException; + /** * Provides <code>TemplateModel</code> for data-binding-aware multiple HTML '{@code <input type="checkbox"/>}' elements. * This tag is provided for completeness if the application relies on a diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/ErrorsTemplateDirectiveModel.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/ErrorsTemplateDirectiveModel.java index 20f04baf..a7f6eb5a 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/ErrorsTemplateDirectiveModel.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/ErrorsTemplateDirectiveModel.java @@ -19,15 +19,8 @@ package org.apache.freemarker.spring.model.form; -import java.io.IOException; -import java.io.Writer; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.CallPlace; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; @@ -42,6 +35,12 @@ import org.springframework.util.StringUtils; import org.springframework.web.servlet.support.BindStatus; import org.springframework.web.servlet.support.RequestContext; +import java.io.IOException; +import java.io.Writer; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + /** * Provides <code>TemplateModel</code> for displaying errors for a particular field or object. * <P> diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/FormTemplateDirectiveModel.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/FormTemplateDirectiveModel.java index 79ab1ed2..c30da619 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/FormTemplateDirectiveModel.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/FormTemplateDirectiveModel.java @@ -19,13 +19,8 @@ package org.apache.freemarker.spring.model.form; -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.io.Writer; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.CallPlace; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; @@ -44,6 +39,9 @@ import org.springframework.web.servlet.support.RequestDataValueProcessor; import org.springframework.web.util.HtmlUtils; import org.springframework.web.util.UriUtils; +import java.io.IOException; +import java.io.Writer; + /** * Provides <code>TemplateModel</code> for data-binding-aware HTML '{@code form}' element whose inner directives * are bound to properties on a <em>form object</em>. @@ -338,21 +336,15 @@ class FormTemplateDirectiveModel extends AbstractHtmlElementTemplateDirectiveMod String requestUri = requestContext.getRequestUri(); String encoding = getResponse().getCharacterEncoding(); - try { - requestUri = UriUtils.encodePath(requestUri, encoding); - } catch (UnsupportedEncodingException ex) { - // According to Spring MVC Javadoc, it shouldn't happen. - } + requestUri = UriUtils.encodePath(requestUri, encoding); HttpServletResponse response = getResponse(); - if (response != null) { - requestUri = response.encodeURL(requestUri); - String queryString = requestContext.getQueryString(); + requestUri = response.encodeURL(requestUri); + String queryString = requestContext.getQueryString(); - if (StringUtils.hasText(queryString)) { - requestUri += "?" + HtmlUtils.htmlEscape(queryString); - } + if (StringUtils.hasText(queryString)) { + requestUri += "?" + HtmlUtils.htmlEscape(queryString); } if (StringUtils.hasText(requestUri)) { diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/HiddenInputTemplateDirectiveModel.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/HiddenInputTemplateDirectiveModel.java index 3cbcdd36..2c1d143d 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/HiddenInputTemplateDirectiveModel.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/HiddenInputTemplateDirectiveModel.java @@ -19,12 +19,8 @@ package org.apache.freemarker.spring.model.form; -import java.io.IOException; -import java.io.Writer; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.CallPlace; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; @@ -35,6 +31,9 @@ import org.apache.freemarker.core.util.CallableUtils; import org.apache.freemarker.core.util.StringToIndexMap; import org.springframework.web.servlet.support.RequestContext; +import java.io.IOException; +import java.io.Writer; + /** * Provides <code>TemplateModel</code> for data-binding-aware HTML '{@code input}' element with a '{@code type}' * of '{@code hidden}'. diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/InputTemplateDirectiveModel.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/InputTemplateDirectiveModel.java index e262d3f4..93877e23 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/InputTemplateDirectiveModel.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/InputTemplateDirectiveModel.java @@ -19,12 +19,8 @@ package org.apache.freemarker.spring.model.form; -import java.io.IOException; -import java.io.Writer; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.CallPlace; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; @@ -35,6 +31,9 @@ import org.apache.freemarker.core.util.CallableUtils; import org.apache.freemarker.core.util.StringToIndexMap; import org.springframework.web.servlet.support.RequestContext; +import java.io.IOException; +import java.io.Writer; + /** * Provides <code>TemplateModel</code> for data-binding-aware HTML '{@code input}' element with a '{@code type}' * of '{@code text}'. diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/LabelTemplateDirectiveModel.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/LabelTemplateDirectiveModel.java index b7685661..34c635ac 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/LabelTemplateDirectiveModel.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/LabelTemplateDirectiveModel.java @@ -19,12 +19,8 @@ package org.apache.freemarker.spring.model.form; -import java.io.IOException; -import java.io.Writer; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.CallPlace; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; @@ -36,6 +32,9 @@ import org.apache.freemarker.core.util.StringToIndexMap; import org.springframework.util.StringUtils; import org.springframework.web.servlet.support.RequestContext; +import java.io.IOException; +import java.io.Writer; + /** * Provides <code>TemplateModel</code> for data-binding-aware HTML '{@code label}' element. * <P> diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/OptionTemplateDirectiveModel.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/OptionTemplateDirectiveModel.java index b94c1c4f..0a4c7bfc 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/OptionTemplateDirectiveModel.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/OptionTemplateDirectiveModel.java @@ -19,12 +19,8 @@ package org.apache.freemarker.spring.model.form; -import java.io.IOException; -import java.io.Writer; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.CallPlace; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; @@ -36,6 +32,9 @@ import org.apache.freemarker.core.util.StringToIndexMap; import org.springframework.util.ObjectUtils; import org.springframework.web.servlet.support.RequestContext; +import java.io.IOException; +import java.io.Writer; + /** * Provides a convenient <code>TemplateModel</code> that allow to supply a collection that are to be rendered * as an HTML '{@code option}' element. diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/OptionsTemplateDirectiveModel.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/OptionsTemplateDirectiveModel.java index 4367eaf6..4b6b01b4 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/OptionsTemplateDirectiveModel.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/OptionsTemplateDirectiveModel.java @@ -19,12 +19,8 @@ package org.apache.freemarker.spring.model.form; -import java.io.IOException; -import java.io.Writer; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.CallPlace; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; @@ -36,6 +32,9 @@ import org.apache.freemarker.core.util.StringToIndexMap; import org.springframework.util.ObjectUtils; import org.springframework.web.servlet.support.RequestContext; +import java.io.IOException; +import java.io.Writer; + /** * Provides a convenient <code>TemplateModel</code> that allow to supply a collection that are to be rendered * as HTML '{@code option}' elements. diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/PasswordInputTemplateDirectiveModel.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/PasswordInputTemplateDirectiveModel.java index 52729e18..dd9a2f2b 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/PasswordInputTemplateDirectiveModel.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/PasswordInputTemplateDirectiveModel.java @@ -19,12 +19,8 @@ package org.apache.freemarker.spring.model.form; -import java.io.IOException; -import java.io.Writer; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.CallPlace; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; @@ -35,6 +31,9 @@ import org.apache.freemarker.core.util.CallableUtils; import org.apache.freemarker.core.util.StringToIndexMap; import org.springframework.web.servlet.support.RequestContext; +import java.io.IOException; +import java.io.Writer; + /** * Provides <code>TemplateModel</code> for data-binding-aware HTML '{@code input}' element with a '{@code type}' * of '{@code password}'. diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/RadioButtonTemplateDirectiveModel.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/RadioButtonTemplateDirectiveModel.java index d6b8e162..fad23ab1 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/RadioButtonTemplateDirectiveModel.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/RadioButtonTemplateDirectiveModel.java @@ -19,12 +19,8 @@ package org.apache.freemarker.spring.model.form; -import java.io.IOException; -import java.io.Writer; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.CallPlace; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; @@ -35,6 +31,9 @@ import org.apache.freemarker.core.util.CallableUtils; import org.apache.freemarker.core.util.StringToIndexMap; import org.springframework.web.servlet.support.RequestContext; +import java.io.IOException; +import java.io.Writer; + /** * Provides <code>TemplateModel</code> for data-binding-aware HTML '{@code <input type="radio"/>}' element. * This tag is provided for completeness if the application relies on a diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/RadioButtonsTemplateDirectiveModel.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/RadioButtonsTemplateDirectiveModel.java index 26e6ef88..3ebe9919 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/RadioButtonsTemplateDirectiveModel.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/RadioButtonsTemplateDirectiveModel.java @@ -19,8 +19,8 @@ package org.apache.freemarker.spring.model.form; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; /** * Provides <code>TemplateModel</code> for data-binding-aware multiple HTML '{@code <input type="radio"/>}' elements. diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/SelectTemplateDirectiveModel.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/SelectTemplateDirectiveModel.java index 6fe29a6e..295d53f9 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/SelectTemplateDirectiveModel.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/SelectTemplateDirectiveModel.java @@ -19,29 +19,24 @@ package org.apache.freemarker.spring.model.form; -import java.beans.PropertyEditor; -import java.io.IOException; -import java.io.Writer; -import java.util.Collection; -import java.util.Map; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.CallPlace; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; -import org.apache.freemarker.core.model.ArgumentArrayLayout; -import org.apache.freemarker.core.model.ObjectWrapperAndUnwrapper; -import org.apache.freemarker.core.model.TemplateBooleanModel; -import org.apache.freemarker.core.model.TemplateModel; -import org.apache.freemarker.core.model.TemplateStringModel; +import org.apache.freemarker.core.model.*; import org.apache.freemarker.core.util.CallableUtils; import org.apache.freemarker.core.util.StringToIndexMap; import org.springframework.util.ObjectUtils; import org.springframework.web.servlet.support.BindStatus; import org.springframework.web.servlet.support.RequestContext; +import java.beans.PropertyEditor; +import java.io.IOException; +import java.io.Writer; +import java.util.Collection; +import java.util.Map; + /** * Provides <code>TemplateModel</code> for data-binding-aware HTML '{@code select}' element. * <P> diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/SpringFormTemplateCallableHashModel.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/SpringFormTemplateCallableHashModel.java index 8e28c4c0..7e60b5a5 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/SpringFormTemplateCallableHashModel.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/SpringFormTemplateCallableHashModel.java @@ -19,17 +19,16 @@ package org.apache.freemarker.spring.model.form; -import java.io.Serializable; -import java.util.HashMap; -import java.util.Map; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.TemplateException; import org.apache.freemarker.core.model.TemplateHashModel; import org.apache.freemarker.core.model.TemplateModel; +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; + /** * TemplateHashModel wrapper for templates using Spring directives, functions and internal models. */ diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/TextareaTemplateDirectiveModel.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/TextareaTemplateDirectiveModel.java index bfc5bde1..7aa48ee1 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/TextareaTemplateDirectiveModel.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/TextareaTemplateDirectiveModel.java @@ -19,12 +19,8 @@ package org.apache.freemarker.spring.model.form; -import java.io.IOException; -import java.io.Writer; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.CallPlace; import org.apache.freemarker.core.Environment; import org.apache.freemarker.core.TemplateException; @@ -35,6 +31,9 @@ import org.apache.freemarker.core.util.CallableUtils; import org.apache.freemarker.core.util.StringToIndexMap; import org.springframework.web.servlet.support.RequestContext; +import java.io.IOException; +import java.io.Writer; + /** * Provides <code>TemplateModel</code> for data-binding-aware HTML '{@code textarea}' element. * <P> diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/AbstractFreeMarkerView.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/AbstractFreeMarkerView.java index 6d3c2aef..ab8eb77a 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/AbstractFreeMarkerView.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/AbstractFreeMarkerView.java @@ -18,13 +18,8 @@ */ package org.apache.freemarker.spring.web.view; -import java.io.IOException; -import java.util.Locale; -import java.util.Map; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.freemarker.core.Configuration; import org.apache.freemarker.core.ParseException; import org.apache.freemarker.core.Template; @@ -37,6 +32,10 @@ import org.slf4j.LoggerFactory; import org.springframework.context.ApplicationContextException; import org.springframework.web.servlet.view.AbstractTemplateView; +import java.io.IOException; +import java.util.Locale; +import java.util.Map; + /** * Adapter base class for FreeMarker template-based views, with the ability to access {@link Configuration} * and {@link ObjectWrapperAndUnwrapper}. diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/FreeMarkerView.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/FreeMarkerView.java index ddb63fe6..e101fb3f 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/FreeMarkerView.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/FreeMarkerView.java @@ -18,28 +18,21 @@ */ package org.apache.freemarker.spring.web.view; -import java.util.Map; - -import javax.servlet.GenericServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; - +import jakarta.servlet.GenericServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; import org.apache.freemarker.core.TemplateException; import org.apache.freemarker.core.model.ObjectWrapperAndUnwrapper; import org.apache.freemarker.core.model.TemplateHashModel; -import org.apache.freemarker.servlet.AllHttpScopesHashModel; -import org.apache.freemarker.servlet.FreemarkerServlet; -import org.apache.freemarker.servlet.HttpRequestHashModel; -import org.apache.freemarker.servlet.HttpRequestParametersHashModel; -import org.apache.freemarker.servlet.HttpSessionHashModel; -import org.apache.freemarker.servlet.IncludePage; -import org.apache.freemarker.servlet.ServletContextHashModel; +import org.apache.freemarker.servlet.*; import org.apache.freemarker.servlet.jsp.TaglibFactory; import org.apache.freemarker.spring.model.AbstractDelegatingTemplateHashModel; import org.apache.freemarker.spring.model.SpringTemplateCallableHashModel; import org.apache.freemarker.spring.model.form.SpringFormTemplateCallableHashModel; +import java.util.Map; + /** * FreeMarker template based view implementation, with being able to provide a {@link ServletContextHashModel} * and {@link TaglibFactory} models to the templates. @@ -48,7 +41,7 @@ public class FreeMarkerView extends AbstractFreeMarkerView { /** * Internal servlet instance to provide a page object in JSP tag library usages. - * @see javax.servlet.jsp.PageContext#getPage() + * @see jakarta.servlet.jsp.PageContext#getPage() */ private GenericServlet pageContextServlet; diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/FreeMarkerViewResolver.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/FreeMarkerViewResolver.java index 3a5a554b..370dd680 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/FreeMarkerViewResolver.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/FreeMarkerViewResolver.java @@ -18,9 +18,8 @@ */ package org.apache.freemarker.spring.web.view; -import javax.servlet.GenericServlet; -import javax.servlet.ServletException; - +import jakarta.servlet.GenericServlet; +import jakarta.servlet.ServletException; import org.apache.freemarker.core.Configuration; import org.apache.freemarker.core.model.ObjectWrapperAndUnwrapper; import org.apache.freemarker.core.model.impl.DefaultObjectWrapper; @@ -56,7 +55,7 @@ public class FreeMarkerViewResolver extends AbstractTemplateViewResolver impleme /** * Internal servlet instance to provide a page object in JSP tag library usages. - * @see javax.servlet.jsp.PageContext#getPage() + * @see jakarta.servlet.jsp.PageContext#getPage() */ private GenericServlet pageContextServlet; diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/PageContextServlet.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/PageContextServlet.java index 97f43216..8080c1d1 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/PageContextServlet.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/PageContextServlet.java @@ -18,16 +18,16 @@ */ package org.apache.freemarker.spring.web.view; -import java.io.IOException; +import jakarta.servlet.GenericServlet; +import jakarta.servlet.ServletException; +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; -import javax.servlet.GenericServlet; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; +import java.io.IOException; /** * A built-in internal servlet class to be used as page object in JSP tag libraries used in FreeMarker templates. - * JSP Tag Library implementations may invoke <code>javax.servlet.jsp.PageContext#getPage()</code> to get the + * JSP Tag Library implementations may invoke <code>jakarta.servlet.jsp.PageContext#getPage()</code> to get the * reference of the servlet. So, this internal servlet implementation is provided for that. */ @SuppressWarnings("serial") diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/PageContextServletConfig.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/PageContextServletConfig.java index ad1bb2d4..3e68b135 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/PageContextServletConfig.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/PageContextServletConfig.java @@ -18,12 +18,12 @@ */ package org.apache.freemarker.spring.web.view; +import jakarta.servlet.ServletConfig; +import jakarta.servlet.ServletContext; + import java.util.Collections; import java.util.Enumeration; -import javax.servlet.ServletConfig; -import javax.servlet.ServletContext; - /** * A built-in internal {@link ServletConfig} class used when initializing the page context servlet * ({@link PageContextServlet}) internally. diff --git a/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/EchoTag.java b/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/EchoTag.java index 2a7e752d..6c3e5e5a 100644 --- a/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/EchoTag.java +++ b/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/EchoTag.java @@ -18,10 +18,10 @@ */ package org.apache.freemarker.spring.web.view; -import java.io.IOException; +import jakarta.servlet.jsp.JspException; +import jakarta.servlet.jsp.tagext.TagSupport; -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.tagext.TagSupport; +import java.io.IOException; /** * Simple Example JSP Tag Library for unit test. diff --git a/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreeMarkerViewResolverTest.java b/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreeMarkerViewResolverTest.java index 9cfab1a3..038d9189 100644 --- a/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreeMarkerViewResolverTest.java +++ b/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreeMarkerViewResolverTest.java @@ -18,14 +18,7 @@ */ package org.apache.freemarker.spring.web.view; -import static org.junit.Assert.*; - -import java.util.HashMap; -import java.util.Locale; -import java.util.Map; - -import javax.servlet.ServletContext; - +import jakarta.servlet.ServletContext; import org.apache.freemarker.core.Configuration; import org.apache.freemarker.core.templateresolver.impl.StringTemplateLoader; import org.junit.Before; @@ -36,6 +29,12 @@ import org.springframework.mock.web.MockServletContext; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.GenericWebApplicationContext; +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; + +import static org.junit.Assert.assertEquals; + public class FreeMarkerViewResolverTest { private ServletContext servletContext; diff --git a/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreeMarkerViewTest.java b/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreeMarkerViewTest.java index 10598f96..7cb89a8b 100644 --- a/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreeMarkerViewTest.java +++ b/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreeMarkerViewTest.java @@ -18,15 +18,8 @@ */ package org.apache.freemarker.spring.web.view; -import static org.junit.Assert.*; - -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.atomic.AtomicLong; - -import javax.servlet.GenericServlet; -import javax.servlet.ServletContext; - +import jakarta.servlet.GenericServlet; +import jakarta.servlet.ServletContext; import org.apache.freemarker.core.Configuration; import org.apache.freemarker.core.model.ObjectWrapperAndUnwrapper; import org.apache.freemarker.core.templateresolver.impl.StringTemplateLoader; @@ -41,6 +34,12 @@ import org.springframework.mock.web.MockServletContext; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.GenericWebApplicationContext; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.atomic.AtomicLong; + +import static org.junit.Assert.assertEquals; + public class FreeMarkerViewTest { private ServletContext servletContext;
