Author: lukaszlenart
Date: Sat Oct 23 19:59:30 2010
New Revision: 1026672
URL: http://svn.apache.org/viewvc?rev=1026672&view=rev
Log:
Solved WW-3461 - reduced lock scope
Modified:
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationActionValidatorManager.java
Modified:
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationActionValidatorManager.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationActionValidatorManager.java?rev=1026672&r1=1026671&r2=1026672&view=diff
==============================================================================
---
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationActionValidatorManager.java
(original)
+++
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationActionValidatorManager.java
Sat Oct 23 19:59:30 2010
@@ -61,23 +61,25 @@ public class AnnotationActionValidatorMa
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 AnnotationActionValidatorMa
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);