Skip to content

Commit 880347c

Browse files
committed
Allow nulls in bean validation constraints
1 parent 9cf48c4 commit 880347c

16 files changed

Lines changed: 59 additions & 1 deletion

src/main/java/org/owasp/esapi/reference/validation/annotations/ValidCreditCardValidator.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ public void initialize(ValidCreditCard validCreditCard) {
2020

2121
@Override
2222
public boolean isValid(String input, ConstraintValidatorContext constraintValidatorContext) {
23+
if (input == null) {
24+
return true;
25+
}
2326
ValidationErrorList errorList = new ValidationErrorList();
2427
boolean valid = ESAPI.validator().isValidCreditCard(context, input, allowNull, errorList);
2528

src/main/java/org/owasp/esapi/reference/validation/annotations/ValidDateValidator.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ public void initialize(ValidDate validDate) {
2727

2828
@Override
2929
public boolean isValid(String input, ConstraintValidatorContext constraintValidatorContext) {
30+
if (input == null) {
31+
return true;
32+
}
3033
Locale locale = new Locale(localeString);
3134
DateFormat dateFormat = DateFormat.getDateInstance(dateStyle, locale);
3235

src/main/java/org/owasp/esapi/reference/validation/annotations/ValidDirectoryPathValidator.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ public void initialize(ValidDirectoryPath validDirectoryPath) {
2424

2525
@Override
2626
public boolean isValid(String input, ConstraintValidatorContext constraintValidatorContext) {
27+
if (input == null) {
28+
return true;
29+
}
2730
ValidationErrorList errorList = new ValidationErrorList();
2831
File parent = new File(parentString);
2932
boolean valid = ESAPI.validator().isValidDirectoryPath(context, input, parent, allowNull, errorList);

src/main/java/org/owasp/esapi/reference/validation/annotations/ValidDoubleValidator.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ public void initialize(ValidDouble validDouble) {
2424

2525
@Override
2626
public boolean isValid(String input, ConstraintValidatorContext constraintValidatorContext) {
27+
if (input == null) {
28+
return true;
29+
}
2730
ValidationErrorList errorList = new ValidationErrorList();
2831
boolean valid = ESAPI.validator().isValidDouble(context, input, minValue, maxValue, allowNull, errorList);
2932

src/main/java/org/owasp/esapi/reference/validation/annotations/ValidFileContentValidator.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ public void initialize(ValidFileContent validFileContent) {
2222

2323
@Override
2424
public boolean isValid(byte[] input, ConstraintValidatorContext constraintValidatorContext) {
25+
if (input == null) {
26+
return true;
27+
}
2528
ValidationErrorList errorList = new ValidationErrorList();
2629
boolean valid = ESAPI.validator().isValidFileContent(context, input, maxBytes, allowNull, errorList);
2730

src/main/java/org/owasp/esapi/reference/validation/annotations/ValidFileNameValidator.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ public void initialize(ValidFileName validFileName) {
2626

2727
@Override
2828
public boolean isValid(String input, ConstraintValidatorContext constraintValidatorContext) {
29+
if (input == null) {
30+
return true;
31+
}
2932
ValidationErrorList errorList = new ValidationErrorList();
3033
boolean valid;
3134
if(allowedExtensions.length == 0){

src/main/java/org/owasp/esapi/reference/validation/annotations/ValidFileUploadValidator.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ public void initialize(ValidFileUpload validFileUpload) {
3030

3131
@Override
3232
public boolean isValid(byte[] input, ConstraintValidatorContext constraintValidatorContext) {
33+
if (input == null) {
34+
return true;
35+
}
3336
ValidationErrorList errorList = new ValidationErrorList();
3437
File parent = new File(parentString);
3538
boolean valid = ESAPI.validator().isValidFileUpload(context, directoryPath, fileName, parent, input, maxBytes, allowNull, errorList);

src/main/java/org/owasp/esapi/reference/validation/annotations/ValidHTTPRequestParameterSetValidator.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,24 @@ public class ValidHTTPRequestParameterSetValidator implements ConstraintValidato
1717
private String context;
1818
private String[] requiredNames;
1919
private String[] optionalNames;
20+
private boolean allowNull;
2021

2122
@Override
2223
public void initialize(ValidHTTPRequestParameterSet validHTTPRequestParameters) {
2324
context = validHTTPRequestParameters.context();
2425
requiredNames = validHTTPRequestParameters.requiredNames();
2526
optionalNames = validHTTPRequestParameters.optionalNames();
27+
allowNull = validHTTPRequestParameters.allowNull();
2628
}
2729

2830
@Override
2931
public boolean isValid(HttpServletRequest input, ConstraintValidatorContext constraintValidatorContext) {
32+
if (input == null) {
33+
return true;
34+
}
35+
if (allowNull && input.getParameterMap().isEmpty()) {
36+
return true;
37+
}
3038
ValidationErrorList errorList = new ValidationErrorList();
3139
Set<String> requiredNamesSet = new HashSet<>(Arrays.asList(requiredNames));
3240
Set<String> optionalNamesSet = new HashSet<>(Arrays.asList(optionalNames));

src/main/java/org/owasp/esapi/reference/validation/annotations/ValidIntegerValidator.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ public void initialize(ValidInteger validInteger) {
2424

2525
@Override
2626
public boolean isValid(String input, ConstraintValidatorContext constraintValidatorContext) {
27+
if (input == null) {
28+
return true;
29+
}
2730
ValidationErrorList errorList = new ValidationErrorList();
2831
boolean valid = ESAPI.validator().isValidInteger(context, input, minValue, maxValue, allowNull, errorList);
2932

src/main/java/org/owasp/esapi/reference/validation/annotations/ValidListItemValidator.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,23 @@ public class ValidListItemValidator implements ConstraintValidator<ValidListItem
1414

1515
private String context;
1616
private String[] listArray;
17+
private boolean allowNull;
1718

1819
@Override
1920
public void initialize(ValidListItem validListItem) {
2021
context = validListItem.context();
2122
listArray = validListItem.list();
23+
allowNull = validListItem.allowNull();
2224
}
2325

2426
@Override
2527
public boolean isValid(String input, ConstraintValidatorContext constraintValidatorContext) {
28+
if (input == null) {
29+
return true;
30+
}
31+
if (allowNull && input.isEmpty()) {
32+
return true;
33+
}
2634
ValidationErrorList errorList = new ValidationErrorList();
2735
List<String> list = Arrays.asList(listArray);
2836
boolean valid = ESAPI.validator().isValidListItem(context, input, list, errorList);

0 commit comments

Comments
 (0)