package org.jboss.resteasy.client.core.extractors; import org.jboss.resteasy.client.core.BaseClientResponse; import org.jboss.resteasy.client.core.ClientErrorInterceptor; import java.io.IOException; import java.io.InputStream; import java.util.List; /** * This class handles client errors (of course...). * * @author Solomon.Duskis */ // TODO: expand this class for more robust, complicated error handling public class ClientErrorHandler { private List<ClientErrorInterceptor> interceptors; public ClientErrorHandler(List<ClientErrorInterceptor> interceptors) { this.interceptors = interceptors; } @SuppressWarnings("unchecked") public void clientErrorHandling(BaseClientResponse clientResponse, RuntimeException e) { for (ClientErrorInterceptor handler : interceptors) { try { // attempt to reset the stream in order to provide a fresh stream // to each ClientErrorInterceptor -- failing to reset the stream // could mean that an unusable stream will be passed to the // interceptor InputStream stream = clientResponse.getStreamFactory().getInputStream(); if (stream != null) { stream.reset(); } } catch (IOException e1) { // eat this exception since it's not really relevant for the client // response } handler.handle(clientResponse); } throw e; } }