improve error messages in AdminSearchList API
This commit is contained in:
parent
325e2e52d9
commit
d70866cb66
6 changed files with 30 additions and 18 deletions
|
@ -281,7 +281,7 @@ public class AdminSearchlistAction extends FessAdminAction {
|
|||
verifyCrudMode(form.crudMode, CrudMode.EDIT);
|
||||
validate(form, messages -> {}, () -> asEditHtml());
|
||||
validateUpdateFields(form, v -> throwValidationError(v, () -> asEditHtml()));
|
||||
logger.debug("DEBUUG:::role" + form.doc.get("role"));
|
||||
logger.debug("DEBUG:::role" + form.doc.get("role"));
|
||||
verifyToken(() -> asEditHtml());
|
||||
getDoc(form).ifPresent(
|
||||
entity -> {
|
||||
|
@ -325,46 +325,53 @@ public class AdminSearchlistAction extends FessAdminAction {
|
|||
|
||||
if (!fessConfig.validateIndexRequiredFields(form.doc)) {
|
||||
final List<String> invalidRequiredFields = fessConfig.invalidIndexRequiredFields(form.doc);
|
||||
final String invalids = String.join(", doc.", invalidRequiredFields);
|
||||
|
||||
throwError.accept(messages -> {
|
||||
messages.addErrorsCrudFailedToCreateInstance("doc." + invalidRequiredFields.get(0));
|
||||
// TODO messages.addConstraintsRequiredMessage("doc." + invalidRequiredFields.get(0), invalidRequiredFields.get(0));
|
||||
});
|
||||
messages.addErrorsCrudFailedToCreateCrudTable("doc.", "Required: {doc." + invalids + "}");
|
||||
});
|
||||
}
|
||||
|
||||
if (!fessConfig.validateIndexArrayFields(form.doc)) {
|
||||
final List<String> invalidArrayFields = fessConfig.invalidIndexArrayFields(form.doc);
|
||||
final String invalids = String.join(", doc.", invalidArrayFields);
|
||||
throwError.accept(messages -> {
|
||||
messages.addErrorsCrudFailedToCreateInstance("doc." + invalidArrayFields.get(0));
|
||||
messages.addErrorsCrudFailedToCreateCrudTable("doc.", "Must be Array: {doc." + invalids + "}");
|
||||
});
|
||||
}
|
||||
if (!fessConfig.validateIndexDateFields(form.doc)) {
|
||||
final List<String> invalidDateFields = fessConfig.invalidIndexDateFields(form.doc);
|
||||
final String invalids = String.join(", doc.", invalidDateFields);
|
||||
throwError.accept(messages -> {
|
||||
messages.addErrorsCrudFailedToCreateInstance("doc." + invalidDateFields.get(0));
|
||||
messages.addErrorsCrudFailedToCreateCrudTable("doc.", "Must be Date: {doc." + invalids + "}");
|
||||
});
|
||||
}
|
||||
if (!fessConfig.validateIndexIntegerFields(form.doc)) {
|
||||
final List<String> invalidIntegerFields = fessConfig.invalidIndexIntegerFields(form.doc);
|
||||
final String invalids = String.join(", doc.", invalidIntegerFields);
|
||||
throwError.accept(messages -> {
|
||||
messages.addErrorsCrudFailedToCreateInstance("doc." + invalidIntegerFields.get(0));
|
||||
messages.addErrorsCrudFailedToCreateCrudTable("doc.", "Must be Integer: {doc." + invalids + "}");
|
||||
});
|
||||
}
|
||||
if (!fessConfig.validateIndexLongFields(form.doc)) {
|
||||
final List<String> invalidLongFields = fessConfig.invalidIndexLongFields(form.doc);
|
||||
final String invalids = String.join(", doc.", invalidLongFields);
|
||||
throwError.accept(messages -> {
|
||||
messages.addErrorsCrudFailedToCreateInstance("doc." + invalidLongFields.get(0));
|
||||
messages.addErrorsCrudFailedToCreateCrudTable("doc.", "Must be Long: {doc." + invalids + "}");
|
||||
});
|
||||
}
|
||||
if (!fessConfig.validateIndexFloatFields(form.doc)) {
|
||||
final List<String> invalidFloatFields = fessConfig.invalidIndexFloatFields(form.doc);
|
||||
final String invalids = String.join(", doc.", invalidFloatFields);
|
||||
throwError.accept(messages -> {
|
||||
messages.addErrorsCrudFailedToCreateInstance("doc." + invalidFloatFields.get(0));
|
||||
messages.addErrorsCrudFailedToCreateCrudTable("doc.", "Must be Float: {doc." + invalids + "}");
|
||||
});
|
||||
}
|
||||
if (!fessConfig.validateIndexDoubleFields(form.doc)) {
|
||||
final List<String> invalidDoubleFields = fessConfig.invalidIndexDoubleFields(form.doc);
|
||||
final String invalids = String.join(", doc.", invalidDoubleFields);
|
||||
throwError.accept(messages -> {
|
||||
messages.addErrorsCrudFailedToCreateInstance("doc." + invalidDoubleFields.get(0));
|
||||
messages.addErrorsCrudFailedToCreateCrudTable("doc.", "Must be Double: {doc." + invalids + "}");
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,6 +17,7 @@ package org.codelibs.fess.app.web.admin.searchlist;
|
|||
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.logging.log4j.core.config.plugins.validation.constraints.Required;
|
||||
import org.lastaflute.web.validation.theme.conversion.ValidateTypeFailure;
|
||||
|
||||
/**
|
||||
|
@ -27,6 +28,7 @@ public class CreateForm {
|
|||
@ValidateTypeFailure
|
||||
public Integer crudMode;
|
||||
|
||||
@Required
|
||||
public Map<String, Object> doc;
|
||||
|
||||
public String q;
|
||||
|
|
|
@ -118,6 +118,9 @@ public class ApiAdminSearchlistAction extends FessApiAdminAction {
|
|||
@Execute
|
||||
public JsonResponse<ApiResult> put$doc(final CreateBody body) {
|
||||
validateApi(body, messages -> {});
|
||||
if (body.doc == null) {
|
||||
throwValidationErrorApi(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL, "doc is required"));
|
||||
}
|
||||
validateCreateFields(body, v -> throwValidationErrorApi(v));
|
||||
body.crudMode = CrudMode.CREATE;
|
||||
final Map<String, Object> doc = getDoc(body).map(entity -> {
|
||||
|
|
|
@ -450,7 +450,7 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
|
|||
/** The key of the configuration. e.g. */
|
||||
String INDEX_ADMIN_DOUBLE_FIELDS = "index.admin.double.fields";
|
||||
|
||||
/** The key of the configuration. e.g. doc_id,url,title,role,boost */
|
||||
/** The key of the configuration. e.g. url,title,role,boost */
|
||||
String INDEX_ADMIN_REQUIRED_FIELDS = "index.admin.required.fields";
|
||||
|
||||
/** The key of the configuration. e.g. 3m */
|
||||
|
@ -2579,7 +2579,7 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
|
|||
|
||||
/**
|
||||
* Get the value for the key 'index.admin.required.fields'. <br>
|
||||
* The value is, e.g. doc_id,url,title,role,boost <br>
|
||||
* The value is, e.g. url,title,role,boost <br>
|
||||
* @return The value of found property. (NotNull: if not found, exception but basically no way)
|
||||
*/
|
||||
String getIndexAdminRequiredFields();
|
||||
|
@ -7568,7 +7568,7 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
|
|||
defaultMap.put(FessConfig.INDEX_ADMIN_LONG_FIELDS, "content_length,favorite_count,click_count");
|
||||
defaultMap.put(FessConfig.INDEX_ADMIN_FLOAT_FIELDS, "boost");
|
||||
defaultMap.put(FessConfig.INDEX_ADMIN_DOUBLE_FIELDS, "");
|
||||
defaultMap.put(FessConfig.INDEX_ADMIN_REQUIRED_FIELDS, "doc_id,url,title,role,boost");
|
||||
defaultMap.put(FessConfig.INDEX_ADMIN_REQUIRED_FIELDS, "url,title,role,boost");
|
||||
defaultMap.put(FessConfig.INDEX_SEARCH_TIMEOUT, "3m");
|
||||
defaultMap.put(FessConfig.INDEX_SCROLL_SEARCH_TIMEOUT_TIMEOUT, "3m");
|
||||
defaultMap.put(FessConfig.INDEX_INDEX_TIMEOUT, "3m");
|
||||
|
|
|
@ -1254,7 +1254,7 @@ public interface FessProp {
|
|||
final IntegerTypeValidator integerValidator = new IntegerTypeValidator();
|
||||
return split(getIndexAdminIntegerFields(), ",").get(
|
||||
stream -> stream.filter(StringUtil::isNotBlank).map(s -> s.trim()).filter(s -> isNonEmptyValue(source.get(s)))
|
||||
.filter(s -> !integerValidator.isValid((String) source.get(s), null)).collect(Collectors.toList()));
|
||||
.filter(s -> !integerValidator.isValid(source.get(s).toString(), null)).collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
String getIndexAdminLongFields();
|
||||
|
@ -1279,7 +1279,7 @@ public interface FessProp {
|
|||
final LongTypeValidator longValidator = new LongTypeValidator();
|
||||
return split(getIndexAdminLongFields(), ",").get(
|
||||
stream -> stream.filter(StringUtil::isNotBlank).map(s -> s.trim()).filter(s -> isNonEmptyValue(source.get(s)))
|
||||
.filter(s -> !longValidator.isValid((String) source.get(s), null)).collect(Collectors.toList()));
|
||||
.filter(s -> !longValidator.isValid(source.get(s).toString(), null)).collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
String getIndexAdminFloatFields();
|
||||
|
@ -1304,7 +1304,7 @@ public interface FessProp {
|
|||
final FloatTypeValidator floatValidator = new FloatTypeValidator();
|
||||
return split(getIndexAdminFloatFields(), ",").get(
|
||||
stream -> stream.filter(StringUtil::isNotBlank).map(s -> s.trim()).filter(s -> isNonEmptyValue(source.get(s)))
|
||||
.filter(s -> !floatValidator.isValid((String) source.get(s), null)).collect(Collectors.toList()));
|
||||
.filter(s -> !floatValidator.isValid(source.get(s).toString(), null)).collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
String getIndexAdminDoubleFields();
|
||||
|
@ -1329,7 +1329,7 @@ public interface FessProp {
|
|||
final DoubleTypeValidator doubleValidator = new DoubleTypeValidator();
|
||||
return split(getIndexAdminDoubleFields(), ",").get(
|
||||
stream -> stream.filter(StringUtil::isNotBlank).map(s -> s.trim()).filter(s -> isNonEmptyValue(source.get(s)))
|
||||
.filter(s -> !doubleValidator.isValid((String) source.get(s), null)).collect(Collectors.toList()));
|
||||
.filter(s -> !doubleValidator.isValid(source.get(s).toString(), null)).collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
public default Map<String, Object> convertToEditableDoc(final Map<String, Object> source) {
|
||||
|
|
|
@ -209,7 +209,7 @@ index.admin.integer.fields=
|
|||
index.admin.long.fields=content_length,favorite_count,click_count
|
||||
index.admin.float.fields=boost
|
||||
index.admin.double.fields=
|
||||
index.admin.required.fields=doc_id,url,title,role,boost
|
||||
index.admin.required.fields=url,title,role,boost
|
||||
|
||||
# timeout
|
||||
index.search.timeout=3m
|
||||
|
|
Loading…
Add table
Reference in a new issue