Property access internals?

We have the need to be able to easily configure Openfire from the commandline and/or configuration files, rather then the database. Looking through the Openfire codebase it seems a large amount of the properties fround at http://www.igniterealtime.org/community/docs/DOC-1061 marked “Openfire System Properties” are not in fact “System Properties”, but rather Openfire Internal Properties accessed only via the database. The code for these seems to use JiveGlobals, which then delegates to JiveProperties for all non getXML* methods such as getIntProperty(). The codebase seems to know specificly where each property it needs should be, either calling System.getProperty() for some values, JiveGlobals.getXMLProperty() for others, and JiveGlobals.getProperty() for yet other properties. Would it not be reasonable to consolidate the lookup resolution of properties to the internals of some generic method like JiveGlobals.getProperty() and have that check both the Java System Properties (for commandline overrides for example), XML (openfire.xml) config file, and then the configuration database?

Is this something people have talked about before? I could not find any previous dicussions on this topic. I would be interesting in hearing peoples opinion and what they have done (if anything) to work around the fact that you can only configure Openfire via a database (to my knowledge, if there are other ways please let me know).

Nobody has any input on this? Any Jive developers that work on Openfire have an oppinion about the current design where each property only comes from one property source type (system property, xml file, db) and how the code is designed for accessing properties in general? Anyone else have the need to configure the system staticly without using the admin tool to update the database?