Cayenne 5.0 - getting rid of legacy

Andrus Adamchik <[email protected]> Fri, 1 Jul 2022 18:11:10 +0200
Newsgroups gmane.comp.java.cayenne.devel
Message-ID <[email protected]>
Hi folks,

So with 4.2 being almost GA, it is about time to start discussing the next major release. I think it should be 5.0 (not 4.3), and we would modernize things across the board. Let me start with a list of things we can clean up, and I'll follow up with new feature ideas in a separate thread. So...

0. Switch to Java 17. About time...

1. [Done by Nikita] Remove OpenBaseAdapter

2. [Done by Nikita] Remove cayenne-dbcp2, cayenne-joda

3. Remove ROP (cayenne-client, cayenne-client-jetty, cayenne-protostuff, cayenne-rop-server, ROP modeler pieces, docs). It is untenable to support it anymore, and is a constant source of CVE's. Most importantly, from what I can tell, there are no users left for this particular technology. Removing it would allow us to collapse ObjectContext inheritance hierarchy among other things.

4. Remove object clustering transports (cayenne-jgroups, cayenne-jms, cayenne-xmpp). I don't think anyone uses them. Also these transport protocols are not particularly popular these days. Whoever needs them, can easily maintain their own fork. 

5. Remove cayenne-web. It provides a very specific recipe for integration with servlets via ThreadLocals. Kinda old-school. I'd rather see a SpringBoot example as a separate project somewhere. (And of course we already have Bootique examples available).

6. Remove deprecated SelectQuery. ObjectSelect is a full replacement. There are more query improvements that I have in mind, but this one is a no brainer.

7. Remove entity callbacks from the Modeler and XML. Only annotated callbacks will be supported.

Comments?

Andrus