Browse Source

fix #877 add FessActionValidator

Shinsuke Sugaya 8 years ago
parent
commit
ff351756ae

+ 0 - 29
src/main/java/org/codelibs/fess/app/web/base/FessAdminAction.java

@@ -17,23 +17,17 @@ package org.codelibs.fess.app.web.base;
 
 import java.util.function.Consumer;
 
-import javax.annotation.Resource;
 import javax.servlet.ServletContext;
 
 import org.codelibs.core.beans.util.BeanUtil;
 import org.codelibs.core.beans.util.CopyOptions;
 import org.codelibs.fess.exception.UserRoleLoginException;
-import org.codelibs.fess.helper.SystemHelper;
 import org.dbflute.optional.OptionalThing;
-import org.lastaflute.core.message.MessageManager;
-import org.lastaflute.core.message.UserMessages;
 import org.lastaflute.di.util.LdiFileUtil;
 import org.lastaflute.web.login.LoginManager;
 import org.lastaflute.web.response.ActionResponse;
 import org.lastaflute.web.ruts.process.ActionRuntime;
-import org.lastaflute.web.servlet.request.RequestManager;
 import org.lastaflute.web.util.LaServletContextUtil;
-import org.lastaflute.web.validation.ActionValidator;
 
 /**
  * @author codelibs
@@ -41,19 +35,6 @@ import org.lastaflute.web.validation.ActionValidator;
  */
 public abstract class FessAdminAction extends FessBaseAction {
 
-    // ===================================================================================
-    //                                                                           Attribute
-    //                                                                           =========
-
-    @Resource
-    protected SystemHelper systemHelper;
-
-    @Resource
-    private MessageManager messageManager;
-
-    @Resource
-    private RequestManager requestManager;
-
     // ===================================================================================
     //                                                                        Small Helper
     //                                                                        ============
@@ -86,16 +67,6 @@ public abstract class FessAdminAction extends FessBaseAction {
         return buf.toString();
     }
 
-    @SuppressWarnings("unchecked")
-    @Override
-    protected <MESSAGES extends UserMessages> ActionValidator<MESSAGES> createValidator(Class<?>... groups) { // for explicit groups
-        return systemHelper.createValidator(messageManager // to get validation message
-                , () -> requestManager.getUserLocale() // used with messageManager
-                , () -> (MESSAGES) createMessages() // for new user messages
-                , () -> handleApiValidationError() // apiFailureHook
-                , groups);
-    }
-
     // ===================================================================================
     //                                                                            Document
     //                                                                            ========

+ 17 - 1
src/main/java/org/codelibs/fess/app/web/base/FessBaseAction.java

@@ -19,17 +19,20 @@ import javax.annotation.Resource;
 
 import org.codelibs.fess.app.web.base.login.FessLoginAssist;
 import org.codelibs.fess.helper.ActivityHelper;
+import org.codelibs.fess.helper.SystemHelper;
 import org.codelibs.fess.mylasta.action.FessHtmlPath;
 import org.codelibs.fess.mylasta.action.FessMessages;
 import org.codelibs.fess.mylasta.action.FessUserBean;
 import org.codelibs.fess.mylasta.direction.FessConfig;
 import org.dbflute.hook.AccessContext;
 import org.dbflute.optional.OptionalThing;
+import org.lastaflute.core.message.MessageManager;
 import org.lastaflute.core.time.TimeManager;
 import org.lastaflute.db.dbflute.accesscontext.AccessContextArranger;
 import org.lastaflute.web.TypicalAction;
 import org.lastaflute.web.response.ActionResponse;
 import org.lastaflute.web.ruts.process.ActionRuntime;
+import org.lastaflute.web.servlet.request.RequestManager;
 import org.lastaflute.web.servlet.request.ResponseManager;
 import org.lastaflute.web.servlet.session.SessionManager;
 import org.lastaflute.web.validation.ActionValidator;
@@ -72,6 +75,15 @@ public abstract class FessBaseAction extends TypicalAction // has several interf
     @Resource
     protected TimeManager timeManager;
 
+    @Resource
+    protected SystemHelper systemHelper;
+
+    @Resource
+    private MessageManager messageManager;
+
+    @Resource
+    private RequestManager requestManager;
+
     // ===================================================================================
     //                                                                               Hook
     //                                                                              ======
@@ -141,7 +153,11 @@ public abstract class FessBaseAction extends TypicalAction // has several interf
     @SuppressWarnings("unchecked")
     @Override
     public ActionValidator<FessMessages> createValidator() {
-        return super.createValidator();
+        return systemHelper.createValidator(messageManager // to get validation message
+                , () -> requestManager.getUserLocale() // used with messageManager
+                , () -> createMessages() // for new user messages
+                , () -> handleApiValidationError() // apiFailureHook
+                , myValidationGroups());
     }
 
     @Override

+ 6 - 5
src/main/java/org/codelibs/fess/helper/SystemHelper.java

@@ -44,11 +44,12 @@ import org.apache.commons.lang3.StringUtils;
 import org.codelibs.core.lang.StringUtil;
 import org.codelibs.fess.Constants;
 import org.codelibs.fess.crawler.util.CharUtil;
+import org.codelibs.fess.mylasta.action.FessMessages;
 import org.codelibs.fess.mylasta.action.FessUserBean;
 import org.codelibs.fess.mylasta.direction.FessConfig;
 import org.codelibs.fess.util.ComponentUtil;
+import org.codelibs.fess.validation.FessActionValidator;
 import org.lastaflute.core.message.MessageManager;
-import org.lastaflute.core.message.UserMessages;
 import org.lastaflute.core.message.supplier.MessageLocaleProvider;
 import org.lastaflute.core.message.supplier.UserMessagesCreator;
 import org.lastaflute.web.TypicalAction;
@@ -322,10 +323,10 @@ public class SystemHelper {
         return previousClusterState.getAndSet(status) != status;
     }
 
-    public <MESSAGES extends UserMessages> ActionValidator<MESSAGES> createValidator(MessageManager messageManager,
-            MessageLocaleProvider messageLocaleProvider, UserMessagesCreator<MESSAGES> userMessagesCreator, VaErrorHook apiFailureHook,
-            Class<?>... runtimeGroups) {
-        return new ActionValidator<MESSAGES>(messageManager, messageLocaleProvider, userMessagesCreator, apiFailureHook, runtimeGroups);
+    public ActionValidator<FessMessages> createValidator(MessageManager messageManager, MessageLocaleProvider messageLocaleProvider,
+            UserMessagesCreator<FessMessages> userMessagesCreator, VaErrorHook apiFailureHook, Class<?>... runtimeGroups) {
+        return new FessActionValidator<FessMessages>(messageManager, messageLocaleProvider, userMessagesCreator, apiFailureHook,
+                runtimeGroups);
     }
 
 }

+ 43 - 0
src/main/java/org/codelibs/fess/validation/FessActionValidator.java

@@ -0,0 +1,43 @@
+/*
+ * Copyright 2012-2017 CodeLibs Project and the Others.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+ * either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
+ */
+package org.codelibs.fess.validation;
+
+import java.util.Locale;
+
+import org.codelibs.fess.util.ComponentUtil;
+import org.hibernate.validator.spi.resourceloading.ResourceBundleLocator;
+import org.lastaflute.core.message.MessageManager;
+import org.lastaflute.core.message.UserMessages;
+import org.lastaflute.core.message.supplier.MessageLocaleProvider;
+import org.lastaflute.core.message.supplier.UserMessagesCreator;
+import org.lastaflute.web.validation.ActionValidator;
+import org.lastaflute.web.validation.VaErrorHook;
+
+public class FessActionValidator<MESSAGES extends UserMessages> extends ActionValidator<MESSAGES> {
+
+    public FessActionValidator(final MessageManager messageManager, final MessageLocaleProvider messageLocaleProvider,
+            final UserMessagesCreator<MESSAGES> userMessagesCreator, final VaErrorHook apiFailureHook, final Class<?>[] runtimeGroups) {
+        super(messageManager, messageLocaleProvider, userMessagesCreator, apiFailureHook, runtimeGroups);
+    }
+
+    @Override
+    protected ResourceBundleLocator newResourceBundleLocator() {
+        return locale -> {
+            final Locale userLocale = ComponentUtil.getRequestManager().getUserLocale();
+            return newHookedResourceBundle(userLocale == null ? locale : userLocale);
+        };
+    }
+}