[
https://issues.apache.org/jira/browse/CONFIGURATION-440?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Oliver Heger resolved CONFIGURATION-440.
----------------------------------------
Resolution: Duplicate
Fix Version/s: 1.7
Got nor more feedback, so I assume this is actually a duplicate of
CONFIGURATION-428.
> setProperty in XmlConfiguration escapes backslashes
> ---------------------------------------------------
>
> Key: CONFIGURATION-440
> URL: https://issues.apache.org/jira/browse/CONFIGURATION-440
> Project: Commons Configuration
> Issue Type: Bug
> Components: Build
> Affects Versions: 1.6
> Environment: Windows 7
> Reporter: B
> Labels: build
> Fix For: 1.7, 2.0
>
>
> When setPropery sets a new value that has backslashes (like path),
> backslashes are escaped. When that value is loaded again, all backslashes are
> duplicated.
> Following test keeps failing. Don't know if there is some kind of formatting.
> public class XmlConfigurationTest {
> private static final String XML_CONFIGURATION_PATH =
> "resources/xml/config.xml";
> private static final String PATH1 = "c:\\temp\\path\\file.txt";
> private static final String PATH2 = "c:\\temp1\\path1\\file1.txt";
> private static final String PATH3 = "c:\\temp2\\path2\\file2.txt";
> @Test
> public void testXmlConfiguration() throws IOException {
> File resourceFile = null;
> try {
> assertNotNull(_bundleContext);
> resourceFile = new File(SystemUtils.getTargetDirectory(),
> XML_CONFIGURATION_PATH);
> assertTrue(resourceFile.getParentFile().mkdirs());
> String value = null;
> XMLConfiguration configuration = new XMLConfiguration();
> configuration.setExpressionEngine(new XPathExpressionEngine());
> configuration.setDelimiterParsingDisabled(true);
> configuration.addProperty(" key1", PATH1);
> configuration.setProperty(" key2", PATH2);
> configuration.save(resourceFile);
> /* All values are saved with non escaped backslashes */
> value = configuration.getString("key1");
> assertEquals(value, PATH1);
> value = configuration.getString("key2");
> assertEquals(value, PATH2);
> /*
> * Set again same property with different value. Setting property
> * with this configuration will escape backslashes. Even though
> * assert will pass, path with escaped backslashes will be written
> * in a file (don't know if it is setProperty or save that is
> causing troubles).
> */
> configuration.setProperty(" key2", PATH3);
> configuration.save(resourceFile);
> value = configuration.getString("key2");
> assertEquals(value, PATH3);
> /*
> * Create new configuration and load values from previously saved
> * file.
> */
> XMLConfiguration newConfiguration = new XMLConfiguration();
> newConfiguration.setExpressionEngine(new XPathExpressionEngine());
> newConfiguration.setDelimiterParsingDisabled(true);
> newConfiguration.load(resourceFile);
> /*
> * At this point, configuration will load escaped backslashes, and
> * the test will fail.
> */
> value = newConfiguration.getString("key2");
> assertEquals(value, PATH3);
> } catch (Throwable e) {
> e.printStackTrace();
> fail(e.getLocalizedMessage());
> } finally {
> /*
> * Delete resource file
> */
> resourceFile.delete();
> }
> }
> }
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira