Hi guys,

A quick update and a request for help and opinions about my progress.

So I got working what I thought was a good approach: a Gradle convention plugin 
that copies the Java sources whilst replacing the 'javax' imports with 
'jakarta'. Making use of with 'features' and 'capabilities' I got it to compile 
nicely. So far so good.

What I'm stuck with now are missing method implementations. Tapestry's code 
base ist against servlet-api 3.0.1, but the jakarta namespace doesn't appear 
before jakarta.servlet-api:5.0.0. Here is an example. Tapestry's 
BufferedGZipOutputStream class extends jakarta.servlet.ServletOutputStream 
which has a setWriteListener(jakarta.servlet.WriteListener) method (introduced 
in servlet-api 3.1, by the way).

For this particular case, identified by a compile error, I guess I could add an 
implementation of that method by calling sed or a similar tool. And that code 
would be in build.gradle which is clumsy especially if the implementation is 
more than a few lines of code. And then I would repeat the same thing for all 
abstract methods that were added since servlet-api 3.0.1? Probably not.

Unless somebody else has a better idea, my preference for the way ahead would 
be to switch to Jakarta EE 9 and some point rather than running in parallel. As 
this would break backward compatibility, we would have to think about how than 
can be communicated in the best way, including the possibility of calling it 
Tapestry 6? I would also be ok with sticking with Tapestry 5 even though it's a 
breaking change. We've done it before, and even though it is inconvenient for 
users it also provides benefit for users.

Keen to hear your thoughts.

Thanks,

Volker

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tapestry.apache.org
For additional commands, e-mail: dev-h...@tapestry.apache.org

Reply via email to