Saturday, 15 August 2015

java - How @Digits constraint (Bean Validation-JSR 303) supports String type? -



java - How @Digits constraint (Bean Validation-JSR 303) supports String type? -

while studying beanvalidation documented here, came know @digits supports string datatype. here snap-shot documentation.

package javax.validation.constraints; /** * annotated element must number within accepted range * supported types are: * <ul> * <li><code>bigdecimal</code></li> * <li><code>biginteger</code></li> * <li><code>string</code></li> * <li><code>byte</code>, <code>short</code>, <code>int</code>, <code>long</code>, * , respective wrapper types</li> * </ul> * <p/> * <code>null</code> elements considered valid * * @author emmanuel bernard */

how can digits behave string type? on base of operations @digit validate string type? behave digit regex validation (@pattern)?

jsr-303 defines interface should check implementation does. if utilize hibernate validator, string's validator supports @digit constraint defined in digitsvalidatorforcharsequence class (note string class implements charsequence interface).

that implementations parses given string , if valid bigdecimal validator returns true.

here isvalid method defined in aforementioned class (and private method used parse value):

public boolean isvalid(charsequence charsequence, constraintvalidatorcontext constraintvalidatorcontext) { //null values valid if ( charsequence == null ) { homecoming true; } bigdecimal bignum = getbigdecimalvalue( charsequence ); if ( bignum == null ) { homecoming false; } int integerpartlength = bignum.precision() - bignum.scale(); int fractionpartlength = bignum.scale() < 0 ? 0 : bignum.scale(); homecoming ( maxintegerlength >= integerpartlength && maxfractionlength >= fractionpartlength ); } private bigdecimal getbigdecimalvalue(charsequence charsequence) { bigdecimal bd; seek { bd = new bigdecimal( charsequence.tostring() ); } grab ( numberformatexception nfe ) { homecoming null; } homecoming bd; }

link source code: https://github.com/hibernate/hibernate-validator/blob/e20c12aa0aba6e2bf21a2da7cefd74d06c2e2710/engine/src/main/java/org/hibernate/validator/internal/constraintvalidators/bv/digitsvalidatorforcharsequence.java

java bean-validation digits jsr

No comments:

Post a Comment