r1816 - in trunk/src: main/java/org/nuiton/util test/java/org/nuiton/util
Author: echatellier Date: 2010-04-07 14:13:11 +0200 (Wed, 07 Apr 2010) New Revision: 1816 Log: #467 : Add method to get all options as flat properties Modified: trunk/src/main/java/org/nuiton/util/ApplicationConfig.java trunk/src/test/java/org/nuiton/util/ApplicationConfigTest.java Modified: trunk/src/main/java/org/nuiton/util/ApplicationConfig.java =================================================================== --- trunk/src/main/java/org/nuiton/util/ApplicationConfig.java 2010-04-03 18:38:16 UTC (rev 1815) +++ trunk/src/main/java/org/nuiton/util/ApplicationConfig.java 2010-04-07 12:13:11 UTC (rev 1816) @@ -1080,6 +1080,40 @@ } /** + * Get all options as flat {@link Properties} object (replace inner options). + * + * @return flat Properties object + * @since 1.2.2 + */ + public Properties getFlatOptions() { + return getFlatOptions(true); + } + + /** + * Get all options as flat {@link Properties} object. + * + * @param replaceInner if {@code true} replace imbricated options by theirs values + * @return flat Properties object + * @since 1.2.2 + */ + public Properties getFlatOptions(boolean replaceInner) { + Properties props = new Properties(); + for (String propertyKey : options.stringPropertyNames()) { + String propertyValue = null; + if (replaceInner) { + // replace ${xxx} option + propertyValue = getOption(propertyKey); + } + else { + // do not replace ${xxx} option + propertyValue = options.getProperty(propertyKey); + } + props.setProperty(propertyKey, propertyValue); + } + return props; + } + + /** * Get all set method on this object or super object. * * @return map with method name without set and in lower case as key, and Modified: trunk/src/test/java/org/nuiton/util/ApplicationConfigTest.java =================================================================== --- trunk/src/test/java/org/nuiton/util/ApplicationConfigTest.java 2010-04-03 18:38:16 UTC (rev 1815) +++ trunk/src/test/java/org/nuiton/util/ApplicationConfigTest.java 2010-04-07 12:13:11 UTC (rev 1816) @@ -274,4 +274,28 @@ Assert.assertEquals(8, instance.getUnparsed().size()); Assert.assertEquals("test", instance.getUnparsed().get(0)); } + + /** + * Test get flat options method. + */ + public void testGetFlatOptions() throws Exception { + + ApplicationConfig instance = new ApplicationConfig(); + instance.parse(new String[]{}); + instance.setDefaultOption("user.firstname", "toto"); + instance.setDefaultOption("user.lastname", "tutu"); + instance.setOption("user.fullname", "${user.lastname} ${user.firstname}"); + + Assert.assertEquals(1, instance.getOptions().size()); + // il y en a plus de 3 car il y a aussi les variables d'environnement + Assert.assertTrue(instance.getFlatOptions().size() > 3); + + // test replacement and non replacement + Assert.assertEquals("tutu toto", + instance.getFlatOptions().getProperty("user.fullname")); + Assert.assertEquals("tutu toto", + instance.getFlatOptions(true).getProperty("user.fullname")); + Assert.assertEquals("${user.lastname} ${user.firstname}", + instance.getFlatOptions(false).getProperty("user.fullname")); + } }
participants (1)
-
echatellier@users.nuiton.org