diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationActionValidatorManager.java b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationActionValidatorManager.java index 844f78244..789e0fd72 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationActionValidatorManager.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationActionValidatorManager.java @@ -61,23 +61,25 @@ public class AnnotationActionValidatorManager implements ActionValidatorManager this.validatorFileParser = parser; } - public synchronized List getValidators(Class clazz, String context) { + public List getValidators(Class clazz, String context) { return getValidators(clazz, context, null); } - public synchronized List getValidators(Class clazz, String context, String method) { + public List getValidators(Class clazz, String context, String method) { final String validatorKey = buildValidatorKey(clazz); - - if (validatorCache.containsKey(validatorKey)) { - if (FileManager.isReloadingConfigs()) { - validatorCache.put(validatorKey, buildValidatorConfigs(clazz, context, true, null)); + final List cfgs; + synchronized (validatorCache) { + if (validatorCache.containsKey(validatorKey)) { + if (FileManager.isReloadingConfigs()) { + validatorCache.put(validatorKey, buildValidatorConfigs(clazz, context, true, null)); + } + } else { + validatorCache.put(validatorKey, buildValidatorConfigs(clazz, context, false, null)); } - } else { - validatorCache.put(validatorKey, buildValidatorConfigs(clazz, context, false, null)); - } - // get the set of validator configs - List cfgs = validatorCache.get(validatorKey); + // get the set of validator configs + cfgs = new ArrayList(validatorCache.get(validatorKey)); + } ValueStack stack = ActionContext.getContext().getValueStack(); @@ -87,8 +89,8 @@ public class AnnotationActionValidatorManager implements ActionValidatorManager if (method == null || method.equals(cfg.getParams().get("methodName"))) { Validator validator = validatorFactory.getValidator( new ValidatorConfig.Builder(cfg) - .removeParam("methodName") - .build()); + .removeParam("methodName") + .build()); validator.setValidatorType(cfg.getType()); validator.setValueStack(stack); validators.add(validator);