1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.jetty.client;
20
21 import java.util.ArrayList;
22 import java.util.List;
23
24 import org.eclipse.jetty.client.api.Request;
25 import org.eclipse.jetty.client.api.Response;
26 import org.eclipse.jetty.http.HttpFields;
27 import org.eclipse.jetty.http.HttpVersion;
28
29 public class HttpResponse implements Response
30 {
31 private final HttpFields headers = new HttpFields();
32 private final Request request;
33 private final List<ResponseListener> listeners;
34 private HttpVersion version;
35 private int status;
36 private String reason;
37
38 public HttpResponse(Request request, List<ResponseListener> listeners)
39 {
40 this.request = request;
41 this.listeners = listeners;
42 }
43
44 @Override
45 public Request getRequest()
46 {
47 return request;
48 }
49
50 public HttpVersion getVersion()
51 {
52 return version;
53 }
54
55 public HttpResponse version(HttpVersion version)
56 {
57 this.version = version;
58 return this;
59 }
60
61 @Override
62 public int getStatus()
63 {
64 return status;
65 }
66
67 public HttpResponse status(int status)
68 {
69 this.status = status;
70 return this;
71 }
72
73 public String getReason()
74 {
75 return reason;
76 }
77
78 public HttpResponse reason(String reason)
79 {
80 this.reason = reason;
81 return this;
82 }
83
84 @Override
85 public HttpFields getHeaders()
86 {
87 return headers;
88 }
89
90 @Override
91 public <T extends ResponseListener> List<T> getListeners(Class<T> type)
92 {
93 ArrayList<T> result = new ArrayList<>();
94 for (ResponseListener listener : listeners)
95 if (type == null || type.isInstance(listener))
96 result.add((T)listener);
97 return result;
98 }
99
100 @Override
101 public boolean abort(Throwable cause)
102 {
103 return request.abort(cause);
104 }
105
106 @Override
107 public String toString()
108 {
109 return String.format("%s[%s %d %s]@%x", HttpResponse.class.getSimpleName(), getVersion(), getStatus(), getReason(), hashCode());
110 }
111 }