diff --git a/Model/src/main/java/org/gusdb/wdk/core/api/JsonKeys.java b/Model/src/main/java/org/gusdb/wdk/core/api/JsonKeys.java index b3d1d446cd..cef857d651 100644 --- a/Model/src/main/java/org/gusdb/wdk/core/api/JsonKeys.java +++ b/Model/src/main/java/org/gusdb/wdk/core/api/JsonKeys.java @@ -69,6 +69,7 @@ public class JsonKeys { public static final String IS_REMOVABLE = "isRemovable"; public static final String IS_REQUIRED = "isRequired"; public static final String IS_MULTILINE = "isMultiLine"; + public static final String IS_NUMBER = "isNumber"; public static final String IS_PUBLIC = "isPublic"; public static final String USE_BASKET = "useBasket"; public static final String SCOPES = "scopes"; diff --git a/Service/src/main/java/org/gusdb/wdk/service/formatter/param/StringParamFormatter.java b/Service/src/main/java/org/gusdb/wdk/service/formatter/param/StringParamFormatter.java index aeb9074ba1..2b7886ae60 100644 --- a/Service/src/main/java/org/gusdb/wdk/service/formatter/param/StringParamFormatter.java +++ b/Service/src/main/java/org/gusdb/wdk/service/formatter/param/StringParamFormatter.java @@ -15,7 +15,10 @@ public class StringParamFormatter extends ParamFormatter { @Override public > JSONObject getJson(DisplayablyValid spec) throws WdkModelException { - return getBaseJson(spec).put(JsonKeys.LENGTH, _param.getLength()); + return getBaseJson(spec) + .put(JsonKeys.LENGTH, _param.getLength()) + .put(JsonKeys.IS_MULTILINE, _param.getMultiLine()) + .put(JsonKeys.IS_NUMBER, _param.isNumber()); } @Override diff --git a/Service/src/main/java/org/gusdb/wdk/service/service/AnswerService.java b/Service/src/main/java/org/gusdb/wdk/service/service/AnswerService.java index 9010d70ce5..83deb7d4de 100644 --- a/Service/src/main/java/org/gusdb/wdk/service/service/AnswerService.java +++ b/Service/src/main/java/org/gusdb/wdk/service/service/AnswerService.java @@ -277,6 +277,11 @@ static AnswerRequest parseAnswerRequest(Question question, String reporterName, JSONObject requestBody, WdkModel wdkModel, User sessionUser, boolean avoidCacheHit) throws RequestMisformatException, DataValidationException, WdkModelException { + if (requestBody == null || !requestBody.has(JsonKeys.SEARCH_CONFIG) || !requestBody.has(JsonKeys.REPORT_CONFIG)) { + throw new RequestMisformatException("Request body must not be null and must contain '" + + JsonKeys.SEARCH_CONFIG + "' and '" + JsonKeys.REPORT_CONFIG + "' properties."); + } + // parse view filters FilterOptionListBuilder viewFilters = AnswerSpecServiceFormat.parseViewFilters(requestBody);