Take PhoenixAccessController as an example. Over time the HBase interfaces change in minor ways. You’ll need different compilation units for this class to be able to compile it across a wide range of 1.x. However the essential Phoenix functionality does not change. The logic that makes up the method bodies can be factored into a class that groups together static helper methods which come to contain this common logic. The common class can remain in the core module. Then all you have in the version specific modules is scaffolding. In that scaffolding, calls to the static methods in core. It’s not a clever refactor but is DRY. Over time this can be made cleaner case by case where the naive transformation has a distasteful result.
> On Jan 14, 2020, at 6:40 PM, Andrew Purtell <andrew.purt...@gmail.com> wrote: >