I propose that in FM3 Configuration should only have two constructors:

  Configuration(Version incompatibleImprovements)
  Configuration(Properties properties)

and that it should not have a setIncompatibleImprovements(Version)
method. Because then it can be ensured that
cfg.incompatibleImprovements is always set first, and not modified
anymore. It's simplifies life considerably, because changing the
incompatibleImprovements changes the default of some settings, so when
in FM2 you change it at some later point, we will have to figure out
which settings were never set with the public setter method, and thus
still hold the initial default (not just something that's identical to
it!), and thus has to be changed. Because Properties are esentially
unordered, we also have to get all of them at once, so that we can
sort them (bring incompatibleImprovements to the first place, sort any
other dependent settings too).

I also intend to remove `String getSetting(String)`, because it can't
be implemented and has never worked.

I'm also very inclined to remove setSetting(String) and
setSettings(Properties), as it can lure the user into some ordering
traps. I think Configuration(Properties properties) should be enough,
and then, the user is forced to collect all the properties together
(coming form different source maybe, that's why he collects them), and
the we can do a proper ordering because we have all of them at once.

Thoughts?

-- 
Thanks,
 Daniel Dekany

Reply via email to