I'm writing some code that requires a configuration file to be edited by\nthe end user. The end user may also provide classes for describing\nproblems to be solved by the software. There are a number of such classes\ndescribing problems and algorithms already provided. I would like the end\nusers to be able to use custom configuration options in the same file that\nthe system configuration options are provided. \n\nThis works fine with properties files, but then I have to have generic\nmethods to get the properties back, things like getConfigurationInt(). \nThis is a bit annoying and looks bad in the code. One would prefer that\nthe user be able to register their own properties to be retrieved and the\ndefaults for these properties, and even possibly the method names to get\nand set them. One would also wish to be able to print out a file that\nincludes all the properties that are in use by the program including those\nthat are not set, but defaulted. The idea being that one would be able to\nduplicate the run at some future date by using the resulting configuration\nfile, or understand exactly what options the user had when using the\nprogram. \n\nThere are other problems too. Ideally this would all be easy to use in\ntesting. Right now I have a singleton class that wraps around the\nproperties and provides getters and setters for some of them. It just\ndoesn't work well for testing. \n\nSo some framework that would ease testing would be preferred. \n\nIs there something out there that I might want to try? \n\nAny ideas? \n\nThanks.