001/* Copyright (C) 2014 konik.io 002 * 003 * This file is part of the Konik library. 004 * 005 * The Konik library is free software: you can redistribute it and/or modify 006 * it under the terms of the GNU Affero General Public License as 007 * published by the Free Software Foundation, either version 3 of the 008 * License, or (at your option) any later version. 009 * 010 * The Konik library is distributed in the hope that it will be useful, 011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 013 * GNU Affero General Public License for more details. 014 * 015 * You should have received a copy of the GNU Affero General Public License 016 * along with the Konik library. If not, see <http://www.gnu.org/licenses/>. 017 */ 018package io.konik.validator.annotation; 019 020import static java.lang.annotation.ElementType.ANNOTATION_TYPE; 021import static java.lang.annotation.ElementType.CONSTRUCTOR; 022import static java.lang.annotation.ElementType.FIELD; 023import static java.lang.annotation.ElementType.METHOD; 024import static java.lang.annotation.ElementType.PARAMETER; 025import static java.lang.annotation.RetentionPolicy.RUNTIME; 026 027import java.lang.annotation.Documented; 028import java.lang.annotation.Retention; 029import java.lang.annotation.Target; 030 031import javax.validation.Constraint; 032import javax.validation.Payload; 033import javax.validation.ReportAsSingleViolation; 034import javax.validation.constraints.NotNull; 035import javax.validation.constraints.Size; 036 037/** 038 * = The NotEmpty Annotation 039 * 040 * Checks that the annotated +string+, +collection+, +map+ or +array+ is not +null+ or empty. 041 */ 042@Documented 043@Constraint(validatedBy = {}) 044@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER }) 045@Retention(RUNTIME) 046@ReportAsSingleViolation 047@NotNull 048@Size(min = 1) 049public @interface NotEmpty { 050 051 /** 052 * Message. 053 * 054 * @return the string 055 */ 056 String message() default "{io.konik.validation.constraints.NotEmpty.message}"; 057 058 /** 059 * Groups. 060 * 061 * @return the class<?>[] 062 */ 063 Class<?>[] groups() default {}; 064 065 /** 066 * Payload. 067 * 068 * @return the class<? extends payload>[] 069 */ 070 Class<? extends Payload>[] payload() default {}; 071 072 /** 073 * Defines several {@code @NotEmpty} annotations on the same element. 074 */ 075 @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER }) 076 @Retention(RUNTIME) 077 @Documented 078 public @interface List { 079 080 /** 081 * Value. 082 * 083 * @return the not empty[] 084 */ 085 NotEmpty[] value(); 086 } 087}