Hello, all. There has been some discussion [1] on the JIRA regarding GEODE-3584, to reduce code duplication and improve clarity across LocatorLauncher, ServerLauncher, and AbstractLauncher classes. In no particular order, I think the following would be a good starting point for refactoring these classes:
* To reduce duplication: *** Unify ServerLauncher.Command and LocatorLauncher.Command enums to a single enum. *** Unify ServerLauncher.ServerState and LocatorLauncher.LocatorState to a single "MemberState" class. *** Unify redundancy in ServerLauncher.ServerControllerParams and LocatorLauncher.LocatorControllerParams to an shared base class. * To improve clarity in classes that are currently large: *** Promote inner classes ServerLauncher.Builder and LocatorLauncher.Builder to be "top-level" classes. *** Promote inner classes ServerLauncher.State and LocatorLauncher.State to be "top-level" classes. *** Possibly promote inner classes ServerLauncher.ServerControllerParams and LocatorLauncher.LocatorControllerParams, although the footprint of each would be very small after the above refactor. Alternatively, make the inner class implementations Each of these refactors would require deprecation of existing public-facing points and delegation at those points to the new classes. The above are initial impressions. I haven't spent much time digging into the viability of each refactor, but it does appear that the inner classes do not heavily rely on visibility of class fields that would be otherwise inaccessible. Thoughts or concerns on these API relocations? Imagination is Change. ~Patrick Rhomberg [1] https://issues.apache.org/jira/browse/GEODE-3584