Hi all,
good news on the backwards compatibility; David suggested we could use
his "bridger" tool to have the Session API binary compatible with
older versions.
-
https://github.com/dmlloyd/bridger
I created a prototype patch, it's all actually quite self-explanatory:
-
https://github.com/Sanne/hibernate-orm/commit/8d14a5efa29e6682a7d823a2252...
I had more trouble testing it.
Here a failed approach: I could not get Gradle to compile with a
different version used for testing, while at the same time not driving
dependencies in my IDE nuts :)
-
https://github.com/Sanne/hibernate-orm/commit/28f5110cf9ccee9614bceb45403...
Next, I resorted to an external, trivial Maven project; this worked
beautifully! You can see the warnings in the logs suggesting "you're
using a method which doesn't exist anymore, but it's ok.." .
-
https://github.com/Sanne/binary-compatibility-test
Next steps:
# Agree on applying the approach? I see no problems with it but
clearly this will need to be supported by us all.
# Figure out how to get the integration tests working in the ORM / Gradle build
# Fix some pending problem with Envers: it's no longer compiling as a
non-abstract extension of Session doesn't implement getFlushMode;
might be tricky or not, I've not looked yet.
# See if we can avoid listing the placeholder method in javadocs
Thanks,
Sanne