Author: sebb Date: Tue Jan 13 22:30:28 2015 New Revision: 1651525 URL: http://svn.apache.org/r1651525 Log: Add temporary hack to get round IDN.toASCII bug It is not supposed to change ASCII input but it converts trailing ".." to "."
Modified: commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/DomainValidator.java Modified: commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/DomainValidator.java URL: http://svn.apache.org/viewvc/commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/DomainValidator.java?rev=1651525&r1=1651524&r2=1651525&view=diff ============================================================================== --- commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/DomainValidator.java (original) +++ commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/DomainValidator.java Tue Jan 13 22:30:28 2015 @@ -1085,6 +1085,9 @@ public class DomainValidator implements */ // Needed by UrlValidator static String unicodeToASCII(String input) { + if (isOnlyASCII(input)) { // TODO temporary hack to work round IDN.toASCII bug + return input; + } try { return IDN.toASCII(input); } catch (IllegalArgumentException e) { // input is not valid @@ -1092,4 +1095,19 @@ public class DomainValidator implements } } + /* + * Check if input contains only ASCII + * Treats null as all ASCII + */ + private static boolean isOnlyASCII(String input) { + if (input == null) { + return true; + } + for(int i=0; i < input.length(); i++) { + if (input.charAt(i) > 0x7F) { + return false; + } + } + return true; + } }