/**
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) ({{{generatorVersion}}}).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
package {{basePackage}};

import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.component.bean.validator.BeanValidationException;
import org.springframework.stereotype.Component;
{{#jackson}}
import com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException;{{/jackson}}

@Component("{{camelValidationErrorProcessor}}")
public class ValidationErrorProcessor implements Processor {

    @Override
    public void process(Exchange exchange) throws Exception {
        Exception fault = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class);
        int httpStatusCode = 500;
        if (fault instanceof BeanValidationException) {
            httpStatusCode = 400;
        }
        {{#jackson}}
        if (fault instanceof UnrecognizedPropertyException) {
            httpStatusCode = 400;
        }
        {{/jackson}}
        exchange.getIn().setHeader(Exchange.HTTP_RESPONSE_CODE, httpStatusCode);
        exchange.getIn().setBody(fault.getMessage());
    }
}