[
https://issues.apache.org/jira/browse/WW-5284?focusedWorklogId=845384&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-845384
]
ASF GitHub Bot logged work on WW-5284:
--------------------------------------
Author: ASF GitHub Bot
Created on: 14/Feb/23 12:52
Start Date: 14/Feb/23 12:52
Worklog Time Spent: 10m
Work Description: kusalk commented on code in PR #659:
URL: https://github.com/apache/struts/pull/659#discussion_r1105771667
##########
core/src/main/java/com/opensymphony/xwork2/validator/DefaultActionValidatorManager.java:
##########
@@ -43,64 +60,292 @@
* @author James House
* @author Rainer Hermanns
*/
-public class DefaultActionValidatorManager extends
AbstractActionValidatorManager {
+public class DefaultActionValidatorManager implements ActionValidatorManager {
+
+ /**
+ * The file suffix for any validation file.
+ */
+ protected static final String VALIDATION_CONFIG_SUFFIX = "-validation.xml";
- private final static Logger LOG =
LogManager.getLogger(DefaultActionValidatorManager.class);
+ protected final Map<String, List<ValidatorConfig>> validatorCache =
synchronizedMap(new HashMap<>());
+ protected final Map<String, List<ValidatorConfig>> validatorFileCache =
synchronizedMap(new HashMap<>());
+ private static final Logger LOG =
LogManager.getLogger(DefaultActionValidatorManager.class);
+
+ protected ValidatorFactory validatorFactory;
+ protected ValidatorFileParser validatorFileParser;
+ protected FileManager fileManager;
+ protected boolean reloadingConfigs;
+ protected TextProviderFactory textProviderFactory;
+
+ @Inject
+ public void setValidatorFactory(ValidatorFactory fac) {
+ this.validatorFactory = fac;
+ }
+
+ @Inject
+ public void setValidatorFileParser(ValidatorFileParser parser) {
+ this.validatorFileParser = parser;
+ }
+
+ @Inject
+ public void setFileManagerFactory(FileManagerFactory fileManagerFactory) {
+ this.fileManager = fileManagerFactory.getFileManager();
+ }
+
+ @Inject(value = StrutsConstants.STRUTS_CONFIGURATION_XML_RELOAD, required
= false)
+ public void setReloadingConfigs(String reloadingConfigs) {
+ this.reloadingConfigs = Boolean.parseBoolean(reloadingConfigs);
+ }
+
+ @Inject
+ public void setTextProviderFactory(TextProviderFactory
textProviderFactory) {
+ this.textProviderFactory = textProviderFactory;
+ }
@Override
- public synchronized List<Validator> getValidators(Class clazz, String
context) {
- return getValidators(clazz, context, null);
+ public void validate(Object object, String context) throws
ValidationException {
+ validate(object, context, (String) null);
+ }
+
+ @Override
+ public void validate(Object object, String context, String method) throws
ValidationException {
+ ValidatorContext validatorContext = new
DelegatingValidatorContext(object, textProviderFactory);
+ validate(object, context, validatorContext, method);
+ }
+
+ @Override
+ public void validate(Object object, String context, ValidatorContext
validatorContext) throws ValidationException {
+ validate(object, context, validatorContext, null);
+ }
+
+ /**
+ * Builds a key for validators - used when caching validators.
+ *
+ * @param clazz the action.
+ * @param context context
+ * @return a validator key which is the class name plus context.
+ */
+ protected String buildValidatorKey(Class clazz, String context) {
+ return clazz.getName() + "/" + context;
+ }
+
+ protected Validator getValidatorFromValidatorConfig(ValidatorConfig
config, ValueStack stack) {
+ Validator validator = validatorFactory.getValidator(config);
+ validator.setValidatorType(config.getType());
+ validator.setValueStack(stack);
+ return validator;
}
@Override
public synchronized List<Validator> getValidators(Class clazz, String
context, String method) {
Review Comment:
Given that both `AnnotationActionValidatorManager` and
`DefaultActionValidatorManager` use the same caching logic I presume both
should be synchronised on this method. Previously
`AnnotationActionValidatorManager` was not. Regardless, I don't think it will
hurt to add it here for the purpose of simplifying the code.
Issue Time Tracking
-------------------
Worklog Id: (was: 845384)
Time Spent: 0.5h (was: 20m)
> Further clean up ActionValidatorManager implementations
> -------------------------------------------------------
>
> Key: WW-5284
> URL: https://issues.apache.org/jira/browse/WW-5284
> Project: Struts 2
> Issue Type: Task
> Components: Core Interceptors
> Reporter: Kusal Kithul-Godage
> Priority: Trivial
> Fix For: 6.2.0
>
> Time Spent: 0.5h
> Remaining Estimate: 0h
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)