| // $Id: Pattern.java 17620 2009-10-04 19:19:28Z hardy.ferentschik $ |
| /* |
| * JBoss, Home of Professional Open Source Copyright 2009, Red Hat, Inc. and/or |
| * its affiliates, and individual contributors by the @authors tag. See the |
| * copyright.txt in the distribution for a full listing of individual |
| * contributors. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| * use this file except in compliance with the License. You may obtain a copy of |
| * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by |
| * applicable law or agreed to in writing, software distributed under the |
| * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS |
| * OF ANY KIND, either express or implied. See the License for the specific |
| * language governing permissions and limitations under the License. |
| */ |
| // Modified by Google. |
| package javax.validation.constraints; |
| |
| import static java.lang.annotation.ElementType.ANNOTATION_TYPE; |
| import static java.lang.annotation.ElementType.CONSTRUCTOR; |
| import static java.lang.annotation.ElementType.FIELD; |
| import static java.lang.annotation.ElementType.METHOD; |
| import static java.lang.annotation.ElementType.PARAMETER; |
| import static java.lang.annotation.RetentionPolicy.RUNTIME; |
| |
| import java.lang.annotation.Documented; |
| import java.lang.annotation.Retention; |
| import java.lang.annotation.Target; |
| |
| import javax.validation.Constraint; |
| import javax.validation.Payload; |
| |
| /** |
| * The annotated String must match the following regular expression. The regular |
| * expression follows the Java regular expression conventions see |
| * {@link java.util.regex.Pattern}. |
| * |
| * <p> |
| * Accepts String. <code>null</code> elements are considered valid. |
| * |
| * <p> |
| * GWT Modification: Reference to java.util.regex.Pattern are inlined |
| * |
| * @author Emmanuel Bernard |
| */ |
| @Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER}) |
| @Retention(RUNTIME) |
| @Documented |
| @Constraint(validatedBy = {}) |
| public @interface Pattern { |
| /** |
| * @return The regular expression to match. |
| */ |
| String regexp(); |
| |
| /** |
| * @return Array of <code>Flag</code>s considered when resolving the regular |
| * expression. |
| */ |
| Flag[] flags() default {}; |
| |
| /** |
| * @return The error message template. |
| */ |
| String message() default "{javax.validation.constraints.Pattern.message}"; |
| |
| /** |
| * @return The groups the constraint belongs to. |
| */ |
| Class<?>[] groups() default {}; |
| |
| /** |
| * @return The payload associated to the constraint |
| */ |
| Class<? extends Payload>[] payload() default {}; |
| |
| /** |
| * Possible Regexp flags |
| */ |
| public static enum Flag { |
| |
| /** |
| * Enables Unix lines mode |
| * |
| * @see java.util.regex.Pattern#UNIX_LINES |
| */ |
| UNIX_LINES(1), |
| |
| /** |
| * Enables case-insensitive matching |
| * |
| * @see java.util.regex.Pattern#CASE_INSENSITIVE |
| */ |
| CASE_INSENSITIVE(2), |
| |
| /** |
| * Permits whitespace and comments in pattern |
| * |
| * @see java.util.regex.Pattern#COMMENTS |
| */ |
| COMMENTS(4), |
| |
| /** |
| * Enables multiline mode |
| * |
| * @see java.util.regex.Pattern#MULTILINE |
| */ |
| MULTILINE(8), |
| |
| /** |
| * Enables dotall mode |
| * |
| * @see java.util.regex.Pattern#DOTALL |
| */ |
| DOTALL(32), |
| |
| /** |
| * Enables Unicode-aware case folding |
| * |
| * @see java.util.regex.Pattern#UNICODE_CASE |
| */ |
| UNICODE_CASE(64), |
| |
| /** |
| * Enables canonical equivalence |
| * |
| * @see java.util.regex.Pattern#CANON_EQ |
| */ |
| CANON_EQ(128); |
| |
| // JDK flag value |
| private final int value; |
| |
| private Flag(int value) { |
| this.value = value; |
| } |
| |
| /** |
| * @return flag value as defined in {@link java.util.regex.Pattern} |
| */ |
| public int getValue() { |
| return value; |
| } |
| } |
| |
| /** |
| * Defines several <code>@Pattern</code> annotations on the same element |
| * |
| * @see Pattern |
| * |
| * @author Emmanuel Bernard |
| */ |
| @Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER}) |
| @Retention(RUNTIME) |
| @Documented |
| @interface List { |
| Pattern[] value(); |
| } |
| } |