[ 
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

        

Reply via email to