Author: lukaszlenart
Date: Sun Mar 6 13:24:17 2011
New Revision: 1078465
URL: http://svn.apache.org/viewvc?rev=1078465&view=rev
Log:
Solves WW-3461 - additional synchronize block is not needed as the
validatorCache is already synchronized map
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=1078465&r1=1078464&r2=1078465&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
Sun Mar 6 13:24:17 2011
@@ -28,7 +28,14 @@ import com.opensymphony.xwork2.validator
import java.io.IOException;
import java.io.InputStream;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
/**
* AnnotationActionValidatorManager is the entry point into XWork's
annotations-based validator framework.
@@ -68,19 +75,18 @@ public class AnnotationActionValidatorMa
public List<Validator> getValidators(Class clazz, String context, String
method) {
final String validatorKey = buildValidatorKey(clazz);
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));
- }
- // get the set of validator configs
- cfgs = new
ArrayList<ValidatorConfig>(validatorCache.get(validatorKey));
+ if (validatorCache.containsKey(validatorKey)) {
+ if (FileManager.isReloadingConfigs()) {
+ validatorCache.put(validatorKey, buildValidatorConfigs(clazz,
context, true, null));
+ }
+ } else {
+ validatorCache.put(validatorKey, buildValidatorConfigs(clazz,
context, false, null));
}
+ // get the set of validator configs
+ cfgs = new
ArrayList<ValidatorConfig>(validatorCache.get(validatorKey));
+
ValueStack stack = ActionContext.getContext().getValueStack();
// create clean instances of the validators for the caller's use
@@ -117,7 +123,7 @@ public class AnnotationActionValidatorMa
List<Validator> validators = getValidators(object.getClass(), context,
method);
Set<String> shortcircuitedFields = null;
- for (final Validator validator: validators) {
+ for (final Validator validator : validators) {
try {
validator.setValidatorContext(validatorContext);
@@ -141,8 +147,7 @@ public class AnnotationActionValidatorMa
}
}
- if (validator instanceof ShortCircuitableValidator &&
((ShortCircuitableValidator) validator).isShortCircuit())
- {
+ if (validator instanceof ShortCircuitableValidator &&
((ShortCircuitableValidator) validator).isShortCircuit()) {
// get number of existing errors
List<String> errs = null;
@@ -197,7 +202,7 @@ public class AnnotationActionValidatorMa
validator.validate(object);
} finally {
- validator.setValidatorContext( null );
+ validator.setValidatorContext(null);
}
}
@@ -206,7 +211,7 @@ public class AnnotationActionValidatorMa
/**
* Builds a key for validators - used when caching validators.
*
- * @param clazz the action.
+ * @param clazz the action.
* @return a validator key which is the class name plus context.
*/
protected static String buildValidatorKey(Class clazz) {
@@ -224,7 +229,7 @@ public class AnnotationActionValidatorMa
return sb.toString();
}
- private List<ValidatorConfig> buildAliasValidatorConfigs(Class aClass,
String context, boolean checkFile) {
+ private List<ValidatorConfig> buildAliasValidatorConfigs(Class aClass,
String context, boolean checkFile) {
String fileName = aClass.getName().replace('.', '/') + "-" +
context.replace('/', '-') + VALIDATION_CONFIG_SUFFIX;
return loadFile(fileName, aClass, checkFile);
@@ -371,11 +376,10 @@ public class AnnotationActionValidatorMa
}
-
/**
* An {@link com.opensymphony.xwork2.validator.ValidatorContext} wrapper
that
* returns the full field name
- * {@link
com.opensymphony.xwork2.validator.AbstractActionValidatorManager.InternalValidatorContextWrapper#getFullFieldName(String)}
+ * {@link
AnnotationActionValidatorManager.InternalValidatorContextWrapper#getFullFieldName(String)}
* by consulting it's parent if its an {@link
com.opensymphony.xwork2.validator.validators.VisitorFieldValidator.AppendingValidatorContext}.
* <p/>
* Eg. if we have nested Visitor
@@ -396,6 +400,7 @@ public class AnnotationActionValidatorMa
* Get the full field name by consulting the parent, so that when we
are using nested visitors (
* visitor nested inside visitor etc.) we still get the full field
name including its parents.
* See XW-571 for more details.
+ *
* @param field
* @return String
*/
@@ -408,5 +413,5 @@ public class AnnotationActionValidatorMa
return validatorContext.getFullFieldName(field);
}
- }
+ }
}