Here a simple example. See see two outputs in the main function.
The first uses the original get-method and returns the first defined
value. The second call(myGet) returns the second defined value.
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.List;
import org.apache.commons.configuration2.PropertiesConfiguration;
import org.apache.commons.configuration2.ex.ConfigurationException;
import org.apache.commons.configuration2.ex.ConversionException;
import org.apache.commons.lang3.ObjectUtils;
public class ConfigurationsHelper extends PropertiesConfiguration {
public static ConfigurationsHelper INSTANCE = new
ConfigurationsHelper();
private ConfigurationsHelper() {
super();
}
public static void main(final String[] args) {
ConfigurationsHelper.read("/one.properties");
ConfigurationsHelper.read("/two.properties");
System.out.println(ConfigurationsHelper.INSTANCE.get(String.class, "key"));
System.out.println(ConfigurationsHelper.INSTANCE.myGet(String.class,
"key"));
}
public static void read(final String filename) {
final InputStream is =
ConfigurationsHelper.class.getResourceAsStream(filename);
if (is == null) {
System.out.println(new FileNotFoundException(filename));
} else {
try (Reader reader = new InputStreamReader(is)) {
ConfigurationsHelper.INSTANCE.read(reader);
} catch (final IOException | ConfigurationException
exception) {
System.out.println(exception);
}
}
}
public <T> T myGet(final Class<T> cls, final String key) {
final List<Object> obj =
ConfigurationsHelper.INSTANCE.getList(key);
final Object value = obj.get(obj.size() - 1);
T result = null;
try {
result = ObjectUtils.defaultIfNull(
this.getConversionHandler().to(value, cls,
this.getInterpolator()),
result);
} catch (final ConversionException cex) {
System.out.println(cex);
// improve error message
final String format = "Key '%s' cannot be converted to
class %s. Value is: '%s'."; final String msg =
String.format(format, key, cls.getName(), String.valueOf(value));
throw new ConversionException(msg);
}
return result;
}
}
Am 02.04.2016 um 14:53 schrieb Julio Oliveira:
Hi Rainer
Can you attach the code, to see it.
Regards
Julio M. Oliveira
On Fri, Apr 1, 2016 at 6:52 PM, Rainer Hirschmiller <
rainer.hirschmil...@web.de> wrote:
Hi.
I'm trying configurations2 and PropertiesConfiguration. I have created a
helper class doing some error handling and configuration for
ProperiesConfiguration. Especially I load properties from different
property files. I want to do this to define basic configurations in one
file and be able to override these configurations in a second file which
will be loaded later.
Getting the property of such a double defined key which public <T> T
get(final Class<T> cls, final String key) I got the first defined value.
OK, I've overriden the method to get the last defined value.
But I want to know why the behaviour is at it is. Is there a special
reason? I think returning the last defined value would be preferred by
other users allthough. What's do other users think about this behaviour?
Regards
Rainer
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@commons.apache.org
For additional commands, e-mail: user-h...@commons.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@commons.apache.org
For additional commands, e-mail: user-h...@commons.apache.org