Skip to content

Commit

Permalink
fix 620 (#693)
Browse files Browse the repository at this point in the history
Co-authored-by: CindyChow123 <CindyChow123>
  • Loading branch information
CindyChow123 committed Jun 2, 2021
1 parent f329196 commit dc296b3
Show file tree
Hide file tree
Showing 2 changed files with 73 additions and 3 deletions.
Expand Up @@ -333,7 +333,8 @@ else if (isPathContext(c)) {
// we've encountered a COMMA do the same
case CLOSE_PARENTHESIS:
groupParen--;
if (0 != groupParen) {
//CS304 Issue link: https://github.com/json-path/JsonPath/issues/620
if (0 > groupParen ) {
parameter.append(c);
}
case COMMA:
Expand Down
73 changes: 71 additions & 2 deletions json-path/src/test/java/com/jayway/jsonpath/old/IssuesTest.java
Expand Up @@ -1021,7 +1021,7 @@ public void issue_309(){
assertThat((String)doc.read("$.jsonArr[0].name")).isEqualTo("nOne");
assertThat((String)doc.read("$.jsonArr[1].name")).isEqualTo("Jayway");
}

@Test
public void issue_378(){

Expand All @@ -1039,12 +1039,81 @@ public void issue_378(){
.jsonProvider(new JacksonJsonNodeJsonProvider())
.mappingProvider(new JacksonMappingProvider())
.build();

DocumentContext ctx = JsonPath.using(configuration).parse(json);

String path = "$.nodes[*][?(!([\"1.2.3.4\"] subsetof @.ntpServers))].ntpServers";
JsonPath jsonPath = JsonPath.compile(path);

ctx.read(jsonPath);
}

//CS304 (manually written) Issue link: https://github.com/json-path/JsonPath/issues/620
@Test
public void issue_620_1(){
String json = "{\n" +
" \"complexText\": {\n" +
" \"nestedFields\": [\n" +
" {\n" +
" \"index\": \"0\",\n" +
" \"name\": \"A\"\n" +
" },\n" +
" {\n" +
" \"index\": \"1\",\n" +
" \"name\": \"B\"\n" +
" },\n" +
" {\n" +
" \"index\": \"2\",\n" +
" \"name\": \"C\"\n" +
" }\n" +
" ]\n" +
" }\n" +
"}";

String path1 = "$.concat($.complexText.nestedFields[?(@.index == '2')].name," +
"$.complexText.nestedFields[?(@.index == '1')].name," +
"$.complexText.nestedFields[?(@.index == '0')].name)";
String path2 = "$.concat($.complexText.nestedFields[2].name," +
"$.complexText.nestedFields[1].name," +
"$.complexText.nestedFields[0].name)";

assertThat((String)JsonPath.read(json,path1)).isEqualTo("CBA");
assertThat((String)JsonPath.read(json,path2)).isEqualTo("CBA");
}
//CS304 (manually written) Issue link: https://github.com/json-path/JsonPath/issues/620
@Test
public void issue_620_2(){
String json = "{\n" +
" \"complexText\": {\n" +
" \"nestedFields\": [\n" +
" {\n" +
" \"index\": \"0\",\n" +
" \"name\": \"A\"\n" +
" },\n" +
" {\n" +
" \"index\": \"1\",\n" +
" \"name\": \"B\"\n" +
" },\n" +
" {\n" +
" \"index\": \"2\",\n" +
" \"name\": \"C\"\n" +
" }\n" +
" ]\n" +
" }\n" +
"}";

String path1 = "$.concat($.complexText.nestedFields[?(@.index == '2')].name," +
"$.complexText.nestedFields[?((@.index == '1')].name," +
"$.complexText.nestedFields[?(@.index == '0')].name)";

boolean thrown = false;

try {
Object result = (Object) JsonPath.read(json,path1);
} catch (Exception e) {
thrown = true;
}

assertTrue(thrown);
}
}

0 comments on commit dc296b3

Please sign in to comment.