r2495 - in trunk/nuiton-utils/src: main/java/org/nuiton/util test/java/org/nuiton/util
Author: bpoussin Date: 2013-02-13 18:06:59 +0100 (Wed, 13 Feb 2013) New Revision: 2495 Url: http://nuiton.org/projects/nuiton-utils/repository/revisions/2495 Log: fixes #2525: [ApplicationConfig] Env variable don't support dot in name. Dot must be replaced by underscore '_' for env variable Modified: trunk/nuiton-utils/src/main/java/org/nuiton/util/ApplicationConfig.java trunk/nuiton-utils/src/test/java/org/nuiton/util/ApplicationConfigTest.java Modified: trunk/nuiton-utils/src/main/java/org/nuiton/util/ApplicationConfig.java =================================================================== --- trunk/nuiton-utils/src/main/java/org/nuiton/util/ApplicationConfig.java 2013-02-13 16:52:46 UTC (rev 2494) +++ trunk/nuiton-utils/src/main/java/org/nuiton/util/ApplicationConfig.java 2013-02-13 17:06:59 UTC (rev 2495) @@ -371,8 +371,35 @@ protected Properties curfile = new Properties(homefile); /** TODO */ - protected Properties env = new Properties(curfile); + protected Properties env = new Properties(curfile){ + /** + * Environnement variables can't contains dot (bash, csh, ...). Dots are + * replaced by underscore (_) to find property if property is not find + * with dot + */ + @Override + public synchronized Object get(Object key) { + Object result = super.get(key); + if (result == null && key instanceof String) { + String skey = (String)key; + skey = skey.replace(".", "_"); + result = super.get(skey); + } + return result; + } + /** + * override to use get(key) and not super.get(key) as in initial implementation :( + */ + @Override + public String getProperty(String key) { + Object oval = get(key); + String sval = (oval instanceof String) ? (String)oval : null; + return ((sval == null) && (defaults != null)) ? defaults.getProperty(key) : sval; + } + + }; + /** TODO */ protected Properties jvm = new Properties(env); Modified: trunk/nuiton-utils/src/test/java/org/nuiton/util/ApplicationConfigTest.java =================================================================== --- trunk/nuiton-utils/src/test/java/org/nuiton/util/ApplicationConfigTest.java 2013-02-13 16:52:46 UTC (rev 2494) +++ trunk/nuiton-utils/src/test/java/org/nuiton/util/ApplicationConfigTest.java 2013-02-13 17:06:59 UTC (rev 2495) @@ -506,6 +506,20 @@ } /** + * test if dot is replaced with _ if properties is not found with dot in env + * @throws ArgumentsParserException + */ + @Test + public void testEnvProperties() throws ArgumentsParserException { + ApplicationConfig instance = new ApplicationConfig(); + // simulate env variable with _ to replace dot + instance.env.put("test_env", "value"); + + String value = instance.getOption("test.env"); + Assert.assertEquals("value", value); + } + + /** * Test unparsed options * * @throws Exception
participants (1)
-
bpoussin@users.nuiton.org