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

Reply via email to