summaryrefslogtreecommitdiffstats
path: root/model-evaluation
diff options
context:
space:
mode:
authorLester Solbakken <lesters@oath.com>2018-09-19 14:36:42 +0200
committerLester Solbakken <lesters@oath.com>2018-09-19 14:36:42 +0200
commit3b79442b5034fb7554ba2a60195e972311a19473 (patch)
tree058eb84ed8f9b5d14ca87a5cd2b550ead2b40be1 /model-evaluation
parente7f8b71931461e6e14479e19bf89ecb317865388 (diff)
Throw and catch exception on query error
Diffstat (limited to 'model-evaluation')
-rw-r--r--model-evaluation/src/main/java/ai/vespa/models/handler/ModelsEvaluationHandler.java76
1 files changed, 39 insertions, 37 deletions
diff --git a/model-evaluation/src/main/java/ai/vespa/models/handler/ModelsEvaluationHandler.java b/model-evaluation/src/main/java/ai/vespa/models/handler/ModelsEvaluationHandler.java
index 1c995c255f5..e224d4a50dc 100644
--- a/model-evaluation/src/main/java/ai/vespa/models/handler/ModelsEvaluationHandler.java
+++ b/model-evaluation/src/main/java/ai/vespa/models/handler/ModelsEvaluationHandler.java
@@ -39,51 +39,53 @@ public class ModelsEvaluationHandler extends ThreadedHttpRequestHandler {
Optional<String> version = path.segment(1);
Optional<String> modelName = path.segment(2);
- if ( ! apiName.isPresent() || ! apiName.get().equalsIgnoreCase(API_ROOT)) {
- return new ErrorResponse(404, "unknown API");
- }
- if ( ! version.isPresent() || ! version.get().equalsIgnoreCase(VERSION_V1)) {
- return new ErrorResponse(404, "unknown API version");
- }
- if ( ! modelName.isPresent()) {
- return listAllModels(request);
- }
- if ( ! modelsEvaluator.models().containsKey(modelName.get())) {
- // TODO: Replace by catching IllegalArgumentException and passing that error message
- return new ErrorResponse(404, "no model with name '" + modelName.get() + "' found");
- }
+ try {
+ if ( ! apiName.isPresent() || ! apiName.get().equalsIgnoreCase(API_ROOT)) {
+ throw new IllegalArgumentException("unknown API");
+ }
+ if ( ! version.isPresent() || ! version.get().equalsIgnoreCase(VERSION_V1)) {
+ throw new IllegalArgumentException("unknown API version");
+ }
+ if ( ! modelName.isPresent()) {
+ return listAllModels(request);
+ }
+ if ( ! modelsEvaluator.models().containsKey(modelName.get())) {
+ throw new IllegalArgumentException("no model with name '" + modelName.get() + "' found");
+ }
- Model model = modelsEvaluator.models().get(modelName.get());
+ Model model = modelsEvaluator.models().get(modelName.get());
- // The following logic follows from the spec, in that signature and
- // output are optional if the model only has a single function.
- // TODO: Try to avoid recreating that logic here
+ // The following logic follows from the spec, in that signature and
+ // output are optional if the model only has a single function.
- if (path.segments() == 3) {
- if (model.functions().size() > 1) {
- return listModelDetails(request, modelName.get());
+ if (path.segments() == 3) {
+ if (model.functions().size() > 1) {
+ return listModelDetails(request, modelName.get());
+ }
+ return listTypeDetails(request, modelName.get());
}
- return listTypeDetails(request, modelName.get());
- }
- if (path.segments() == 4) {
- if ( ! path.segment(3).get().equalsIgnoreCase(EVALUATE)) {
- return listTypeDetails(request, modelName.get(), path.segment(3).get());
- }
- if (model.functions().stream().anyMatch(f -> f.getName().equalsIgnoreCase(EVALUATE))) {
- return listTypeDetails(request, modelName.get(), path.segment(3).get()); // model has a function "eval"
+ if (path.segments() == 4) {
+ if ( ! path.segment(3).get().equalsIgnoreCase(EVALUATE)) {
+ return listTypeDetails(request, modelName.get(), path.segment(3).get());
+ }
+ if (model.functions().stream().anyMatch(f -> f.getName().equalsIgnoreCase(EVALUATE))) {
+ return listTypeDetails(request, modelName.get(), path.segment(3).get()); // model has a function "eval"
+ }
+ if (model.functions().size() <= 1) {
+ return evaluateModel(request, modelName.get());
+ }
+ throw new IllegalArgumentException("attempt to evaluate model without specifying function");
}
- if (model.functions().size() <= 1) {
- return evaluateModel(request, modelName.get());
- }
- // TODO: Replace by catching IllegalArgumentException and passing that error message
- return new ErrorResponse(404, "attempt to evaluate model without specifying function");
- }
- if (path.segments() == 5) {
- if (path.segment(4).get().equalsIgnoreCase(EVALUATE)) {
- return evaluateModel(request, modelName.get(), path.segment(3).get());
+ if (path.segments() == 5) {
+ if (path.segment(4).get().equalsIgnoreCase(EVALUATE)) {
+ return evaluateModel(request, modelName.get(), path.segment(3).get());
+ }
}
+
+ } catch (IllegalArgumentException e) {
+ return new ErrorResponse(404, e.getMessage());
}
return new ErrorResponse(404, "unrecognized request");