All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.hibernate.validator.constraints.CodePointLength Maven / Gradle / Ivy

There is a newer version: 8.0.1.Final
Show newest version
/*
 * Hibernate Validator, declare and validate application constraints
 *
 * License: Apache License, Version 2.0
 * See the license.txt file in the root directory or .
 */
package org.hibernate.validator.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.ElementType.TYPE_USE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

import java.lang.annotation.Documented;
import java.lang.annotation.Repeatable;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import java.text.Normalizer;

import javax.validation.Constraint;
import javax.validation.Payload;

import org.hibernate.validator.constraints.CodePointLength.List;


/**
 * Validate that the code point length of a character sequence is between min and max included.
 * 

* It is possible to validate a normalized value by setting the normalization strategy. * * @author Kazuki Shimizu * @version 6.0.3 */ @Documented @Constraint(validatedBy = { }) @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE }) @Retention(RUNTIME) @Repeatable(List.class) public @interface CodePointLength { int min() default 0; int max() default Integer.MAX_VALUE; NormalizationStrategy normalizationStrategy() default NormalizationStrategy.NONE; String message() default "{org.hibernate.validator.constraints.CodePointLength.message}"; Class[] groups() default { }; Class[] payload() default { }; /** * Defines several {@code @CodePointLength} annotations on the same element. */ @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE }) @Retention(RUNTIME) @Documented public @interface List { CodePointLength[] value(); } /** * Strategy for normalization. * * @see Normalizer * @see Normalizer.Form */ enum NormalizationStrategy { /** * No normalization. */ NONE(null), /** * Normalization by canonical decomposition. */ NFD(Normalizer.Form.NFD), /** * Normalization by canonical decomposition, followed by canonical composition. */ NFC(Normalizer.Form.NFC), /** * Normalization by compatibility decomposition. */ NFKD(Normalizer.Form.NFKD), /** * Normalization by compatibility decomposition, followed by canonical composition. */ NFKC(Normalizer.Form.NFKC); private final Normalizer.Form form; NormalizationStrategy(Normalizer.Form form) { this.form = form; } /** * Normalize a specified character sequence. * @param value target value * @return normalized value */ public CharSequence normalize(CharSequence value) { if ( this.form == null || value == null || value.length() == 0 ) { return value; } return Normalizer.normalize( value, this.form ); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy