diff options
author | Lester Solbakken <lesters@oath.com> | 2018-09-19 14:36:42 +0200 |
---|---|---|
committer | Lester Solbakken <lesters@oath.com> | 2018-09-19 14:36:42 +0200 |
commit | 3b79442b5034fb7554ba2a60195e972311a19473 (patch) | |
tree | 058eb84ed8f9b5d14ca87a5cd2b550ead2b40be1 /model-evaluation/src | |
parent | e7f8b71931461e6e14479e19bf89ecb317865388 (diff) |
Throw and catch exception on query error
Diffstat (limited to 'model-evaluation/src')
-rw-r--r-- | model-evaluation/src/main/java/ai/vespa/models/handler/ModelsEvaluationHandler.java | 76 |
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"); |