This commit is contained in:
parent
2aebe9d65f
commit
ef44c0c2cd
3 changed files with 36 additions and 4 deletions
|
@ -245,7 +245,7 @@ public class AdminSearchlistAction extends FessAdminAction {
|
|||
public HtmlResponse create(final CreateForm form) {
|
||||
verifyCrudMode(form.crudMode, CrudMode.CREATE);
|
||||
validate(form, messages -> {}, () -> asEditHtml());
|
||||
if (!fessConfig.hasIndexRequiredFields(form.doc)) {
|
||||
if (!fessConfig.validateIndexRequiredFields(form.doc)) {
|
||||
throwValidationError(messages -> messages.addErrorsCrudFailedToCreateInstance(GLOBAL), () -> asEditHtml());
|
||||
}
|
||||
verifyToken(() -> asEditHtml());
|
||||
|
@ -276,7 +276,7 @@ public class AdminSearchlistAction extends FessAdminAction {
|
|||
public HtmlResponse update(final EditForm form) {
|
||||
verifyCrudMode(form.crudMode, CrudMode.EDIT);
|
||||
validate(form, messages -> {}, () -> asEditHtml());
|
||||
if (!fessConfig.hasIndexRequiredFields(form.doc)) {
|
||||
if (!fessConfig.validateIndexRequiredFields(form.doc)) {
|
||||
throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, form.docId), () -> asEditHtml());
|
||||
}
|
||||
verifyToken(() -> asEditHtml());
|
||||
|
|
|
@ -47,6 +47,7 @@ import org.elasticsearch.action.search.SearchRequestBuilder;
|
|||
import org.lastaflute.job.LaJob;
|
||||
import org.lastaflute.job.subsidiary.ConcurrentExec;
|
||||
import org.lastaflute.web.util.LaRequestUtil;
|
||||
import org.lastaflute.web.validation.RequiredValidator;
|
||||
|
||||
public interface FessProp {
|
||||
|
||||
|
@ -1209,9 +1210,11 @@ public interface FessProp {
|
|||
|
||||
String getIndexAdminRequiredFields();
|
||||
|
||||
public default boolean hasIndexRequiredFields(final Map<String, Object> source) {
|
||||
public default boolean validateIndexRequiredFields(final Map<String, Object> source) {
|
||||
final RequiredValidator requiredValidator = new RequiredValidator();
|
||||
return stream(getIndexAdminRequiredFields().split(",")).get(
|
||||
stream -> stream.filter(StringUtil::isNotBlank).map(s -> s.trim()).allMatch(s -> isNonEmptyValue(source.get(s))));
|
||||
stream -> stream.filter(StringUtil::isNotBlank).map(s -> s.trim())
|
||||
.allMatch(s -> requiredValidator.isValid(source.get(s), null)));
|
||||
}
|
||||
|
||||
public static boolean isNonEmptyValue(final Object value) {
|
||||
|
|
|
@ -17,6 +17,7 @@ package org.codelibs.fess.mylasta.direction;
|
|||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
|
||||
import org.codelibs.core.io.FileUtil;
|
||||
import org.codelibs.core.misc.DynamicProperties;
|
||||
|
@ -71,4 +72,32 @@ public class FessPropTest extends UnitFessTestCase {
|
|||
assertEquals("1234567890@fess.codelibs.local", fessConfig.getLdapSecurityPrincipal("12345678901"));
|
||||
}
|
||||
|
||||
public void test_validateIndexRequiredFields() {
|
||||
FessConfig fessConfig = new FessConfig.SimpleImpl() {
|
||||
@Override
|
||||
public String getIndexAdminRequiredFields() {
|
||||
return "aaa,bbb";
|
||||
}
|
||||
};
|
||||
|
||||
HashMap<String, Object> source = new HashMap<>();
|
||||
assertFalse(fessConfig.validateIndexRequiredFields(source));
|
||||
source.put("aaa", null);
|
||||
assertFalse(fessConfig.validateIndexRequiredFields(source));
|
||||
source.put("aaa", null);
|
||||
source.put("bbb", null);
|
||||
assertFalse(fessConfig.validateIndexRequiredFields(source));
|
||||
source.put("aaa", "");
|
||||
source.put("bbb", "");
|
||||
assertFalse(fessConfig.validateIndexRequiredFields(source));
|
||||
source.put("aaa", "");
|
||||
source.put("bbb", "a");
|
||||
assertFalse(fessConfig.validateIndexRequiredFields(source));
|
||||
source.put("aaa", " ");
|
||||
source.put("bbb", "a");
|
||||
assertFalse(fessConfig.validateIndexRequiredFields(source));
|
||||
source.put("aaa", "a");
|
||||
source.put("bbb", "a");
|
||||
assertTrue(fessConfig.validateIndexRequiredFields(source));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue