fix #877 add FessActionValidator

This commit is contained in:
Shinsuke Sugaya 2017-02-05 07:59:42 +09:00
parent 23746c6122
commit ff351756ae
4 changed files with 66 additions and 35 deletions

View file

@ -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
// ========

View file

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

View file

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

View file

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