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

Cliff Evans updated CONFIGURATION-793:
--------------------------------------
    Description: 
We have just attempted to move from version 2.2 to 2.7 and have encountered and 
issue whilst attempting to read a List from a JSON formatted configuration file.

The issue appears to have been introduced in 2.3.

Adding the following tests to 
org.apache.commons.configuration2.TestJSONConfiguration will demonstrate the 
change.  These tests will pass against 2.2 but fail agains 2.3 (and 2.7.)

 
{noformat}
@Test
public void testGetList_nested_with_list()
{
    assertEquals(Arrays.asList("col1", "col2"),
                 jsonConfiguration.getList(String.class, "key4.key5"));
}

@Test
public void testGetList() {
    final List<Map> configList = jsonConfiguration.getList(Map.class, 
"capitals");

    assertEquals(configList.size(), 2);
    assertEquals(configList.get(0).get("country"), "USA");
    assertEquals(configList.get(0).get("capital"), "Washington");
    assertEquals(configList.get(1).get("country"), "UK");
    assertEquals(configList.get(1).get("capital"), "London");
}
{noformat}
 

  was:
We have just attempted to move from version 2.2 to 2.7 and have encountered and 
issue whilst attempting to read a List from a JSON formatted configuration file.

The issue appears to have been introduced in 2.3.

The test below demonstrates the issue.  This test will pass against 2.2 but 
fail agains 2.3 (and 2.7.)

 
{noformat}
package org.apache.commons.configuration2;

import org.apache.commons.configuration2.ex.ConfigurationException;
import org.junit.Test;

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.List;
import java.util.Map;

import static java.nio.charset.StandardCharsets.UTF_8;
import static org.junit.Assert.assertNotNull;

public class ConfigurationTest {

   private static final String JSON = "{\n" +
                                      "    \"myList\": [\n" +
                                      "        {\n" +
                                      "          \"att1\": \"one\"\n" +
                                      "        }\n" +
                                      "    ]" +
                                      "}\n";

   @Test
   public void loadConfiguration()
         throws ConfigurationException {
      JSONConfiguration jsonConfiguration = new JSONConfiguration();
      InputStream inputStream = new ByteArrayInputStream(JSON.getBytes(UTF_8));
      jsonConfiguration.read(inputStream);

      final List<Map> configList = jsonConfiguration.getList(Map.class, 
"myList");

      assertNotNull(configList);
   }

}
{noformat}
 


> Error reading a list from JSON after 2.3
> ----------------------------------------
>
>                 Key: CONFIGURATION-793
>                 URL: https://issues.apache.org/jira/browse/CONFIGURATION-793
>             Project: Commons Configuration
>          Issue Type: Bug
>    Affects Versions: 2.3
>         Environment: JDK 11.0.4
>            Reporter: Cliff Evans
>            Priority: Major
>
> We have just attempted to move from version 2.2 to 2.7 and have encountered 
> and issue whilst attempting to read a List from a JSON formatted 
> configuration file.
> The issue appears to have been introduced in 2.3.
> Adding the following tests to 
> org.apache.commons.configuration2.TestJSONConfiguration will demonstrate the 
> change.  These tests will pass against 2.2 but fail agains 2.3 (and 2.7.)
>  
> {noformat}
> @Test
> public void testGetList_nested_with_list()
> {
>     assertEquals(Arrays.asList("col1", "col2"),
>                  jsonConfiguration.getList(String.class, "key4.key5"));
> }
> @Test
> public void testGetList() {
>     final List<Map> configList = jsonConfiguration.getList(Map.class, 
> "capitals");
>     assertEquals(configList.size(), 2);
>     assertEquals(configList.get(0).get("country"), "USA");
>     assertEquals(configList.get(0).get("capital"), "Washington");
>     assertEquals(configList.get(1).get("country"), "UK");
>     assertEquals(configList.get(1).get("capital"), "London");
> }
> {noformat}
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to