diff --git a/src/org/kar/archidata/annotation/checker/CheckForeignKey.java b/src/org/kar/archidata/annotation/checker/CheckForeignKey.java index cc393af..79cc9b8 100644 --- a/src/org/kar/archidata/annotation/checker/CheckForeignKey.java +++ b/src/org/kar/archidata/annotation/checker/CheckForeignKey.java @@ -9,7 +9,15 @@ import jakarta.validation.Constraint; import jakarta.validation.Payload; @Constraint(validatedBy = CheckForeignKeyValidator.class) -@Target({ ElementType.TYPE, ElementType.METHOD, ElementType.FIELD }) +@Target({ ElementType.TYPE, // + ElementType.METHOD, // + ElementType.FIELD, // + ElementType.ANNOTATION_TYPE, // + ElementType.CONSTRUCTOR, // + ElementType.PARAMETER, // + ElementType.TYPE_USE, // +}) + @Retention(RetentionPolicy.RUNTIME) public @interface CheckForeignKey { Class target(); diff --git a/src/org/kar/archidata/annotation/checker/CheckForeignKeyValidator.java b/src/org/kar/archidata/annotation/checker/CheckForeignKeyValidator.java index 4ba36b2..de9146b 100644 --- a/src/org/kar/archidata/annotation/checker/CheckForeignKeyValidator.java +++ b/src/org/kar/archidata/annotation/checker/CheckForeignKeyValidator.java @@ -1,14 +1,15 @@ package org.kar.archidata.annotation.checker; -import java.util.Collection; - import org.kar.archidata.dataAccess.DataAccess; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import jakarta.validation.ConstraintValidator; import jakarta.validation.ConstraintValidatorContext; public class CheckForeignKeyValidator implements ConstraintValidator { Class target = null; + private final static Logger LOGGER = LoggerFactory.getLogger(CheckForeignKeyValidator.class); @Override public void initialize(final CheckForeignKey annotation) { @@ -17,26 +18,18 @@ public class CheckForeignKeyValidator implements ConstraintValidator tmpCollection) { - final Object[] elements = tmpCollection.toArray(); - for (final Object element : elements) { - if (element == null) { - continue; - } - try { - final long count = DataAccess.count(this.target, element); - if (count != 1) { - return false; - - } - } catch (final Exception e) { - // TODO ... - return false; - } + try { + final long count = DataAccess.count(this.target, value); + if (count != 1) { + return false; } + } catch (final Exception e) { + LOGGER.error("Fail to access to the DB"); + context.buildConstraintViolationWithTemplate("fail to access on the DB").addConstraintViolation(); + return false; } return true; }