Repository: struts
Updated Branches:
refs/heads/master bbd4a9e8c -> 0314ddcb5
WW-4795 Implements @LongRangeFieldValidator annotation
Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/0314ddcb
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/0314ddcb
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/0314ddcb
Branch: refs/heads/master
Commit: 0314ddcb5c8badb8c216735f318fe75ffe56d6b5
Parents: bbd4a9e
Author: Lukasz Lenart
Authored: Tue May 9 10:33:35 2017 +0200
Committer: Lukasz Lenart
Committed: Tue May 9 10:33:35 2017 +0200
--
...nnotationValidationConfigurationBuilder.java | 52 +
.../annotations/LongRangeFieldValidator.java| 194 +++
.../validator/annotations/Validations.java | 4 +
.../xwork2/validator/validators/default.xml | 1 +
.../template/xhtml/form-close-validate.ftl | 2 +-
.../validator/AnnotationValidationAction.java | 3 +
...ationValidationConfigurationBuilderTest.java | 15 +-
core/src/test/resources/validators.xml | 2 +
8 files changed, 271 insertions(+), 2 deletions(-)
--
http://git-wip-us.apache.org/repos/asf/struts/blob/0314ddcb/core/src/main/java/com/opensymphony/xwork2/validator/AnnotationValidationConfigurationBuilder.java
--
diff --git
a/core/src/main/java/com/opensymphony/xwork2/validator/AnnotationValidationConfigurationBuilder.java
b/core/src/main/java/com/opensymphony/xwork2/validator/AnnotationValidationConfigurationBuilder.java
index b2764ca..f0f3e12 100644
---
a/core/src/main/java/com/opensymphony/xwork2/validator/AnnotationValidationConfigurationBuilder.java
+++
b/core/src/main/java/com/opensymphony/xwork2/validator/AnnotationValidationConfigurationBuilder.java
@@ -146,6 +146,14 @@ public class AnnotationValidationConfigurationBuilder {
result.add(temp);
}
}
+// Process LongRangeFieldValidator
+else if (a instanceof LongRangeFieldValidator) {
+LongRangeFieldValidator v = (LongRangeFieldValidator) a;
+ValidatorConfig temp =
processLongRangeFieldValidatorAnnotation(v, fieldName, methodName);
+if (temp != null) {
+result.add(temp);
+}
+}
// Process ShortRangeFieldValidator
else if (a instanceof ShortRangeFieldValidator) {
ShortRangeFieldValidator v = (ShortRangeFieldValidator) a;
@@ -298,6 +306,15 @@ public class AnnotationValidationConfigurationBuilder {
}
}
}
+LongRangeFieldValidator[] lrfv = validations.longRangeFields();
+if (irfv != null) {
+for (LongRangeFieldValidator v : lrfv) {
+ValidatorConfig temp =
processLongRangeFieldValidatorAnnotation(v, fieldName, methodName);
+if (temp != null) {
+result.add(temp);
+}
+}
+}
RegexFieldValidator[] rfv = validations.regexFields();
if (rfv != null) {
for (RegexFieldValidator v : rfv) {
@@ -672,6 +689,41 @@ public class AnnotationValidationConfigurationBuilder {
.build();
}
+private ValidatorConfig
processLongRangeFieldValidatorAnnotation(LongRangeFieldValidator v, String
fieldName, String methodName) {
+String validatorType = "long";
+
+Map params = new HashMap<>();
+
+if (fieldName != null) {
+params.put("fieldName", fieldName);
+} else if (StringUtils.isNotEmpty(v.fieldName())) {
+params.put("fieldName", v.fieldName());
+}
+
+if (v.min() != null && v.min().length() > 0) {
+params.put("min", v.min());
+}
+if (v.max() != null && v.max().length() > 0) {
+params.put("max", v.max());
+}
+if (StringUtils.isNotEmpty(v.maxExpression())) {
+params.put("maxExpression", v.maxExpression());
+}
+if (StringUtils.isNotEmpty(v.minExpression())) {
+params.put("minExpression", v.minExpression());
+}
+
+validatorFactory.lookupRegisteredValidatorType(validatorType);
+return new ValidatorConfig.Builder(validatorType)
+.addParams(params)
+.addParam("methodName", methodName)
+.shortCircuit(v.shortCircuit())
+.defaultMessage(v.message())
+.messageKey(v.key())
+.messageParams(v.messageParams())
+.build();
+}
+
private ValidatorConfig
processShortRangeFieldValidatorAnnotation(ShortRangeFieldValidator v, St