commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rainer Hirschmiller <rainer.hirschmil...@web.de>
Subject Re: [configuration]
Date Sat, 02 Apr 2016 16:11:42 GMT
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.hirschmiller@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-unsubscribe@commons.apache.org
>> For additional commands, e-mail: user-help@commons.apache.org
>>
>>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org


Mime
View raw message