cxf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From charlie <char...@beebell.com>
Subject Re: jira issue #5401; catching ConstraintViolationException; support for "message" parameter in constraint annotations
Date Mon, 03 Mar 2014 00:44:37 GMT
I downloaded CXF 3.0 milestone2 and re-built my project against it.

As you said, exceptions that are thrown by validation-interceptors are
now propagated into the ValidationExceptionMapper (configured as a
provider in my application context).

However, when I reconstitute the Response with my custom-entity,
the response-body is empty!  Why?  See code below.

/@javax.ws.rs.ext.Provider
public class CustomExceptionMapper extends ValidationExceptionMapper {

    private final Log log = LogFactory.getLog(this.getClass());

    @Override
    public Response toResponse(javax.validation.ValidationException
exception) {
        if (exception instanceof ConstraintViolationException) {
            Map<String, String> violations = new HashMap<String, String>();
            ConstraintViolationException cev =
(ConstraintViolationException) exception;
            for (ConstraintViolation cv : cev.getConstraintViolations()) {
                log.info("CONSTRAINT VIOLATION: " + cv.getMessage());
                Iterator<Node> nodeIter = cv.getPropertyPath().iterator();
                Node parameter = nodeIter.next();
                violations.put("parameter", parameter.getName());
                violations.put("error", cv.getMessage());
            }
            if (violations.size() > 0) {
                return
Response.status(Status.PRECONDITION_FAILED).entity(violations).type(MediaType.APPLICATION_JSON).build();
            }
        }
        return super.toResponse(exception);
    }
}/


Sergey Beryozkin wrote
> Specifically, in 3.0.0-milestone1, if the exception is initiated from 
> the native CXF interceptor (not JAX-RS filter) then as far as I recall 
> some extra configuration will have to be done to get the JAX-RS 
> exception mappers used.
> In 3.0.0-milestone2 it will just work; alternatively use the bean 
> interceptors registered as JAX-RS 2.0 filters:
> 
> http://cxf.apache.org/docs/validationfeature.html
> 
> HTH
> Sergey
> 
> On 25/02/14 21:58, Sergey Beryozkin wrote:
>> Hi
>> On 25/02/14 17:51, Charlie Read wrote:
>>> In browsing issue #5401,
>>>
>>>      https://issues.apache.org/jira/browse/CXF-5401
>>>
>>> it appears as of Nov, 2014, work was still being done on exceptions
>>> triggered by violations of validation constraints (ie, handling
>>> ConstraintViolationException).
>>>
>>> Here are my questions:
>>>
>>> * Does the current violation-handler propagate up the "message"
>>> encoded in
>>> the
>>> constraint annotation?  IE, does the message reach the consumer of the
>>> API?
>>>
>>> For example, if I have:
>>>
>>>      @Get
>>>      ...
>>>      public Object getSomething()(@QueryParam("color") @NotNull(message
>>> =
>>> "color should be specified") String color) {
>>>      ...
>>>      }
>>>
>>> will the message "color should be specified" be included in the response
>>> body?
>>
>> No, it will be logged only
>>
>>>
>>> * If there is a constraint violation (Eg, in above example, if
>>> color-parameter is null), where is the
>>> ConstraintViolationException handled? Where can it be intercepted and
>>> custom-processed?
>>>
>>> I provisioned a ValidationExceptionMapper (using the CXF 3.0-milestone1
>>> release), but when
>>> I triggered a ConstraintViolationException, the toResponse() method
>>> could
>>> not detect it.
>>>
>>
>> How did you register it ?
>>
>>> * I also noticed in issue #5401 that the logic for returned exceptions
>>> is
>>> in flux.
>>>
>>> Can someone clarify where the logic stands, and specifically what we
>>> should
>>> expect in terms of support for message-propagation back to API consumers
>>> (in the event of ConstraintViolationExceptions)?
>>>
>> I think it is all done as recommended by the JAX-RS 2.0 spec; however
>> please try 3.0.0-milestone2 - there might've been some minor changes
>>
>> Cheers, Sergey
>>
>>> Thanks,
>>> Charlie
>>>
>>
>>
> 
> 
> -- 
> Sergey Beryozkin
> 
> Talend Community Coders
> http://coders.talend.com/
> 
> Blog: http://sberyozkin.blogspot.com





--
View this message in context: http://cxf.547215.n5.nabble.com/Re-jira-issue-5401-catching-ConstraintViolationException-support-for-message-parameter-in-constraints-tp5740482p5740680.html
Sent from the cxf-user mailing list archive at Nabble.com.

Mime
View raw message