SCO.putProperty should call initialize() before doing anything else, just as
getProperty does. Otherwise some things can fail to work correctly; e.g.
SystemOption's as created by the apisupport template will quietly fail to save
settings across IDE restarts, since upon restore putProperty is called with the
saved values, then getProperty is called at some point, which calls
initialize(), which calls putProperty() with the default values!
Seems other things depend on this.
Looking at the code, the bug was introduced by anovak's 1.20. The log comment
says that the change was made to speed up initialization of SCO's, but the
semantics is clearly wrong now and it seems several things are broken by it. I
don't understand the reasoning behind the original change, so Ales can you
please look at it? Either rollback 1.20 or try to fix the performance so that
the semantics are correct? Also how significant was the performance gain?
The basic problem is that it is common for initialize() implementations to call
putProperty(), and if someone calls putProperty() early on, then initialize()
can be called later, overwriting the earlier actions. initialize() docs say it
will be called the first time a SCO is used, which clearly includes calls to
Resolved for 3.4.x or earlier, no new info since then -> verified
Resolved for 3.4.x or earlier, no new info since then -> closing.