Note that this is included in 2.3.33-SNAPHSOT that I published to the
Apache Maven snapshot repo:

https://repository.apache.org/content/groups/snapshots/org/freemarker/freemarker/2.3.33-SNAPSHOT/

<repository>
  <id>apache-staging-repository</id>
  <url>https://repository.apache.org/content/repositories/staging/</url>
</repository>

On Tue, Jan 23, 2024 at 10:15 AM Daniel Dekany <ddek...@apache.org> wrote:

> Has merged this... Please test.
>
> Now the freemarker jar artifact contains freemarker.ext.jakarta.servlet,
> and freemarker.ext.jakarta.jsp, in addition to the old javax Serlvet/JSP
> support classes. People who need to switch to Jakarta have to
> search-and-replace their code, and use the new packages.
>
> On Sat, Dec 30, 2023 at 8:18 PM Daniel Dekany <ddek...@apache.org> wrote:
>
>> Here's the PR (from Attila Kelemen):
>> https://github.com/apache/freemarker/pull/104
>>
>> This basically copies and modifies the content of the
>> freemarker.ext.servlet and freemarker.ext.jsp packages (the javaxServlet
>> source set), into freemarker.ext.jakarta.servlet and
>> freemarker.ext.jakarta.jsp (the jakartaServlet source set, which is
>> on-the-fly generated source set). This happens during the build, so you
>> won't see the Jakarta-related source files in normal source code (like in
>> your IDE), but you will see it in the build outputs, like freemarker.jar,
>> the Maven source artifact, and in the javadoc output.
>>
>> The Servlet/JSP related tests also have a Jakarta "copy" (including those
>> that run on an embedded Jetty, so no mocking), and based on that the taglib
>> support also seems to work.
>>
>> Testing/feedback is welcome! Prefer commenting on the PR in this case.
>>
>> On Thu, Dec 28, 2023 at 3:46 PM Daniel Dekany <ddek...@apache.org> wrote:
>>
>>> Ah, sorry, it's not yet done on Git... posted that to the wrong thread.
>>>
>>> But, I have a question regarding Jakarta support. What features of
>>> Servlet/JSP support are you using? I'm asking because supporting JSP
>>> taglibs (TLD-based) might bring some complications, if that has to work on
>>> modern containers.
>>>
>>> On Mon, Dec 25, 2023 at 9:05 PM Daniel Dekany <ddek...@apache.org>
>>> wrote:
>>>
>>>> This is done now (in Git).
>>>>
>>>> On Thu, Dec 21, 2023 at 6:38 PM Daniel Dekany <ddek...@apache.org>
>>>> wrote:
>>>>
>>>>> So far it seems that using a new package, like
>>>>> freemarker.ext.jakarta.servlet and  freemarker.ext.jakarta.jsp was the 
>>>>> more
>>>>> popular compromise. As far as that part of the source code can be 
>>>>> generated
>>>>> from the packages with similar names, I assume that we will give that
>>>>> approach a try. This we do after the Gradle PR was merged (which looks 
>>>>> very
>>>>> close). Any comments?
>>>>>
>>>>> On Tue, Nov 7, 2023 at 11:50 PM Daniel Dekany <ddek...@apache.org>
>>>>> wrote:
>>>>>
>>>>>> The package of Servlet related classes has changed because of
>>>>>> Jakarta, which breaks our Servlet support (freemarker.ext.servlet), which
>>>>>> is packged into freemarker.jar.
>>>>>>
>>>>>> We have to choose which end result we want (ignore the "how" for now)
>>>>>> as the solution, from these two (as far as I can tell):
>>>>>>
>>>>>> 1. We can copy the `freemarker.ext.servlet` package into
>>>>>> `freemarker.ext.jakartaservlet` (or such), and we will only have the 
>>>>>> normal
>>>>>> artifact in Maven Central, which contains that, and also the older
>>>>>> freemarker.ext.servlet. Explanation: As you probably know, 2.x has a 
>>>>>> single
>>>>>> monolithic freemarker.jar artifact, which already contains support 
>>>>>> classes
>>>>>> of various optional dependencies. We already support multiple 
>>>>>> incompatible
>>>>>> Serlvet/JSP versions, and has separate version-specific classes for some.
>>>>>> But, classes like  freemarker.ext.servlet.FreemarkerServlet managed to 
>>>>>> stay
>>>>>> common amongst Servlet API versions. For the Jakarta change not even that
>>>>>> can remain common of course.
>>>>>>
>>>>>> 2. We can have an additional artifact variant (let's say via Maven
>>>>>> classifier "jakarta"), that still uses the `freemarker.ext.servlet`
>>>>>> package, but there that links to the Jakarta Servlet classes. This 
>>>>>> artifact
>>>>>> will drop support for pre-Jakarta Servlet/JSP versions.
>>>>>>
>>>>>> Possibility 1 pro: We don't have to publish one more artifact. Also,
>>>>>> then users don't have to fiddle with dependency management to choose the
>>>>>> artifact with the "jakarta" classifier.
>>>>>>
>>>>>> Possibility 1 con: Any existing dependent Java code that used
>>>>>> `freemarker.ext.servlet` so far, and wants to migrate to a Jakarta 
>>>>>> Servlet
>>>>>> container, has to be modified to link to `freemarker.ext.jakartaservlet`
>>>>>> instead. That sounds quite bad, however, the same dependent Java code
>>>>>> likely has to be modified anyway, to link to Jakarta Servlet classes.
>>>>>> Except, there are tools, like
>>>>>> https://github.com/apache/tomcat-jakartaee-migration, that
>>>>>> transforms jar-s to depend on Jakarta Servlet API, but same tools of 
>>>>>> course
>>>>>> won't replace links to freemarker.ext.servlet with
>>>>>> freemarker.ext.jakartaservlet, so some pain is expected. Also, 
>>>>>> `web.xml`-s
>>>>>> that refer to `freemarker.ext.servlet.FreemarkerSerlvet` also have to be
>>>>>> modified, if someone uses a Jakarta container.
>>>>>>
>>>>>> Opinions?
>>>>>>
>>>>>> Note 1: We had two attempts so far on this issue, but certainly the
>>>>>> actual solution will be a 3rd one. Anyway, the "how" is now not the point
>>>>>> now, but here they are:
>>>>>>
>>>>>>    - https://github.com/apache/freemarker/pull/94
>>>>>>    - https://github.com/apache/freemarker/pull/95
>>>>>>
>>>>>> Note 2: At some later(!) point, maybe in a FreeMarker 2.4.0, we can
>>>>>> get rid of non-Jakarta servlet support. At the same point, we will also 
>>>>>> get
>>>>>> rid of the GAE/non-GAE variety. So we could end up with just a single
>>>>>> variant of the freemarker 2.x artifact, over time.
>>>>>>
>>>>>

Reply via email to