From d19b9eaa82753a5dd671ee4f0847574f65f4aebf Mon Sep 17 00:00:00 2001 From: Lukasz Lenart Date: Thu, 28 Jul 2016 13:09:21 +0200 Subject: [PATCH] WW-4671 makes URLValidator case insensitive --- .../validator/validators/URLValidator.java | 2 +- .../xwork2/validator/URLValidatorTest.java | 42 +++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/com/opensymphony/xwork2/validator/validators/URLValidator.java b/core/src/main/java/com/opensymphony/xwork2/validator/validators/URLValidator.java index fd678a70b..735d861de 100644 --- a/core/src/main/java/com/opensymphony/xwork2/validator/validators/URLValidator.java +++ b/core/src/main/java/com/opensymphony/xwork2/validator/validators/URLValidator.java @@ -55,7 +55,7 @@ public class URLValidator extends FieldValidatorSupport { return; } - if (!(value.getClass().equals(String.class)) || !Pattern.compile(getUrlRegex()).matcher((String) value).matches()) { + if (!(value.getClass().equals(String.class)) || !Pattern.compile(getUrlRegex(), Pattern.CASE_INSENSITIVE).matcher(String.valueOf(value)).matches()) { addFieldError(fieldName, object); } } diff --git a/core/src/test/java/com/opensymphony/xwork2/validator/URLValidatorTest.java b/core/src/test/java/com/opensymphony/xwork2/validator/URLValidatorTest.java index 77223ebed..56a9bcc50 100644 --- a/core/src/test/java/com/opensymphony/xwork2/validator/URLValidatorTest.java +++ b/core/src/test/java/com/opensymphony/xwork2/validator/URLValidatorTest.java @@ -20,6 +20,8 @@ import com.opensymphony.xwork2.XWorkTestCase; import com.opensymphony.xwork2.util.ValueStack; import com.opensymphony.xwork2.validator.validators.URLValidator; +import java.util.HashMap; +import java.util.Map; import java.util.regex.Pattern; /** @@ -146,6 +148,46 @@ public class URLValidatorTest extends XWorkTestCase { assertTrue(pattern.matcher("http://localhost:8080/myapp").matches()); } + public void testValidUrlCaseInsesitive() throws Exception { + // given + final Map fieldErrors = new HashMap<>(); + + URLValidator validator = new URLValidator() { + @Override + public String getFieldName() { + return "url"; + } + + @Override + protected Object getFieldValue(String name, Object object) throws ValidationException { + return object; + } + + @Override + protected void addFieldError(String propertyName, Object object) { + fieldErrors.put(propertyName, object); + } + }; + + // when + validator.validate("http://localhost:8080/myapp"); + + // then + assertTrue(fieldErrors.isEmpty()); + + // when + validator.validate("http://LOCALHOST:8080/MYAPP"); + + // then + assertTrue(fieldErrors.isEmpty()); + + // when + validator.validate("http://www.appache.org/TEST"); + + // then + assertTrue(fieldErrors.isEmpty()); + } + @Override protected void setUp() throws Exception { super.setUp();