This commit is contained in:
Shinsuke Sugaya 2016-08-03 06:10:23 +09:00
parent 2aebe9d65f
commit ef44c0c2cd
3 changed files with 36 additions and 4 deletions

View file

@ -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());

View file

@ -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) {

View file

@ -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));
}
}