Shinsuke Sugaya 9 tahun lalu
induk
melakukan
ef44c0c2cd

+ 2 - 2
src/main/java/org/codelibs/fess/app/web/admin/searchlist/AdminSearchlistAction.java

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

+ 5 - 2
src/main/java/org/codelibs/fess/mylasta/direction/FessProp.java

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

+ 29 - 0
src/test/java/org/codelibs/fess/mylasta/direction/FessPropTest.java

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