Hi
A bit complicated to help without context.
How do you package your app? Is there any web.xml?
Do you have any sample project in github?

On Sat, Oct 13, 2018 at 2:19 AM Matt Campbell <mc...@hotmail.com> wrote:

> Please forgive me if this has been fielded before.  I can't imagine it
> hasn't.  I am trying to implement a custom validator in a REST services app
> using Jetty as the server.  The validator annotations despite dependencies
> being declared simply are not being initialized at all.  This is driving me
> crazy.  I have scoured the web for info about this but cannot find anything
> that addresses it.
>
> My .pom file includes:
>
> ---
> .
> .
> .
>         <dependency>
>             <groupId>javax.validation</groupId>
>             <artifactId>validation-api</artifactId>
>             <version>2.0.1.Final</version>
>             <scope>provided</scope>
>         </dependency>
>         <dependency>
>             <groupId>org.hibernate.validator</groupId>
>             <artifactId>hibernate-validator</artifactId>
>             <version>6.0.13.Final</version>
>             <scope>provided</scope>
>         </dependency>
> .
> .
> .
> ---
>
> Also under <plugins> I have:
>
> ---
> .
> .
> .
> <plugin>
>                 <groupId>org.eclipse.jetty</groupId>
>                 <artifactId>jetty-maven-plugin</artifactId>
>                 <version>${jetty-maven-plugin-version}</version>
>                 <configuration>
>                     <jvmArgs>-Xmx2048m -Xms512m
> -XX:MaxPermSize=512m</jvmArgs>
>                     <httpConnector>
>                         <port>9086</port>
>                     </httpConnector>
>                     <stopPort>9968</stopPort>
>                     <stopKey>jetty-stop</stopKey>
>                     <stopWait>10</stopWait>
>                     <webApp>
>                         <contextPath>/customer</contextPath>
>                     </webApp>
>                     <useTestScope>true</useTestScope>
>                 </configuration>
>                 <dependencies>
>                     <dependency>
>                         <groupId>javax.validation</groupId>
>                         <artifactId>validation-api</artifactId>
>                         <version>2.0.1.Final</version>
>                     </dependency>
>                     <dependency>
>                         <groupId>org.hibernate.validator</groupId>
>                         <artifactId>hibernate-validator</artifactId>
>                         <version>6.0.13.Final</version>
>                     </dependency>
>                 </dependencies>
>             </plugin>
> .
> .
> .
> ---
>
> Just to try to get it working I have a service that takes two URL
> parameters and checks to see if they are the same.  If not, the validation
> fails.  The validator interface class:
>
> ----
>
> package com.xxx.customer.validator;
>
> import java.lang.annotation.Documented;
> import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
> import static java.lang.annotation.ElementType.METHOD;
> import static java.lang.annotation.ElementType.CONSTRUCTOR;
>
> import static java.lang.annotation.RetentionPolicy.RUNTIME;
> import java.lang.annotation.Retention;
> import java.lang.annotation.Target;
>
> import javax.validation.Constraint;
> import javax.validation.Payload;
>
> @Target({METHOD, CONSTRUCTOR, ANNOTATION_TYPE})
> @Retention(RUNTIME)
> @Constraint(validatedBy = Countries2ValidatorImpl.class)
> @Documented
> public @interface Countries2Validator {
>     String message() default "The two country code values don't match";
>     Class<?>[] groups() default {};
>     Class<? extends Payload>[] payload() default {};
> }
>
> ---
>
> The validator impl:
>
> ---
>
> package com.xxx.customer.validator;
>
> import javax.validation.ConstraintValidator;
> import javax.validation.ConstraintValidatorContext;
> import javax.validation.constraintvalidation.SupportedValidationTarget;
> import javax.validation.constraintvalidation.ValidationTarget;
>
> @SupportedValidationTarget(ValidationTarget.PARAMETERS)
> public class Countries2ValidatorImpl implements
> ConstraintValidator<Countries2Validator, Object[]> {
>
>     @Override
>     public void initialize(Countries2Validator countries2Validator) {
>     }
>
>     @Override
>     public boolean isValid(Object[] values, ConstraintValidatorContext
> constraintValidatorContext) {
>         String countryCode = (String) values[0];
>         String anotherValue = (String) values[1];
>         return countryCode.equals(anotherValue);
>     }
> }
>
> ---
>
> Service interface class:
>
> ---
>
> package com.xxx.customer.jaxrs.countries;
>
> import javax.ws.rs.GET;
> import javax.ws.rs.Path;
> import javax.ws.rs.PathParam;
> import javax.ws.rs.core.Response;
> import com.xxx.api.address.v1.Countries;
> import com.xxx.api.address.v1.Country;
> import com.xxx.customer.validator.Countries2Validator;
>
> public interface CountriesRS {
>     @Path("/{countryCode}/{anotherValue}")
>     @GET
>     @Countries2Validator
>     Response getCountryByCode2(@PathParam("countryCode") String
> countryCode, @PathParam("anotherValue") String anotherValue);
> }
>
> ---
>
> Srvc impl class:
>
> ---
>
> package com.xxx.customer.jaxrs.countries;
>
> import org.springframework.stereotype.Component;
> import com.xxx.customer.validator.Countries2Validator;
> import javax.ws.rs.GET;
> import javax.ws.rs.Path;
> import javax.ws.rs.core.Response;
>
> @Component
> public class CountriesRSImpl implements CountriesRS {
>
>     @Override
>     @Path("/{countryCode}/{anotherValue}")
>     @GET
>     @Countries2Validator
>     public Response getCountryByCode2(String countryCode, String
> anotherValue) {
>         return Response.ok("OK").build();
>     }
> }
>
> ---
>
> I am calling the service using Postman.  The URL is:
> http://localhost:9086/customer/v1/countries/UaS/USA
>
> I get a 200 response instead of an error.  I have added System.out()s to
> initialize() etc. and nothing is printed to console.  This is how I know
> the validator isn't even being initialized much less called.
> _______________________________________________
> jetty-users mailing list
> jetty-users@eclipse.org
> To change your delivery options, retrieve your password, or unsubscribe
> from this list, visit
> https://dev.eclipse.org/mailman/listinfo/jetty-users



-- 
Olivier
_______________________________________________
jetty-users mailing list
jetty-users@eclipse.org
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users

Reply via email to