summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java10
-rw-r--r--vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/DocumentV1ApiTest.java9
2 files changed, 16 insertions, 3 deletions
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java
index 36bec39d10c..3158c4e31be 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java
@@ -995,11 +995,15 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler {
// ------------------------------------------------ Helpers ------------------------------------------------
private static Optional<String> getProperty(HttpRequest request, String name) {
+ if ( ! request.parameters().containsKey(name))
+ return Optional.empty();
+
List<String> values = request.parameters().get(name);
- if (values != null && values.size() != 0)
- return Optional.ofNullable(values.get(values.size() - 1));
+ String value;
+ if (values == null || values.isEmpty() || (value = values.get(values.size() - 1)) == null || value.isEmpty())
+ throw new IllegalArgumentException("Expected non-empty value for request property '" + name + "'");
- return Optional.empty();
+ return Optional.of(value);
}
private static <T> Optional<T> getProperty(HttpRequest request, String name, Parser<T> parser) {
diff --git a/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/DocumentV1ApiTest.java b/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/DocumentV1ApiTest.java
index da09d076728..e10b162078a 100644
--- a/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/DocumentV1ApiTest.java
+++ b/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/DocumentV1ApiTest.java
@@ -384,6 +384,15 @@ public class DocumentV1ApiTest {
"}", response.readAll());
assertEquals(200, response.getStatus());
+ // GET with empty route is a 400
+ access.session.expect((__, ___) -> { throw new AssertionError("Not supposed to happen"); });
+ response = driver.sendRequest("http://localhost/document/v1/space/music/number/1/two?route=", DELETE);
+ assertSameJson("{" +
+ " \"pathId\": \"/document/v1/space/music/number/1/two\"," +
+ " \"message\": \"Expected non-empty value for request property 'route'\"" +
+ "}", response.readAll());
+ assertEquals(400, response.getStatus());
+
// GET with non-existent cluster is a 400
access.session.expect((__, ___) -> { throw new AssertionError("Not supposed to happen"); });
response = driver.sendRequest("http://localhost/document/v1/space/music/number/1/two?cluster=throw-me");