Alex Coyle wrote:
Hi there,
Some months ago there was a discussion regarding a decorator for a
configuration, 'ConfigurationLocaleAware', that would provide a locale
sensitive API to get properties. At that time a reference was made to
the 'Scarab' project to show how it might be implemented. I'm
interested in creating such a decorator, but I couldn't find much
Scarab information to see how it was tackled there.
Any pointers? I've had a stab at a design, but currently I can't find
a way to avoid using 'instanceof' to find out the type of
configuration my decorator is wrapping, e.g.
AbstractFileConfiguration, DatabaseConfiguration, JNDIConfiguration.
This is necessary to create a new configuration based on the wrapped
one, with a 'suffix' for locale sensitive lookups. This approach
doesn't cater for a CompositeConfiguration either - the only way I can
see to do that is provide a locale aware implementation of a composite
configuration.
Thanks
Alex.
I was not involved in the discussion you mentioned and don't remeber the
details.
Not sure if I fully understand what you are doing and what you mean by
"'suffix' for locale sensitive lookups. How does your locale sensitive
configuration look like? Does it implement the Configuration interface?
A naive approach would be to have a class LocaleConfiguration that
defines a map for the supported locales. This map would store locales as
keys and corresponding Configuration objects as values. This class would
not implement the Configuration interface because all getter methods
would need an additional argument for the Locale. This could roughly
look as follows (with getProperty() used as example):
public class LocaleConfiguration
{
private Map locales;
Configuration getConfigForLocale(Locale locale)
{
Configuration result = (Configuration) locales.get(locale);
// deal with null values, e.g. use a default locale
return result;
}
public Object getProperty(String key, Locale locale)
{
return getConfigForLocale(locale).getProperty(key);
}
...
}
You seem to do something different, do you?
Oliver
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]