I had a lot of demands for regexp support and since there is a need for string matching in the built-in constraints...

http://opensource.atlassian.com/projects/hibernate/browse/HV-121

I replaced the bitwise guru flags approach with an enum
@Pattern( regexp = ".*", flags = { Pattern.Flag.CANON_EQ })
String name;

/**
* The annotated String must match the following regular expression.
* The regular expression follows the Java regular expression conventions
* see {...@link java.util.regex.Pattern}.
*
* Accepts String.
*
* @author Emmanuel Bernard
*
*/
@Target({ METHOD, FIELD, ANNOTATION_TYPE })
@Retention(RUNTIME)
@Documented
public @interface Pattern {
        /**
         * regular expression to match
         */
        String regexp();

        /**
         * Flags considered when resolving the regular expression
         */
        Flag[] flags() default {};

        /**
         * error message template
         */
        String message() default "{validator.past}";

        /**
         * groups the constraint belongs to
         */
        Class<?>[] groups() default { };

        /**
         * Possible Regexp flags
         */
        public static enum Flag {
                /**
                 * Enables Unix lines mode
                 * @see java.util.regex.Pattern#UNIX_LINES
                 */
                UNIX_LINES,

                /**
                 * Enables case-insensitive matching
                 * @see java.util.regex.Pattern#CASE_INSENSITIVE
                 */
                CASE_INSENSITIVE,

                /**
                 * Permits whitespace and comments in pattern
                 * @see java.util.regex.Pattern#COMMENTS
                 */
                COMMENTS,

                /**
                 * Enables multiline mode
                 * @see java.util.regex.Pattern#MULTILINE
                 */
                MULTILINE,

                /**
                 * Enables dotall mode
                 * @see java.util.regex.Pattern#DOTALL
                 */
                DOTALL,

                /**
                 * Enables Unicode-aware case folding
                 * @see java.util.regex.Pattern#UNICODE_CASE
                 */
                UNICODE_CASE,

                /**
                 * Enables canonical equivalence
                 * @see java.util.regex.Pattern#CANON_EQ
                 */
                CANON_EQ,
        }
}
_______________________________________________
hibernate-dev mailing list
hibernate-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev

Reply via email to