Example usage for org.springframework.messaging.handler.annotation.support MethodArgumentNotValidException MethodArgumentNotValidException

List of usage examples for org.springframework.messaging.handler.annotation.support MethodArgumentNotValidException MethodArgumentNotValidException

Introduction

In this page you can find the example usage for org.springframework.messaging.handler.annotation.support MethodArgumentNotValidException MethodArgumentNotValidException.

Prototype

public MethodArgumentNotValidException(Message<?> message, MethodParameter parameter,
        BindingResult bindingResult) 

Source Link

Document

Create a new instance with the invalid MethodParameter and a org.springframework.validation.BindingResult .

Usage

From source file:ch.rasc.wampspring.method.PayloadArgumentResolver.java

@Override
public Object resolveArgument(MethodParameter param, Message<?> message) throws Exception {
    Payload ann = param.getParameterAnnotation(Payload.class);
    if (ann != null && StringUtils.hasText(ann.value())) {
        throw new IllegalStateException("@Payload SpEL expressions not supported by this resolver");
    }/* w w w  .  j  av  a 2s  . c  o m*/

    Object payload = message.getPayload();
    if (isEmptyPayload(payload)) {
        if (ann == null || ann.required()) {
            String paramName = getParameterName(param);
            BindingResult bindingResult = new BeanPropertyBindingResult(payload, paramName);
            bindingResult.addError(new ObjectError(paramName, "@Payload param is required"));
            throw new MethodArgumentNotValidException(message, param, bindingResult);
        }
        return null;
    }

    Class<?> targetClass = param.getParameterType();
    if (ClassUtils.isAssignable(targetClass, payload.getClass())) {
        validate(message, param, payload);
        return payload;
    }

    payload = this.methodParameterConverter.convert(param, message.getPayload());
    if (payload == null) {
        throw new MessageConversionException(message,
                "No converter found to convert to " + targetClass + ", message=" + message);
    }

    validate(message, param, payload);
    return payload;
}

From source file:com.kinglcc.spring.jms.core.Jackson2PayloadArgumentResolver.java

private void bindEmptyPayloadError(MethodParameter parameter, Message<?> message, Object payload) {
    String paramName = getParameterName(parameter);
    BindingResult bindingResult = new BeanPropertyBindingResult(payload, paramName);
    bindingResult.addError(new ObjectError(paramName, "@Payload param is required"));
    throw new MethodArgumentNotValidException(message, parameter, bindingResult);
}

From source file:ch.rasc.wampspring.method.PayloadArgumentResolver.java

protected void validate(Message<?> message, MethodParameter parameter, Object target) {
    if (this.validator == null) {
        return;/* w ww  .  j a va  2 s.  c  o  m*/
    }
    for (Annotation ann : parameter.getParameterAnnotations()) {
        Validated validatedAnn = AnnotationUtils.getAnnotation(ann, Validated.class);
        if (validatedAnn != null || ann.annotationType().getSimpleName().startsWith("Valid")) {
            Object hints = validatedAnn != null ? validatedAnn.value() : AnnotationUtils.getValue(ann);
            Object[] validationHints = hints instanceof Object[] ? (Object[]) hints : new Object[] { hints };
            BeanPropertyBindingResult bindingResult = new BeanPropertyBindingResult(target,
                    getParameterName(parameter));
            if (!ObjectUtils.isEmpty(validationHints) && this.validator instanceof SmartValidator) {
                ((SmartValidator) this.validator).validate(target, bindingResult, validationHints);
            } else {
                this.validator.validate(target, bindingResult);
            }
            if (bindingResult.hasErrors()) {
                throw new MethodArgumentNotValidException(message, parameter, bindingResult);
            }
            break;
        }
    }
}

From source file:org.springframework.messaging.handler.annotation.reactive.PayloadMethodArgumentResolver.java

@Nullable
private Consumer<Object> getValidator(Message<?> message, MethodParameter parameter) {
    if (this.validator == null) {
        return null;
    }/*w  w  w  .j  a  v  a2  s . c o m*/
    for (Annotation ann : parameter.getParameterAnnotations()) {
        Validated validatedAnn = AnnotationUtils.getAnnotation(ann, Validated.class);
        if (validatedAnn != null || ann.annotationType().getSimpleName().startsWith("Valid")) {
            Object hints = (validatedAnn != null ? validatedAnn.value() : AnnotationUtils.getValue(ann));
            Object[] validationHints = (hints instanceof Object[] ? (Object[]) hints : new Object[] { hints });
            String name = Conventions.getVariableNameForParameter(parameter);
            return target -> {
                BeanPropertyBindingResult bindingResult = new BeanPropertyBindingResult(target, name);
                if (!ObjectUtils.isEmpty(validationHints) && this.validator instanceof SmartValidator) {
                    ((SmartValidator) this.validator).validate(target, bindingResult, validationHints);
                } else {
                    this.validator.validate(target, bindingResult);
                }
                if (bindingResult.hasErrors()) {
                    throw new MethodArgumentNotValidException(message, parameter, bindingResult);
                }
            };
        }
    }
    return null;
}