neo4j/community — pull request #580 by jakewins (2012-06-01 13:32:02+00:00)
Title: Config refactoring

This refactors Config such that:

* Default values and migrations are now handled by the Config class itself

* Converting raw string property values to higher level types is done by each config setting type

* All specialized getter methods on Config are deprecated, replaced by a general get() method that typecasts automatically. This is needed to allow setting instances to return rich types such as Lists of DTOs

* All config values are validated before they are accepted, catching problems early

* Config comes with a BufferingLogger per default, which can then be switched out for a real logger. This solves the circular dependency problem between logging and config, such that config does no longer have to be instantiated twice.

* Properties can now depend on each other, for instance FileSetting and DirectorySetting can be relative to another DirectorySetting. This allowed us to remove the "smell" section in AGD.