diff --git a/src/main/java/org/springframework/hateoas/core/JsonPathLinkDiscoverer.java b/src/main/java/org/springframework/hateoas/core/JsonPathLinkDiscoverer.java
index 27d89b92..a57c9a40 100644
--- a/src/main/java/org/springframework/hateoas/core/JsonPathLinkDiscoverer.java
+++ b/src/main/java/org/springframework/hateoas/core/JsonPathLinkDiscoverer.java
@@ -30,6 +30,7 @@ import org.springframework.http.MediaType;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
+import com.jayway.jsonpath.InvalidPathException;
import com.jayway.jsonpath.JsonPath;
/**
@@ -88,8 +89,12 @@ public class JsonPathLinkDiscoverer implements LinkDiscoverer {
@Override
public List findLinksWithRel(String rel, String representation) {
- Object parseResult = getExpression(rel).read(representation);
- return createLinksFrom(parseResult, rel);
+ try {
+ Object parseResult = getExpression(rel).read(representation);
+ return createLinksFrom(parseResult, rel);
+ } catch (InvalidPathException e) {
+ return Collections.emptyList();
+ }
}
/*
diff --git a/src/test/java/org/springframework/hateoas/core/AbstractLinkDiscovererUnitTest.java b/src/test/java/org/springframework/hateoas/core/AbstractLinkDiscovererUnitTest.java
index 59401e68..3aa26ed9 100644
--- a/src/test/java/org/springframework/hateoas/core/AbstractLinkDiscovererUnitTest.java
+++ b/src/test/java/org/springframework/hateoas/core/AbstractLinkDiscovererUnitTest.java
@@ -22,6 +22,7 @@ import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.List;
+import org.hamcrest.Matchers;
import org.junit.Test;
import org.springframework.hateoas.Link;
import org.springframework.hateoas.LinkDiscoverer;
@@ -63,12 +64,20 @@ public abstract class AbstractLinkDiscovererUnitTest {
}
@Test
- public void returnsForInxistingLinkFromInputStream() throws Exception {
+ public void returnsForInexistingLinkFromInputStream() throws Exception {
InputStream inputStream = new ByteArrayInputStream(getInputString().getBytes("UTF-8"));
assertThat(getDiscoverer().findLinkWithRel("something", inputStream), is(nullValue()));
}
+ @Test
+ public void returnsNullForNonExistingLinkContainer() {
+
+ assertThat(getDiscoverer().findLinksWithRel("something", getInputStringWithoutLinkContainer()),
+ is(Matchers. empty()));
+ assertThat(getDiscoverer().findLinkWithRel("something", getInputStringWithoutLinkContainer()), is(nullValue()));
+ }
+
/**
* Return the {@link LinkDiscoverer} to be tested.
*
@@ -82,4 +91,6 @@ public abstract class AbstractLinkDiscovererUnitTest {
* @return
*/
protected abstract String getInputString();
+
+ protected abstract String getInputStringWithoutLinkContainer();
}
diff --git a/src/test/java/org/springframework/hateoas/hal/HalLinkDiscovererUnitTest.java b/src/test/java/org/springframework/hateoas/hal/HalLinkDiscovererUnitTest.java
index 4bb01c7b..09fea7b0 100644
--- a/src/test/java/org/springframework/hateoas/hal/HalLinkDiscovererUnitTest.java
+++ b/src/test/java/org/springframework/hateoas/hal/HalLinkDiscovererUnitTest.java
@@ -40,4 +40,9 @@ public class HalLinkDiscovererUnitTest extends AbstractLinkDiscovererUnitTest {
protected String getInputString() {
return SAMPLE;
}
+
+ @Override
+ protected String getInputStringWithoutLinkContainer() {
+ return "{}";
+ }
}