On 06/30/2009 03:19 PM, Jesus M. Rodriguez wrote:
This most recent commit http://tinyurl.com/mws95e seems to make
Config.java more and more a KickstartConfig class.
I know it shouldn't bother me but it does, that Config used to be
pretty generic a class simply to access the configuration.
But of late it has become a dumping ground for config strings and
methods for getting specific entries. In reality,
I would think a Config class shouldn't change very very rarely to
support changes maybe in config file format etc.

I'd like to propose a few changes.

1) move all of the constant definitions to a ConfigConstants class.
Though I still am *NOT* a fan of defining the
config entries such as kickstart.virt_bridge, and web.product_name.
But I do, sort of, understand how folks want to
see them in Eclipse (though it makes us grep users have to do 2 searches) :(

2) remove the specific methods such as getDefaultVirtCpus() and just
use the actual Config call
Config.get().getInt(ConfigConstants.VIRT_CPU, 1)  or if folks REALLY
need these functions, would it be better
to create a KickstartConfig class that extends Config? I don't really
like this idea since it might start a cascade
of a million little config classes.


see below ...

3) I also noticed a bunch of kickstart.* config entries. Where are
these defined? Do we have a rhn_kickstart.conf
file? because kickstart.* is an invalid namespace unless we have an
rhn_kickstart.conf otherwise, what the Config
class is trying to find a kickstart.* then looking for a web.kickstart.*.

hm, i added to /etc/rhn/rhn.conf

kickstart.virt_cpus = 999

and the Config picked it up fine. These configs are defined in the code only. We have lots of instances where there are configurable options in the code that we don't explicitly define in rhn_web.conf. I've never been a fan of defining the default in the code and also having to maintain a copy-paste of that config value in the rhn_web.conf file as well for things that users don't often change. By placing the values in the code only it allows Spacewalk users to override the defaults but we don't need to maintain 2 copies of the config and coders know right there in the code what the default is.

perhaps I've been wrong all these years in just defining config points in the code only in the Java code :)


Here is the current Config.java:  http://pastie.org/530023

Here is the diff from the current Config to the original one in Spacewalk:
http://pastie.org/530050  Nothing added was really to do with parsing
or dealing with the configuration
system.

Thoughts? Arguments? Rants? :)

How about option 3:

ConfigDefaults class that moves all the constants and helper methods to a class of its own.

Keep Config.java to be 'pure' and be the mechianics of fetching/storing configs and then move the 'helper' methods and constants out into its own file.

Mike

_______________________________________________
Spacewalk-devel mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/spacewalk-devel

Reply via email to