@Override protected Object getServiceObject(Message message) { return ValidationUtils.getResourceInstance(message); }
@Override protected void initializeProvider(InterceptorProvider interceptorProvider, Bus bus) { BeanValidationInInterceptor in = new JAXRSBeanValidationInInterceptor(); JAXRSBeanValidationOutInterceptor out = new JAXRSBeanValidationOutInterceptor(); out.setSupportMultipleValidations(supportMultipleValidations); if (validationProvider != null) { in.setProvider(validationProvider); out.setProvider(validationProvider); } interceptorProvider.getInInterceptors().add(in); interceptorProvider.getOutInterceptors().add(out); }
@Produces public org.apache.cxf.feature.Feature validationFeature() { return new JAXRSBeanValidationFeature(); } }
@Override public Set< Object > getSingletons() { Set<Object> singletons = new HashSet<>(); singletons.add(new JacksonJsonProvider()); singletons.add(new ValidationExceptionMapper()); singletons.add(new JAXRSBeanValidationFeature()); return singletons; }
@Produces public ValidationExceptionMapper validationExceptionMapper() { return new ValidationExceptionMapper(); }
protected void run() { JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean(); sf.setResourceClasses(BookStoreWithValidationPerRequest.class); sf.setProvider(new ValidationExceptionMapper()); sf.setAddress("http://localhost:" + PORT + "/"); sf.setInvoker(new JAXRSBeanValidationInvoker()); sf.create(); }
protected void run() { JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean(); sf.setResourceClasses(BookStoreWithValidation.class); sf.setResourceProvider(BookStoreWithValidation.class, new SingletonResourceProvider(new BookStoreWithValidation())); sf.setProvider(new ValidationExceptionMapper() { @Override public Response toResponse(ValidationException exception) { Response r = super.toResponse(exception); return JAXRSUtils.toResponseBuilder( r.getStatus()).type("application/xml").entity(new Book("Validation", 123L)).build(); } }); sf.setAddress("http://localhost:" + PORT + "/"); BeanValidationInInterceptor in = new JAXRSBeanValidationInInterceptor(); in.setProvider(new BeanValidationProvider(new JAXRSParameterNameProvider())); sf.setInInterceptors(Arrays.< Interceptor< ? extends Message > >asList( in)); sf.setOutInterceptors(Arrays.< Interceptor< ? extends Message > >asList( new JAXRSBeanValidationOutInterceptor())); sf.create(); }
factory.setFeatures(asList(new LoggingFeature(), swaggerFeature())); factory.setBus(cxf()); factory.setInInterceptors(Arrays.< Interceptor< ? extends Message > >asList(new JAXRSBeanValidationInInterceptor())); factory.setOutInterceptors(Arrays.< Interceptor< ? extends Message > >asList(new JAXRSBeanValidationOutInterceptor())); return factory.create();
@Override public Response toResponse(ValidationException exception) { Response r = super.toResponse(exception); return JAXRSUtils.toResponseBuilder( r.getStatus()).type("application/xml").entity(new Book("Validation", 123L)).build(); } });
@Override public Response toResponse(ValidationException exception) { Response.Status errorStatus = Response.Status.INTERNAL_SERVER_ERROR; if (exception instanceof ConstraintViolationException) { StringBuilder responseBody = addMessageToResponse ? new StringBuilder() : null; final ConstraintViolationException constraint = (ConstraintViolationException) exception; for (final ConstraintViolation< ? > violation: constraint.getConstraintViolations()) { String message = buildErrorMessage(violation); if (responseBody != null) { responseBody.append(message).append("\n"); } LOG.log(Level.WARNING, message); } if (!(constraint instanceof ResponseConstraintViolationException)) { errorStatus = Response.Status.BAD_REQUEST; } return buildResponse(errorStatus, responseBody != null ? responseBody.toString() : null); } return buildResponse(errorStatus, addMessageToResponse ? exception.getMessage() : null); }
@Override public Object invoke(Exchange exchange, final Object serviceObject, Method m, List<Object> params) { Message message = JAXRSUtils.getCurrentMessage(); BeanValidationProvider theProvider = getProvider(message); try { if (isValidateServiceObject()) { theProvider.validateBean(serviceObject); } theProvider.validateParameters(serviceObject, m, params.toArray()); Object response = super.invoke(exchange, serviceObject, m, params); if (response instanceof MessageContentsList) { MessageContentsList list = (MessageContentsList)response; if (list.size() == 1) { Object entity = list.get(0); if (entity instanceof Response) { theProvider.validateReturnValue(serviceObject, m, ((Response)entity).getEntity()); } else { theProvider.validateReturnValue(serviceObject, m, entity); } } } return response; } catch (Fault ex) { throw ex; } catch (Throwable ex) { throw new Fault(ex); } }
@Override protected void handleValidation(final Message message, final Object resourceInstance, final Method method, final List<Object> arguments) { super.handleValidation(message, resourceInstance, method, arguments); // Check each parameter final Set<ConstraintViolation<?>> validationErrors = new HashSet<>(); for (int index = 0; index < arguments.size(); index++) { final Parameter parameter = method.getParameters()[index]; if (hasToBeValidated(parameter)) { // This parameter is a not context, path or query parameter validate(arguments.get(index), method, parameter, index, validationErrors); } } // Check the veto if (!validationErrors.isEmpty()) { message.put(FaultListener.class.getName(), new NoOpFaultListener()); throw new ConstraintViolationException(validationErrors); } }
@Override public Set< Object > getSingletons() { Set<Object> singletons = new HashSet<>(); singletons.add(new JacksonJsonProvider()); singletons.add(new ValidationExceptionMapper()); singletons.add(new JAXRSBeanValidationFeature()); return singletons; }
@Produces public ValidationExceptionMapper validationExceptionMapper() { return new ValidationExceptionMapper(); }
@Produces public org.apache.cxf.feature.Feature validationFeature() { return new JAXRSBeanValidationFeature(); } }
builder = builder(validationEM.toResponse((ValidationException) ex)). header(RESTHeaders.ERROR_CODE, ClientExceptionType.RESTValidation.name()). header(RESTHeaders.ERROR_INFO, ClientExceptionType.RESTValidation.getInfoHeaderValue(
@Override protected Object getServiceObject(Message message) { return ValidationUtils.getResourceInstance(message); }
/** * @see {@link javax.ws.rs.core.Application#getSingletons()} */ @Override public Set<Object> getSingletons() { log.error("Osgiliath: registering cxf servlet"); Swagger2Feature feature = new Swagger2Feature(); // customize some of the properties feature.setBasePath("/api"); feature.setResourcePackage(HelloServiceJaxRS.class.getPackage().getName()); return Sets.<Object> newHashSet(helloService, swagger, new JAXBElementProvider<Object>(), // new ExceptionXmlMapper(), new SwaggerSerializers(), new ValidationExceptionMapper(), // new JAXRSBeanValidationInInterceptor(), // new JAXRSBeanValidationOutInterceptor(), new JacksonJsonProvider()); } }