Solved WW-3461 - reduced lock scope

git-svn-id: https://svn.apache.org/repos/asf/struts/struts2/trunk@1026672 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Lukasz Lenart
2010-10-23 19:59:30 +00:00
parent ce17a40db6
commit d064ff93ae
@@ -61,23 +61,25 @@ public class AnnotationActionValidatorManager implements ActionValidatorManager
this.validatorFileParser = parser;
}
public synchronized List<Validator> getValidators(Class clazz, String context) {
public List<Validator> getValidators(Class clazz, String context) {
return getValidators(clazz, context, null);
}
public synchronized List<Validator> getValidators(Class clazz, String context, String method) {
public List<Validator> 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<ValidatorConfig> 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<ValidatorConfig> cfgs = validatorCache.get(validatorKey);
// get the set of validator configs
cfgs = new ArrayList<ValidatorConfig>(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);