package br.com.caelum.restfulie.feature; import br.com.caelum.restfulie.Response; import br.com.caelum.restfulie.http.error.BadRequestException; import br.com.caelum.restfulie.http.error.ClientException; import br.com.caelum.restfulie.http.error.ConflictException; import br.com.caelum.restfulie.http.error.ForbiddenException; import br.com.caelum.restfulie.http.error.GoneException; import br.com.caelum.restfulie.http.error.MethodNotAllowedException; import br.com.caelum.restfulie.http.error.NotFoundException; import br.com.caelum.restfulie.http.error.NotImplementedException; import br.com.caelum.restfulie.http.error.PreconditionFailedException; import br.com.caelum.restfulie.http.error.ProxyAuthenticationRequiredException; import br.com.caelum.restfulie.http.error.RedicetionException; import br.com.caelum.restfulie.http.error.ServerException; import br.com.caelum.restfulie.http.error.UnauthorizedException; import br.com.caelum.restfulie.http.error.UnknowCodeException; import br.com.caelum.restfulie.request.ResponseChain; /** * Instead of returning the response throwns an exception. * * @author Jose Donizetti */ public class ThrowError implements ResponseFeature { public Response process(ResponseChain responseChain, Response response) { int code = response.getCode(); if (code >= 100 && code <= 299) { return responseChain.next(response); } // 300 range if (code >= 300 && code <= 399) { throw new RedicetionException("Http error " + code + " when executing request"); } if (code == 400) { throw new BadRequestException("Http error " + code + " when executing request"); } if (code == 401) { throw new UnauthorizedException("Http error " + code + " when executing request"); } if (code == 403) { throw new ForbiddenException("Http error " + code + " when executing request"); } if (code == 404) { throw new NotFoundException("Http error " + code + " when executing request"); } if (code == 405) { throw new MethodNotAllowedException("Http error " + code + " when executing request"); } if (code == 407) { throw new ProxyAuthenticationRequiredException("Http error " + code + " when executing request"); } if (code == 409) { throw new ConflictException("Http error " + code + " when executing request"); } if (code == 410) { throw new GoneException("Http error " + code + " when executing request"); } if (code == 412) { throw new PreconditionFailedException("Http error " + code + " when executing request"); } if (code == 402 || code == 406 || code == 408 || code == 411 || (code >= 413 && code <= 499)) { throw new ClientException("Http error " + code + " when executing request"); } if (code == 501) { throw new NotImplementedException("Http error " + code + " when executing request"); } if (code == 500 || (code >= 502 && code <= 599)) { throw new ServerException("Http error " + code + " when executing request"); } throw new UnknowCodeException("http erro"); } }