Browse Source

Merge pull request #126 from trajano/patch-2

Store problematic JSON in exception
pull/133/head
kallestenflo 9 years ago
parent
commit
055e8467fc
  1. 24
      json-path/src/main/java/com/jayway/jsonpath/InvalidJsonException.java
  2. 7
      json-path/src/main/java/com/jayway/jsonpath/spi/json/JacksonJsonNodeJsonProvider.java
  3. 7
      json-path/src/main/java/com/jayway/jsonpath/spi/json/JacksonJsonProvider.java

24
json-path/src/main/java/com/jayway/jsonpath/InvalidJsonException.java

@ -17,18 +17,42 @@ package com.jayway.jsonpath;
@SuppressWarnings("serial")
public class InvalidJsonException extends JsonPathException {
/**
* Problematic JSON if available.
*/
private final String json;
public InvalidJsonException() {
json = null;
}
public InvalidJsonException(String message) {
super(message);
json = null;
}
public InvalidJsonException(String message, Throwable cause) {
super(message, cause);
json = null;
}
public InvalidJsonException(Throwable cause) {
super(cause);
json = null;
}
/**
* Rethrow the exception with the problematic JSON captured.
*/
public InvalidJsonException(final Throwable cause, final String json) {
super(cause);
this.json = json;
}
/**
* @return the problematic JSON if available.
*/
public String getJson() {
return json;
}
}

7
json-path/src/main/java/com/jayway/jsonpath/spi/json/JacksonJsonNodeJsonProvider.java

@ -8,8 +8,6 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
import com.fasterxml.jackson.databind.node.TextNode;
import com.jayway.jsonpath.InvalidJsonException;
import com.jayway.jsonpath.JsonPathException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.io.InputStream;
@ -21,8 +19,6 @@ import java.util.List;
public class JacksonJsonNodeJsonProvider extends AbstractJsonProvider {
private static final Logger logger = LoggerFactory.getLogger(JacksonJsonProvider.class);
private static final ObjectMapper defaultObjectMapper = new ObjectMapper();
protected ObjectMapper objectMapper;
@ -52,8 +48,7 @@ public class JacksonJsonNodeJsonProvider extends AbstractJsonProvider {
try {
return objectMapper.readTree(json);
} catch (IOException e) {
logger.debug("Invalid JSON: \n" + json);
throw new InvalidJsonException(e);
throw new InvalidJsonException(e, json);
}
}

7
json-path/src/main/java/com/jayway/jsonpath/spi/json/JacksonJsonProvider.java

@ -18,8 +18,6 @@ import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectReader;
import com.jayway.jsonpath.InvalidJsonException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.io.InputStream;
@ -31,8 +29,6 @@ import java.util.List;
public class JacksonJsonProvider extends AbstractJsonProvider {
private static final Logger logger = LoggerFactory.getLogger(JacksonJsonProvider.class);
private static final ObjectMapper defaultObjectMapper = new ObjectMapper();
private static final ObjectReader defaultObjectReader = defaultObjectMapper.reader().withType(Object.class);
@ -73,8 +69,7 @@ public class JacksonJsonProvider extends AbstractJsonProvider {
try {
return objectReader.readValue(json);
} catch (IOException e) {
logger.debug("Invalid JSON: \n" + json);
throw new InvalidJsonException(e);
throw new InvalidJsonException(e, json);
}
}

Loading…
Cancel
Save