[jira] Created: (CONFIGURATION-339) ConfigurationConverter does not handle CompositeConfiguration correctly

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

[jira] Created: (CONFIGURATION-339) ConfigurationConverter does not handle CompositeConfiguration correctly

Gary D. Gregory (Jira)
ConfigurationConverter does not handle CompositeConfiguration correctly
-----------------------------------------------------------------------

                 Key: CONFIGURATION-339
                 URL: https://issues.apache.org/jira/browse/CONFIGURATION-339
             Project: Commons Configuration
          Issue Type: Bug
          Components: Interpolation
    Affects Versions: 1.5
         Environment: OS X 10.5.5, java version "1.6.0_07", Java(TM) SE Runtime Environment (build 1.6.0_07-b06-153)

            Reporter: William DeMoss II


ConfigurationConverter doesn't seem to respect the ordering of a composite configuration. I am having problems describing the behavior, but I thinks the following test case illustrates it best:

        @Test
        public void showBug() {
                PropertiesConfiguration p = new PropertiesConfiguration();
                p.addProperty("foo", "initial");
                p.addProperty("bar", "${foo}");
                p.addProperty("prefix.foo", "override");

                CompositeConfiguration cfg = new CompositeConfiguration();
                cfg.addConfiguration(p.subset("prefix"));
                cfg.addConfiguration(p);

                // this assertion passes as expected since the subset
                // was added first to the composite configuration
                Assert.assertEquals("override", cfg.getString("bar"));

                // after converting to properties, this assertion fails and
                // reports that the value is 'initial'
                Properties properties = ConfigurationConverter.getProperties(cfg);
                Assert.assertEquals("override", properties.getProperty("bar"));
        }

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply | Threaded
Open this post in threaded view
|

[jira] Commented: (CONFIGURATION-339) ConfigurationConverter does not handle CompositeConfiguration correctly

Gary D. Gregory (Jira)

    [ https://issues.apache.org/jira/browse/CONFIGURATION-339?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12639951#action_12639951 ]

Oliver Heger commented on CONFIGURATION-339:
--------------------------------------------

It took a while to figure out what is going on, but I was able to track it down to the getList() implementation of CompositeConfiguration. This method performs two interpolations on the property values it returns:
* One implicit interpolation by calling getList() on the child configuration. This is where the wrong property value comes from.
* One explicit interpolation on the list with property values gathered from the child configurations. Here interpolation across multiple child configurations can be done.

The first of these interpolations is pointless because the second one will produce the desired results.

Because getStringArray() delegates to getList() this method is affected, too. In fact getStringArray() does again an interpolation on the values returned by getList(). Because getList() should already have substituted all variables for which this is possible, this additional interpolation won't add any value.

> ConfigurationConverter does not handle CompositeConfiguration correctly
> -----------------------------------------------------------------------
>
>                 Key: CONFIGURATION-339
>                 URL: https://issues.apache.org/jira/browse/CONFIGURATION-339
>             Project: Commons Configuration
>          Issue Type: Bug
>          Components: Interpolation
>    Affects Versions: 1.5
>         Environment: OS X 10.5.5, java version "1.6.0_07", Java(TM) SE Runtime Environment (build 1.6.0_07-b06-153)
>            Reporter: William DeMoss II
>            Assignee: Oliver Heger
>
> ConfigurationConverter doesn't seem to respect the ordering of a composite configuration. I am having problems describing the behavior, but I thinks the following test case illustrates it best:
> @Test
> public void showBug() {
> PropertiesConfiguration p = new PropertiesConfiguration();
> p.addProperty("foo", "initial");
> p.addProperty("bar", "${foo}");
> p.addProperty("prefix.foo", "override");
> CompositeConfiguration cfg = new CompositeConfiguration();
> cfg.addConfiguration(p.subset("prefix"));
> cfg.addConfiguration(p);
> // this assertion passes as expected since the subset
> // was added first to the composite configuration
> Assert.assertEquals("override", cfg.getString("bar"));
> // after converting to properties, this assertion fails and
> // reports that the value is 'initial'
> Properties properties = ConfigurationConverter.getProperties(cfg);
> Assert.assertEquals("override", properties.getProperty("bar"));
> }

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply | Threaded
Open this post in threaded view
|

[jira] Resolved: (CONFIGURATION-339) ConfigurationConverter does not handle CompositeConfiguration correctly

Gary D. Gregory (Jira)
In reply to this post by Gary D. Gregory (Jira)

     [ https://issues.apache.org/jira/browse/CONFIGURATION-339?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Oliver Heger resolved CONFIGURATION-339.
----------------------------------------

       Resolution: Fixed
    Fix Version/s: 1.6

Fixed in trunk and configuration2 branch.

> ConfigurationConverter does not handle CompositeConfiguration correctly
> -----------------------------------------------------------------------
>
>                 Key: CONFIGURATION-339
>                 URL: https://issues.apache.org/jira/browse/CONFIGURATION-339
>             Project: Commons Configuration
>          Issue Type: Bug
>          Components: Interpolation
>    Affects Versions: 1.5
>         Environment: OS X 10.5.5, java version "1.6.0_07", Java(TM) SE Runtime Environment (build 1.6.0_07-b06-153)
>            Reporter: William DeMoss II
>            Assignee: Oliver Heger
>             Fix For: 1.6
>
>
> ConfigurationConverter doesn't seem to respect the ordering of a composite configuration. I am having problems describing the behavior, but I thinks the following test case illustrates it best:
> @Test
> public void showBug() {
> PropertiesConfiguration p = new PropertiesConfiguration();
> p.addProperty("foo", "initial");
> p.addProperty("bar", "${foo}");
> p.addProperty("prefix.foo", "override");
> CompositeConfiguration cfg = new CompositeConfiguration();
> cfg.addConfiguration(p.subset("prefix"));
> cfg.addConfiguration(p);
> // this assertion passes as expected since the subset
> // was added first to the composite configuration
> Assert.assertEquals("override", cfg.getString("bar"));
> // after converting to properties, this assertion fails and
> // reports that the value is 'initial'
> Properties properties = ConfigurationConverter.getProperties(cfg);
> Assert.assertEquals("override", properties.getProperty("bar"));
> }

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.