Hi Guillaume

Generally speaking, in GWT you would like to have the constraint violations 
thrown the Editor framework on the client side. But there are of course some 
constraint violations that can only be checked server-side, e.g. unique 
violations that need a query to check the validity.

For these cases, I do exactly what you are suggesting. My server-side classes 
throw a custom  ConstraintViolationException which I intercept in my 
StatusService. When the StatusService sees a ConstraintViolationException, I 
return a Status.CLIENT_ERROR_BAD_REQUEST to the client and I serialize the 
actual violation in the payload. Here's a snippet of my StatusService :

if (cause instanceof ConstraintViolationsException) {
 ConstraintViolationsException e = (ConstraintViolationsException) cause;
 String msg = "";
 for (ConstraintViolation<DomainResource> violation : e.getViolations()) {
   msg += violation.getMessageTemplate();
   msg += ";";
 }
 getContext().getAttributes().put(STRING_REPRESENTATION, msg);
 ret = new Status(Status.CLIENT_ERROR_BAD_REQUEST, cause, msg);
}                                       + "> at resource <" + 
resource.getReference() + ">");



In my GWT client, the onFailure checks the response code and when it sees 
CLIENT_ERROR_BAD_REQUEST, it deserializes the payload into constraint 
violations and emits them on the event bus. Any interested widget can then 
respond by displaying the error.

Hope this helps.

Koen

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=3071375

Reply via email to