1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.jclouds.http.handlers;
20
21 import static org.jclouds.http.HttpUtils.releasePayload;
22
23 import java.io.IOException;
24
25 import javax.inject.Singleton;
26
27 import org.jclouds.http.HttpCommand;
28 import org.jclouds.http.HttpErrorHandler;
29 import org.jclouds.http.HttpResponse;
30 import org.jclouds.http.HttpResponseException;
31 import org.jclouds.util.Strings2;
32
33
34
35
36
37 @Singleton
38 public class CloseContentAndSetExceptionErrorHandler implements HttpErrorHandler {
39
40 public void handleError(HttpCommand command, HttpResponse from) {
41 String content;
42 try {
43 content = from.getPayload() != null ? Strings2.toStringAndClose(from.getPayload().getInput()) : null;
44 command.setException(new HttpResponseException(command, from, content));
45 } catch (IOException e) {
46 command.setException(new HttpResponseException(command, from));
47 } finally {
48 releasePayload(from);
49 }
50 }
51 }