Browse Source

hasPath(path) returns null in case path not found, instead of InvalidPathException. Tests changed accordingly.

pull/12/head
Alexander Leibzon 12 years ago
parent
commit
ac1953b37c
  1. 6
      json-path/src/main/java/com/jayway/jsonpath/JsonModel.java
  2. 4
      json-path/src/main/java/com/jayway/jsonpath/internal/filter/FieldFilter.java
  3. 10
      json-path/src/test/java/com/jayway/jsonpath/JsonModelTest.java

6
json-path/src/main/java/com/jayway/jsonpath/JsonModel.java

@ -154,13 +154,13 @@ public class JsonModel {
public boolean hasPath(JsonPath jsonPath){
isTrue(jsonPath.isPathDefinite(), "hasPath can only be used for definite paths");
Object obj = null;
try {
get(jsonPath);
obj = get(jsonPath);
} catch(InvalidPathException e){
return false;
}
return true;
return null == obj?false:true;
}
// --------------------------------------------------------

4
json-path/src/main/java/com/jayway/jsonpath/internal/filter/FieldFilter.java

@ -55,8 +55,8 @@ public class FieldFilter extends PathTokenFilter {
}
} else {
Map<String, Object> map = jsonProvider.toMap(obj);
if(!map.containsKey(condition)){
throw new InvalidPathException("invalid path");
if(map == null || !map.containsKey(condition)){
return null;
} else {
return map.get(condition);
}

10
json-path/src/test/java/com/jayway/jsonpath/JsonModelTest.java

@ -56,6 +56,9 @@ public class JsonModelTest {
" }\n" +
"}";
public final static String INVALID_DOCUMENT =
"{?\\?\\?!!?~q`}}}}}\"\" \"store\": {\n";
@Test
public void a_model_can_be_pretty_printed() throws Exception {
@ -101,9 +104,14 @@ public class JsonModelTest {
}
@Test(expected = InvalidJsonException.class)
public void invalid_json_throws() throws Exception {
JsonModel.model(INVALID_DOCUMENT).get("store.id");
}
@Test(expected = InvalidPathException.class)
public void invalid_path_throws() throws Exception {
JsonModel.model(DOCUMENT).get("store.invalid");
JsonModel.model(DOCUMENT).get("a(");
}

Loading…
Cancel
Save