Java tutorial
/* * Hibernate Validator, declare and validate application constraints * * License: Apache License, Version 2.0 See the license.txt file in the root directory or * <http://www.apache.org/licenses/LICENSE-2.0>. */ package org.hibernate.validator.internal.constraintvalidators.bv; import com.google.gwt.regexp.shared.MatchResult; import com.google.gwt.regexp.shared.RegExp; import org.hibernate.validator.internal.util.logging.Log; import org.hibernate.validator.internal.util.logging.LoggerFactory; import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext; import javax.validation.constraints.Pattern; import javax.validation.constraints.Pattern.Flag; /** * pattern validator. * * @author Hardy Ferentschik * @author Manfred Tremmel - GWT port */ public class PatternValidator implements ConstraintValidator<Pattern, CharSequence> { private static final Log LOG = LoggerFactory.make(); // NOPMD private RegExp pattern = null; @Override public void initialize(final Pattern parameters) { final Pattern.Flag[] flags = parameters.flags(); final StringBuilder flagString = new StringBuilder(); for (final Pattern.Flag flag : flags) { flagString.append(this.toString(flag)); } try { this.pattern = RegExp.compile(parameters.regexp(), flagString.toString()); } catch (final RuntimeException e) { throw LOG.getInvalidRegularExpressionException(e); } } @Override public boolean isValid(final CharSequence value, final ConstraintValidatorContext constraintValidatorContext) { if (value == null || this.pattern == null) { return true; } final MatchResult match = this.pattern.exec(value.toString()); if (match == null) { return false; } // Must match the entire string return match.getGroup(0).length() == value.length(); } private final String toString(final Flag pflag) { String value; switch (pflag) { case CASE_INSENSITIVE: case UNICODE_CASE: value = "i"; break; case MULTILINE: value = "m"; break; default: throw LOG.getIllegalArgumentException(pflag + " is not a suppoted gwt Pattern (RegExp) flag"); } return value; } }