Pass values using annotation

193 Views Asked by At

I am trying to create an annotation and pass a variable as parameter to the impl method. Below is my code to create an annotation.

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import javax.validation.Constraint;

@Documented
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = Loggable1Impl.class)
public @interface Loggable1 {
    String message() default "Invalid userId";
}

Below is my impl class

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

public class Loggable1Impl implements ConstraintValidator<Loggable, String> {
    
    public void initialize(Loggable contactNumber) {
    }

    public boolean isValid(String generatedUserId, ConstraintValidatorContext cxt) {
        System.out.println("generatedUserId in Loggable1 :: " + generatedUserId);
        return true;
    }
}

I am trying to use it in a spring-boot application

@CrossOrigin(origins = "*", allowedHeaders = "*")
@PostMapping("/api1/{user}")
public Topic regiterUser(@PathVariable String user ) {
    String generatedUserId = user + "1";
    return generatedUserId ;
}

I want to pass generatedUserId to my annotaion Loggable1

Please assist

0

There are 0 best solutions below